<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
a
    XC?hF                     @   s  d dl mZmZ d dlmZ d dlZd dlZd dlZd dl	Z	d dl
T d dl
mZmZ dd ZG dd	 d	ZG d
d dZdd ZeG dd dZeG dd deZdd ZG dd dZG dd deZdd ZG dd dZG dd deZG dd deZG d d! d!Zd"d# ZdS )$    )SequenceIterable)total_orderingN)*)_get_object_traceback_get_tracesc                 C   s   dD ]|}t | dk r@|dkr@|r0d| |f   S d| |f   S t | dk sT|dkrx|rhd| |f   S d	| |f   S | d
 } qd S )N)BZKiBZMiBZGiBTiBd   r   z%+.1f %sz%.1f %si (  r	   z%+.0f %sz%.0f %si   )abs)sizeZsignZunit r   0/opt/alt/python39/lib64/python3.9/tracemalloc.py_format_size   s    r   c                   @   s@   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dS )	Statistic	tracebackr   countc                 C   s   || _ || _|| _d S Nr   )selfr   r   r   r   r   r   __init__%   s    zStatistic.__init__c                 C   s   t | j| j| jfS r   )hashr   r   r   r   r   r   r   __hash__*   s    zStatistic.__hash__c                 C   s2   t |tstS | j|jko0| j|jko0| j|jkS r   )
isinstancer   NotImplementedr   r   r   r   otherr   r   r   __eq__-   s    


zStatistic.__eq__c                 C   sB   d| j t| jd| jf }| jr>| j| j }|dt|d 7 }|S )Nz%s: size=%s, count=%iF, average=%s)r   r   r   r   r   textZaverager   r   r   __str__4   s    
zStatistic.__str__c                 C   s   d| j | j| jf S )Nz)<Statistic traceback=%r size=%i count=%i>r   r   r   r   r   __repr__>   s    zStatistic.__repr__c                 C   s   | j | j| jfS r   )r   r   r   r   r   r   r   	_sort_keyB   s    zStatistic._sort_keyN
__name__
__module____qualname__	__slots__r   r   r   r"   r#   r$   r   r   r   r   r      s   
r   c                   @   s@   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dS )StatisticDiffr   r   	size_diffr   
count_diffc                 C   s"   || _ || _|| _|| _|| _d S r   r+   )r   r   r   r,   r   r-   r   r   r   r   M   s
    zStatisticDiff.__init__c                 C   s   t | j| j| j| j| jfS r   )r   r   r   r,   r   r-   r   r   r   r   r   T   s    zStatisticDiff.__hash__c                 C   sJ   t |tstS | j|jkoH| j|jkoH| j|jkoH| j|jkoH| j|jkS r   )r   r*   r   r   r   r,   r   r-   r   r   r   r   r   X   s    




zStatisticDiff.__eq__c                 C   sP   d| j t| jdt| jd| j| jf }| jrL| j| j }|dt|d 7 }|S )Nz %s: size=%s (%s), count=%i (%+i)FTr   )r   r   r   r,   r   r-   r    r   r   r   r"   a   s    

zStatisticDiff.__str__c                 C   s   d| j | j| j| j| jf S )Nz9<StatisticDiff traceback=%r size=%i (%+i) count=%i (%+i)>r+   r   r   r   r   r#   m   s
    zStatisticDiff.__repr__c                 C   s    t | j| jt | j| j| jfS r   )r   r,   r   r-   r   r   r   r   r   r   r$   r   s    zStatisticDiff._sort_keyNr%   r   r   r   r   r*   F   s   	r*   c                 C   s   g }|  D ]d\}}| |d }|d urNt||j|j|j |j|j|j }nt||j|j|j|j}|| q|   D ]*\}}t|d|j d|j }|| qz|S Nr   )itemspopr*   r   r   append)	old_group	new_group
