§
    (¶ÕiF  ã                   ó¤  — 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„ Z G d„ d¦  «        Z G d	„ d
¦  «        Zd„ Ze G d„ d¦  «        ¦   «         Ze G d„ de¦  «        ¦   «         Zd„ Z G d„ d¦  «        Z G d„ de¦  «        Zd„ Z G d„ d¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ d¦  «        Zd„ ZdS )é    )ÚSequenceÚIterable)Útotal_orderingN)Ú*)Ú_get_object_tracebackÚ_get_tracesc                 óÎ   — dD ]a}t          | ¦  «        dk     r|dk    r|r	d| |fz  c S d| |fz  c S t          | ¦  «        dk     s|dk    r|r	d| |fz  c S d	| |fz  c S | d
z  } Œbd S )N)ÚBÚKiBÚMiBÚGiBÚTiBéd   r
   z%+.1f %sz%.1f %si (  r   z%+.0f %sz%.0f %si   )Úabs)ÚsizeÚsignÚunits      ú"/usr/lib/python3.11/tracemalloc.pyÚ_format_sizer      sº   € Ø1ð ð ˆÝˆt‰9Œ9�sŠ?ˆ?˜t sš{˜{àð 0Ø! T¨4 LÑ0Ð0Ð0Ð0à  D¨$ <Ñ/Ð/Ð/Ð/Ýˆt‰9Œ9�yÒ Ð  D¨E¢M Màð 0Ø! T¨4 LÑ0Ð0Ð0Ð0à  D¨$ <Ñ/Ð/Ð/Ð/Ø�‰ˆˆðð ó    c                   ó:   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
Ú	StatisticzS
    Statistic difference on memory allocations between two Snapshot instance.
    ©Ú	tracebackr   Úcountc                 ó0   — || _         || _        || _        d S ©Nr   )Úselfr   r   r   s       r   Ú__init__zStatistic.__init__%   s   € Ø"ˆŒØˆŒ	ØˆŒ
ˆ
ˆ
r   c                 óD   — t          | j        | j        | j        f¦  «        S r   )Úhashr   r   r   ©r   s    r   Ú__hash__zStatistic.__hash__*   s   € Ý�T”^ T¤Y°´
Ð;Ñ<Ô<Ð<r   c                 óš   — t          |t          ¦  «        st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r   )Ú
isinstancer   ÚNotImplementedr   r   r   ©r   Úothers     r   Ú__eq__zStatistic.__eq__-   sM   € Ý˜%¥Ñ+Ô+ð 	"Ý!Ð!Ø” %¤/Ò1ð .Ø”I ¤Ò+ð.à”J %¤+Ò-ð	/r   c                 ó¨   — d| j         t          | j        d¦  «        | j        fz  }| j        r%| j        | j        z  }|dt          |d¦  «        z  z  }|S )Nz%s: size=%s, count=%iFú, average=%s)r   r   r   r   ©r   ÚtextÚaverages      r   Ú__str__zStatistic.__str__4   sc   € Ø'Ø”NÝ  ¤¨EÑ2Ô2Ø”Jð ñ ˆð Œ:ð 	BØ”i $¤*Ñ,ˆGØ�N¥\°'¸5Ñ%AÔ%AÑAÑAˆDØˆr   c                 ó0   — d| j         | j        | j        fz  S )Nz)<Statistic traceback=%r size=%i count=%i>r   r"   s    r   Ú__repr__zStatistic.__repr__>   s   € Ø;Ø”> 4¤9¨d¬jÐ9ñ:ð 	;r   c                 ó*   — | j         | j        | j        fS r   )r   r   r   r"   s    r   Ú	_sort_keyzStatistic._sort_keyB   s   € Ø”	˜4œ: t¤~Ð6Ð6r   N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   r#   r)   r/   r1   r3   © r   r   r   r      s   € € € € € ðð ð /€Iðð ð ð
=ð =ð =ð/ð /ð /ðð ð ð;ð ;ð ;ð7ð 7ð 7ð 7ð 7r   r   c                   ó:   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚStatisticDiffzd
    Statistic difference on memory allocations between an old and a new
    Snapshot instance.
    ©r   r   Ú	size_diffr   Ú
