
    z%iir                        	 d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dlm	Z	 d dl
mZ d dlmZ g dZ ee       G d d             Z ed	
       G d d             Z ed	
       G d d             Z G d d      Z G d d      Zd Zd Zd Zd Zd Zd Zd Zedk(  rd dlZ	 d dlZ G d dej>                        Z  e!e jD                        dkD  re jD                  d   Z#ndZ#	  e e#      Z$e jD                  dd D ]  Z%e$jM                  e%         e'de$jP                          e$jS                           e'd!e$jP                          yy# e$ r Y w xY w# e*$ r Y yw xY w)"    N)StrEnum_simple_enum)
cmp_to_key)	dataclass)Dict)StatsSortKeyFunctionProfileStatsProfilec                   6    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
 Zy)r	   )callsncalls)
cumulativecumtime)filenamemodulelinenamenflpcallsstdname)timetottimec                     |d   }t         j                  | |      }||_        |dd  D ]  }|| j                  |<    ||_        |S Nr      )str__new___value__value2member_map__all_values)clsvaluesvalueobjother_values        :/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/pstats.pyr   zSortKey.__new__0   sS    q	kk#u%!!": 	6K25C"";/	6 
    N)__name__
__module____qualname__CALLS
CUMULATIVEFILENAMELINENAMENFLPCALLSSTDNAMETIMEr    r(   r'   r	   r	   $   s4    E(J#HDD
CFGDr(   r	   T)unsafe_hashc                   T    e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   eed<   y)	r
   r   r   percall_tottimer   percall_cumtime	file_nameline_numberN)r)   r*   r+   r   __annotations__floatintr5   r(   r'   r
   r
   :   s(    KNNNr(   r
   c                   .    e Zd ZU 	 eed<   eeef   ed<   y)r   total_ttfunc_profilesN)r)   r*   r+   r=   r<   r   r   r
   r5   r(   r'   r   r   D   s    :O_,--r(   r   c                       e Zd Z	 dddZd Zd Zd Zd Zd Zd	d	d
d
ddddddddddZ	d Z
d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd"dZd  Zd! Zy)#r   N)streamc                    |xs t         j                  | _        t        |      sd }n
|d   }|dd  }| j	                  |        | j
                  |  y r   )sysstdoutrC   leninitadd)selfrC   argsargs       r'   __init__zStats.__init__l   sJ    *

4yCq'C8D		#$r(   c                 j   d | _         g | _        d | _        d| _        d| _        d| _        d| _        t               | _        i | _	        i | _
        | j                  |       	 | j                          y # t        $ r7 t        d| j                  r| j                  d   ndz  | j                          w xY w)Nr   zInvalid 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printrC   )rJ   rL   s     r'   rH   z
Stats.initv   s    

	$$& 	*%)ZZ4::b>R9?C{{L	s   !A2 2A B2c                    |i | _         y t        |t              rst        |d      5 }t	        j
                  |      | _         d d d        	 t        j                  |      }t        j                  |j                        dz   |z   }|g| _        n4t        |d      r(|j                          |j                   | _         i |_         | j                   st        d| j                  d|      y # 1 sw Y   xY w#  Y uxY w)Nrbz    create_statszCannot create or construct a z object from )r[   
isinstancer   openmarshalloadosstatr   ctimest_mtimerT   hasattrrc   	TypeError	__class__)rJ   rL   f
file_statss       r'   r]   zStats.load_stats   s    ;DJS!c4 -A$\\!_
-WWS\
jj!4!45>D DJS.)DJCIzz#~~s4 5 5- -
s   C*:C6 *C36C:c                    | j                   j                         D ]  \  }\  }}}}}| xj                  |z  c_        | xj                  |z  c_        | xj                  |z  c_        d|v r| j
                  j                  |       t        t        |            | j                  kD  st        t        |            | _	         y )N)jprofiler   profiler)
