%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/local/lib/python3.8/__pycache__/
Upload File :
Create Path :
Current File : //usr/local/lib/python3.8/__pycache__/pstats.cpython-38.pyc

U

naj@sdZddlZddlZddlZddlZddlZddlmZddlm	Z	ddgZ
GdddeeZGdddZ
Gd	d
d
ZddZd
dZddZddZddZddZddZedkrddlZzddlZWnek
rYnXGdddejZeejdkrejdZndZzPeeZejddD]Z e!e q0e"dej#de$e"d ej#dWne%k
r~YnXdS)!z3Class for printing reports on profiled python code.N)Enum)
cmp_to_keyStatsSortKeyc@s8eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
dZdS)
r)callsncalls)
cumulativecumtime)filenamemodulelinenamenflpcallsstdname)timetottimecGs@|d}t||}||_|ddD]}||j|<q&||_|SNr)str__new___value__value2member_map_Z_all_values)clsvaluesvalueobjZother_valuer"/usr/local/lib/python3.8/pstats.pyr-szSortKey.__new__N)
__name__
__module____qualname__ZCALLSZ
CUMULATIVEZFILENAMEZLINENAMEZNFLZPCALLSZSTDNAMEZTIMErrrrrr"sc@seZdZdZddddZddZdd	Zd
dZdd
ZddZ	dddddddddddddd
Z
ddZddZddZ
d d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd7d1d2Zd3d4Zd5d6ZdS)8raThis class is used for creating reports from data generated by the
    Profile class.  It is a "friend" of that class, and imports data either
    by direct access to members of Profile class, or by reading in a dictionary
    that was emitted (via marshal) from the Profile class.

    The big change from the previous Profiler (in terms of raw functionality)
    is that an "add()" method has been provided to combine Stats from
    several distinct profile runs.  Both the constructor and the add()
    method now take arbitrarily many file names as arguments.

    All the print methods now take an argument that indicates how many lines
    to print.  If the arg is a floating point number between 0 and 1.0, then
    it is taken as a decimal percentage of the available lines to be printed
    (e.g., .1 means print 10% of all available lines).  If it is an integer,
    it is taken to mean the number of lines of data that you wish to have
    printed.

    The sort_stats() method now processes some additional options (i.e., in
    addition to the old -1, 0, 1, or 2 that are respectively interpreted as
    'stdname', 'calls', 'time', and 'cumulative').  It takes either an
    arbitrary number of quoted strings or SortKey enum to select the sort
    order.

    For example sort_stats('time', 'name') or sort_stats(SortKey.TIME,
    SortKey.NAME) sorts on the major key of 'internal function time', and on
    the minor key of 'the name of the function'.  Look at the two tables in
    sort_stats() and get_sort_arg_defs(self) for more examples.

    All methods return self, so you can string together commands like:
        Stats('foo', 'goo').strip_dirs().sort_stats('calls').                            print_stats(5).print_callers(5)
    N)streamcGsF|ptj|_t|sd}n|d}|dd}|||j|dSr)sysstdoutr#leninitadd)selfr#argsargrrr__init__Ys
zStats.__init__cCsd|_g|_d|_d|_d|_d|_d|_t|_i|_	i|_
||z|Wn8t
k
rtd|jrx|jdnd|jdYnXdS)NrzInvalid timing data %sfile)all_calleesfilesfcn_listtotal_tttotal_calls
prim_callsmax_name_lenset	top_levelstats
sort_arg_dict
load_statsget_top_level_stats	Exceptionprintr#)r)r+rrrr'cs(
z
Stats.initc	Cs|dkri|_dSt|trxt|d}t||_W5QRXz"t|}t	|j
d|}WnYnX|g|_n t|dr|
|j|_i|_|jstd|j|fdS)Nrbz    create_statsz.Cannot create or construct a %r object from %r)r:
isinstanceropenmarshalloadosstatrctimest_mtimer2hasattrrA	TypeError	__class__)r)r+fZ
file_statsrrrr<vs*



