
    =Ogr                        	 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n# e$ r Y nw xY w G d dej                  Z  e!e j"                  dk    re j"        d         Z#ndZ#	  e e#          Z$e j"        dd         D ]Z%e$&                    e%            e'de$j(                    e$)                                  e'd!e$j(                    dS # e*$ r Y dS w xY wdS )"    N)StrEnum_simple_enum)
cmp_to_key)	dataclass)Dict)StatsSortKeyFunctionProfileStatsProfilec                   8    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
 ZdS )r	   )callsncalls)
cumulativecumtime)filenamemodulelinenamenflpcallsstdname)timetottimec                     |d         }t                               | |          }||_        |dd          D ]}|| j        |<   ||_        |S Nr      )str__new___value__value2member_map__all_values)clsvaluesvalueobjother_values        /usr/lib64/python3.11/pstats.pyr   zSortKey.__new__0   sX    q	kk#u%%!!"": 	6 	6K25C";// 
    N)__name__
__module____qualname__CALLS
CUMULATIVEFILENAMELINENAMENFLPCALLSSTDNAMETIMEr    r(   r'   r	   r	   $   sP        E(J#HDD
CFGD    r(   r	   T)unsafe_hashc                   V    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<   dS )	r
   r   r   percall_tottimer   percall_cumtime	file_nameline_numberN)r)   r*   r+   r   __annotations__floatintr5   r(   r'   r
   r
   :   sZ         KKKNNNNNNNNNr(   r
   c                   6    e Zd ZU 	 eed<   eeef         ed<   dS )r   total_ttfunc_profilesN)r)   r*   r+   r=   r<   r   r   r
   r5   r(   r'   r   r   D   s4         :OOO_,------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dS )$r   N)streamc                    |pt           j        | _        t          |          sd }n|d         }|dd          }|                     |            | j        |  d S r   )sysstdoutrC   leninitadd)selfrC   argsargs       r'   __init__zStats.__init__l   s[    *
4yy 	CCq'C8D		#$r(   c                 v   d | _         g | _        d | _        d| _        d| _        d| _        d| _        t                      | _        i | _	        i | _
        |                     |           	 |                                  d S # t          $ r/ 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    

	$$&&&&& 	 	 	*%)Z74:b>>R9?C{L L L L	s   )A? ?9B8c                    |	i | _         d S t          |t                    rt          |d          5 }t	          j        |          | _         d d d            n# 1 swxY w Y   	 t          j        |          }t          j	        |j
                  dz   |z   }n#  Y nxY w|g| _        n7t          |d          r'|                                 |j         | _         i |_         | j         st          d| j        d|          d S )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   sF   ;DJFS!! 	c4 -A$\!__