r[   itemsrV   rW   r@   rZ   rI   rG   func_std_stringrX   )rJ   funcccncttctcallerss          r'   r^   zStats.get_top_level_stats   s    /3zz/?/?/A 	?+D+2r2r7"OO"OMM"M*g5""4(?4()D,=,==$'(=$>!	?r(   c                    |s| S t        |      D ]^  }t        |       t        |      k7  rt        |      }| xj                  |j                  z  c_        | xj                  |j                  z  c_        | xj
                  |j
                  z  c_        | xj                  |j                  z  c_        |j                  D ]  }| j                  j                  |        | j                  |j                  k  r|j                  | _	        d | _
        |j                  j                         D ]C  \  }}|| j                  v r| j                  |   }nddddi f}t        ||      | j                  |<   E a | S Nr   )reversedtyper   rT   rV   rW   r@   rZ   rI   rX   rU   r[   rt   add_func_stats)rJ   arg_listitemrv   ri   old_func_stats         r'   rI   z	Stats.add   s>   KX& 	GDDzT$Z'T{JJ$**$J 0 00OOt.OMMT]]*M )""4()   4#4#44$($5$5! DM"jj..0 G
d4::%$(JJt$4M%&1a$5M#1-#F

4 G	G* r(   c                     	 t        |d      5 }t        j                  | j                  |       d d d        y # 1 sw Y   y xY w)Nwb)re   rf   dumpr[   )rJ   r   ro   s      r'   
dump_statszStats.dump_stats   s8    H(D! 	(QLLQ'	( 	( 	(s	   !8A)))r   rO   z
call count)))   rO   zcumulative time))   r   z	file name))   r   zline number))   r   zfunction name))r   r   r   zname/file/line)))r   rO   zprimitive call count)))   r   zstandard name)))   rO   zinternal time)r   r   r   r   r   r   r   r   r   r   r   r   r   c                     	 | j                   sSi x| _         }i }| j                  j                         D ]!  \  }}|}|s||v rd||<   |||<   |d d }|r# |D ]  }||=  | j                   S )Nr   rO   )r\   sort_arg_dict_defaultrt   )rJ   dictbad_listwordtupfragments         r'   get_sort_arg_defszStats.get_sort_arg_defs   s    7!!(**DH!77==? -	c4'-.*%(DN'}H - ! J!!!r(   c                    |s	d| _         | S t        |      dk(  r"t        |d   t              rddddd|d      g}n=t        |      dk\  r/|dd  D ]'  }t	        |      t	        |d         k7  st        d	       | j                         }d
}d| _        d}|D ]I  }t        |t              r|j                  }|||   d   z   }| xj                  |||   d   z   z  c_        d}K g }| j                  j                         D ]1  \  }\  }	}
}}}|j                  |	|
||f|z   t        |      |fz          3 |j                  t        t!        |      j"                               g x| _         }|D ]  }|j                  |d           | S )Nr   r   r   r   r   r   )rO   r   r   r   r   zCan't have mixed argument typer5   rP   z, )keyrO   )rU   rG   rd   r>   r   rm   r   	sort_typer	   r$   r[   rt   appendru   sortr   	TupleCompcompare)rJ   fieldrL   sort_arg_defs
sort_tuple	connectorr   
stats_listrv   rw   rx   ry   rz   r{   rU   tuples                   r'   
sort_statszStats.sort_stats   s   DMKu:?z%(C8$"!') */q3 5E Z1_QRy F9U1X.#$DEEF ..0
	 	D$(zz#mD&9!&<<JNNi-*=a*@@@NI	 
/3zz/?/?/A 	=+D+2r2r7r2r2.5.t4d;< =	= 	Jy'<'D'DEF#%% 	'EOOE"I&	'r(   c                 R    | j                   r| j                   j                          | S N)rU   reverserJ   s    r'   reverse_orderzStats.reverse_order  s    ==MM!!#r(   c           	         | j                   }i x| _         }d}|j                         D ]  \  }\  }}}}}	t        |      }
t        t	        |
            |kD  rt        t	        |
            }i }|	j                         D ]  \  }}||t        |      <    |
