
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,aÑj  ã                   @   s€  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 d dlmZ ddgZ	G dd„ de
eƒZG dd„ dƒZG dd	„ d	ƒZd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zedk�r|d dlZzd dlZW n ek
rà   Y nX G dd„ dejƒZee jƒdk�re jd ZndZzPeeƒZe jdd… D ]Ze  e¡ �q,e!dej"d� e #¡  e!dej"d� W n e$k
�rz   Y nX dS ) é    N)ÚEnum)Ú
cmp_to_keyÚStatsÚSortKeyc                   @   s8   e 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S )r   )ÚcallsÚncalls)Ú
cumulativeÚcumtime)ÚfilenameÚmoduleÚlineÚnameÚnflÚpcallsÚstdname)ÚtimeÚtottimec                 G   s@   |d }t  | |¡}||_|dd … D ]}|| j|< q&||_|S ©Nr   é   )ÚstrÚ__new__Ú_value_Ú_value2member_map_Z_all_values)ÚclsÚvaluesÚvalueÚobjZother_value© r   ú+/opt/alt/python38/lib64/python3.8/pstats.pyr   -   s    zSortKey.__new__N)Ú__name__Ú
__module__Ú__qualname__ZCALLSZ
CUMULATIVEZFILENAMEZLINEÚNAMEZNFLZPCALLSZSTDNAMEZTIMEr   r   r   r   r   r   "   s   c                   @   sÔ   e Zd Zddœdd„Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ ZddddddddddddddœZ	dd„ Z
dd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd6d0d1„Zd2d3„ Zd4d5„ ZdS )7r   N)Ústreamc                G   sF   |pt j| _t|ƒsd }n|d }|dd … }|  |¡ | j|Ž  d S r   )ÚsysÚstdoutr#   ÚlenÚinitÚadd)Úselfr#   ÚargsÚargr   r   r   Ú__init__Y   s    
zStats.__init__c                 C   s’   d | _ g | _d | _d| _d| _d| _d| _tƒ | _i | _	i | _
|  |¡ z|  ¡  W n8 tk
rŒ   td| jrx| jd nd | jd� ‚ Y nX d S )Nr   zInvalid 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+   r   r   r   r'   c   s(    
ÿÿz
Stats.initc              	   C   s´   |d kri | _ d S t|tƒrxt|dƒ�}t |¡| _ W 5 Q R X z"t |¡}t 	|j
¡d | }W n   Y nX |g| _n t|dƒr˜| ¡  |j | _ i |_ | j s°td| j|f ƒ‚d S )NÚrbz    Úcreate_statsz.Cannot create or construct a %r object from %r)r:   Ú
isinstancer   ÚopenÚmarshalÚloadÚosÚstatr   ÚctimeÚst_mtimer2   ÚhasattrrA   Ú	TypeErrorÚ	__class__)r)   r+   ÚfZ
file_statsr   r   r   r<   v   s*    



ÿzStats.load_statsc                 C   s€   | j  ¡ D ]p\}\}}}}}|  j|7  _|  j|7  _|  j|7  _d|krZ| j |¡ tt|ƒƒ| j	kr
tt|ƒƒ| _	q
d S )N)Zjprofiler   Zprofiler)
r:   Úitemsr5   r6   r4   r9   r(   r&   Úfunc_std_stringr7   )r)   ÚfuncÚccÚncÚttÚctÚcallersr   r   r   r=   Œ   s    zStats.get_top_level_statsc                 G   sì   |s| S t |ƒD ]Ö}t| ƒt|ƒkr,t|ƒ}|  j|j7  _|  j|j7  _|  j|j7  _|  j|j7  _|jD ]}| j |¡ qr| j	|j	k r˜|j	| _	d | _
|j ¡ D ]<\}}|| jkrÆ| j| }nddddi f}t||ƒ| j|< q¨q| S ©Nr   )ÚreversedÚtyper   r2   r5   r6   r4   r9   r(   r7   r3   r:   rN   Úadd_func_stats)r)   Úarg_listÚitemrP   rG   Zold_func_statr   r   r   r(   –   s(    

z	Stats.addc              	   C   s(   t |dƒ�}t | j|¡ W 5 Q R X d S )NÚwb)rC   rD   Údumpr:   )r)   r
   rM   r   r   r   Ú