count_diffc                 óL   — || _         || _        || _        || _        || _        d S r   r=   )r   r   r   r>   r   r?   s         r   r   zStatisticDiff.__init__M   s)   € Ø"ˆŒØˆŒ	Ø"ˆŒØˆŒ
Ø$ˆŒˆˆr   c                 ó\   — t          | j        | j        | j        | j        | j        f¦  «        S r   )r!   r   r   r>   r   r?   r"   s    r   r#   zStatisticDiff.__hash__T   s.   € Ý�T”^ T¤Y°´Ø”Z ¤ð2ñ 3ô 3ð 	3r   c                 óÚ   — t          |t          ¦  «        st          S | j        |j        k    o?| j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r   )r%   r<   r&   r   r   r>   r   r?   r'   s     r   r)   zStatisticDiff.__eq__X   st   € Ý˜%¥Ñ/Ô/ð 	"Ý!Ð!Ø” %¤/Ò1ð 8Ø”I ¤Ò+ð8à”N e¤oÒ5ð8ð ”J %¤+Ò-ð8ð ”O uÔ'7Ò7ð		9r   c                 óÜ   — d| j         t          | j        d¦  «        t          | j        d¦  «        | j        | j        fz  }| j        r%| j        | j        z  }|dt          |d¦  «        z  z  }|S )Nz %s: size=%s (%s), count=%i (%+i)FTr+   )r   r   r   r>   r   r?   r,   s      r   r/   zStatisticDiff.__str__a   sw   € Ø2Ø”>Ý ¤	¨5Ñ1Ô1Ý ¤°Ñ5Ô5Ø”:Ø”?ð	$ñ$ˆð Œ:ð 	BØ”i $¤*Ñ,ˆGØ�N¥\°'¸5Ñ%AÔ%AÑAÑAˆDØˆr   c                 óH   — d| j         | j        | j        | j        | j        fz  S )Nz9<StatisticDiff traceback=%r size=%i (%+i) count=%i (%+i)>r=   r"   s    r   r1   zStatisticDiff.__repr__m   s*   € ØKØ”> 4¤9¨d¬nØ”:˜tœð0ñ0ð 	1r   c                 óv   — t          | j        ¦  «        | j        t          | j        ¦  «        | j        | j        fS r   )r   r>   r   r?   r   r   r"   s    r   r3   zStatisticDiff._sort_keyr   s3   € Ý�D”NÑ#Ô# T¤YÝ�D”OÑ$Ô$ d¤jØ”ð ð 	 r   Nr4   r:   r   r   r<   r<   F   s€   € € € € € ðð ð J€Ið%ð %ð %ð3ð 3ð 3ð9ð 9ð 9ð
ð 
ð 
ð1ð 1ð 1ð
 ð  ð  ð  ð  r   r<   c           	      óò  — g }|                      ¦   «         D ]‘\  }}|                      |d ¦  «        }|�8t          ||j        |j        |j        z
  |j        |j        |j        z
  ¦  «        }n't          ||j        |j        |j        |j        ¦  «        }|                     |¦  «         Œ’|                       ¦   «         D ]9\  }}t          |d|j         d|j         ¦  «        }|                     |¦  «         Œ:|S ©Nr   )ÚitemsÚpopr<   r   r   Úappend)Ú	old_groupÚ	new_groupÚ
statisticsr   ÚstatÚpreviouss         r   Ú_compare_grouped_statsrP   x   s  € Ø€JØ$Ÿ?š?Ñ,Ô,ð 
 ð 
 ‰ˆ	�4Ø—=’= ¨DÑ1Ô1ˆØÐÝ  Ø!%¤¨D¬I¸¼Ñ,EØ!%¤¨T¬Z¸(¼.Ñ-HñJô JˆDˆDõ ! Ø!%¤¨D¬IØ!%¤¨T¬Zñ9ô 9ˆDð 	×Ò˜$ÑÔÐÐà$Ÿ?š?Ñ,Ô,ð  ð  ‰ˆ	�4Ý˜Y¨¨D¬I¨:°q¸4¼:¸+ÑFÔFˆØ×Ò˜$ÑÔÐÐØÐr   c                   óf   — e Zd ZdZdZd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Z	d„ Z
d„ Zd	„ Zd
„ ZdS )ÚFramez
    Frame of a traceback.
    ©Ú_framec                 ó   — || _         d S r   rS   ©r   Úframes     r   r   zFrame.__init__“   s   € àˆŒˆˆr   c                 ó   — | j         d         S rG   rS   r"   s    r   ÚfilenamezFrame.filename—   ó   € àŒ{˜1Œ~Ðr   c                 ó   — | j         d         S ©Né   rS   r"   s    r   ÚlinenozFrame.lineno›   rZ   r   c                 óZ   — t          |t          ¦  «        st          S | j        |j        k    S r   ©r%   rR   r&   rT   r'   s     r   r)   zFrame.__eq__Ÿ   ó)   € Ý˜%¥Ñ'Ô'ð 	"Ý!Ð!Ø”˜uœ|Ò+Ð,r   c                 óZ   — t          |t          ¦  «        st          S | j        |j        k     S r   r`   r'   s     r   Ú__lt__zFrame.__lt__¤   s)   € Ý˜%¥Ñ'Ô'ð 	"Ý!Ð!Ø”˜eœlÒ*Ð+r   c                 ó*   — t          | j        ¦  «        S r   )r!   rT   r"   s    r   r#   zFrame.__hash__©   ó   € Ý�D”KÑ Ô Ð r   c                 ó$   — | j         ›d| j        ›�S )Nú:©rY   r^   r"   s    r   r/   zFrame.__str__¬   s   € Øœ-˜-˜-¨¬¨Ð5Ð5r   c                 ó(   — d| j         ›d| j        ›d�S )Nz<Frame filename=z lineno=ú>rh   r"   s    r   r1   zFrame.__repr__¯   s   € € Ø26´-°-°-ÀÄÀÀÐMÐMr   N)r5   r6   r7   r8   r9   r   ÚpropertyrY   r^   r)   rc   r#   r/   r1   r:   r   r   rR   rR   Œ   sº   € € € € € ðð ð €Iðð ð ð ðð ñ „Xðð ðð ñ „Xðð-ð -ð -ð