- - - - - - - - - - - - - - -WS\\
j!455>DDJJS.)) 	DJCIz 	5)#~~~ss4 5 5 5s   AAA#3B Bc                 x   | j                                         D ]\  }\  }}}}}| xj        |z  c_        | xj        |z  c_        | xj        |z  c_        d|v r| j                            |           t          t          |                    | j	        k    r!t          t          |                    | _	        d S )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    /3z/?/?/A/A 	? 	?+D+2r2r7"OO"OOMM"MM*g55""4(((?4(())D,===$'(=(=$>$>!	? 	?r(   c                 t   |s| S t          |          D ]"}t          |           t          |          k    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	        k     r|j	        | _	        d | _
        |j                                        D ];\  }}|| j        v r| j        |         }nddddi f}t          ||          | j        |<   <$| 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   sX    	KX&& 	G 	GDDzzT$ZZ''T{{JJ$*$JJ 00OOt.OOMMT]*MM ) )""4(((( 4#444$($5! DM"j..00 G G
d4:%%$(Jt$4MM%&1a$5M#1-#F#F
4  G r(   c                     	 t          |d          5 }t          j        | j        |           d d d            d S # 1 swxY w Y   d S )Nwb)re   rf   dumpr[   )rJ   r   ro   s      r'   
dump_statszStats.dump_stats   s    H(D!! 	(QLQ'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   :>>)))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         sTi x| _         }i }| j                                        D ]'\  }}|}|r|sn||v rd||<   n|||<   |d d         }|(|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==?? 	- 	-	c -# 4''-.*%(DN'}H  - !  JJ!!r(   c                    |s	d| _         | S t          |          dk    r0t          |d         t                    rddddd|d                  g}nUt          |          dk    rB|dd          D ]7}t	          |          t	          |d                   k    rt          d	          8|                                 }d
}d| _        d}|D ]P}t          |t                    r|j	        }|||         d         z   }| xj        |||         d         z   z  c_        d}Qg }| j
                                        D ]9\  }\  }	}
}}}|                    |	|
||f|z   t          |          |fz              :|                    t          t!          |          j                             g x| _         }|D ]}|                    |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8?$"!') ) */q3 5EE ZZ1__QRRy F F99U1X..#$DEEE / ..00
	 	 	D$(( "z#mD&9!&<<JNNi-*=a*@@@NNII
/3z/?/?/A/A 	= 	=+D+2r2r7r2r2.5.t44d;< = = = = 	Jy'<'<'DEEFFF#%% 	' 	'EOOE"I&&&&r(   c                 F    | j         r| j                                          | S N)rU   reverserJ   s    r'   reverse_orderzStats.reverse_order  s%    = 	$M!!###r(   c           	      f   | j         }i x| _         }d}|                                D ]\  }\  }}}}}	t          |          }
t          t	          |
                    |k    rt          t	          |
                    }i }|	                                D ]\  }}||t          |          <   |
|v rt          ||
         |||||f          ||