dump_stats°   s    zStats.dump_stats)))r   r-   z
call count)))é   r-   zcumulative time))©é   r   z	file name))©é   r   zline number))©é   r   zfunction name))rd   r`   rb   zname/file/line)))r   r-   zprimitive call count)))é   r   zstandard name)))é   r-   zinternal time)r   r   r	   r   r
   r   r   r   r   r   r   r   r   c                 C   st   | j sni  | _ }i }| j ¡ D ]>\}}|}|r|s4q||krFd||< q|||< |d d… }q*q|D ]
}||= qb| j S )Nr   r-   )r;   Úsort_arg_dict_defaultrN   )r)   ÚdictZbad_listÚwordÚtupZfragmentr   r   r   Úget_sort_arg_defsÇ   s     
zStats.get_sort_arg_defsc                 G   s\  |sd| _ | S t|ƒdkrBt|d tƒrBdddddœ|d  g}n:t|ƒdkr||dd … D ] }t|ƒt|d ƒkrZtd	ƒ‚qZ|  ¡ }d
}d| _d}|D ]B}t|tƒrª|j	}||| d  }|  j||| d  7  _d}q–g }| j
 ¡ D ]4\}\}	}
}}}| |	|
||f| t|ƒ|f ¡ qè|jtt|ƒjƒd� g  | _ }|D ]}| |d ¡ �qB| S )Nr   r   r   r   r   r   )r-   r   r   rg   rg   zCan't have mixed argument typer   r.   z, )Úkeyr-   )r3   r&   rB   ÚintrX   rK   rl   Ú	sort_typer   r   r:   rN   ÚappendrO   Úsortr   Ú	TupleCompÚcompare)r)   Zfieldr+   Zsort_arg_defsZ
sort_tupleZ	connectorrj   Z
stats_listrP   rQ   rR   rS   rT   rU   r3   Útupler   r   r   Ú
sort_statsÚ   sF    ýý


ÿ
zStats.sort_statsc                 C   s   | j r| j  ¡  | S ©N)r3   Úreverse©r)   r   r   r   Úreverse_order  s    
zStats.reverse_orderc                 C   sî   | j }i  | _ }d}| ¡ D ]�\}\}}}}}	t|ƒ}
tt|
ƒƒ|krRtt|
ƒƒ}i }|	 ¡ D ]\}}||t|ƒ< q^|
|kršt||
 |||||fƒ||
< q|||||f||
< q| j}tƒ  | _}|D ]}| t|ƒ¡ qÄ|| _	d | _
d | _| S rV   )r:   rN   Úfunc_strip_pathr&   rO   rY   r9   r8   r(   r7   r3   r1   )r)   ZoldstatsZnewstatsr7   rP   rQ   rR   rS   rT   rU   ZnewfuncZ
newcallersÚfunc2ÚcallerZold_topZnew_topr   r   r   Ú
strip_dirs  s0    
þ
zStats.strip_dirsc           
      C   st   | j r
d S i  | _ }| j ¡ D ]P\}\}}}}}||kr@i ||< | ¡ D ]$\}}	||kr`i ||< |	|| |< qHqd S rv   )r1   r:   rN   )
r)   r1   rP   rQ   rR   rS   rT   rU   r{   r|   r   r   r   Úcalc_callees#  s    
zStats.calc_calleesc                 C   s  |}t |tƒrpzt |¡}W n* tjk
rF   |d| 7 }||f Y S X g }|D ]}| t|ƒ¡rP| |¡ qPnzt|ƒ}t |t	ƒr¸d|  kr–dk r¸n nt
|| d ƒ}|d |… }n2t |t
ƒrêd|  krÖ|k rên n|}|d |… }t|ƒt|ƒk�r|dt|ƒt|ƒ|f 7 }||fS )Nz#   <Invalid regular expression %r>
g        g      ð?g      à?r   z6   List reduced from %r to %r due to restriction <%r>
)rB   r   ÚreÚcompileÚerrorÚsearchrO   rp   r&   Úfloatrn   )r)   ZselÚlistÚmsgZnew_listZrexrP   Úcountr   r   r   Úeval_print_amount6  s2    
""  ÿzStats.eval_print_amountc                 C   s¾   | j }| jr*| jd d … }d| j d }nt| j ¡ ƒ}d}|D ]}|  |||¡\}}q@t|ƒ}|sld|fS t|| j	d� |t| jƒk r²d}|D ] }tt
|ƒƒ|kr�tt
|ƒƒ}q�|d |fS )Nz   Ordered by: Ú
z!   Random listing order was used
r   r/   rg   )r7   r3   ro   r„   r:   Úkeysr‡   r&   r?   r#   rO   )r)   Zsel_listÚwidthZ	stat_listr…   Z	selectionr†   rP   r   r   r   Úget_print_listP  s$    zStats.get_print_listc                 G   sò   | j D ]}t|| jd� q| j r,t| jd� d}| jD ]}t|t|ƒ| jd� q6t|| jdd| jd� | j| jkrˆtd| j d| jd� td| j | jd� t| jd� |  |¡\}}|rî|  	¡  |D ]}|  
|¡ qÆt| jd� t| jd� | S )Nr/   ú        zfunction callsú ©Úendr0   z(%d primitive calls)zin %.3f seconds)r2   r?   r#   r9   Úfunc_get_function_namer5   r6   r4   r‹   Úprint_titleÚ
print_line)r)   Úamountr
   ÚindentrP   rŠ   r„   r   r   r   Úprint_statsh  s(    

zStats.print_statsc                 G   sz   |   |¡\}}|rv|  ¡  |  |d¡ |D ]2}|| jkrN|  ||| j| ¡ q*|  ||i ¡ q*t| jd� t| jd� | S )Nz	called...r/   )r‹   r~   Úprint_call_headingr1   Úprint_call_liner?   r#   )r)   r“   rŠ   r„   rP   r   r   r   Úprint_callees  s    
zStats.print_calleesc           
      G   sh   |   |¡\}}|rd|  |d¡ |D ](}| j| \}}}}}	|  |||	d¡ q"t| jd� t| jd� | S )Nzwas called by...z<-r/   )r‹   r–   r:   r—   r?   r#   )