,ð ,ð ,ð
!ð !ð !ð6ð 6ð 6ðNð Nð Nð Nð Nr   rR   c                   ól   — e Zd ZdZdZdd„Zed„ ¦   «         Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zdd„ZdS )Ú	Tracebackz`
    Sequence of Frame instances sorted from the oldest frame
    to the most recent frame.
    )Ú_framesÚ_total_nframeNc                 ó~   — t          j        | ¦  «         t          t          |¦  «        ¦  «        | _        || _        d S r   )r   r   ÚtupleÚreversedrn   ro   )r   ÚframesÚtotal_nframes      r   r   zTraceback.__init__»   s:   € ÝÔ˜$ÑÔÐõ
 �X fÑ-Ô-Ñ.Ô.ˆŒØ)ˆÔÐÐr   c                 ó   — | j         S r   )ro   r"   s    r   rt   zTraceback.total_nframeÄ   s   € àÔ!Ð!r   c                 ó*   — t          | j        ¦  «        S r   )Úlenrn   r"   s    r   Ú__len__zTraceback.__len__È   ó   € Ý�4”<Ñ Ô Ð r   c                 ó¨   — t          |t          ¦  «        r$t          d„ | j        |         D ¦   «         ¦  «        S t	          | j        |         ¦  «        S )Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   )rR   ©Ú.0Útraces     r   ú	<genexpr>z(Traceback.__getitem__.<locals>.<genexpr>Í   ó(   è è € ÐGÐG¨%�˜u™œÐGÐGÐGÐGÐGÐGr   )r%   Úslicerq   rn   rR   ©r   Úindexs     r   Ú__getitem__zTraceback.__getitem__Ë   óM   € Ý�e�UÑ#Ô#ð 	.ÝÐGÐG°4´<ÀÔ3FÐGÑGÔGÑGÔGÐGå˜œ eÔ,Ñ-Ô-Ð-r   c                 ó   — |j         | j        v S r   )rT   rn   rV   s     r   Ú__contains__zTraceback.__contains__Ñ   ó   € ØŒ|˜tœ|Ð+Ð+r   c                 ó*   — t          | j        ¦  «        S r   )r!   rn   r"   s    r   r#   zTraceback.__hash__Ô   s   € Ý�D”LÑ!Ô!Ð!r   c                 óZ   — t          |t          ¦  «        st          S | j        |j        k    S r   ©r%   rm   r&   rn   r'   s     r   r)   zTraceback.__eq__×   s)   € Ý˜%¥Ñ+Ô+ð 	"Ý!Ð!Ø” ¤Ò-Ð.r   c                 óZ   — t          |t          ¦  «        st          S | j        |j        k     S r   r‹   r'   s     r   rc   zTraceback.__lt__Ü   s)   € Ý˜%¥Ñ+Ô+ð 	"Ý!Ð!Ø”˜uœ}Ò,Ð-r   c                 ó,   — t          | d         ¦  «        S rG   )Ústrr"   s    r   r/   zTraceback.__str__á   s   € Ý�4˜”7‰|Œ|Ðr   c                 ó`   — dt          | ¦  «        › �}| j        €|dz  }n|d| j        › d�z  }|S )Nz<Traceback rj   z total_nframe=)rq   ro   rt   )r   Úss     r   r1   zTraceback.__repr__ä   sG   € Ø'�% ™+œ+Ð'Ð'ˆØÔÐ%Ø�‰HˆAˆAàÐ6 $Ô"3Ð6Ð6Ð6Ñ6ˆAØˆr   Fc                 óX  — g }|�|dk    r| | d …         }n| d |…         }n| }|rt          |¦  «        }|D ]r}|                     d|j        ›d|j        ›�¦  «         t	          j        |j        |j        ¦  «                             ¦   «         }|r|                     d|z  ¦  «         Œs|S )Nr   z  File "z", line z    %s)rr   rJ   rY   r^   Ú	linecacheÚgetlineÚstrip)r   ÚlimitÚmost_recent_firstÚlinesÚframe_slicerW   Úlines          r   ÚformatzTraceback.formatì   sÑ   € ØˆØÐØ�qŠyˆyØ" E 6 7 7œm��à" 6 E 6œl��àˆKàð 	0Ý" ;Ñ/Ô/ˆKØ ð 	.ð 	.ˆEØ�LŠLˆLØ!œN˜N˜N¨E¬L¨Lð:ñ ;ô ;ð ;åÔ$ U¤^°U´\ÑBÔB×HÒHÑJÔJˆDØð .Ø—’˜X¨™_Ñ-Ô-Ð-øØˆr   r   )NF)r5   r6   r7   r8   r9   r   rk   rt   rx   r„   r‡   r#   r)   rc   r/   r1   rš   r:   r   r   rm   rm   ³   sà   € € € € € ðð ð -€Ið*ð *ð *ð *ð ð"ð "ñ „Xð"ð!ð !ð !ð.ð .ð .ð,ð ,ð ,ð"ð "ð "ð/ð /ð /ð