<   |||||f||
<   | j        }t                      x| _        }|D ]$}|                    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  sj   : ""
X/7~~/?/? 	A 	A+D+2r2r7%d++G?7++,,|;;"?7#;#;<<J!( < <v5;
?51122(""$2(0(9)+RR(D%F %F!! &(RZ$@!!.#&55( 	/ 	/DKK--....(r(   c                     | j         rd S i x| _         }| j                                        D ]B\  }\  }}}}}||vri ||<   |                                D ]\  }}	||vri ||<   |	||         |<   Cd S r   )rS   r[   rt   )
rJ   rS   rv   rw   rx   ry   rz   r{   r   r   s
             r'   calc_calleeszStats.calc_callees6  s     	F)++;/3z/?/?/A/A 	3 	3+D+2r2r7;&&$&D!!( 3 3v++)+K&,2E"4((3 	r(   c                    |}t          |t                    rv	 t          j        |          }n!# t          j        $ r |d|z  z  }||fcY S w xY wg }|D ]9}|                    t          |                    r|                    |           :nt          |          }t          |t                    r0d|cxk    rdk     r#n n t          ||z  dz             }|d |         }n1t          |t                    rd|cxk    r|k     rn n|}|d |         }t          |          t          |          k    r)|dt          |          dt          |          d|d	z  }||fS )
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_amountI  s   c3 	(%joo8 % % %=CC}$$$% H * *::od3344 *OOD)))* IIE#u%% (#*:*:*:*:s*:*:*:*:*:ECK",--<C%% (!s*:*:*:*:U*:*:*:*:*:<t99H%%CD				3x====###/ /C }s   . AAc           
         	 | j         r| j         d d          n%t          | 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_profilec  s{   	
 )-RDM!!!$$4
@Q@Q;R;R	 	'2&&&DM**++$X}== 	4 	4D&*j&6#BBG04-I{I "bSWWWs2ww}s2ww/FFBrFFmmG$&!GGbbr"R%yy1A1AOBrFFmmG$&!GGbbr"R%yy1A1AO* L (4M)$$r(   c                     | j         }| j        r| j        d d          }d| j        z   dz   }n(t          | j                                                  }d}|D ]}|                     |||          \  }}t          |          }|sd|fS t          || j	                   |t          | j                  k     rCd}|D ]>}t          t          |                    |k    rt          t          |                    }?|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   != 	7aaa(I#dn4t;CCTZ__..//I6C! 	O 	OI!33Iy#NNNIssI 	 i<c$$$$3tz??""E! 7 7--..66 5 566EQw	!!r(   c                    | j         D ]}t          || j                   | j         rt          | j                   d}| j        D ]&}t          |t	          |          | j                   't          || j        dd| j                   | j        | j        k    rt          d| j        z  d| j                   t          d| j        z  | j                   t          | j                   |                     |          \  }}|rX| 	                                 |D ]}| 
                    |           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{####N 	J 	JD&066T[IIIIIfd&(8cTTTTt..(4?:$+VVVV$-/dkBBBB4;))&11t 	$ & &%%%%t{####t{####r(   c                 r   |                      |          \  }}|r|                                  |                     |d           |D ]E}|| j        v r#|                     ||| j        |                    .|                     ||i            Ft          | 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1t 
	$##E;777 : :4+++((d6Ft6LMMMM((b9999t{####t{####r(   c                    |                      |          \  }}|rp|                     |d           |D ]-}| 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1t 	$##E+=>>> A A*.*T*:'BB$$UD'4@@@@t{####t{####r(   c                 t   t          d                    |          |z   | j                   d}| j                                        D ]O\  }}}}}|rEt          t          |                                                    }	t          |	t                    } nP|rt          d|z  dz   | j                   d S d S )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LLL	'+z'8'8':': 	 	#BBG T'.."2"23344&ue44	  	T#i-"@@t{SSSSSS	T 	Tr(   ->c           	         t          t          |                              |          |z   d| j                   |st          | j                   d S t	          |                                          }d}|D ]}t          |          }||         }	t          |	t                    rn|	\  }
}}}|
|k    rd|
|fz  }nd|
fz  }|                    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}d S )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6>CdkZZZZ 	t{####Fy~~''(( 	 	D"4((DdOE%'' +!&BB88&"b1HH#re|H-5^^AaFmO-L-L-L-L-/VVVVRVVVVTTC&]

*.$$r$*T:J1:M7N7N7NO&]
&#h.T[AAAAFF!	 	r(   c                 `    t          dd| j                   t          d| j                   d S )Nz-   ncalls  tottime  percall  cumtime  percallr   r   zfilename:lineno(function)rQ   r`   rC   r   s    r'   r   zStats.print_title  s6    =3T[YYYY)<<<<<<r(   c                    | j         |         \  }}}}}t          |          }||k    r|dz   t          |          z   }t          |                    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                   d S )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  sG   "&*T"2BBGG88C#b''!Aaggajjc4444bff#DK000077%St{33333"RU))4;7777bff#DK000077%St{33333"RU))4;7777od##$+666666r(   )r   )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 
T 
T   2= = =7 7 7 7 7r(   r   c                       e Zd Z	 d Zd ZdS )r   c                     || _         d S r   comp_select_list)rJ   r   s     r'   rM   zTupleComp.__init__  s     0r(   c                 j    | j         D ]*\  }}||         }||         }||k     r| c S ||k    r|c S +dS r}   r   )rJ   leftrightindex	directionlrs          r'   r   zTupleComp.compare  sa     $ 5 	! 	!E9UAeA1uu!z!!!1uu     qr(   N)r)   r*   r+   rM   r   r5   r(   r'   r   r   
  s7        &1 1 1    r(   r   c                 R    | \  }}}t           j                            |          ||fS r   )rh   pathbasename)r   r   r   r   s       r'   r   r   #  s+    $HdD7H%%tT11r(   c                     | d         S )Nr   r5   )rv   s    r'   r   r   '  s    7Nr(   c                     | d d         dk    rA| d         }|                     d          r"|                    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   *  sh    !}  |??3 	DMM#$6$6 	D2J&&KY&&r(   c                 f    	 |\  }}}}}| \  }}}	}
}||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   ;  sU    =$BBG(.%D$dItGRWbgr$w)W--/ /r(   c           	      >   	 i }|                                  D ]
\  }}|||<   |                                 D ]e\  }}||v rWt          |t                    r1t          d t          |||                   D                       ||<   O||xx         |z  cc<   `|||<   f|S )Nc              3   &   K   | ]\  }}||z   V  d S r   r5   ).0ijs      r'   	<genexpr>zadd_callers.<locals>.<genexpr>K  s*      )[)[DAq!a%)[)[)[)[)[)[r(   )rt   rd   r   zip)r  r   new_callersrv   r   s        r'   r  r  B  s    4K # #f"D 	' 	'f;&%(( ,$))[)[CTXHY<Z<Z)[)[)[$[$[D!! D!!!V+!!!! &Kr(   c                 D    	 d}|                                  D ]}||z  }|S r}   )r#   )r{   rx   r   s      r'   count_callsr#  S  s3    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dS )ProfileBrowserNc                     t           j                            |            d| _        d | _        t
          j        | _        ||                     |           d S d S )N% )	cmdCmdrM   promptr[   rE   rF   rC   do_read)rJ   profiles     r'   rM   zProfileBrowser.__init__m  sU    GT"""DKDJ*DK"W%%%%% #"r(   c                    |                                 }g }|D ]}	 |                    t          |                     &# t          $ r Y nw xY w	 t	          |          }|dk    s|dk     rt          d| j                   i|                    |           # t          $ r Y nw xY w|                    |           | j        r t          | j        |          |  nt          d| j                   dS )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.genericu  s/   ::<<DI ' '$$SYY///!   D ;;Daxx4!88C$+VVVV $$T***!   D  &&&&z K'
B''3337dkJJJJ1s'   "?
AA1BB
B%$B%c                    t          d| j                   t          d| j                   t          d| j                   t          d| j                   t          d| j                   t          d| j                   d S )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  s    %DK8888D4;WWWWNUYU`aaaaATTTTLSWS^____0t{CCCCCCr(   c                     | j         rO	 | j                             |           nI# t          $ r&}t          d|d|| j                   Y d }~nd }~ww xY wt          d| j                   dS )NzFailed to load statistics for z: rQ   r1  r   )r[   rI   OSErrorr`   rC   )rJ   r   es      r'   do_addzProfileBrowser.do_add  s    z K`JNN4(((( ` ` `EDDD!!LSWS^_________` 7dkJJJJ1s   $ 
AAAc                 2    t          d| j                   d S )Nz>Add profile info from given file to current statistics object.rQ   r   r   s    r'   help_addzProfileBrowser.help_add  s     RY]Ydeeeeeer(   c                 .    |                      d|          S )Nr   r9  rJ   r   s     r'   
do_calleeszProfileBrowser.do_callees      <<666r(   c                 Z    t          d| j                   |                                  d S )Nz6Print callees statistics from the current stat object.rQ   r`   rC   r;  r   s    r'   help_calleeszProfileBrowser.help_callees  2    JQUQ\]]]]r(   c                 .    |                      d|          S )Nr   rC  rD  s     r'   
do_callerszProfileBrowser.do_callers  rF  r(   c                 Z    t          d| j                   |                                  d S )Nz6Print callers statistics from the current stat object.rQ   rH  r   s    r'   help_callerszProfileBrowser.help_callers  rJ  r(   c                 2    t          d| j                   dS )NrP   rQ   r   r   rD  s     r'   do_EOFzProfileBrowser.do_EOF  s    "4;''''1r(   c                 2    t          d| j                   d S NzLeave the profile browser.rQ   r   r   s    r'   help_EOFzProfileBrowser.help_EOF      .T[AAAAAAr(   c                     dS )Nr   r5   rD  s     r'   do_quitzProfileBrowser.do_quit  s    1r(   c                 2    t          d| j                   d S rR  r   r   s    r'   	help_quitzProfileBrowser.help_quit  rT  r(   c                    |r	 t          |          | _        np# t          $ r,}t          |j        d         | j                   Y d }~d S d }~wt          $ r/}t          |j        j        dz   || j                   Y d }~d S d }~ww xY w|dz   | _	        nSt          | j	                  dk    r%| j	        d d         }|                     |           nt          d| j                   dS )	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DJJ   #(1+DK8888FFFFF    #-036$+NNNNFFFFF #TkT[!!A%%{3B3'T""""IPTP[\\\\1s     
B!A

B$BBc                 ^    t          d| j                   t          d| j                   d S )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  s4    ?dkRRRR>T[QQQQQQr(   c                 t    | j         r| j                                          nt          d| j                   dS )Nr1  rQ   r   )r[   r   r`   rC   rD  s     r'   
do_reversezProfileBrowser.do_reverse  s?    z K
((****7dkJJJJ1r(   c                 2    t          d| j                   d S )Nz/Reverse the sort order of the profiling report.rQ   r   r   s    r'   help_reversezProfileBrowser.help_reverse  s    C$+VVVVVVr(   c                    | j         st          d| j                   d S | j                                         |rOt	          fd|                                D                       r" | j         j        |                                  n[t          d| j                   t          j        	                                D ]&\  }}t          |d|d         | j                   'dS )Nr1  rQ   c              3       K   | ]}|v V  	d S r   r5   )r  r%  abbrevss     r'   r  z)ProfileBrowser.do_sort.<locals>.<genexpr>  s'      AAqQ'\AAAAAAr(   z/Valid sort keys (unique prefixes are accepted):z -- r   r   )
r[   r`   rC   r   allr2  r   r   r   rt   )rJ   r   r   r$   re  s       @r'   do_sortzProfileBrowser.do_sort  s    : 7dkJJJJj2244G JAAAADJJLLAAAAA J%
%tzz||444GdkZZZZ$)$?$E$E$G$G J JLS%U1XX6T[IIIII1r(   c                 ^    t          d| j                   t          d| j                   d S )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  s4    BUUUUGdkZZZZZZr(   c                 4    fdt           j        D             S )Nc                 >    g | ]}|                               |S r5   )r  )r  atexts     r'   
<listcomp>z0ProfileBrowser.complete_sort.<locals>.<listcomp>  s*    QQQ!all4>P>PQAQQQr(   )r   r   )rJ   rm  rK   s    ` r'   complete_sortzProfileBrowser.complete_sort  s     QQQQu:QQQQr(   c                 .    |                      d|          S )Nr   rC  rD  s     r'   do_statszProfileBrowser.do_stats  s    <<t444r(   c                 Z    t          d| j                   |                                  d S )Nz.Print statistics from the current stat object.rQ   rH  r   s    r'   
help_statszProfileBrowser.help_stats  s0    BUUUUr(   c                 v    | j         r| j                                          d S t          d| j                   d S )Nr1  rQ   )r[   r   r`   rC   rD  s     r'   do_stripzProfileBrowser.do_strip  sC    z K
%%'''''7dkJJJJJJr(   c                 2    t          d| j                   d S )Nz<Strip leading path information from filenames in the report.rQ   r   r   s    r'   
help_stripzProfileBrowser.help_strip  s     PW[Wbccccccr(   c                 2    t          d| j                   d S )NzShow help for a given command.rQ   r   r   s    r'   	help_helpzProfileBrowser.help_help  s    2EEEEEEr(   c                     |r|S d S r   r5   )rJ   stopr   s      r'   postcmdzProfileBrowser.postcmd  s     4r(   r   )r)   r*   r+   rM   r9  r;  r?  rA  rE  rI  rL  rN  rP  rS  rV  rX  r.  r^  r`  rb  rg  ri  ro  rq  rs  ru  rw  ry  r|  r5   r(   r'   r(  r(  l  s       	& 	& 	& 	&	 	 	0	D 	D 	D	 	 		f 	f 	f	7 	7 	7	  	  	 	7 	7 	7	  	  	 	 	 		B 	B 	B	 	 		B 	B 	B	 	 	"	R 	R 	R	 	 		W 	W 	W	 	 		[ 	[ 	[	R 	R 	R	5 	5 	5	  	  	 	K 	K 	K
	d 	d 	d	F 	F 	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     si   9, 


 				   				 & & & & & & & &             ! ! ! ! ! !      
A
A
Ag       * t        t. . . . . . . .
~7 ~7 ~7 ~7 ~7 ~7 ~7 ~7@       22 2 2  	' 	' 	'"/ / /  "     zJJJ   P P P P P P P Pd s38}}qhqk .--x| 	$ 	$GNN7####:PPPPjw~......   I s%   
C CCA*E> >FF