r)   r“   rŠ   r„   rP   rQ   rR   rS   rT   rU   r   r   r   Úprint_callersŽ  s    zStats.print_callersc           
      C   sv   t d |¡| | jd� d}| j ¡ D ]0\}}}}}|r&tt| ¡ ƒƒ}	t|	tƒ} qXq&|rrt d| d | jd� d S )Nz	Function r/   Fr�   z    ncalls  tottime  cumtime)	r?   Úljustr#   r:   r   ÚnextÚiterrB   rt   )
r)   Ú	name_sizeZcolumn_titleZ	subheaderrQ   rR   rS   rT   rU   r   r   r   r   r–   ™  s    
zStats.print_call_headingú->c                 C   s  t t|ƒ |¡| d| jd� |s2t | jd� d S t| ¡ ƒ}d}|D ]¼}t|ƒ}|| }	t|	tƒrÄ|	\}
}}}|
|kr†d|
|f }n
d|
f }d| dd	t	|ƒ  ¡t
|ƒt
|ƒ|f }|d
 }n$d||	t
| j| d ƒf }|d }t || | | jd� d}qFd S )Nr�   rŽ   r/   r.   z%d/%dz%dz%s %s %s  %srf   rg   r   z	%s(%r) %sr_   )r?   rO   rš   r#   Úsortedr‰   rB   rt   Úrjustr&   Úf8r:   )r)   r�   ÚsourceZ	call_dictZarrowZclistr”   rP   r   r   rR   rQ   rS   rT   ZsubstatsZ
left_widthr   r   r   r—   ¥  s0    

  ÿ