.ð .ð .ð
ð ð ðð ð ðð ð ð ð ð r   rm   c                 óF   — t          | ¦  «        }|�t          |¦  «        S dS )zé
    Get the traceback where the Python object *obj* was allocated.
    Return a Traceback instance.

    Return None if the tracemalloc module is not tracing memory allocations or
    did not trace the allocation of the object.
    N)r   rm   )Úobjrs   s     r   Úget_object_tracebackr�     s*   € õ # 3Ñ'Ô'€FØÐÝ˜Ñ Ô Ð àˆtr   c                   óv   — e Zd ZdZdZd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	d„ Z
d„ Zd	„ Zd
„ ZdS )ÚTracez"
    Trace of a memory block.
    ©Ú_tracec                 ó   — || _         d S r   r    ©r   r~   s     r   r   zTrace.__init__  s   € ð ˆŒˆˆr   c                 ó   — | j         d         S rG   r    r"   s    r   ÚdomainzTrace.domain  rZ   r   c                 ó   — | j         d         S r\   r    r"   s    r   r   z
Trace.size  rZ   r   c                 ó.   — t          | j        dd …         Ž S )Né   )rm   r¡   r"   s    r   r   zTrace.traceback#  s   € å˜$œ+ a b bœ/Ð*Ð*r   c                 óZ   — t          |t          ¦  «        st          S | j        |j        k    S r   )r%   rŸ   r&   r¡   r'   s     r   r)   zTrace.__eq__'  ra   r   c                 ó*   — t          | j        ¦  «        S r   )r!   r¡   r"   s    r   r#   zTrace.__hash__,  re   r   c                 ó@   — | j         ›dt          | j        d¦  «        ›�S )Nz: F)r   r   r   r"   s    r   r/   zTrace.__str__/  s"   € Øœ>˜>˜>­<¸¼	À5Ñ+IÔ+IÐ+IÐJÐJr   c                 óT   — d| j         ›dt          | j        d¦  «        ›d| j        ›d�S )Nz<Trace domain=z size=Fz, traceback=rj   )r¥   r   r   r   r"   s    r   r1   zTrace.__repr__2  s5   € € à”;�;�;¥¨T¬Y¸Ñ >Ô >Ð >Ð >ÀÄÀÀðPð 	Qr   N)r5   r6   r7   r8   r9   r   rk   r¥   r   r   r)   r#   r/   r1   r:   r   r   rŸ   rŸ     sÉ   € € € € € ðð ð €Iðð ð ð
 ðð ñ „Xðð ðð ñ „Xðð ð+ð +ñ „Xð+ð-ð -ð -ð
