grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026o ®û|jŽrã@s ddlZddlZddlZddlZddlZddlmZddlmZddl m Z ddl m Z gd¢Z Gdd„deeƒZe d d �Gd d „d ƒƒZe d d �Gd d„dƒƒZGdd„dƒZGdd„dƒZdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zed!krßddlZzddlZWn ey“YnwGd"d#„d#ejƒZ e!ej"ƒd$krªej"d$Z#ndZ#z(e e#ƒZ$ej"d%d…D]Z%e$ &e%¡q¸e'd&e$j(d'�e$ )¡e'd(e$j(d'�WdSe*yÞYdSwdS))éN)ÚEnum)Ú cmp_to_key)Ú dataclass)ÚDict)ÚStatsÚSortKeyÚFunctionProfileÚ StatsProfilec@s8eZdZdZdZdZdZdZdZdZ dZ d Z d d „Z d S) r)ÚcallsÚncalls)Ú cumulativeÚcumtime)ÚfilenameÚmoduleÚlineÚnameÚnflÚpcallsÚstdname)ÚtimeÚtottimecGs@|d}t ||¡}||_|dd…D]}||j|<q||_|S©Nré)ÚstrÚ__new__Ú_value_Ú_value2member_map_Z _all_values)ÚclsÚvaluesÚvalueÚobjZ other_value©r!ú-/opt/alt/python310/lib64/python3.10/pstats.pyr/s  zSortKey.__new__N) Ú__name__Ú __module__Ú __qualname__ZCALLSZ CUMULATIVEZFILENAMEZLINEÚNAMEZNFLZPCALLSZSTDNAMEZTIMErr!r!r!r"r$s rT)Z unsafe_hashc@sFeZdZUeed<eed<eed<eed<eed<eed<eed<dS) rr rÚpercall_tottimer Úpercall_cumtimeÚ file_nameÚ line_numberN)r#r$r%rÚ__annotations__ÚfloatÚintr!r!r!r"r9s  rc@s(eZdZU eed<eeefed<dS)r Útotal_ttÚ func_profilesN)r#r$r%r,r+rrrr!r!r!r"r Cs r c@sÞeZdZ ddœ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.„Zd/d0„Zd8d2d3„Zd4d5„Zd6d7„ZdS)9rN)ÚstreamcGsF|ptj|_t|ƒs d}n |d}|dd…}| |¡|j|ŽdSr)ÚsysÚstdoutr0ÚlenÚinitÚadd)Úselfr0ÚargsÚargr!r!r"Ú__init__ks   zStats.__init__cCsŠd|_g|_d|_d|_d|_d|_d|_tƒ|_i|_ i|_ |  |¡z|  ¡WdSt yDtd|jr<|jdnd|jd�‚w)NrzInvalid timing data %séÿÿÿÿÚ©Úfile)Ú all_calleesÚfilesÚfcn_listr.Ú total_callsÚ prim_callsÚ max_name_lenÚsetÚ top_levelÚstatsÚ sort_arg_dictÚ load_statsÚget_top_level_statsÚ ExceptionÚprintr0)r6r8r!r!r"r4us*  ÿÿýz Stats.initcCsÄ|dur i|_dSt|tƒrDt|dƒ�}t |¡|_Wdƒn1s$wYzt |¡}t  |j ¡d|}WnY|g|_ nt |dƒrT|  ¡|j|_i|_|js`td|j|fƒ‚dS)NÚrbz Ú create_statsz.Cannot create or construct a %r object from %r)rFÚ isinstancerÚopenÚmarshalÚloadÚosÚstatrÚctimeÚst_mtimer?ÚhasattrrMÚ TypeErrorÚ __class__)r6r8ÚfZ file_statsr!r!r"rHˆs,  ÿ   ÿzStats.load_statscCs€|j ¡D]8\}\}}}}}|j|7_|j|7_|j|7_d|vr-|j |¡tt|ƒƒ|j kr=tt|ƒƒ|_ qdS)N)ZjprofilerZprofiler) rFÚitemsrArBr.rEr5r3Úfunc_std_stringrC)r6ÚfuncÚccÚncÚttÚctÚcallersr!r!r"rIžs €ùzStats.get_top_level_statscGsì|s|St|ƒD]k}t|ƒt|ƒkrt|ƒ}|j|j7_|j|j7_|j|j7_|j|j7_|jD]}|j |¡q9|j |j krL|j |_ d|_ |j   ¡D]\}}||j vrc|j |}nddddif}t ||ƒ|j |<qTq|S©Nr)ÚreversedÚtyperr?rArBr.rEr5rCr@rFrZÚadd_func_stats)r6Úarg_listÚitemr\rSZ old_func_statr!r!r"r5¨s*     ûz Stats.addcCs@ t|dƒ�}t |j|¡WdƒdS1swYdS)NÚwb)rOrPÚdumprF)r6rrYr!r!r"Ú dump_statsÂs "ÿzStats.dump_stats)))rr:z call count)))ér:zcumulative time))©érz file name))©érz line number))©érz function name))rprlrnzname/file/line)))rr:zprimitive call count)))érz standard name)))ér:z internal time) r r r r rrrrrrrrrcCsx |js9i|_}i}|j ¡D] \}}|}|r0|sn||vr$d||<n |||<|dd…}|sq|D]}||=q3|jS)Nrr:)rGÚsort_arg_dict_defaultrZ)r6ÚdictZbad_listÚwordÚtupZfragmentr!r!r"Úget_sort_arg_defsÙs&  ù€zStats.get_sort_arg_defscGsZ|sd|_|St|ƒdkr!t|dtƒr!dddddœ|dg}nt|ƒdkr>|dd…D]}t|ƒt|dƒkr=td ƒ‚q-| ¡}d }d |_d }|D]!}t|tƒrU|j }|||d}|j|||d7_d }qKg}|j   ¡D]\}\} } } } } |  | | | | f|t |ƒ|f¡qt|jtt|ƒjƒd �g|_}|D] }|  |d¡q¡|S)Nrrrr rr )r:rrrsrszCan't have mixed argument typer!r;z, )Úkeyr:)r@r3rNr-rdrWrxÚ sort_typerrrFrZÚappendr[ÚsortrÚ TupleCompÚcompare)r6Zfieldr8Z sort_arg_defsZ sort_tupleZ connectorrvZ stats_listr\r]r^r_r`rar@Útupler!r!r"Ú sort_statsìsHýý ÿ  ÿ zStats.sort_statscCs|jr|j ¡|S©N)r@Úreverse©r6r!r!r"Ú reverse_orders zStats.reverse_ordercCsî|j}i|_}d}| ¡D]H\}\}}}}} t|ƒ} tt| ƒƒ|kr)tt| ƒƒ}i} |  ¡D] \} } | | t| ƒ<q/| |vrMt|| ||||| fƒ|| <q||||| f|| <q|j}tƒ|_}|D] }| t|ƒ¡qb||_ d|_ d|_ |Srb) rFrZÚfunc_strip_pathr3r[rerErDr5rCr@r>)r6ZoldstatsZnewstatsrCr\r]r^r_r`raZnewfuncZ newcallersÚfunc2ÚcallerZold_topZnew_topr!r!r"Ú strip_dirss0    þ zStats.strip_dirsc Cst|jrdSi|_}|j ¡D](\}\}}}}}||vr i||<| ¡D]\}} ||vr0i||<| |||<q$qdSr�)r>rFrZ) r6r>r\r]r^r_r`rar†r‡r!r!r"Ú calc_callees5s ýzStats.calc_calleescCs|}t|tƒr7zt |¡}Wntjy"|d|7}||fYSwg}|D]}| t|ƒ¡r5| |¡q'n=t|ƒ}t|t ƒr[d|krJdkr[nnt ||dƒ}|d|…}nt|t ƒrtd|krj|krtnn|}|d|…}t|ƒt|ƒkr‰|dt|ƒt|ƒ|f7}||fS)Nz# ggð?gà?rz6 List reduced from %r to %r due to restriction <%r> ) rNrÚreÚcompileÚerrorÚsearchr[r{r3r,r-)r6ZselÚlistÚmsgZnew_listZrexr\Úcountr!r!r"Úeval_print_amountHs4   þ €þ"" ÿzStats.eval_print_amountc Cs  |jr |jdd…nt|j ¡ƒ}|stdiƒStt|jƒƒ}i}t||ƒ}|D]Y}|j|\}}}} } |\} } } ||krBt|ƒn t|ƒdt|ƒ}tt|ƒƒ}|dkrXdntt||ƒƒ}tt| ƒƒ}|dkrldntt| |ƒƒ}t |||||| | ƒ}||| <q)|S)Nrú/r:) r@rŽrFÚkeysr r,Úf8r.rr)r6Z func_listr.r/Z stats_profiler\r]r^r_r`rar)r*Ú func_namer rr'r r(Z func_profiler!r!r"Úget_stats_profilebs4"   $  ù zStats.get_stats_profilecCs¾|j}|jr|jdd…}d|jd}n t|j ¡ƒ}d}|D] }| |||¡\}}q t|ƒ}|s6d|fSt||j d�|t|jƒkrYd}|D]}tt |ƒƒ|krXtt |ƒƒ}qH|d|fS)Nz Ordered by: Ú z! Random listing order was used rr<rs) rCr@rzrŽrFr“r‘r3rKr0r[)r6Zsel_listÚwidthZ stat_listr�Z selectionr�r\r!r!r"Úget_print_list…s& € zStats.get_print_listcGsò|jD] }t||jd�q|jrt|jd�d}|jD] }t|t|ƒ|jd�qt||jdd|jd�|j|jkrDtd|jd|jd�td|j|jd�t|jd�| |¡\}}|rw|  ¡|D]}|  |¡qct|jd�t|jd�|S)Nr<ú zfunction callsú ©Úendr=z(%d primitive calls)zin %.3f seconds) r?rKr0rEÚfunc_get_function_namerArBr.r™Ú print_titleÚ print_line)r6ÚamountrÚindentr\r˜rŽr!r!r"Ú print_stats�s(        zStats.print_statscGsz| |¡\}}|r;| ¡| |d¡|D]}||jvr'| |||j|¡q| ||i¡qt|jd�t|jd�|S)Nz called...r<)r™r‰Úprint_call_headingr>Úprint_call_linerKr0)r6r¡r˜rŽr\r!r!r"Ú print_callees´s    zStats.print_calleesc Gsh| |¡\}}|r2| |d¡|D]}|j|\}}}}} | ||| d¡qt|jd�t|jd�|S)Nzwas called by...z<-r<)r™r¤rFr¥rKr0) r6r¡r˜rŽr\r]r^r_r`rar!r!r"Ú print_callersÃs   zStats.print_callersc Csztd |¡||jd�d}|j ¡D]\}}}}}|r+tt| ¡ƒƒ} t| tƒ}nq|r;td|d|jd�dSdS)Nz Function r<Fr›z ncalls tottime cumtime) rKÚljustr0rFrÚnextÚiterrNr) r6Ú name_sizeZ column_titleZ subheaderr]r^r_r`rarr!r!r"r¤Îs ýÿzStats.print_call_headingú->cCstt|ƒ |¡|d|jd�|st|jd�dSt| ¡ƒ}d}|D]^}t|ƒ}||} t| tƒrb| \} } } } | | krCd| | f}nd| f}d| dd t |ƒ¡t | ƒt | ƒ|f}|d }nd || t |j |d ƒf}|d }t||||jd�d}q#dS) Nr›rœr<r;z%d/%dz%dz %s %s %s %srrrsrz %s(%r) %srk) rKr[r¨r0Úsortedr“rNrÚrjustr3r”rF)r6r«ÚsourceZ call_dictZarrowZclistr¢r\rrr^r]r_r`ZsubstatsZ left_widthr!r!r"r¥Ús.     ÿ ðzStats.print_call_linecCs"tdd|jd�td|jd�dS)Nz- ncalls tottime percall cumtime percallr›rœzfilename:lineno(function)r<©rKr0rƒr!r!r"rŸószStats.print_titlecCsì|j|\}}}}}t|ƒ}||kr|dt|ƒ}t| d¡d|jd�tt|ƒd|jd�|dkrz{%s}rr:z %s:%d(%s))Ú startswithÚendswith)r•rr!r!r"r[)s r[c CsB |\}}}}}|\}}} } } |||||| || t| |ƒfSr�)Ú add_callers) Útargetr¯r]r^r_r`raZt_ccZt_ncZt_ttZt_ctZ t_callersr!r!r"re:s ÿrecCs„ i}| ¡D]\}}|||<q| ¡D]+\}}||vr;t|tƒr2tdd„t|||ƒDƒƒ||<q|||7<q|||<q|S)Ncss�|] \}}||VqdSr�r!)Ú.0ÚiÚjr!r!r"Ú Js€zadd_callers..)rZrNrÚzip)rÃr¯Z new_callersr\r‡r!r!r"rÂAs  " rÂcCs d}| ¡D]}||7}q|Srb)r)rar^r r!r!r"Ú count_callsRs   rÉcCsd|S)Nz%8.3fr!)Úxr!r!r"r”]r¼r”Ú__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ÚProfileBrowserNcCs:tj |¡d|_d|_tj|_|dur| |¡dSdS)Nú% ) ÚcmdÚCmdr9ÚpromptrFr1r2r0Údo_read)r6Úprofiler!r!r"r9ls ÿzProfileBrowser.__init__c Cs¾| ¡}g}|D]@}z | t|ƒ¡WqtyYnwzt|ƒ}|dks*|dkr3td|jd�Wq| |¡WqtyBYnw| |¡q|jrVt|j|ƒ|ŽdStd|jd�dS)Nrrz#Fraction argument must be in [0, 1]r<úNo statistics object is loaded.) Úsplitr{r-Ú ValueErrorr,rKr0rFÚgetattr)r6Úfnrr7Z processedZtermZfracr!r!r"Úgenericts2 ÿ  ÿ ÿ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!r!r"Ú generic_helpŒs zProfileBrowser.generic_helpc Csh|jr+z |j |¡WdSty*}ztd||f|jd�WYd}~dSd}~wwtd|jd�dS)Nz$Failed to load statistics for %s: %sr<rÓr)rFr5ÚOSErrorrKr0)r6rÚer!r!r"Údo_add”sü €üzProfileBrowser.do_addcCótd|jd�dS)Nz>Add profile info from given file to current statistics object.r<r°rƒr!r!r"Úhelp_add�ózProfileBrowser.help_addcCó | d|¡S)Nr¦©rØ©r6rr!r!r"Ú do_callees ó zProfileBrowser.do_calleescCótd|jd�| ¡dS)Nz6Print callees statistics from the current stat object.r<©rKr0rÙrƒr!r!r"Ú help_callees¢ó zProfileBrowser.help_calleescCrà)Nr§rárâr!r!r"Ú do_callers¦räzProfileBrowser.do_callerscCrå)Nz6Print callers statistics from the current stat object.r<rærƒr!r!r"Ú help_callers¨rèzProfileBrowser.help_callerscCstd|jd�dS)Nr;r<rr°râr!r!r"Údo_EOF¬szProfileBrowser.do_EOFcCrÝ©NzLeave the profile browser.r<r°rƒr!r!r"Úhelp_EOF¯rßzProfileBrowser.help_EOFcCsdS)Nrr!râr!r!r"Údo_quit²szProfileBrowser.do_quitcCrÝrìr°rƒr!r!r"Ú help_quit´rßzProfileBrowser.help_quitc CsÔ|rLzt|ƒ|_Wn;ty&}zt|jd|jd�WYd}~dSd}~wtyD}zt|jjd||jd�WYd}~dSd}~ww|d|_ dSt |j ƒdkra|j dd…}|  |¡dStd|jd�dS) Nrr<ú:rÍrséþÿÿÿz1No statistics object is current -- cannot reload.r) rrFrÚrKr7r0rJrXr#rÐr3rÑ)r6rÚerrr!r!r"rÑ·s(€€þ û ÿzProfileBrowser.do_readcCó 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!r!r"Ú help_readÈózProfileBrowser.help_readcCs&|jr |j ¡dStd|jd�dS)NrÓr<r)rFr„rKr0râr!r!r"Ú do_reverseÌs  ÿzProfileBrowser.do_reversecCrÝ)Nz/Reverse the sort order of the profiling report.r<r°rƒr!r!r"Ú help_reverseÒrßzProfileBrowser.help_reversecs”|js td|jd�dS|j ¡‰|r*t‡fdd„| ¡Dƒƒr*|jj| ¡ŽdStd|jd�tj  ¡D]\}}td||df|jd�q6dS) NrÓr<c3s�|]}|ˆvVqdSr�r!)rÄrÊ©Zabbrevsr!r"rÇÚs€z)ProfileBrowser.do_sort..z/Valid sort keys (unique prefixes are accepted):z%s -- %srr) rFrKr0rxÚallrÔr€rrtrZ)r6rryrr!rør"Údo_sortÕs ýzProfileBrowser.do_sortcCró)Nz.Sort profile data according to specified keys.r<z3(Typing `sort' without arguments lists valid keys.)r°rƒr!r!r"Ú help_sortárõzProfileBrowser.help_sortcs‡fdd„tjDƒS)Ncsg|] }| ˆ¡r|‘qSr!)rÀ)rÄÚa©Útextr!r"Ú åsz0ProfileBrowser.complete_sort..)rrt)r6rþr7r!rýr"Ú complete_sortäszProfileBrowser.complete_sortcCrà)Nr£rárâr!r!r"Údo_statsçräzProfileBrowser.do_statscCrå)Nz.Print statistics from the current stat object.r<rærƒr!r!r"Ú help_statsérèzProfileBrowser.help_statscCs&|jr |j ¡dStd|jd�dS)NrÓr<)rFrˆrKr0râr!r!r"Údo_stripíszProfileBrowser.do_stripcCrÝ)Nzsh     C   ÿ   ÿ�Û