zStats.print_call_linec                 C   s"   t dd| jd� t d| jd� d S )Nz-   ncalls  tottime  percall  cumtime  percallr�   rŽ   zfilename:lineno(function)r/   ©r?   r#   rx   r   r   r   r‘   ¾  s    zStats.print_titlec                 C   sì   | j | \}}}}}t|ƒ}||kr4|d t|ƒ }t| d¡d| jd� tt|ƒd| jd� |dkrxtdd| jd� ntt|| ƒd| jd� tt|ƒd| jd� |dkr¾tdd| jd� ntt|| ƒd| jd� tt|ƒ| jd� d S )Nú/é	   r�   rŽ   r   rŒ   r/   )r:   r   r?   r    r#   r¡   rO   )r)   rP   rQ   rR   rS   rT   rU   Úcr   r   r   r’   Â  s    zStats.print_line)rž   )r   r    r!   r,   r'   r<   r=   r(   r^   rh   rl   ru   ry   r}   r~   r‡   r‹   r•   r˜   r™   r–   r—   r‘   r’   r   r   r   r   r   7   sD   "

ó'
c                   @   s   e Zd Zdd„ Zdd„ ZdS )rr   c                 C   s
   || _ d S rv   ©Úcomp_select_list)r)   r¨   r   r   r   r,   Ü  s    zTupleComp.__init__c                 C   sF   | j D ]:\}}|| }|| }||k r0|   S ||kr|  S qdS rV   r§   )r)   ÚleftÚrightÚindexÚ	directionÚlÚrr   r   r   rs   ß  s    

zTupleComp.compareN)r   r    r!   r,   rs   r   r   r   r   rr   Ô  s   rr   c                 C   s   | \}}}t j |¡||fS rv   )rF   ÚpathÚbasename)Ú	func_namer
   r   r   r   r   r   rz   í  s    
rz   c                 C   s   | d S )Nrg   r   )rP   r   r   r   r�   ñ  s    r�   c                 C   sN   | d d… dkrB| d }|  d¡r<| d¡r<d|dd…  S |S nd|  S d S )	Nrg   )ú~r   ú<ú>z{%s}r   r-   z	%s:%d(%s))Ú
startswithÚendswith)r±   r   r   r   r   rO   ô  s    rO   c                 C   s@   |\}}}}}| \}}}	}
}|| || ||	 ||
 t ||ƒfS rv   )Úadd_callers)Útargetr¢   rQ   rR   rS   rT   rU   Zt_ccZt_ncZt_ttZt_ctZ	t_callersr   r   r   rY     s
    ÿrY   c                 C   s‚   i }|   ¡ D ]\}}|||< q|  ¡ D ]V\}}||krtt|tƒrbtdd„ t||| ƒD ƒƒ||< q|||  |7  < q&|||< q&|S )Nc                 s   s   | ]\}}|| V  qd S rv   r   )Ú.0ÚiÚjr   r   r   Ú	<genexpr>  s     zadd_callers.<locals>.<genexpr>)rN   rB   rt   Úzip)r¸   r¢   Znew_callersrP   r|   r   r   r   r·     s    