!ð !ð !ðKð Kð KðQð Qð Qð Qð Qr   rŸ   c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )Ú_Tracesc                 ó<   — t          j        | ¦  «         || _        d S r   )r   r   Ú_traces)r   Útracess     r   r   z_Traces.__init__8  s   € ÝÔ˜$ÑÔÐàˆŒˆˆr   c                 ó*   — t          | j        ¦  «        S r   )rw   r°   r"   s    r   rx   z_Traces.__len__=  ry   r   c                 ó¨   — t          |t          ¦  «        r$t          d„ | j        |         D ¦   «         ¦  «        S t	          | j        |         ¦  «        S )Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   )rŸ   r|   s     r   r   z&_Traces.__getitem__.<locals>.<genexpr>B  r€   r   )r%   r�   rq   r°   rŸ   r‚   s     r   r„   z_Traces.__getitem__@  r…   r   c                 ó   — |j         | j        v S r   )r¡   r°   r£   s     r   r‡   z_Traces.__contains__F  rˆ   r   c                 óZ   — t          |t          ¦  «        st          S | j        |j        k    S r   )r%   r®   r&   r°   r'   s     r   r)   z_Traces.__eq__I  s)   € Ý˜%¥Ñ)Ô)ð 	"Ý!Ð!Ø” ¤Ò-Ð.r   c                 ó&   — dt          | ¦  «        z  S )Nz<Traces len=%s>)rw   r"   s    r   r1   z_Traces.__repr__N  s   € Ø ¥3 t¡9¤9Ñ,Ð,r   N)	r5   r6   r7   r   rx   r„   r‡   r)   r1   r:   r   r   r®   r®   7  sn   € € € € € ðð ð ð
!ð !ð !ð.ð .ð .ð,ð ,ð ,ð/ð /ð /ð
-ð -ð -ð -ð -r   r®   c                 ó‚   — t           j                             | ¦  «        } |                      d¦  «        r
| d d…         } | S )Nz.pycéÿÿÿÿ)ÚosÚpathÚnormcaseÚendswith)rY   s    r   Ú_normalize_filenamer¾   R  s?   € ÝŒw×Ò Ñ)Ô)€HØ×Ò˜Ñ Ô ð !Ø˜C˜R˜C”=ˆØ€Or   c                   ó   — e Zd Zd„ Zd„ ZdS )Ú
BaseFilterc                 ó   — || _         d S r   )Ú	inclusive)r   rÂ   s     r   r   zBaseFilter.__init__Z  s   € Ø"ˆŒˆˆr   c                 ó   — t           ‚r   )ÚNotImplementedErrorr£   s     r   Ú_matchzBaseFilter._match]  s   € Ý!Ð!r   N)r5   r6   r7   r   rÅ   r:   r   r   rÀ   rÀ   Y  s2   € € € € € ð#ð #ð #ð"ð "ð "ð "ð "r   rÀ   c                   óP   ‡ — e Zd Z	 d	ˆ fd„	Zed„ ¦   «         Zd„ Zd„ Zd„ Zd„ Z	ˆ xZ
S )
ÚFilterNFc                 óª   •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        || _        || _        || _        d S r   )Úsuperr   rÂ   r¾   Ú_filename_patternr^   Ú
all_framesr¥   )r   rÂ   Úfilename_patternr^   rË   r¥   Ú	__class__s         €r   r   zFilter.__init__b  sL   ø€ å‰Œ×Ò˜Ñ#Ô#Ð#Ø"ˆŒÝ!4Ð5EÑ!FÔ!FˆÔØˆŒØ$ˆŒØˆŒˆˆr   c                 ó   — | j         S r   )rÊ   r"   s    r   rÌ   zFilter.filename_patternk  s   € àÔ%Ð%r   c                 ó€   — t          |¦  «        }t          j        || j        ¦  «        sdS | j        €dS || j        k    S )NFT)r¾   ÚfnmatchrÊ   r^   ©r   rY   r^   s      r   Ú_match_frame_implzFilter._match_frame_implo  sE   € Ý& xÑ0Ô0ˆÝŒ˜x¨Ô)?Ñ@Ô@ð 	Ø�5ØŒ;ÐØ�4à˜dœkÒ)Ð*r   c                 ó@   — |                       ||¦  «        | j         z  S r   )rÒ   rÂ   rÑ   s      r   Ú_match_framezFilter._match_framex  s"   € Ø×%Ò% h°Ñ7Ô7¸t¼~Ð;MÑNÐNr   c                 ó¨   ‡ — ‰ j         r*t          ˆ fd„|D ¦   «         ¦  «        r‰ j        S ‰ j         S |d         \  }}‰                      ||¦  «        S )Nc              3   óJ   •K  — | ]\  }}‰                      ||¦  «        V — Œd S r   )rÒ   )r}   rY   r^   r   s      €r   r   z*Filter._match_traceback.<locals>.<genexpr>}  sK   øè è € ð 6ð 6Ù'�x ð ×)Ò)¨(°FÑ;Ô;ð 6ð 6ð 6ð 6ð 6ð 6r   r   )rË   ÚanyrÂ   rÔ   )r   r   rY   r^   s   `   r   Ú_match_tracebackzFilter._match_traceback{  s|   ø€ ØŒ?ð 	7Ýð 6ð 6ð 6ð 6Ø+4ð6ñ 6ô 6ñ 6ô 6ð ,à”~Ð%à œNÐ*Ð+à(¨œ|ÑˆH�fØ×$Ò$ X¨vÑ6Ô6Ð6r   c                 óŽ   — |\  }}}}|                       |¦  «        }| j        �!| j        r|o
|| j        k    S |p
|| j        k    S |S r   )rØ   r¥   rÂ   )r   r~   r¥   r   r   rt   Úress          r   rÅ   zFilter._match†  s^   € Ø05Ñ-ˆ��i Ø×#Ò# IÑ.Ô.ˆØŒ;Ð"ØŒ~ð 6ØÐ6 ¨$¬+Ò 5Ð6àÐ5˜v¨¬Ò4Ð5Øˆ
r   )NFN)r5   r6   r7   r   rk   rÌ   rÒ   rÔ   rØ   rÅ   Ú__classcell__©rÍ   s   @r   rÇ   rÇ   a  sš   ø€ € € € € à7;ðð ð ð ð ð ð ð&ð &ñ „Xð&ð+ð +ð +ðOð Oð Oð	7ð 	7ð 	7ðð ð ð ð ð ð r   rÇ   c                   ó:   ‡ — e Zd Zˆ fd„Zed„ ¦   «         Zd„ Zˆ xZS )ÚDomainFilterc                 óX   •— t          ¦   «                              |¦  «         || _        d S r   )rÉ   r   Ú_domain)r   rÂ   r¥   rÍ   s      €r   r   zDomainFilter.__init__’  s&   ø€ Ý‰Œ×Ò˜Ñ#Ô#Ð#ØˆŒˆˆr   c                 ó   — | j         S r   )rà   r"   s    r   r¥   zDomainFilter.domain–  s
   € àŒ|Ðr   c                 ó8   — |\  }}}}|| j         k    | j         z  S r   )r¥   rÂ   )r   r~   r¥   r   r   rt   s         r   rÅ   zDomainFilter._matchš  s'   € Ø05Ñ-ˆ��i Ø˜$œ+Ò%¨d¬nÐ*<Ñ=Ð=r   )r5   r6   r7   r   rk   r¥   rÅ   rÛ   rÜ   s   @r   rÞ   rÞ   ‘  sb   ø€ € € € € ðð ð ð ð ð ðð ñ „Xðð>ð >ð >ð >ð >ð >ð >r   rÞ   c                   óV   — e Zd ZdZd„ Zd„ Zed„ ¦   «         Zd„ Zd„ Z	d„ Z