|v rt        ||
   |||||f      ||
<   |||||f||
<    | j                  }t               x| _        }|D ]  }|j                  t        |              || _	        d | _
        d | _        | S r}   )r[   rt   func_strip_pathrG   ru   r   rZ   rY   rI   rX   rU   rS   )rJ   oldstatsnewstatsrX   rv   rw   rx   ry   rz   r{   newfunc
newcallersfunc2callerold_topnew_tops                   r'   
strip_dirszStats.strip_dirs  s:   :: ""
X/7~~/? 	A+D+2r2r7%d+G?7+,|;"?7#;<J!( <v5;
?512< ("$2(0(9)+RR(D%F! &(RZ$@!	A ..#&5( 	/DKK-.	/ )r(   c                     | j                   ry i x| _         }| j                  j                         D ]=  \  }\  }}}}}||vri ||<   |j                         D ]  \  }}	||vri ||<   |	||   |<    ? y r   )rS   r[   rt   )
rJ   rS   rv   rw   rx   ry   rz   r{   r   r   s
             r'   calc_calleeszStats.calc_callees4  s    )++;/3zz/?/?/A 	3+D+2r2r7;&$&D!!( 3v+)+K&,2E"4(3	3 	r(   c                 J   |}t        |t              rL	 t        j                  |      }g }|D ].  }|j                  t        |            s|j                  |       0 net        |      }t        |t              r%d|cxk  rdk  rn nt        ||z  dz         }|d | }n%t        |t              rd|cxk  r|k  r
n n|}|d | }t        |      t        |      k7  r!|dt        |      dt        |      d|d	z  }||fS # t        j                  $ r |d|z  z  }||fcY S w xY w)
Nz#   <Invalid regular expression %r>
g        g      ?g      ?r   z   List reduced from z to z due to restriction <z>
)rd   r   recompileerrorsearchru   r   rG   r=   r>   )rJ   sellistmsgnew_listrexrv   counts           r'   eval_print_amountzStats.eval_print_amountG  s$   c3%jjo H *::od34OOD)* IE#u%#*:s*:ECK",-<C%!s*:U*:<t9H%D	3x=#/ /C }' 88 %=CC}$%s   D   D"!D"c           
         	 | j                   r| j                   d d  n"t        | j                  j                               }|st	        di       S t        t        | j                              }i }t	        ||      }|D ]  }| j                  |   \  }}}}	}
|\  }}}||k(  rt        |      nt        |      dz   t        |      z   }t        t        |            }|dk(  rdnt        t        ||z              }t        t        |	            }|dk(  rdnt        t        |	|z              }t        |||||||      }|||<    |S )Nr   /rO   )
rU   r   r[   keysr   r=   f8r@   r   r
   )rJ   	func_listr@   rA   stats_profilerv   rw   rx   ry   rz   r{   r:   r;   	func_namer   r   r8   r   r9   func_profiles                       r'   get_stats_profilezStats.get_stats_profilea  s:   	
 )-DMM!$4