"
r·   c                 C   s   d}|   ¡ D ]}||7 }q|S rV   )r   )rU   rR   r   r   r   r   Úcount_calls  s    
r¾   c                 C   s   d|  S )Nz%8.3fr   )Úxr   r   r   r¡   (  s    r¡   Ú__main__c                   @   sÞ   e Zd Zd6dd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ ZdS )7ÚProfileBrowserNc                 C   s6   t j | ¡ d| _d | _tj| _|d k	r2|  |¡ d S )Nú% )	ÚcmdÚCmdr,   Úpromptr:   r$   r%   r#   Údo_read)r)   Úprofiler   r   r   r,   7  s    zProfileBrowser.__init__c              	   C   sÈ   |  ¡ }g }|D ]Œ}z| t|ƒ¡ W qW n tk
r>   Y nX z<t|ƒ}|dksZ|dk rltd| jd� W q| |¡ W qW n tk
r�   Y nX | |¡ q| jr¶t| j|ƒ|Ž  ntd| jd� dS )Nr   r   z#Fraction argument must be in [0, 1]r/   úNo statistics object is loaded.)	Úsplitrp   rn   Ú
ValueErrorrƒ   r?   r#   r:   Úgetattr)r)   Úfnr   r*   Z	processedZtermZfracr   r   r   Úgeneric?  s,    
zProfileBrowser.genericc                 C   sX   t d| jd� t d| jd� t d| jd� t d| jd� t d| jd� t d| jd� d S )NzArguments 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£   rx   r   r   r   Úgeneric_helpW  s    zProfileBrowser.generic_helpc              
   C   sd   | j rRz| j  |¡ W q` tk
rN } ztd||f | jd� W 5 d }~X Y q`X ntd| jd� dS )Nz$Failed to load statistics for %s: %sr/   rÈ   r   )r:   r(   ÚOSErrorr?   r#   )r)   r   Úer   r   r   Údo_add_  s    *zProfileBrowser.do_addc                 C   s   t d| jd� d S )Nz>Add profile info from given file to current statistics object.r/   r£   rx   r   r   r   Úhelp_addh  s    zProfileBrowser.help_addc                 C   s   |   d|¡S )Nr˜   ©rÍ   ©r)   r   r   r   r   Ú
do_calleesk  s    zProfileBrowser.do_calleesc                 C   s   t d| jd� |  ¡  d S )Nz6Print callees statistics from the current stat object.r/   ©r?   r#   rÎ   rx   r   r   r   Úhelp_calleesm  s    zProfileBrowser.help_calleesc                 C   s   |   d|¡S )Nr™   rÓ   rÔ   r   r   r   Ú
do_callersq  s    zProfileBrowser.do_callersc                 C   s   t d| jd� |  ¡  d S )Nz6Print callers statistics from the current stat object.r/   rÖ   rx   r   r   r   Úhelp_callerss  s    zProfileBrowser.help_callersc                 C   s   t d| jd� dS )Nr.   r/   r   r£   rÔ   r   r   r   Údo_EOFw  s    zProfileBrowser.do_EOFc                 C   s   t d| jd� d S ©NzLeave the profile browser.r/   r£   rx   r   r   r   Úhelp_EOFz  s    zProfileBrowser.help_EOFc                 C   s   dS )Nr   r   rÔ   r   r   r   Údo_quit}  s    zProfileBrowser.do_quitc                 C   s   t d| jd� d S rÛ   r£   rx   r   r   r   Ú	help_quit  s    zProfileBrowser.help_quitc              
   C   sÔ   |ršzt |ƒ| _W nz tk