dd	„Zdd
„ZdS )ÚSnapshotzB
    Snapshot of traces of memory blocks allocated by Python.
    c                 ó<   — t          |¦  «        | _        || _        d S r   )r®   r±   Útraceback_limit)r   r±   ræ   s      r   r   zSnapshot.__init__¤  s   € õ ˜f‘o”oˆŒØ.ˆÔÐÐr   c                 ó˜   — t          |d¦  «        5 }t          j        | |t          j        ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z1
        Write the snapshot into a file.
        ÚwbN)ÚopenÚpickleÚdumpÚHIGHEST_PROTOCOL)r   rY   Úfps      r   rë   zSnapshot.dumpª  sŒ   € õ �(˜DÑ!Ô!ð 	; RÝŒK˜˜b¥&Ô"9Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 	;ð 	;s   ‘!?¿AÁAc                 ó~   — t          | d¦  «        5 }t          j        |¦  «        cddd¦  «         S # 1 swxY w Y   dS )z.
        Load a snapshot from a file.
        ÚrbN)ré   rê   Úload)rY   rí   s     r   rð   zSnapshot.load±  s€   € õ
 �(˜DÑ!Ô!ð 	# RÝ”;˜r‘?”?ð	#ð 	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	#ð 	#s   ‘2²6¹6c                 ó„   ‡— |rt          ˆfd„|D ¦   «         ¦  «        sdS |rt          ˆfd„|D ¦   «         ¦  «        rdS dS )Nc              3   óB   •K  — | ]}|                      ‰¦  «        V — Œd S r   ©rÅ   ©r}   Útrace_filterr~   s     €r   r   z)Snapshot._filter_trace.<locals>.<genexpr>»  sE   øè è € ð <ð <Ø'ð $×*Ò*¨5Ñ1Ô1ð <ð <ð <ð <ð <ð <r   Fc              3   óD   •K  — | ]}|                      ‰¦  «         V — Œd S r   ró   rô   s     €r   r   z)Snapshot._filter_trace.<locals>.<genexpr>¿  sH   øè è € ð 8ð 8Ø#ð $×*Ò*¨5Ñ1Ô1Ð1ð 8ð 8ð 8ð 8ð 8ð 8r   T)r×   )r   Úinclude_filtersÚexclude_filtersr~   s      `r   Ú_filter_tracezSnapshot._filter_trace¹  s’   ø€ Øð 	Ýð <ð <ð <ð <Ø+:ð<ñ <ô <ñ <ô <ð à�uØð 	Ýð 8ð 8ð 8ð 8Ø'6ð8ñ 8ô 8ñ 8ô 8ð à�uØˆtr   c                 ó�  ‡ ‡‡— t          |t          ¦  «        s$t          dt          |¦  «        j        z  ¦  «        ‚|rVg Šg Š|D ]4}|j        r‰                     |¦  «         Œ‰                     |¦  «         Œ5ˆˆˆ fd„‰ j        j        D ¦   «         }n‰ j        j         	                    ¦   «         }t          |‰ j        ¦  «        S )zð
        Create a new Snapshot instance with a filtered traces sequence, filters
        is a list of Filter or DomainFilter instances.  If filters is an empty
        list, return a new Snapshot instance with a copy of the traces.
        z)filters must be a list of filters, not %sc                 óB   •— g | ]}‰                      ‰‰|¦  «        ¯|‘ŒS r:   )rù   )r}   r~   rø   r÷   r   s     €€€r   ú