@Q;R	2&&DMM*+$X}= 	4D&*jj&6#BBG04-I{I "bSWs2w}s2w/FFBrFmG$&!Gbr"R%y1AOBrFmG$&!Gbr"R%y1AO*L (4M)$#	4& r(   c                    | j                   }| j                  r"| j                  d d  }d| j                  z   dz   }n%t        | j                  j                               }d}|D ]  }| j                  |||      \  }} t        |      }|sd|fS t        || j                         |t        | j                        k  r5d}|D ].  }t        t        |            |kD  st        t        |            }0 |dz   |fS )Nz   Ordered by: 
z!   Random listing order was used
r   rQ   r   )rX   rU   r   r   r[   r   r   rG   r`   rC   ru   )rJ   sel_listwidth	stat_listr   	selectionr   rv   s           r'   get_print_listzStats.get_print_list  s    !!==a(I#dnn4t;CTZZ__./I6C! 	OI!33Iy#NNIs	O Ii<c$3tzz?"E! 7-.6 56E7 Qw	!!r(   c                    | j                   D ]  }t        || j                          | j                   rt        | j                         d}| j                  D ]#  }t        |t	        |      | j                         % t        || j
                  dd| j                         | j
                  | j                  k7  r%t        d| j                  z  d| j                         t        d| j                  z  | j                         t        | j                         | j                  |      \  }}|rT| j                          |D ]  }| j                  |        t        | j                         t        | j                         | S )NrQ           zfunction calls endrR   z(%d primitive calls)zin %.3f seconds)rT   r`   rC   rZ   func_get_function_namerV   rW   r@   r   print_title
print_line)rJ   amountr   indentrv   r   r   s          r'   print_statszStats.print_stats  s.   

 	.H(-	.::t{{#NN 	JD&06T[[I	J 	fd&&(8cTt.(4??:$++V$--/dkkB4;;))&1t &%&t{{#t{{#r(   c                 `   | j                  |      \  }}|r| j                          | j                  |d       |D ]D  }|| j                  v r!| j	                  ||| j                  |          2| j	                  ||i        F t        | j                         t        | j                         | S )Nz	called...rQ   )r   r   print_call_headingrS   print_call_liner`   rC   )rJ   r   r   r   rv   s        r'   print_calleeszStats.print_callees  s    ))&1t##E;7 :4+++((d6F6Ft6LM((b9	:
 t{{#t{{#r(   c                    | j                  |      \  }}|rn| j                  |d       |D ]+  }| j                  |   \  }}}}}	| j                  |||	d       - t	        | j
                         t	        | j
                         | S )Nzwas called by...z<-rQ   )r   r   r[   r   r`   rC   )
rJ   r   r   r   rv   rw   rx   ry   rz   r{   s
             r'   print_callerszStats.print_callers  s    ))&1t##E+=> A*.**T*:'BB$$UD'4@A t{{#t{{#r(   c                 P   t        dj                  |      |z   | j                         d}| j                  j	                         D ]>  \  }}}}}|st        t        |j	                                     }	t        |	t              } n |rt        d|z  dz   | j                         y y )Nz	Function rQ   Fr   z    ncalls  tottime  cumtime)	r`   ljustrC   r[   r#   nextiterrd   r   )
rJ   	name_sizecolumn_title	subheaderrw   rx   ry   rz   r{   r$   s
             r'   r   zStats.print_call_heading  s    k	*\9L	'+zz'8'8': 	#BBGT'.."234&ue4			
 #i-"@@t{{S r(   c           	      h   t        t        |      j                  |      |z   d| j                         |st        | j                         y t	        |j                               }d}|D ]  }t        |      }||   }	t        |	t              r]|	\  }
}}}|
|k7  rd|
|fz  }nd|
fz  }|j                  ddt        |      z  z         dt        |      dt        |      d	|}|d
z   }n(|d|	dt        | j                  |   d         }|dz   }t        ||z  |z   | j                         d} y )Nr   r   rQ   rP   z%d/%dz%dr   r   z  r   (z) r   )r`   ru   r   rC   sortedr   rd   r   rjustrG   r   r[   )rJ   r   source	call_dictarrowclistr   rv   r   r$   rx   rw   ry   rz   substats
left_widths                   r'   r   zStats.print_call_line  s%   of%++I6>CdkkZt{{#y~~'( 	D"4(DdOE%'!&BB8&"b1H#re|H-5^^AaFmO-L-/VRVTC&]
*.r$**T:J1:M7NO&]
&#h.T[[AF!	r(   c                 b    t        dd| j                         t        d| j                         y )Nz-   ncalls  tottime  percall  cumtime  percallr   r   zfilename:lineno(function)rQ   r`   rC   r   s    r'   r   zStats.print_title  s"    =3T[[Y)<r(   c                    | j                   |   \  }}}}}t        |      }||k7  r|dz   t        |      z   }t        |j                  d      d| j                         t        t        |      d| j                         |dk(  rt        dd| j                         n$t        t        ||z        d| j                         t        t        |      d| j                         |dk(  rt        dd| j                         n$t        t        ||z        d| j                         t        t        |      | j                         y )Nr   	   r   r   r   r   rQ   )r[   r   r`   r   rC   r   ru   )rJ   rv   rw   rx   ry   rz   r{   cs           r'   r   zStats.print_line  s    "&**T"2BBG8C#b'!Aaggajc4bf#DKK07%St{{3"RU)4;;7bf#DKK07%St{{3"RU)4;;7od#$++6r(   )z->)r)   r*   r+   rM   rH   r]   r^   rI   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r5   r(   r'   r   r   J   s    B &* &,?4( DCHHBDBFGMFFF ""%N
:&4!F"0.	
T2=7r(   r   c                       e Zd Z	 d Zd Zy)r   c                     || _         y r   comp_select_list)rJ   r   s     r'   rM   zTupleComp.__init__  s
     0r(   c                 f    | j                   D ]"  \  }}||   }||   }||k  r| c S ||kD  s |c S  yr}   r   )rJ   leftrightindex	directionlrs          r'   r   zTupleComp.compare  sO     $ 5 5 	!E9UAeA1u!z!1u  	! r(   N)r)   r*   r+   rM   r   r5   r(   r'   r   r     s    &1r(   r   c                 R    | \  }}}t         j                  j                  |      ||fS r   )rh   pathbasename)r   r   r   r   s       r'   r   r   !  s*    $HdD77H%tT11r(   c                     | d   S )Nr   r5   )rv   s    r'   r   r   %  s    7Nr(   c                 ~    | d d dk(  r1| d   }|j                  d      r|j                  d      rd|dd z  S |S d| z  S )	Nr   )~r   <>z{%s}r   rO   z	%s:%d(%s))
