grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026B ¨§ßù&}½|ã@s„ddlZddlZddlZddlZddlZddlmZddlmZddgZ Gdd„de eƒZ Gdd„dƒZ Gdd „d ƒZ d d „Zd d „Zdd„Zdd„Zdd„Zdd„Zdd„Zedk�r€ddlZy ddlZWnek ràYnXGdd„dejƒZeejƒdk�rejdZndZyTeeƒZx"ejdd…D]Ze  e¡�q.We!dej"d�e #¡e!dej"d�Wne$k �r~YnXdS) éN)ÚEnum)Ú cmp_to_keyÚStatsÚSortKeyc@s8eZdZdZdZdZdZdZdZdZ dZ d Z d d „Z d S) r)ÚcallsÚncalls)Ú cumulativeÚcumtime)ÚfilenameÚmoduleÚlineÚnameÚnflÚpcallsÚstdname)ÚtimeÚtottimecGs>t |¡}|d|_x|dd…D]}||j|<q"W||_|S)Nré)ÚstrÚ__new__Ú_value_Ú_value2member_map_Z _all_values)ÚclsÚvaluesÚobjZ other_value©rú+/opt/alt/python37/lib64/python3.7/pstats.pyr-s   zSortKey.__new__N) Ú__name__Ú __module__Ú __qualname__ZCALLSZ CUMULATIVEZFILENAMEZLINEÚNAMEZNFLZPCALLSZSTDNAMEZTIMErrrrrr"sc@sÔeZdZddœdd„Zdd„Zdd„Zd d „Zd d „Zd d„Zddddddddddddddœ Z dd„Z dd„Z dd„Z dd „Z d!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd6d0d1„Zd2d3„Zd4d5„ZdS)7rN)ÚstreamcGsF|ptj|_t|ƒsd}n|d}|dd…}| |¡|j|ŽdS)Nrr)ÚsysÚstdoutr!ÚlenÚinitÚadd)Úselfr!ÚargsÚargrrrÚ__init__Ys   zStats.__init__cCs’d|_g|_d|_d|_d|_d|_d|_tƒ|_i|_ i|_ |  |¡y |  ¡Wn8t k rŒtd|jrx|jdnd|jd�‚YnXdS)NrzInvalid timing data %séÿÿÿÿÚ)Úfile)Ú all_calleesÚfilesÚfcn_listÚtotal_ttÚ total_callsÚ prim_callsÚ max_name_lenÚsetÚ top_levelÚstatsÚ sort_arg_dictÚ load_statsÚget_top_level_statsÚ ExceptionÚprintr!)r'r)rrrr%cs"  z Stats.initc Cs´|dkri|_dSt|tƒrxt|dƒ�}t |¡|_WdQRXy"t |¡}t  |j ¡d|}Wn YnX|g|_ n t |dƒr˜|  ¡|j|_i|_|js°td|j|fƒ‚dS)NÚrbz Ú create_statsz.Cannot create or construct a %r object from %r)r7Ú isinstancerÚopenÚmarshalÚloadÚosÚstatrZctimeÚst_mtimer/Úhasattrr>Ú TypeErrorÚ __class__)r'r)ÚfZ file_statsrrrr9vs(     zStats.load_statscCs„x~|j ¡D]p\}\}}}}}|j|7_|j|7_|j|7_d|kr\|j |¡tt|ƒƒ|j kr tt|ƒƒ|_ q WdS)N)ZjprofilerZprofiler) r7Úitemsr2r3r1r6r&r$Úfunc_std_stringr4)r'ÚfuncÚccÚncÚttÚctÚcallersrrrr:Œs zStats.get_top_level_statscGsø|s|Sxêt|ƒD]Þ}t|ƒt|ƒkr.t|ƒ}|j|j7_|j|j7_|j|j7_|j|j7_x|jD]}|j |¡qvW|j |j krž|j |_ d|_ xJ|j   ¡D]<\}}||j krÎ|j |}nddddif}t ||ƒ|j |<q°WqW|S)Nr)ÚreversedÚtyperr/r2r3r1r6r&r4r0r7rJÚadd_func_stats)r'Úarg_listÚitemrLrDZ old_func_statrrrr&–s(    z Stats.addc Cs(t|dƒ�}t |j|¡WdQRXdS)NÚwb)r@rAÚdumpr7)r'r rIrrrÚ dump_stats°s zStats.dump_stats)))rr+z call count)))ér+zcumulative time)))érz file name)))érz line number)))érz function name)))r]r)r[r)r\rzname/file/line)))rr+zprimitive call count)))érz standard name)))ér+z internal time) rrr rr r r r rrrrrcCs€|jszi|_}i}xP|j ¡D]B\}}|}x4|r`|s8P||krJd||<P|||<|dd…}q.Wq Wx|D] }||=qlW|jS)Nrr+)r8Úsort_arg_dict_defaultrJ)r'ÚdictZbad_listÚwordÚtupZfragmentrrrÚget_sort_arg_defsÇs    zStats.get_sort_arg_defscGsl|sd|_|St|ƒdkrBt|dtƒrBdddddœ|dg}n>t|ƒdkr€x0|dd…D] }t|ƒt|dƒkr\td ƒ‚q\W| ¡}d }d |_d }xJ|D]B}t|tƒr°|j }|||d}|j|||d7_d }qœWg}xB|j   ¡D]4\}\} } } } } |  | | | | f|t |ƒ|f¡qòW|jtt|ƒjƒd �g|_}x|D]}|  |d¡�qPW|S)Nrrrrrr)r+rrr_r_zCan't have mixed argument typerr,z, )Úkeyr+)r0r$r?ÚintrSrGrdÚ sort_typerÚvaluer7rJÚappendrKÚsortrÚ TupleCompÚcompare)r'Zfieldr)Z sort_arg_defsZ sort_tupleZ connectorrbZ stats_listrLrMrNrOrPrQr0ÚtuplerrrÚ sort_statsÚs>      zStats.sort_statscCs|jr|j ¡|S)N)r0Úreverse)r'rrrÚ reverse_orders zStats.reverse_ordercCsú|j}i|_}d}x | ¡D]”\}\}}}}} t|ƒ} tt| ƒƒ|krTtt| ƒƒ}i} x |  ¡D]\} } | | t| ƒ<qbW| |kr t|| ||||| fƒ|| <q||||| f|| <qW|j}tƒ|_}x|D]}| t|ƒ¡qÎW||_ d|_ d|_ |S)Nr) r7rJÚfunc_strip_pathr$rKrTr6r5r&r4r0r.)r'ZoldstatsZnewstatsr4rLrMrNrOrPrQZnewfuncZ newcallersÚfunc2ÚcallerZold_topZnew_toprrrÚ strip_dirss.    zStats.strip_dirsc Cs||jr dSi|_}xb|j ¡D]T\}\}}}}}||krBi||<x0| ¡D]$\}} ||krdi||<| |||<qLWq WdS)N)r.r7rJ) r'r.rLrMrNrOrPrQrrrsrrrÚ calc_callees#s zStats.calc_calleescCs|}t|tƒrpyt |¡}Wn&tjk rB|d|7}||fSXg}x |D]}| t|ƒ¡rN| |¡qNWnzt|ƒ}t|t ƒr¸d|kr–dkr¸nnt ||dƒ}|d|…}n2t|t ƒrêd|krÖ|krênn|}|d|…}t|ƒt|ƒk�r|dt|ƒt|ƒ|f7}||fS)Nz# ggð?gà?rz6 List reduced from %r to %r due to restriction <%r> ) r?rÚreÚcompileÚerrorÚsearchrKrir$Úfloatrf)r'ZselÚlistÚmsgZnew_listZrexrLÚcountrrrÚeval_print_amount6s,    "" zStats.eval_print_amountcCsÆ|j}|jr*|jdd…}d|jd}nt|j ¡ƒ}d}x|D]}| |||¡\}}qBWt|ƒ}|spd|fSt||j d�|t|jƒkrºd}x(|D] }tt |ƒƒ|kr–tt |ƒƒ}q–W|d|fS)Nz Ordered by: Ú z! Random listing order was used r)r-r_) r4r0rgr{r7Úkeysr~r$r<r!rK)r'Zsel_listÚwidthZ stat_listr|Z selectionr}rLrrrÚget_print_listPs$  zStats.get_print_listcGsþx|jD]}t||jd�qW|jr0t|jd�d}x"|jD]}t|t|ƒ|jd�qcCs tt|ƒ |¡|d|jd�|s2t|jd�dSt| ¡ƒ}d}xÄ|D]¼}t|ƒ}||} t| tƒrÆ| \} } } } | | krˆd| | f}n d| f}d| dd t |ƒ¡t | ƒt | ƒ|f}|d }n$d || t |j |d ƒf}|d }t||||jd�d}qHWdS) Nrƒ)r„r-)r-r,z%d/%dz%dz %s %s %s %sr^r_rz %s(%r) %srZ) r<rKr�r!Úsortedr€r?rmÚrjustr$Úf8r7)r'r’ÚsourceZ call_dictZarrowZclistr‰rLr rhrNrMrOrPZsubstatsZ left_widthrrrrŒ¥s*       zStats.print_call_linecCs"tdd|jd�td|jd�dS)Nz- ncalls tottime percall cumtime percallrƒ)r„r-zfilename:lineno(function))r-)r<r!)r'rrrr†¾szStats.print_titlecCsì|j|\}}}}}t|ƒ}||kr4|dt|ƒ}t| d¡d|jd�tt|ƒd|jd�|dkrxtdd|jd�ntt||ƒd|jd�tt|ƒd|jd�|dkr¾tdd|jd�ntt||ƒd|jd�tt|ƒ|jd�dS)Nú/é rƒ)r„r-rz )r-)r7rr<r•r!r–rK)r'rLrMrNrOrPrQÚcrrrr‡ÂszStats.print_line)r“)rrrr*r%r9r:r&rYr`rdrnrprtrur~r‚rŠr�rŽr‹rŒr†r‡rrrrr7sB"  '  c@seZdZdd„Zdd„ZdS)rkcCs ||_dS)N)Úcomp_select_list)r'r›rrrr*ÜszTupleComp.__init__cCsBx<|jD]2\}}||}||}||kr.| S||kr|SqWdS)Nr)r›)r'ÚleftÚrightÚindexÚ directionÚlÚrrrrrlßszTupleComp.compareN)rrrr*rlrrrrrkÔsrkcCs|\}}}tj |¡||fS)N)rCÚpathÚbasename)Ú func_namer r r rrrrqís rqcCs|dS)Nr_r)rLrrrr…ñsr…cCsN|dd…dkrB|d}| d¡r<| d¡rz{%s}rr+z %s:%d(%s))Ú startswithÚendswith)r¤r rrrrKôs rKc Cs@|\}}}}}|\}}} } } |||||| || t| |ƒfS)N)Ú add_callers) Útargetr—rMrNrOrPrQZt_ccZt_ncZt_ttZt_ctZ t_callersrrrrTsrTcCsŠi}x| ¡D]\}}|||<qWxb| ¡D]V\}}||krzt|tƒrhtdd„t|||ƒDƒƒ||<q‚|||7<q,|||<q,W|S)Ncss|]\}}||VqdS)Nr)Ú.0ÚiÚjrrrú szadd_callers..)rJr?rmÚzip)r«r—Z new_callersrLrsrrrrª s  " rªcCs"d}x| ¡D] }||7}qW|S)Nr)r)rQrNrrrrÚ count_callss r±cCsd|S)Nz%8.3fr)Úxrrrr–(sr–Ú__main__c@sÞeZdZd6dd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„ZdS)7ÚProfileBrowserNcCs6tj |¡d|_d|_tj|_|dk r2| |¡dS)Nz% ) ÚcmdÚCmdr*Úpromptr7r"r#r!Údo_read)r'Úprofilerrrr*7s  zProfileBrowser.__init__c CsÆ| ¡}g}xŽ|D]†}y| t|ƒ¡wWntk r>YnXy8t|ƒ}|dksZ|dkrjtd|jd�w| |¡wWntk rŒYnX| |¡qW|jr´t|j|ƒ|Žntd|jd�dS)Nrrz#Fraction argument must be in [0, 1])r-zNo statistics object is loaded.) ÚsplitrirfÚ ValueErrorrzr<r!r7Úgetattr)r'Úfnr r(Z processedZtermZfracrrrÚgeneric?s,  zProfileBrowser.genericcCsXtd|jd�td|jd�td|jd�td|jd�td|jd�td|jd�dS)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.)r<r!)r'rrrÚ generic_helpWs zProfileBrowser.generic_helpc Csd|jrRy|j |¡Wq`tk rN}ztd||f|jd�Wdd}~XYq`Xntd|jd�dS)Nz$Failed to load statistics for %s: %s)r-zNo statistics object is loaded.r)r7r&ÚOSErrorr<r!)r'r ÚerrrÚdo_add_s*zProfileBrowser.do_addcCstd|jd�dS)Nz>Add profile info from given file to current statistics object.)r-)r<r!)r'rrrÚhelp_addhszProfileBrowser.help_addcCs | d|¡S)Nr�)r¾)r'r rrrÚ do_calleeskszProfileBrowser.do_calleescCstd|jd�| ¡dS)Nz6Print callees statistics from the current stat object.)r-)r<r!r¿)r'rrrÚ help_calleesmszProfileBrowser.help_calleescCs | d|¡S)NrŽ)r¾)r'r rrrÚ do_callersqszProfileBrowser.do_callerscCstd|jd�| ¡dS)Nz6Print callers statistics from the current stat object.)r-)r<r!r¿)r'rrrÚ help_callerssszProfileBrowser.help_callerscCstd|jd�dS)Nr,)r-r)r<r!)r'r rrrÚdo_EOFwszProfileBrowser.do_EOFcCstd|jd�dS)NzLeave the profile brower.)r-)r<r!)r'rrrÚhelp_EOFzszProfileBrowser.help_EOFcCsdS)Nrr)r'r rrrÚdo_quit}szProfileBrowser.do_quitcCstd|jd�dS)NzLeave the profile brower.)r-)r<r!)r'rrrÚ help_quitszProfileBrowser.help_quitc CsÈ|rŽyt|ƒ|_Wnntk rH}zt|jd|jd�dSd}~XYn:tk r€}zt|jjd||jd�dSd}~XYnX|d|_ n6t |j ƒdkr¶|j dd…}|  |¡ntd|jd�dS) Nr)r-ú:z% r_éþÿÿÿz1No statistics object is current -- cannot reload.r) rr7rÀr<r(r!r;rHrr·r$r¸)r'r Úerrrrrr¸‚s  zProfileBrowser.do_readcCs td|jd�td|jd�dS)Nz+Read in profile data from a specified file.)r-z*Without argument, reload the current file.)r<r!)r'rrrÚ help_read“szProfileBrowser.help_readcCs$|jr|j ¡ntd|jd�dS)NzNo statistics object is loaded.)r-r)r7rpr<r!)r'r rrrÚ do_reverse—s zProfileBrowser.do_reversecCstd|jd�dS)Nz/Reverse the sort order of the profiling report.)r-)r<r!)r'rrrÚ help_reverse�szProfileBrowser.help_reversecs–|jstd|jd�dS|j ¡‰|rRt‡fdd„| ¡DƒƒrR|jj| ¡Žn@td|jd�x0tj  ¡D]"\}}td||df|jd�qlWdS) NzNo statistics object is loaded.)r-c3s|]}|ˆkVqdS)Nr)r¬r²)Úabbrevsrrr¯¥sz)ProfileBrowser.do_sort..z/Valid sort keys (unique prefixes are accepted):z%s -- %srr) r7r<r!rdÚallrºrnrr`rJ)r'r rerhr)rÒrÚdo_sort s zProfileBrowser.do_sortcCs td|jd�td|jd�dS)Nz.Sort profile data according to specified keys.)r-z3(Typing `sort' without arguments lists valid keys.))r<r!)r'rrrÚ help_sort¬szProfileBrowser.help_sortcs‡fdd„tjDƒS)Ncsg|]}| ˆ¡r|‘qSr)r¨)r¬Úa)Útextrrú °sz0ProfileBrowser.complete_sort..)rr`)r'r×r(r)r×rÚ complete_sort¯szProfileBrowser.complete_sortcCs | d|¡S)NrŠ)r¾)r'r rrrÚdo_stats²szProfileBrowser.do_statscCstd|jd�| ¡dS)Nz.Print statistics from the current stat object.)r-)r<r!r¿)r'rrrÚ help_stats´szProfileBrowser.help_statscCs$|jr|j ¡ntd|jd�dS)NzNo statistics object is loaded.)r-)r7rtr<r!)r'r rrrÚdo_strip¸s zProfileBrowser.do_stripcCstd|jd�dS)NzsP