fr ddlZddlZddlZddlZddlZddlmZmZddlm Z ddl m Z ddl m Z gdZeeGddZe d Gd d Ze d Gd dZGddZGddZdZdZdZdZdZdZdZedkrddlZ ddlZn #e$rYnwxYwGddejZ e!ej"dkrej"dZ#ndZ# e e#Z$ej"ddD]Z%e$&e%e'de$j( e$)e'd!e$j( dS#e*$rYdSwxYwdS)"N)StrEnum _simple_enum) cmp_to_key) dataclass)Dict)StatsSortKeyFunctionProfile StatsProfilec8eZdZdZdZdZdZdZdZdZ dZ d Z d Z d S) r )callsncalls) cumulativecumtime)filenamemodulelinenamenflpcallsstdname)timetottimec|d}t||}||_|ddD] }||j|< ||_|SNr)str__new___value__value2member_map_ _all_values)clsvaluesvalueobj other_values -/opt/alt/python311/lib64/python3.11/pstats.pyrzSortKey.__new__0sXq kk#u%% !!"": 6 6K25C "; / /  N) __name__ __module__ __qualname__CALLS CUMULATIVEFILENAMELINENAMENFLPCALLSSTDNAMETIMErr(r'r r $sP E(J#H D D C FG Dr(r T) unsafe_hashcVeZdZUeed<eed<eed<eed<eed<eed<eed<dS) r rrpercall_tottimerpercall_cumtime file_name line_numberN)r)r*r+r__annotations__floatintr5r(r'r r :sZ KKK NNN NNNNNNr(r c6eZdZU eed<eeefed<dS)r total_tt func_profilesN)r)r*r+r=r<rrr r5r(r'r r Ds4:OOO_,------r(r ceZdZ dddZdZdZdZdZdZd d d d d d d d dddddd Z dZ dZ dZ dZ dZdZdZdZdZdZdZdZd#d Zd!Zd"ZdS)$rN)streamc|p tj|_t|sd}n|d}|dd}|||j|dSr)sysstdoutrCleninitadd)selfrCargsargs r'__init__zStats.__init__ls[*  4yy CCq'C8D #$r(cvd|_g|_d|_d|_d|_d|_d|_t|_i|_ i|_ | | | dS#t$r/td|jr |jdndz|jwxYw)NrzInvalid timing data %sfile) all_calleesfilesfcn_listr@ total_calls prim_calls max_name_lenset top_levelstats sort_arg_dict load_statsget_top_level_stats ExceptionprintrC)rJrLs r'rHz Stats.initvs        $ $ & & & & &    *%)Z74:b>>R9?C{ L L L L  s )A??9B8c| i|_dSt|trt|d5}t j||_dddn #1swxYwY t j|}tj |j dz|z}n#YnxYw|g|_ n7t|dr'| |j|_i|_|jstd|jd|dS)Nrbz create_statszCannot create or construct a z object from )r[ isinstanceropenmarshalloadosstatrctimest_mtimerThasattrrc TypeError __class__)rJrLf file_statss r'r]zStats.load_statssF ;DJ F S ! ! c4 -A$\!__  - - - - - - - - - - - - - - - WS\\ j!455>D DJJ S. ) )       DJCIz 5)#~~~ss455 5sAAA#3BBcx|jD]\}\}}}}}|xj|z c_|xj|z c_|xj|z c_d|vr|j|tt||j kr!tt||_ dS)N)jprofilerprofiler) r[itemsrVrWr@rZrIrGfunc_std_stringrX)rJfuncccncttctcallerss r'r^zStats.get_top_level_statss/3z/?/?/A/A ? ? +D+2r2r7    "   OO "OO MM "MM*g55""4(((?4(())D,===$'(=(=$>$>! ? ?r(ct|s|St|D]"}t|t|krt|}|xj|jz c_|xj|jz c_|xj|jz c_|xj|jz c_|jD]}|j||j |j kr |j |_ d|_ |j D];\}}||j vr|j |}nddddif}t|||j |<<$|SNr)reversedtyperrTrVrWr@rZrIrXrUr[rtadd_func_stats)rJarg_listitemrvri old_func_stats r'rIz Stats.addsX KX&& G GDDzzT$ZZ''T{{ JJ$* $JJ    0 0   OOt .OO MMT] *MM ) )""4(((( 4#444$($5! DM"j..00 G G d4:%%$(Jt$4MM%&1a$5M#1-#F#F 4   G  r(c t|d5}tj|j|ddddS#1swxYwYdS)Nwb)rerfdumpr[)rJrros r' dump_statszStats.dump_statssH (D ! ! (Q LQ ' ' ' ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s :>>)))rrOz call count)))rOzcumulative time))rz file name))rz line number))rz function name))rrrzname/file/line)))rrOzprimitive call count)))rz standard name)))rOz internal time) r rrrrrrrrrrrrc |jsTix|_}i}|jD]'\}}|}|r|sn||vrd||<n|||<|dd}|(|D]}||=|jS)NrrO)r\sort_arg_dict_defaultrt)rJdictbad_listwordtupfragments r'get_sort_arg_defszStats.get_sort_arg_defss7! (* *D H!7==?? - - c-#4''-.*%(DN'}H-!  JJ!!r(c|s d|_|St|dkr0t|dtrddddd|dg}nUt|dkrB|ddD]7}t |t |dkrt d 8|}d }d |_d }|D]P}t|tr|j }|||dz}|xj|||dzz c_d }Qg}|j D]9\}\} } } } } | | | | | f|zt||fz:|tt!|j gx|_}|D]}| |d|S)Nrrrr rr)rOrrrrzCan't have mixed argument typer5rPz, )keyrO)rUrGrdr>rrmr sort_typer r$r[rtappendrusortr TupleCompcompare)rJfieldrL sort_arg_defs sort_tuple connectorr stats_listrvrwrxryrzr{rUtuples r' sort_statszStats.sort_statss DMK u::??z%(C88?$"!'))*/q35EEZZ1__QRRy F F99U1X..#$DEEE/..00     D$(( "z#mD&9!&< gg?g?rz List reduced from z to z due to restriction ) rdrrecompileerrorsearchrurrGr=r>)rJsellistmsgnew_listrexrvcounts r'eval_print_amountzStats.eval_print_amountIs c3   ( %joo8 % % %=CC}$$$ %H * *::od3344*OOD))) *IIE#u%% (#*:*:*:*:s*:*:*:*:*:ECK",--<C%% (!s*:*:*:*:U*:*:*:*:*:< t99H % % CD 3x====###/ /C}s.A  A c  |jr|jddn%t|j}|st diSt t |j}i}t ||}|D]}|j|\}}}} } |\} } } ||krt|n!t|dzt|z}t t |}|dkrdnt t ||z }t t | }|dkrdnt t | |z }t|||||| | }||| <|S)Nr/rO) rUrr[keysr r=f8r@rr )rJ func_listr@rA stats_profilervrwrxryrzr{r:r; func_namerrr8rr9 func_profiles r'get_stats_profilezStats.get_stats_profilecs{ )- RDM!!!$$4 @Q@Q;R;R  '2&& &DM**++ $X}==  4 4D&*j&6 #BBG04 -I{I "bSWWWs2ww}s2ww/FFBrFFmmG$&!GGbbr"R%yy1A1AOBrFFmmG$&!GGbbr"R%yy1A1AO*L(4M) $ $r(c|j}|jr|jdd}d|jzdz}n(t|j}d}|D]}||||\}}t|}|sd|fSt||j |t|jkrCd}|D]>}tt||krtt|}?|dz|fS)Nz Ordered by:  z! Random listing order was used rrQr) rXrUrrr[rrrGr`rCru)rJsel_listwidth stat_listr selectionrrvs r'get_print_listzStats.get_print_lists! = 7 aaa(I#dn4t;CCTZ__..//I6C! O OI!33Iy#NNNIssI i<  c $$$$ 3tz?? " "E! 7 7--..66 5 566EQw !!r(c|jD]}t||j|jrt|jd}|jD]&}t|t ||j't||jdd|j|j|jkrtd|jzd|jtd|jz|jt|j||\}}|rX| |D]}| |t|jt|j|S)NrQ zfunction calls endrRz(%d primitive calls)zin %.3f seconds) rTr`rCrZfunc_get_function_namerVrWr@r print_title print_line)rJamountrindentrvrrs r' print_statszStats.print_statss  . .H ( - - - - - : $ t{ # # # #N J JD &066T[ I I I I I fd&(8c TTTT  t . . (4?:$+ V V V V $-/dkBBBB 4;))&11 t  $       & &%%%% t{ # # # # t{ # # # # r(cr||\}}|r|||d|D]E}||jvr#||||j|.|||iFt |jt |j|S)Nz called...rQ)rrprint_call_headingrSprint_call_liner`rC)rJrrrrvs r' print_calleeszStats.print_calleess))&11 t  $        # #E; 7 7 7 : :4+++((d6Ft6LMMMM((b9999 t{ # # # # t{ # # # # r(c||\}}|rp||d|D]-}|j|\}}}}} |||| d.t |jt |j|S)Nzwas called by...z<-rQ)rrr[rr`rC) rJrrrrvrwrxryrzr{s r' print_callerszStats.print_callerss))&11 t  $  # #E+= > > > A A*.*T*:'BB$$UD'4@@@@ t{ # # # # t{ # # # # r(cttd||z|jd}|jD]O\}}}}}|rEt t |} t| t}nP|rtd|zdz|jdSdS)Nz Function rQFrz ncalls tottime cumtime) r`ljustrCr[r#nextiterrdr) rJ name_size column_title subheaderrwrxryrzr{r$s r'rzStats.print_call_headings k **\9 LLLL '+z'8'8':':   #BBG T'.."2"23344&ue44    T #i-"@@t{ S S S S S S T Tr(->c tt|||zd|j|st|jdSt |}d}|D]}t|}||} t | trn| \} } } } | | krd| | fz}nd| fz}|ddt|zzdt| dt| d |}|d z}n-|d | d t|j |d }|d z}t||z|z|jd}dS)NrrrQrPz%d/%dz%drrz r(z) r) r`rurrCsortedrrdrrjustrGrr[)rJrsource call_dictarrowclistrrvrr$rxrwryrzsubstats left_widths r'rzStats.print_call_lines of%%++I66>CdkZZZZ  t{ # # # # Fy~~''((  D"4((DdOE%'' +!&BB88&"b1HH#re|H-5^^AaF mO-L-L-L-L-/VVVVRVVVVTTC&] *.$$r$*T:J1:M7N7N7NO&] &#h.T[ A A A AFF!  r(c`tdd|jtd|jdS)Nz- ncalls tottime percall cumtime percallrrzfilename:lineno(function)rQr`rCrs r'rzStats.print_titles6 =3T[YYYY ) <<<<<z{%s}rrOz %s:%d(%s)) startswithendswith)rrs r'ruru*sh!}  | ??3   DMM#$6$6 D2J& &KY&&r(cf |\}}}}}|\}}} } } ||z||z|| z|| zt| |fSr) add_callers) targetrrwrxryrzr{t_cct_nct_ttt_ct t_callerss r'rr;sU=$BBG(.%D$dI tGRWbgr$w)W-- //r(c > i}|D] \}}|||< |D]e\}}||vrWt|tr1tdt|||D||<O||xx|z cc<`|||<f|S)Nc3&K|] \}}||zV dSrr5).0ijs r' zadd_callers..Ks*)[)[DAq!a%)[)[)[)[)[)[r()rtrdrzip)rr new_callersrvrs r'rrBs4K ## f" D  ' ' f ;  &%(( ,$))[)[C TXHY ValueErrorr=r`rCr[getattr)rJfnrrK processedtermfracs r'genericzProfileBrowser.genericus/::<Add profile info from given file to current statistics object.rQrrs r'help_addzProfileBrowser.help_adds RY]Yd e e e e e er(c.|d|S)Nrr9rJrs r' do_calleeszProfileBrowser.do_callees<<66 6r(cZtd|j|dS)Nz6Print callees statistics from the current stat object.rQr`rCr;rs r' help_calleeszProfileBrowser.help_callees2 JQUQ\ ] ] ] ]        r(c.|d|S)NrrCrDs r' do_callerszProfileBrowser.do_callersrFr(cZtd|j|dS)Nz6Print callers statistics from the current stat object.rQrHrs r' help_callerszProfileBrowser.help_callersrJr(c2td|jdS)NrPrQrrrDs r'do_EOFzProfileBrowser.do_EOFs "4; ' ' ' '1r(c2td|jdSNzLeave the profile browser.rQrrs r'help_EOFzProfileBrowser.help_EOF .T[ A A A A A Ar(cdS)Nrr5rDs r'do_quitzProfileBrowser.do_quits1r(c2td|jdSrRrrs r' help_quitzProfileBrowser.help_quitrTr(c|r t||_np#t$r,}t|jd|jYd}~dSd}~wt $r/}t|jjdz||jYd}~dSd}~wwxYw|dz|_ nSt|j dkr%|j dd}| |ntd|jdS) NrrQ:r*rz1No statistics object is current -- cannot reload.r) rr[r=r`rKrCr_rnr)r-rGr.)rJrerrs r'r.zProfileBrowser.do_reads ]!&tDJJ#(1+DK8888FFFFF #-036$+NNNNFFFFF#Tk T[!!A%%{3B3' T""""IPTP[\\\\1s  B!A  B$BBc^td|jtd|jdS)Nz+Read in profile data from a specified file.rQz*Without argument, reload the current file.rrs r' help_readzProfileBrowser.help_reads4 ?dk R R R R >T[ Q Q Q Q Q Qr(ct|jr|jntd|jdS)Nr1rQr)r[rr`rCrDs r' do_reversezProfileBrowser.do_reverses?z K ((****7dkJJJJ1r(c2td|jdS)Nz/Reverse the sort order of the profiling report.rQrrs r' help_reversezProfileBrowser.help_reverses C$+ V V V V V Vr(c|jstd|jdS|j|rOt fd|Dr"|jj|n[td|jtj D]&\}}t|d|d|j'dS)Nr1rQc3 K|]}|vV dSrr5)rr%abbrevss r'rz)ProfileBrowser.do_sort..s'AAqQ'\AAAAAAr(z/Valid sort keys (unique prefixes are accepted):z -- rr) r[r`rCrallr2rrrrt)rJrrr$res @r'do_sortzProfileBrowser.do_sorts: 7dkJJJJj2244G JAAAADJJLLAAAAA J% %tzz||444GdkZZZZ$)$?$E$E$G$GJJLS%U1XX6T[IIIII1r(c^td|jtd|jdS)Nz.Sort profile data according to specified keys.rQz3(Typing `sort' without arguments lists valid keys.)rrs r' help_sortzProfileBrowser.help_sorts4 B U U U U Gdk Z Z Z Z Z Zr(c4fdtjDS)Nc>g|]}||Sr5)r)ratexts r' z0ProfileBrowser.complete_sort..s*QQQ!all4>P>PQAQQQr()rr)rJrmrKs ` r' complete_sortzProfileBrowser.complete_sorts QQQQu:QQQ Qr(c.|d|S)NrrCrDs r'do_statszProfileBrowser.do_statss<< t44 4r(cZtd|j|dS)Nz.Print statistics from the current stat object.rQrHrs r' help_statszProfileBrowser.help_statss0 B U U U U        r(cv|jr|jdStd|jdS)Nr1rQ)r[rr`rCrDs r'do_stripzProfileBrowser.do_stripsCz K %%'''''7dkJJJJJJr(c2td|jdS)Nzrsi9,  &&&&&&&& !!!!!! A A A g* t t........ ~7~7~7~7~7~7~7~7@2222 ' ' '"///" zJJJ       PPPPPPPPd s38}}qhqk    .--x| $ $G NN7 # # # # :PPPP jw~......      Is% CCCA*E>>FF