startswithendswith)r   r   s     r'   ru   ru   (  sQ    !} |??3DMM#$6D2J&&KY&&r(   c                 ^    	 |\  }}}}}| \  }}}	}
}||z   ||z   ||	z   ||
z   t        ||      fS r   )add_callers)targetr   rw   rx   ry   rz   r{   t_cct_nct_ttt_ct	t_callerss               r'   r   r   9  sR    =$BBG(.%D$dItGRWbgr$w)W-/ /r(   c           	      
   	 i }| j                         D ]
  \  }}|||<    |j                         D ]O  \  }}||v rAt        |t              r#t        d t        |||         D              ||<   =||xx   |z  cc<   K|||<   Q |S )Nc              3   ,   K   | ]  \  }}||z     y wr   r5   ).0ijs      r'   	<genexpr>zadd_callers.<locals>.<genexpr>I  s     )[DAq!a%)[s   )rt   rd   r   zip)r  r   new_callersrv   r   s        r'   r  r  @  s    4K #f"D# 	'f;&%($))[CTXHY<Z)[$[D! D!V+! &K	' r(   c                 @    	 d}| j                         D ]  }||z  }	 |S r}   )r#   )r{   rx   r   s      r'   count_callsr"  Q  s.    J	
B! 
eIr(   c                     d| z  S )Nz%8.3fr5   )xs    r'   r   r   \  s    Q;r(   __main__c                       e Zd ZddZd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)ProfileBrowserNc                     t         j                  j                  |        d| _        d | _        t
        j                  | _        || j                  |       y y )N% )	cmdCmdrM   promptr[   rE   rF   rC   do_read)rJ   profiles     r'   rM   zProfileBrowser.__init__k  sD    GGT"DKDJ**DK"W% #r(   c                    |j                         }g }|D ]  }	 |j                  t        |              | j                  r t        | j                  |      |  yt        d| j                         y# t        $ r Y nw xY w	 t	        |      }|dkD  s|dk  rt        d| j                         |j                  |       # t        $ r Y nw xY w|j                  |       )Nr   r   z#Fraction argument must be in [0, 1]rQ   No statistics object is loaded.)	splitr   r>   