statisticsr   statZpreviousr   r   r   _compare_grouped_statsx   s"    r6   c                   @   sX   e Zd ZdZdd Zedd Zedd Zdd	 Zd
d Z	dd Z
dd Zdd ZdS )Frame_framec                 C   s
   || _ d S r   r8   r   framer   r   r   r      s    zFrame.__init__c                 C   s
   | j d S r.   r8   r   r   r   r   filename   s    zFrame.filenamec                 C   s
   | j d S N   r8   r   r   r   r   lineno   s    zFrame.linenoc                 C   s   t |tstS | j|jkS r   r   r7   r   r9   r   r   r   r   r      s    
zFrame.__eq__c                 C   s   t |tstS | j|jk S r   r@   r   r   r   r   __lt__   s    
zFrame.__lt__c                 C   s
   t | jS r   )r   r9   r   r   r   r   r      s    zFrame.__hash__c                 C   s   d| j | jf S )Nz%s:%sr<   r?   r   r   r   r   r"      s    zFrame.__str__c                 C   s   d| j | jf S )Nz<Frame filename=%r lineno=%r>rB   r   r   r   r   r#      s    zFrame.__repr__N)r&   r'   r(   r)   r   propertyr<   r?   r   rA   r   r"   r#   r   r   r   r   r7      s   

r7   c                   @   sp   e Zd ZdZdddZe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dZdS )	Traceback)_frames_total_nframeNc                 C   s"   t |  tt|| _|| _d S r   )r   r   tuplereversedrE   rF   )r   framestotal_nframer   r   r   r      s    
zTraceback.__init__c                 C   s   | j S r   )rF   r   r   r   r   rJ      s    zTraceback.total_nframec                 C   s
   t | jS r   )lenrE   r   r   r   r   __len__   s    zTraceback.__len__c                 C   s4   t |tr"tdd | j| D S t| j| S d S )Nc                 s   s   | ]}t |V  qd S r   )r7   .0tracer   r   r   	<genexpr>       z(Traceback.__getitem__.<locals>.<genexpr>)r   slicerG   rE   r7   r   indexr   r   r   __getitem__   s    
zTraceback.__getitem__c                 C   s   |j | jv S r   )r9   rE   r:   r   r   r   __contains__   s    zTraceback.__contains__c                 C   s
   t | jS r   )r   rE   r   r   r   r   r      s    zTraceback.__hash__c                 C   s   t |tstS | j|jkS r   r   rD   r   rE   r   r   r   r   r      s    
zTraceback.__eq__c                 C   s   t |tstS | j|jk S r   rW   r   r   r   r   rA      s    
zTraceback.__lt__c                 C   s   t | d S r.   )strr   r   r   r   r"      s    zTraceback.__str__c                 C   s8   dt |  }| jd u r"|d7 }n|d| j d7 }|S )Nz<Traceback >z total_nframe=)rG   rF   rJ   )r   sr   r   r   r#      s
    

zTraceback.__repr__Fc                 C   s   g }|d ur2|dkr$| | d  }q6| d | }n| }|rBt |}|D ]@}|d|j|jf  t|j|j }|rF|d|  qF|S )Nr   z  File "%s", line %sz    %s)rH   r1   r<   r?   	linecachegetlinestrip)r   limitZmost_recent_firstlinesZframe_slicer;   liner   r   r   format   s     
zTraceback.format)N)NF)r&   r'   r(   r)   r   rC   rJ   rL   rU   rV   r   r   rA   r"   r#   ra   r   r   r   r   rD      s   
	
rD   c                 C   s    t | }|d urt|S d S d S r   )r   rD   )objrI   r   r   r   get_object_traceback  s    rc   c                   @   s\   e Zd ZdZdd Zedd Zedd Zedd	 Zd
d Z	dd Z
dd Zdd ZdS )Trace_tracec                 C   s
   || _ d S r   re   r   rO   r   r   r   r     s    zTrace.__init__c                 C   s
   | j d S r.   re   r   r   r   r   domain  s    zTrace.domainc                 C   s
   | j d S r=   re   r   r   r   r   r     s    z