zStats.load_statscCs|jD]p\}\}}}}}|j|7_|j|7_|j|7_d|krZ|j|tt||j	kr
tt||_	q
dS)N)ZjprofilerZprofiler)
r:itemsr5r6r4r9r(r&func_std_stringr7)r)funcccncttctcallersrrrr=szStats.get_top_level_statscGs|s|St|D]}t|t|kr,t|}|j|j7_|j|j7_|j|j7_|j|j7_|jD]}|j|qr|j	|j	kr|j	|_	d|_
|jD]<\}}||jkr|j|}nddddif}t
|||j|<qq|SNr)reversedtyperr2r5r6r4r9r(r7r3r:rNadd_func_stats)r)arg_listitemrPrGZ
old_func_statrrrr(s(

z	Stats.addc	Cs(t|d}t|j|W5QRXdS)z:Write the profile data to a file we know how to load back.wbN)rCrDdumpr:)r)r
rMrrr
dump_statsszStats.dump_stats)))rr-z
call count)))r-zcumulative time))rz	file name))rzline number))rz
function name))rdr`rbzname/file/line)))rr-zprimitive call count)))rz
standard name)))r-z
internal time)
rrr	rr
rrr
rrrrrcCst|jsni|_}i}|jD]>\}}|}|r|s4q||krFd||<q|||<|dd}q*q|D]
}||=qb|jS)z)Expand all abbreviations that are unique.rNr-)r;sort_arg_dict_defaultrN)r)dictZbad_listwordtupZfragmentrrrget_sort_arg_defss 
zStats.get_sort_arg_defscGs\|sd|_|St|dkrBt|dtrBddddd|dg}n:t|dkr||ddD] }t|t|dkrZtd	qZ|}d
}d|_d}|D]B}t|tr|j	}|||d}|j|||d7_d}qg}|j
D]4\}\}	}
}}}
||	|
||f|t
||fq|jtt|jd
g|_}|D]}||dqB|S)Nrrrrrr)r-rrrgrgzCan't have mixed argument typerr.z, )keyr-)r3r&rBintrXrKrl	sort_typerrr:rNappendrOsortr	TupleCompcompare)r)Zfieldr+Z
sort_arg_defsZ
sort_tupleZ	connectorrjZ
stats_listrPrQrRrSrTrUr3tuplerrr
sort_statssF



zStats.sort_statscCs|jr|j|SN)r3reverser)rrr
reverse_orders
zStats.reverse_ordercCs|j}i|_}d}|D]\}\}}}}}	t|}
tt|
|krRtt|
}i}|	D]\}}
|
|t|<q^|
|krt||
|||||f||
<q|||||f||
<q|j}t|_}|D]}|t|q||_	d|_
d|_|SrV)r:rNfunc_strip_pathr&rOrYr9r8r(r7r3r1)r)ZoldstatsZnewstatsr7rPrQrRrSrTrUZnewfuncZ
newcallersfunc2callerZold_topZnew_toprrr
strip_dirss0

zStats.strip_dirsc
Cst|jr
dSi|_}|jD]P\}\}}}}}||kr@i||<|D]$\}}	||kr`i||<|	|||<qHqdSrv)r1r:rN)
r)r1rPrQrRrSrTrUr{r|rrrcalc_callees#s
zStats.calc_calleescCs|}t|trpzt|}Wn*tjk
rF|d|7}||fYSXg}|D]}|t|rP||qPnzt|}t|t	rd|krdkrnnt
||d}|d|}n2t|t
rd|kr|krnn|}|d|}t|t|kr|dt|t||f7}||fS)Nz#   <Invalid regular expression %r>
gg?g?rz6   List reduced from %r to %r due to restriction <%r>
)rBrrecompileerrorsearchrOrpr&floatrn)r)ZsellistmsgZnew_listZrexrPcountrrreval_print_amount6s2
""zStats.eval_print_amountcCs|j}|jr*|jdd}d|jd}nt|j}d}|D]}||||\}}q@t|}|sld|fSt||j	d|t|jkrd}|D] }tt
||krtt
|}q|d|fS)Nz   Ordered by: 
z!   Random listing order was used
rr/rg)r7r3rorr:keysrr&r?r#rO)r)Zsel_listwidthZ	stat_listrZ	selectionrrPrrrget_print_listPs$zStats.get_print_listcGs|jD]}t||jdq|jr,t|jdd}|jD]}t|t||jdq6t||jdd|jd|j|jkrtd|jd|jdtd|j|jdt|jd||\}}|r|	|D]}|
|qt|jdt|jd|S)Nr/        zfunction calls endr0z(%d primitive calls)zin %.3f seconds)r2r?r#r9func_get_function_namer5r6r4rprint_title
print_line)r)amountr
indentrPrrrrrprint_statshs(

zStats.print_statscGsz||\}}|rv|||d|D]2}||jkrN||||j|q*|||iq*t|jdt|jd|S)Nz	called...r/)rr~print_call_headingr1print_call_liner?r#)r)rrrrPrrr
print_calleess
zStats.print_calleesc
Gsh||\}}|rd||d|D](}|j|\}}}}}	||||	dq"t|jdt|jd|S)Nzwas called by...z<-r/)rrr:rr?r#)
r)rrrrPrQrRrSrTrUrrr
print_callersszStats.print_callersc
Csvtd|||jdd}|jD]0\}}}}}|r&tt|}	t|	t}qXq&|rrtd|d|jddS)Nz	Function r/Frz    ncalls  tottime  cumtime)	r?ljustr#r:rnextiterrBrt)
r)	name_sizeZcolumn_titleZ	subheaderrQrRrSrTrUrrrrrs
zStats.print_call_heading->cCstt|||d|jd|s2t|jddSt|}d}|D]}t|}||}	t|	tr|	\}
}}}
|
|krd|
|f}n
d|
f}d|dd	t	|t
|t
|
|f}|d
}n$d||	t
|j|df}|d}t||||jdd}qFdS)
Nrrr/r.z%d/%dz%dz%s %s %s  %srfrgrz	%s(%r) %sr_)r?rOrr#sortedrrBrtrjustr&f8r:)r)rsourceZ	call_dictZarrowZclistrrPr
rrRrQrSrTZsubstatsZ
left_widthrrrrs0