ValueErrorr=   r`   rC   r[   getattr)rJ   fnr   rK   	processedtermfracs          r'   genericzProfileBrowser.generics  s    ::<DI '$$SY/'  zz'

B'3  7dkkJ! "  ;Dax4!8C$++V $$T*!   &s)   A33	A?>A?,C0C	CCc                    t        d| j                         t        d| j                         t        d| j                         t        d| j                         t        d| j                         t        d| j                         y )NzArguments may be:rQ   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   s    r'   generic_helpzProfileBrowser.generic_help  sb    %DKK8D4;;WNUYU`U`aATLSWS^S^_0t{{Cr(   c                     | j                   r	 | j                   j                  |       yt        d| j                         y# t        $ r'}t        d|d|| j                         Y d }~yd }~ww xY w)NzFailed to load statistics for z: rQ   r0  r   )r[   rI   OSErrorr`   rC   )rJ   r   es      r'   do_addzProfileBrowser.do_add  sj    zz`JJNN4(
  7dkkJ	  `D!LSWS^S^__ 	`s   A 	A2A--A2c                 2    t        d| j                         y )Nz>Add profile info from given file to current statistics object.rQ   r   r   s    r'   help_addzProfileBrowser.help_add  s    RY]YdYder(   c                 &    | j                  d|      S )Nr   r8  rJ   r   s     r'   
do_calleeszProfileBrowser.do_callees      <<66r(   c                 R    t        d| j                         | j                          y )Nz6Print callees statistics from the current stat object.rQ   r`   rC   r:  r   s    r'   help_calleeszProfileBrowser.help_callees       JQUQ\Q\]r(   c                 &    | j                  d|      S )Nr   rB  rC  s     r'   
do_callerszProfileBrowser.do_callers  rE  r(   c                 R    t        d| j                         | j                          y )Nz6Print callers statistics from the current stat object.rQ   rG  r   s    r'   help_callerszProfileBrowser.help_callers  rI  r(   c                 2    t        d| j                         y)NrP   rQ   r   r   rC  s     r'   do_EOFzProfileBrowser.do_EOF  s    "4;;'r(   c                 2    t        d| j                         y NzLeave the profile browser.rQ   r   r   s    r'   help_EOFzProfileBrowser.help_EOF      .T[[Ar(   c                      y)Nr   r5   rC  s     r'   do_quitzProfileBrowser.do_quit  s    r(   c                 2    t        d| j                         y rQ  r   r   s    r'   	help_quitzProfileBrowser.help_quit  rS  r(   c                    |r	 t        |      | _        |dz   | _	        yt        | j                        dkD  r!| j                  d d }| j                  |       yt        d| j
                         y# t        $ r.}t        |j                  d   | j
                         Y d }~y d }~wt        $ r9}t        |j                  j                  dz   || j
                         Y d }~y d }~ww xY w)	Nr   rQ   :r)  r   z1No statistics object is current -- cannot reload.r   )r   r[   r<  r`   rK   rC   r_   rn   r)   r,  rG   r-  )rJ   r   errs      r'   r-  zProfileBrowser.do_read  s    !&tDJ #Tk  T[[!A%{{3B'T"  IPTP[P[\  #((1+DKK8  #--0036$++Ns#   A0 0	C'9$B""C'./C""C'c                 `    t        d| j                         t        d| j                         y )Nz+Read in profile data from a specified file.rQ   z*Without argument, reload the current file.r   r   s    r'   	help_readzProfileBrowser.help_read  s     ?dkkR>T[[Qr(   c                     | j                   r| j                   j                          yt        d| j                         y)Nr0  rQ   r   )r[   r   r`   rC   rC  s     r'   