<listcomp>z*Snapshot.filter_traces.<locals>.<listcomp>Õ  sE   ø€ ð 8ð 8ð 8 EØ!×/Ò/°Ø0?Ø05ñ7ô 7ð8˜%ð 8ð 8ð 8r   )r%   r   Ú	TypeErrorÚtyper5   rÂ   rJ   r±   r°   Úcopyrä   ræ   )r   Úfiltersrõ   Ú
new_tracesrø   r÷   s   `   @@r   Úfilter_traceszSnapshot.filter_tracesÄ  sü   øøø€ õ ˜'¥8Ñ,Ô,ð 	6ÝÐGÝ" 7™mœmÔ4ñ5ñ 6ô 6ð 6àð 	4Ø ˆOØ ˆOØ 'ð 9ð 9�ØÔ)ð 9Ø#×*Ò*¨<Ñ8Ô8Ð8Ð8à#×*Ò*¨<Ñ8Ô8Ð8Ð8ð8ð 8ð 8ð 8ð 8ð 8¨T¬[Ô-@ð 8ñ 8ô 8ˆJˆJð
 œÔ,×1Ò1Ñ3Ô3ˆJÝ˜
 DÔ$8Ñ9Ô9Ð9r   c                 ó>  — |dvrt          d|›�¦  «        ‚|r|dvrt          d|z  ¦  «        ‚i }i }|s½| j        j        D ]¯}|\  }}}}		 ||         }
nO# t          $ rB |dk    r|}n"|dk    r|d d…         }n|d         d         dff}t	          |¦  «        }
|
||<   Y nw xY w	 ||
         }|xj        |z  c_        |xj        dz  c_        ŒŒ# t          $ r t          |
|d¦  «        ||
<   Y Œ¬w xY wn«| j        j        D ]ž}|\  }}}}	|D ]’}	 ||         }
n9# t          $ r, |dk    r|f}n|d         dff}t	          |¦  «        }
|
||<   Y nw xY w	 ||
         }|xj        |z  c_        |xj        dz  c_        Œo# t          $ r t          |
|d¦  «        ||
<   Y Œ�w xY wŒŸ|S )	N)r   rY   r^   zunknown key_type: )r^   rY   z/cumulative mode cannot by used with key type %rr   r^   r]   r   )Ú
ValueErrorr±   r°   ÚKeyErrorrm   r   r   r   )r   Úkey_typeÚ
cumulativeÚstatsÚ
tracebacksr~   r¥   r   Útrace_tracebackrt   r   rs   rN   rW   s                 r   Ú	_group_byzSnapshot._group_byÝ  sª  € ØÐ>Ð>Ð>Ý�*°x°xÐAÑBÔBÐBØð 	<˜(Ð*@Ð@Ð@Ýð 0Ø2:ñ;ñ <ô <ð <ð ˆØˆ
Øð '	IØœÔ,ð Eð E�Ø>CÑ;�˜˜o¨|ð
<Ø *¨?Ô ;�I�IøÝð <ð <ð <Ø ;Ò.Ð.Ø!0˜˜Ø! XÒ-Ð-Ø!0°°!°Ô!4˜˜à#2°1Ô#5°aÔ#8¸!Ð"<Ð!>˜Ý )¨&Ñ 1Ô 1�IØ2;�J˜Ñ/Ð/Ð/ð<øøøðEØ  Ô+�DØ�I”I Ñ%�I”IØ�J”J !‘O�J”J�JøÝð Eð Eð EÝ'0°¸DÀ!Ñ'DÔ'D�E˜)Ñ$Ð$Ð$ðEøøøð#Eð* œÔ,ð Ið I�Ø>CÑ;�˜˜o¨|Ø,ð Ið I�Eð6Ø$.¨uÔ$5˜	˜	øÝ#ð 6ð 6ð 6Ø# xÒ/Ð/Ø&+ X˜F˜Fà',¨Q¤x° mÐ%5˜FÝ$-¨fÑ$5Ô$5˜	Ø,5˜
 5Ñ)Ð)Ð)ð6øøøðIØ$ YÔ/˜Ø˜	œ	 TÑ)˜	œ	Ø˜
œ
 a™˜
œ
˜
øÝ#ð Ið Ið IÝ+4°YÀÀaÑ+HÔ+H˜˜iÑ(Ð(Ð(ðIøøøðIð  ˆsI   ÁAÁA	B ÂB Â$(CÃC.Ã-C.ÄDÄ3EÅ
EÅ(E8Å8FÆFFc                 ó¶   — |                       ||¦  «        }t          |                     ¦   «         ¦  «        }|                     dt          j        ¬¦  «         |S )zd
        Group statistics by key_type. Return a sorted list of Statistic
        instances.
        T©ÚreverseÚkey)r  ÚlistÚvaluesÚsortr   r3   )r   r  r  ÚgroupedrM   s        r   rM   zSnapshot.statistics  sM   € ð
 —.’. ¨:Ñ6Ô6ˆÝ˜'Ÿ.š.Ñ*Ô*Ñ+Ô+ˆ
Ø�Š ­)Ô*=ˆÑ>Ô>Ð>ØÐr   c                 óÀ   — |                       ||¦  «        }|                      ||¦  «        }t          ||¦  «        }|                     dt          j        ¬¦  «         |S )z­
        Compute the differences with an old snapshot old_snapshot. Get
        statistics as a sorted list of StatisticDiff instances, grouped by
        group_by.
        Tr  )r  rP   r  r<   r3   )r   Úold_snapshotr  r  rL   rK   rM   s          r   Ú
compare_tozSnapshot.compare_to  sZ   € ð —N’N 8¨ZÑ8Ô8ˆ	Ø ×*Ò*¨8°ZÑ@Ô@ˆ	Ý+¨I°yÑAÔAˆ
Ø�Š ­-Ô*AˆÑBÔBÐBØÐr   N)F)r5   r6   r7   r8   r   rë   Ústaticmethodrð   rù   r  r  rM   r  r:   r   r   rä   rä   Ÿ  s­   € € € € € ðð ð/ð /ð /ð;ð ;ð ;ð ð#ð #ñ „\ð#ð	ð 	ð 	ð:ð :ð :ð21ð 1ð 1ðfð ð ð ð
ð 
ð 
ð 
ð 
ð 
r   rä   c                  ó”   — t          ¦   «         st          d¦  «        ‚t          ¦   «         } t          ¦   «         }t	          | |¦  «        S )zI
    Take a snapshot of traces of memory blocks allocated by Python.
    zLthe tracemalloc module must be tracing memory allocations to take a snapshot)Ú
is_tracingÚRuntimeErrorr   Úget_traceback_limiträ   )r±   ræ   s     r   Útake_snapshotr  '  sK   € õ ‰<Œ<ð =Ýð <ñ =ô =ð 	=å‰]Œ]€FÝ)Ñ+Ô+€OÝ�F˜OÑ,Ô,Ð,r   )Úcollections.abcr   r   Ú	functoolsr   rÐ   r’   Úos.pathrº   rê   Ú_tracemallocr   r   r   r   r<   rP   rR   rm   r�   rŸ   r®   r¾   rÀ   rÇ   rÞ   rä   r  r:   r   r   ú<module>r!     s¨  ðØ .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø $Ð $Ð $Ð $Ð $Ð $Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€ð Ð Ð Ð Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;ðð ð ð"%7ð %7ð %7ð %7ð %7ñ %7ô %7ð %7ðP/ ð / ð / ð / ð / ñ / ô / ð / ðdð ð ð( ð#Nð #Nð #Nð #Nð #Nñ #Nô #Nñ „ð#NðL ðJð Jð Jð Jð J�ñ Jô Jñ „ðJðZð ð ð$Qð $Qð $Qð $Qð $Qñ $Qô $Qð $QðN-ð -ð -ð -ð -ˆhñ -ô -ð -ð6ð ð ð"ð "ð "ð "ð "ñ "ô "ð "ð-ð -ð -ð -ð -ˆZñ -ô -ð -ð`>ð >ð >ð >ð >�:ñ >ô >ð >ðEð Eð Eð Eð Eñ Eô Eð EðP	-ð 	-ð 	-ð 	-ð 	-r   