rN } zt|jd | jd� W Y ¢d S d }~X Y n@ tk
rŒ } z"t|jjd || jd� W Y ¢d S d }~X Y nX |d | _	n6t
| j	ƒdkrÂ| j	d d… }|  |¡ ntd| jd� dS )	Nr   r/   ú:rÂ   rg   éþÿÿÿz1No statistics object is current -- cannot reload.r   )r   r:   rÏ   r?   r*   r#   r>   rL   r   rÅ   r&   rÆ   )r)   r   Úerrr   r   r   rÆ   ‚  s    zProfileBrowser.do_readc                 C   s    t d| jd� t d| jd� d S )Nz+Read in profile data from a specified file.r/   z*Without argument, reload the current file.r£   rx   r   r   r   Ú	help_read“  s    zProfileBrowser.help_readc                 C   s$   | j r| j  ¡  ntd| jd� dS )NrÈ   r/   r   )r:   ry   r?   r#   rÔ   r   r   r   Ú
do_reverse—  s    zProfileBrowser.do_reversec                 C   s   t d| jd� d S )Nz/Reverse the sort order of the profiling report.r/   r£   rx   r   r   r   Úhelp_reverse�  s    zProfileBrowser.help_reversec                    s’   | j std| jd� d S | j  ¡ ‰ |rRt‡ fdd„| ¡ D ƒƒrR| j j| ¡ Ž  n<td| jd� tj 	¡ D ]"\}}td||d f | jd� qjdS )	NrÈ   r/   c                 3   s   | ]}|ˆ kV  qd S rv   r   )r¹   r¿   ©Zabbrevsr   r   r¼   ¥  s     z)ProfileBrowser.do_sort.<locals>.<genexpr>z/Valid sort keys (unique prefixes are accepted):z%s -- %sr   r   )
r:   r?   r#   rl   ÚallrÉ   ru   r   rh   rN   )r)   r   rm   r   r   rå   r   Údo_sort   s    
zProfileBrowser.do_sortc                 C   s    t d| jd� t d| jd� d S )Nz.Sort profile data according to specified keys.r/   z3(Typing `sort' without arguments lists valid keys.)r£   rx   r   r   r   Ú	help_sort¬  s    zProfileBrowser.help_sortc                    s   ‡ fdd„t jD ƒS )Nc                    s   g | ]}|  ˆ ¡r|‘qS r   )rµ   )r¹   Úa©Útextr   r   Ú
<listcomp>°  s     
 z0ProfileBrowser.complete_sort.<locals>.<listcomp>)r   rh   )r)   rë   r*   r   rê   r   Úcomplete_sort¯  s    zProfileBrowser.complete_sortc                 C   s   |   d|¡S )Nr•   rÓ   rÔ   r   r   r   Údo_stats²  s    zProfileBrowser.do_statsc                 C   s   t d| jd� |  ¡  d S )Nz.Print statistics from the current stat object.r/   rÖ   rx   r   r   r   Ú
help_stats´  s    zProfileBrowser.help_statsc                 C   s$   | j r| j  ¡  ntd| jd� d S )NrÈ   r/   )r:   r}   r?   r#   rÔ   r   r   r   Údo_strip¸  s    zProfileBrowser.do_stripc                 C   s   t d| jd� d S )Nz<Strip leading path information from filenames in the report.r/   r£   rx   r   r   r   Ú
help_strip½  s    zProfileBrowser.help_stripc                 C   s   t d| jd� d S )NzShow help for a given command.r/   r£   rx   r   r   r   Ú	help_helpÀ  s    zProfileBrowser.help_helpc                 C   s   |r|S d S rv   r   )r)   Ústopr   r   r   r   ÚpostcmdÃ  s    zProfileBrowser.postcmd)N)r   r    r!   r,   rÍ   rÎ   rÑ   rÒ   rÕ   r×   rØ   rÙ   rÚ   rÜ   rÝ   rÞ   rÆ   râ   rã   rä   rç   rè   rí   rî   rï   rð   rñ   rò   rô   r   r   r   r   rÁ   6  s4   
	rÁ   r   rg   z*Welcome to the profile statistics browser.r/   zGoodbye.)%r$   rF   r   rD   r   Úenumr   Ú	functoolsr   Ú__all__r   r   r   rr   rz   r�   rO   rY   r·   r¾   r¡   r   rÃ   ÚreadlineÚImportErrorrÄ   rÁ   r&   ÚargvZinitprofileZbrowserrÇ   rÑ   r?   r#   ZcmdloopÚKeyboardInterruptr   r   r   r   Ú<module>   sP       
 