zStats.print_call_linecCs"tdd|jdtd|jddS)Nz-   ncalls  tottime  percall  cumtime  percallrrzfilename:lineno(function)r/r?r#rxrrrrszStats.print_titlecCs|j|\}}}}}t|}||kr4|dt|}t|dd|jdtt|d|jd|dkrxtdd|jdntt||d|jdtt|d|jd|dkrtdd|jdntt||d|jdtt||jddS)N/	rrrrr/)r:rr?rr#rrO)r)rPrQrRrSrTrUcrrrrszStats.print_line)r)rr r!__doc__r,r'r<r=r(r^rhrlruryr}r~rrrrrrrrrrrrrr7sF!

'
c@s eZdZdZddZddZdS)rraThis class provides a generic function for comparing any two tuples.
    Each instance records a list of tuple-indices (from most significant
    to least significant), and sort direction (ascending or decending) for
    each tuple-index.  The compare functions can then be used as the function
    argument to the system sort() function when a list of tuples need to be
    sorted in the instances order.cCs
||_dSrvcomp_select_list)r)rrrrr,szTupleComp.__init__cCsF|jD]:\}}||}||}||kr0|S||kr|SqdSrVr)r)leftrightindex	directionlrrrrrss

zTupleComp.compareN)rr r!rr,rsrrrrrrsrrcCs|\}}}tj|||fSrv)rFpathbasename)	func_namer
rr
rrrrzs
rzcCs|dS)Nrgr)rPrrrrsrcCsN|dddkrB|d}|dr<|dr<d|ddS|Snd|SdS)	Nrg)~r<>z{%s}rr-z	%s:%d(%s))
startswithendswith)rr
rrrrOsrOcCs@|\}}}}}|\}}}	}
}||||||	||
t||fS)z3Add together all the stats for two profile entries.)add_callers)targetrrQrRrSrTrUZt_ccZt_ncZt_ttZt_ctZ	t_callersrrrrYs
rYcCsi}|D]\}}|||<q|D]V\}}||krtt|trbtddt|||D||<q||||7<q&|||<q&|S)z*Combine two caller lists in a single list.css|]\}}||VqdSrvr).0ijrrr	<genexpr>szadd_callers.<locals>.<genexpr>)rNrBrtzip)rrZnew_callersrPr|rrrrs