Trace.sizec                 C   s   t | jdd   S )N   )rD   rf   r   r   r   r   r   #  s    zTrace.tracebackc                 C   s   t |tstS | j|jkS r   )r   rd   r   rf   r   r   r   r   r   '  s    
zTrace.__eq__c                 C   s
   t | jS r   )r   rf   r   r   r   r   r   ,  s    zTrace.__hash__c                 C   s   d| j t| jdf S )Nz%s: %sF)r   r   r   r   r   r   r   r"   /  s    zTrace.__str__c                 C   s   d| j t| jd| jf S )Nz'<Trace domain=%s size=%s, traceback=%r>F)rh   r   r   r   r   r   r   r   r#   2  s    zTrace.__repr__N)r&   r'   r(   r)   r   rC   rh   r   r   r   r   r"   r#   r   r   r   r   rd     s   


rd   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )_Tracesc                 C   s   t |  || _d S r   )r   r   _traces)r   tracesr   r   r   r   8  s    
z_Traces.__init__c                 C   s
   t | jS r   )rK   rk   r   r   r   r   rL   =  s    z_Traces.__len__c                 C   s4   t |tr"tdd | j| D S t| j| S d S )Nc                 s   s   | ]}t |V  qd S r   )rd   rM   r   r   r   rP   B  rQ   z&_Traces.__getitem__.<locals>.<genexpr>)r   rR   rG   rk   rd   rS   r   r   r   rU   @  s    
z_Traces.__getitem__c                 C   s   |j | jv S r   )rf   rk   rg   r   r   r   rV   F  s    z_Traces.__contains__c                 C   s   t |tstS | j|jkS r   )r   rj   r   rk   r   r   r   r   r   I  s    
z_Traces.__eq__c                 C   s   dt |  S )Nz<Traces len=%s>)rK   r   r   r   r   r#   N  s    z_Traces.__repr__N)	r&   r'   r(   r   rL   rU   rV   r   r#   r   r   r   r   rj   7  s   rj   c                 C   s&   t j| } | dr"| d d } | S )Nz.pyc)ospathnormcaseendswith)r<   r   r   r   _normalize_filenameR  s    
rr   c                   @   s   e Zd Zdd Zdd ZdS )
BaseFilterc                 C   s
   || _ d S r   )	inclusive)r   rt   r   r   r   r   Z  s    zBaseFilter.__init__c                 C   s   t d S r   )NotImplementedErrorrg   r   r   r   _match]  s    zBaseFilter._matchN)r&   r'   r(   r   rv   r   r   r   r   rs   Y  s   rs   c                       sJ   e Zd Zd fdd	Zedd Zdd Zd	d
 Zdd Zdd Z	  Z
S )FilterNFc                    s2   t  | || _t|| _|| _|| _|| _d S r   )superr   rt   rr   _filename_patternr?   
all_framesrh   )r   rt   filename_patternr?   rz   rh   	__class__r   r   r   b  s    
zFilter.__init__c                 C   s   | j S r   )ry   r   r   r   r   r{   k  s    zFilter.filename_patternc                 C   s6   t |}t|| jsdS | jd u r(dS || jkS d S )NFT)rr   fnmatchry   r?   r   r<   r?   r   r   r   _match_frame_implo  s    
zFilter._match_frame_implc                 C   s   |  ||| j A S r   )r   rt   r   r   r   r   _match_framex  s    zFilter._match_framec                    sH    j r,t fdd|D r" jS  j S n|d \}} ||S d S )Nc                 3   s   | ]\}}  ||V  qd S r   )r   )rN   r<   r?   r   r   r   rP   }  s   z*Filter._match_traceback.<locals>.<genexpr>r   )rz   anyrt   r   )r   r   r<   r?   r   r   r   _match_traceback{  s    
zFilter._match_tracebackc                 C   sF   |\}}}}|  |}| jd urB| jr4|o2|| jkS |p@|| jkS |S r   )r   rh   rt   )r   rO   rh   r   r   rJ   resr   r   r   rv     s    

zFilter._match)NFN)r&   r'   r(   r   rC   r{   r   r   r   rv   __classcell__r   r   r|   r   rw   a  s    	
	rw   c                       s0   e Zd Z fddZedd Zdd Z  ZS )DomainFilterc                    s   t  | || _d S r   )rx   r   _domain)r   rt   rh   r|   r   r   r     s    zDomainFilter.__init__c                 C   s   | j S r   )r   r   r   r   r   rh     s    zDomainFilter.domainc                 C   s   |\}}}}|| j k| j A S r   )rh   rt   )r   rO   rh   r   r   rJ   r   r   r   rv     s    zDomainFilter._match)r&   r'   r(   r   rC   rh   rv   r   r   r   r|   r   r     s   