do_reversezProfileBrowser.do_reverse  s2    zz

((*  7dkkJr(   c                 2    t        d| j                         y )Nz/Reverse the sort order of the profiling report.rQ   r   r   s    r'   help_reversezProfileBrowser.help_reverse  s    C$++Vr(   c                    | j                   st        d| j                         y | j                   j                         |rJt	        fd|j                         D              r( | j                   j                  |j                           yt        d| j                         t        j                  j                         D ]$  \  }}t        |d|d   | j                         & y)Nr0  rQ   c              3   &   K   | ]  }|v  
 y wr   r5   )r  r$  abbrevss     r'   r  z)ProfileBrowser.do_sort.<locals>.<genexpr>  s     AqQ'\As   z/Valid sort keys (unique prefixes are accepted):z -- r   r   )
r[   r`   rC   r   allr1  r   r   r   rt   )rJ   r   r   r$   rd  s       @r'   do_sortzProfileBrowser.do_sort  s    ::7dkkJjj224GADJJLAA%

%%tzz|4
  GdkkZ$)$?$?$E$E$G JLS%U1X6T[[IJr(   c                 `    t        d| j                         t        d| j                         y )Nz.Sort profile data according to specified keys.rQ   z3(Typing `sort' without arguments lists valid keys.)r   r   s    r'   	help_sortzProfileBrowser.help_sort  s     BUGdkkZr(   c                 l    t         j                  D cg c]  }|j                  |      s| c}S c c}w r   )r   r   r  )rJ   textrK   as       r'   complete_sortzProfileBrowser.complete_sort  s'    $::Q!all4>PAQQQs   11c                 &    | j                  d|      S )Nr   rB  rC  s     r'   do_statszProfileBrowser.do_stats  s    <<t44r(   c                 R    t        d| j                         | j                          y )Nz.Print statistics from the current stat object.rQ   rG  r   s    r'   
help_statszProfileBrowser.help_stats  s    BUr(   c                     | j                   r| j                   j                          y t        d| j                         y )Nr0  rQ   )r[   r   r`   rC   rC  s     r'   do_stripzProfileBrowser.do_strip  s(    zz

%%'7dkkJr(   c                 2    t        d| j                         y )Nz<Strip leading path information from filenames in the report.rQ   r   r   s    r'   
help_stripzProfileBrowser.help_strip  s    PW[WbWbcr(   c                 2    t        d| j                         y )NzShow help for a given command.rQ   r   r   s    r'   	help_helpzProfileBrowser.help_help  s    2Er(   c                     |r|S y r   r5   )rJ   stopr   s      r'   postcmdzProfileBrowser.postcmd  s    r(   r   )r)   r*   r+   rM   r8  r:  r>  r@  rD  rH  rK  rM  rO  rR  rU  rW  r-  r]  r_  ra  rf  rh  rl  rn  rp  rr  rt  rv  ry  r5   r(   r'   r'  r'  j  s    	&	0	D		f	7	 	7	 		B		B	"	R		W		[	R	5	 	K
	d	F	r(   r'  r   r   z*Welcome to the profile statistics browser.rQ   zGoodbye.)+rE   rh   r   rf   r   enumr   r   	functoolsr   dataclassesr   typingr   __all__r	   r
   r   r   r   r   r   ru   r   r  r"  r   r)   r*  readlineImportErrorr+  r'  rG   argvinitprofilebrowserr.  r>  r`   rC   cmdloopKeyboardInterruptr5   r(   r'   <module>r     s   9,  	   	 &   ! 
Ag  * t   t. . .
|7 |7| 22	'"/" zP Pd 388}qhhqk -xx| 	$GNN7#	$:Pjw~~.G   @  s%   (E )A%E EEE#"E#