"
rcCsd}|D]}||7}q|S)z@Sum the caller statistics to get total number of calls received.r)r)rUrRrrrrcount_callss
rcCsd|S)Nz%8.3fr)xrrrr(sr__main__c@seZdZd6ddZddZddZdd	Zd
dZdd
ZddZ	ddZ
ddZddZddZ
ddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5ZdS)7ProfileBrowserNcCs6tj|d|_d|_tj|_|dk	r2||dS)N% )	cmdCmdr,promptr:r$r%r#do_read)r)profilerrrr,7szProfileBrowser.__init__c	Cs|}g}|D]}z|t|WqWntk
r>YnXz<t|}|dksZ|dkrltd|jdWq||WqWntk
rYnX||q|jrt|j||ntd|jddS)Nrrz#Fraction argument must be in [0, 1]r/No statistics object is loaded.)	splitrprn
ValueErrorrr?r#r:getattr)r)fnrr*Z	processedZtermZfracrrrgeneric?s,
zProfileBrowser.genericcCsXtd|jdtd|jdtd|jdtd|jdtd|jdtd|jddS)NzArguments may be:r/z0* An integer maximum number of entries to print.z:* A decimal fractional number between 0 and 1, controllingz-  what fraction of selected entries to print.z8* A regular expression; only entries with function namesz  that match it are printed.rrxrrrgeneric_helpWszProfileBrowser.generic_helpc
Csd|jrRz|j|Wq`tk
rN}ztd||f|jdW5d}~XYq`Xntd|jddS)Nz$Failed to load statistics for %s: %sr/rr)r:r(OSErrorr?r#)r)rerrrdo_add_s*zProfileBrowser.do_addcCstd|jddS)Nz>Add profile info from given file to current statistics object.r/rrxrrrhelp_addhszProfileBrowser.help_addcCs|d|S)Nrrr)rrrr
do_calleeskszProfileBrowser.do_calleescCstd|jd|dS)Nz6Print callees statistics from the current stat object.r/r?r#rrxrrrhelp_calleesmszProfileBrowser.help_calleescCs|d|S)Nrrrrrr
do_callersqszProfileBrowser.do_callerscCstd|jd|dS)Nz6Print callers statistics from the current stat object.r/rrxrrrhelp_callerssszProfileBrowser.help_callerscCstd|jddS)Nr.r/rrrrrrdo_EOFwszProfileBrowser.do_EOFcCstd|jddSNzLeave the profile browser.r/rrxrrrhelp_EOFzszProfileBrowser.help_EOFcCsdS)Nrrrrrrdo_quit}szProfileBrowser.do_quitcCstd|jddSrrrxrrr	help_quitszProfileBrowser.help_quitc
Cs|rzt||_Wnztk
rN}zt|jd|jdWYdSd}~XYn@tk
r}z"t|jjd||jdWYdSd}~XYnX|d|_	n6t
|j	dkr|j	dd}||ntd|jddS)	Nrr/:rrgz1No statistics object is current -- cannot reload.r)rr:rr?r*r#r>rLrrr&r)r)rerrrrrrszProfileBrowser.do_readcCs td|jdtd|jddS)Nz+Read in profile data from a specified file.r/z*Without argument, reload the current file.rrxrrr	help_readszProfileBrowser.help_readcCs$|jr|jntd|jddS)Nrr/r)r:ryr?r#rrrr
do_reverseszProfileBrowser.do_reversecCstd|jddS)Nz/Reverse the sort order of the profiling report.r/rrxrrrhelp_reverseszProfileBrowser.help_reversecs|jstd|jddS|j|rRtfdd|DrR|jj|n<td|jdtj	D]"\}}td||df|jdqjdS)	Nrr/c3s|]}|kVqdSrvr)rrZabbrevsrrrsz)ProfileBrowser.do_sort.<locals>.<genexpr>z/Valid sort keys (unique prefixes are accepted):z%s -- %srr)
r:r?r#rlallrrurrhrN)r)rrmrrrrdo_sorts
zProfileBrowser.do_sortcCs td|jdtd|jddS)Nz.Sort profile data according to specified keys.r/z3(Typing `sort' without arguments lists valid keys.)rrxrrr	help_sortszProfileBrowser.help_sortcsfddtjDS)Ncsg|]}|r|qSr)r)ratextrr
<listcomp>s
z0ProfileBrowser.complete_sort.<locals>.<listcomp>)rrh)r)rr*rrr
complete_sortszProfileBrowser.complete_sortcCs|d|S)Nrrrrrrdo_statsszProfileBrowser.do_statscCstd|jd|dS)Nz.Print statistics from the current stat object.r/rrxrrr
help_statsszProfileBrowser.help_statscCs$|jr|jntd|jddS)Nrr/)r:r}r?r#rrrrdo_stripszProfileBrowser.do_stripcCstd|jddS)Nz<Strip leading path information from filenames in the report.r/rrxrrr
help_stripszProfileBrowser.help_stripcCstd|jddS)NzShow help for a given command.r/rrxrrr	help_helpszProfileBrowser.help_helpcCs|r|SdSrvr)r)stoprrrrpostcmdszProfileBrowser.postcmd)N)rr r!r,rrrrrrrrrrrrrrrrrrrrrrrrrrrrrr6s4
	rrrgz*Welcome to the profile statistics browser.r/zGoodbye.)&rr$rFrrDrenumr	functoolsr__all__rrrrrrzrrOrYrrrrrreadlineImportErrorrrr&argvZinitprofileZbrowserrrr?r#ZcmdloopKeyboardInterruptrrrr<module>sR 


Zerion Mini Shell 1.0