r   c                   @   sT   e Zd Zdd Zdd Zedd Zdd Zd	d
 Zdd Z	dddZ
dddZdS )Snapshotc                 C   s   t || _|| _d S r   )rj   rl   traceback_limit)r   rl   r   r   r   r   r     s    
zSnapshot.__init__c                 C   s>   t |d }t| |tj W d    n1 s00    Y  d S )Nwb)openpickledumpZHIGHEST_PROTOCOL)r   r<   fpr   r   r   r     s    zSnapshot.dumpc                 C   s8   t | d}t|W  d    S 1 s*0    Y  d S )Nrb)r   r   load)r<   r   r   r   r   r     s    zSnapshot.loadc                    s@   |rt  fdd|D sdS |r<t  fdd|D r<dS dS )Nc                 3   s   | ]}|  V  qd S r   rv   rN   trace_filterrO   r   r   rP     s   z)Snapshot._filter_trace.<locals>.<genexpr>Fc                 3   s   | ]}|   V  qd S r   r   r   r   r   r   rP     s   T)r   )r   include_filtersexclude_filtersrO   r   r   r   _filter_trace  s    zSnapshot._filter_tracec                    s   t |tstdt|j |rjg g  |D ] }|jrB| q, | q, fddjjD }njj	 }t
|jS )Nz)filters must be a list of filters, not %sc                    s   g | ]}  |r|qS r   )r   rM   r   r   r   r   r   
<listcomp>  s
   z*Snapshot.filter_traces.<locals>.<listcomp>)r   r   	TypeErrortyper&   rt   r1   rl   rk   copyr   r   )r   filtersr   Z
new_tracesr   r   r   filter_traces  s    
zSnapshot.filter_tracesc              
   C   s  |dvrt d|f |r.|dvr.t d| i }i }|s| jjD ]}|\}}}}	z|| }
W nX ty   |dkr||}n(|dkr|d d }n|d d dff}t|}
|
||< Y n0 z(||
 }| j|7  _| jd7  _W qD ty   t|
|d||
< Y qD0 qDn| jjD ]}|\}}}}	|D ]}z|| }
W nD ty|   |dkrZ|f}n|d dff}t|}
|
||< Y n0 z(||
 }| j|7  _| jd7  _W n$ ty   t|
|d||
< Y n0 q(q|S )	N)r   r<   r?   zunknown key_type: %r)r?   r<   z/cumulative mode cannot by used with key type %rr   r?   r>   r   )
ValueErrorrl   rk   KeyErrorrD   r   r   r   )r   key_type
cumulativeZstatsZ
tracebacksrO   rh   r   Ztrace_tracebackrJ   r   rI   r5   r;   r   r   r   	_group_by  sZ    
zSnapshot._group_byFc                 C   s,   |  ||}t| }|jdtjd |S NT)reversekey)r   listvaluessortr   r$   )r   r   r   Zgroupedr4   r   r   r   r4     s    zSnapshot.statisticsc                 C   s6   |  ||}| ||}t||}|jdtjd |S r   )r   r6   r   r*   r$   )r   Zold_snapshotr   r   r3   r2   r4   r   r   r   
compare_to  s
    
zSnapshot.compare_toN)F)F)r&   r'   r(   r   r   staticmethodr   r   r   r   r4   r   r   r   r   r   r     s   
3

r   c                  C   s$   t  stdt } t }t| |S )NzLthe tracemalloc module must be tracing memory allocations to take a snapshot)
is_tracingRuntimeErrorr   Zget_traceback_limitr   )rl   r   r   r   r   take_snapshot'  s
    r   )collections.abcr   r   	functoolsr   r~   r[   Zos.pathrn   r   Z_tracemallocr   r   r   r   r*   r6   r7   rD   rc   rd   rj   rr   rs   rw   r   r   r   r   r   r   r   <module>   s2   (2&M'0 	