Ë
    òT•j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
­ 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y)é    )ÚSequenceÚIterable)Útotal_orderingN)Ú*)Ú_get_object_tracebackÚ_get_tracesc                 ó¸   — dD ]U  }t        | «      dk  r|dk7  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  } ŒW y )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.12/tracemalloc.pyÚ_format_sizer      s   € Ø1ò ˆÜˆt‹9�sŠ?˜t sš{áØ! T¨4 LÑ0Ò0à  D¨$ <Ñ/Ò/Üˆt‹9�yÒ  D¨E¢MáØ! T¨4 LÑ0Ò0à  D¨$ <Ñ/Ò/Ø�‰‰ñó    c                   ó8   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
Ú	StatisticzS
    Statistic difference on memory allocations between two Snapshot instance.
    ©Ú	tracebackr   Úcountc                 ó.   — || _         || _        || _        y ©Nr   )Úselfr   r   r   s       r   Ú__init__zStatistic.__init__%   s   € Ø"ˆŒØˆŒ	Øˆ�
r   c                 óZ   — t        | j                  | j                  | j                  f«      S r   )Úhashr   r   r   ©r   s    r   Ú__hash__zStatistic.__hash__*   s    € Ü�T—^‘^ T§Y¡Y°·
±
Ð;Ó<Ð<r   c                 óÌ   — t        |t        «      st        S | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r   )Ú
isinstancer   ÚNotImplementedr   r   r   ©r   Úothers     r   Ú__eq__zStatistic.__eq__-   sQ   € Ü˜%¤Ô+Ü!Ð!Ø—‘ %§/¡/Ñ1ò .Ø—I‘I §¡Ñ+ò.à—J‘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‘NÜ  §¡¨EÓ2Ø—J‘Jð ñ ˆð �:Š:Ø—i‘i $§*¡*Ñ,ˆGØ�N¤\°'¸5Ó%AÑAÑAˆDØˆr   c                 óN   — 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¡9¨d¯j©jÐ9ñ:ð 	;r   c                 óH   — | 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òò
=ò/òò;ó7r   r   c                   ó8   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚStatisticDiffzd
    Statistic difference on memory allocations between an old and a new
    Snapshot instance.
    ©r   r   Ú	size_diffr   Ú
count_diffc                 óJ   — || _         || _        || _        || _        || _        y 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   s3   € Ü�T—^‘^ T§Y¡Y°·±Ø—Z‘Z §¡ð2ó 3ð 	3r   c                 ó8  — t        |t        «      st        S | j                  |j                  k(  xrj | j                  |j                  k(  xrO | j
                  |j
                  k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S r   )r%   r<   r&   r   r   r>   r   r?   r'   s     r   r)   zStatisticDiff.__eq__X   s�   € Ü˜%¤Ô/Ü!Ð!Ø—‘ %§/¡/Ñ1ò 8Ø—I‘I §¡Ñ+ò8à—N‘N e§o¡oÑ5ò8ð —J‘J %§+¡+Ñ-ò8ð —O‘O u×'7Ñ'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   sx   € Ø2Ø—>‘>Ü §	¡	¨5Ó1Ü §¡°Ó5Ø—:‘:Ø—?‘?ð	$ñ$ˆð �:Š:Ø—i‘i $§*¡*Ñ,ˆGØ�N¤\°'¸5Ó%AÑAÑAˆDØˆr   c                 óz   — 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   s4   € ØKØ—>‘> 4§9¡9¨d¯n©nØ—:‘:˜tŸ™ð0ñ0ð 	1r   c                 ó˜   — t        | j                  «      | j                  t        | j                  «      | j                  | j
                  fS r   )r   r>   r   r?   r   r   r"   s    r   r3   zStatisticDiff._sort_keyr   s7   € Ü�D—N‘NÓ# T§Y¡YÜ�D—O‘OÓ$ d§j¡jØ—‘ð ð 	 r   Nr4   r:   r   r   r<   r<   F   s-   „ ñð J€Iò%ò3ò9ò
ò1ó
 r   r<   c           	      ó2  — g }|j                  «       D ]³  \  }}| j                  |d «      }|�Rt        ||j                  |j                  |j                  z
  |j                  |j                  |j                  z
  «      }n7t        ||j                  |j                  |j                  |j                  «      }|j                  |«       Œµ | j                  «       D ];  \  }}t        |d|j                   d|j                   «      }|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ˆØÐÜ  Ø!%§¡¨D¯I©I¸¿¹Ñ,EØ!%§¡¨T¯Z©Z¸(¿.¹.Ñ-HóJ‰Dô ! Ø!%§¡¨D¯I©IØ!%§¡¨T¯Z©Zó9ˆDð 	×Ñ˜$Õð
 ð %Ÿ?™?Ó,ò  ‰ˆ	�4Ü˜Y¨¨D¯I©I¨:°q¸4¿:¹:¸+ÓFˆØ×Ñ˜$Õð ð Ðr   c                   óX   — 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y)ÚFramez
    Frame of a traceback.
    ©Ú_framec                 ó   — || _         y 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                 ó`   — t        |t        «      st        S | j                  |j                  k(  S r   ©r%   rR   r&   rT   r'   s     r   r)   zFrame.__eq__Ÿ   ó%   € Ü˜%¤Ô'Ü!Ð!Ø—‘˜uŸ|™|Ñ+Ð,r   c                 ó`   — t        |t        «      st        S | j                  |j                  k  S r   r`   r'   s     r   Ú__lt__zFrame.__lt__¤   s%   € Ü˜%¤Ô'Ü!Ð!Ø—‘˜eŸl™lÑ*Ð+r   c                 ó,   — t        | j                  «      S r   )r!   rT   r"   s    r   r#   zFrame.__hash__©   ó   € Ü�D—K‘KÓ Ð r   c                 ó8   — | 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   Œ   sU   „ ñð €Iòð ñó ðð ñó ðò-ò
,ò
!ò6óNr   rR   c                   ód   — 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y)Ú	Tracebackz`
    Sequence of Frame instances sorted from the oldest frame
    to the most recent frame.
    )Ú_framesÚ_total_nframeNc                 ón   — t        j                  | «       t        t        |«      «      | _        || _        y 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   ó2   K  — | ]  }t        |«      –— Œ y ­wr   )rR   ©Ú.0Útraces     r   ú	<genexpr>z(Traceback.__getitem__.<locals>.<genexpr>Í   ó   è ø€ ÒG¨%œ˜uŸÑGùó   ‚)r%   Úslicerq   rn   rR   ©r   Úindexs     r   Ú__getitem__zTraceback.__getitem__Ë   ó:   € Ü�eœUÔ#ÜÑG°4·<±<ÀÑ3FÔGÓGÐGä˜Ÿ™ eÑ,Ó-Ð-r   c                 ó2   — |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‘LÓ!Ð!r   c                 ó`   — t        |t        «      st        S | j                  |j                  k(  S r   ©r%   rm   r&   rn   r'   s     r   r)   zTraceback.__eq__×   s%   € Ü˜%¤Ô+Ü!Ð!Ø—‘ §¡Ñ-Ð.r   c                 ó`   — 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                 ón   — dt        | «      › �}| j                  €|dz  }|S |d| j                  › d�z  }|S )Nz<Traceback rj   z total_nframe=)rq   ro   rt   )r   Úss     r   r1   zTraceback.__repr__ä   sO   € Øœ% ›+˜Ð'ˆØ×ÑÐ%Ø�‰HˆAð ˆð �> $×"3Ñ"3Ð!4°AÐ6Ñ6ˆAØˆr   c                 óR  — g }|�|dkD  r| | d  }n| d | }n| }|rt        |«      }|D ]|  }|j                  d|j                  ›d|j                  ›�«       t	        j
                  |j                  |j                  «      j                  «       }|sŒi|j                  d|z  «       Œ~ |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Ø" E 6 7˜m‘à" 6 E˜l‘àˆKáÜ" ;Ó/ˆKØ ò 	.ˆEØ�LŠLØ!ŸN›N¨E¯LªLð:ô ;ä×$Ñ$ U§^¡^°U·\±\ÓB×HÑHÓ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   ³   sT   „ ñð -€Ió*ð ñ"ó ð"ò!ò.ò,ò"ò/ò
.ò
òôr   rm   c                 ó4   — t        | «      }|�t        |«      S y)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ØÐÜ˜Ó Ð àr   c                   ób   — 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y)ÚTracez"
    Trace of a memory block.
    ©Ú_tracec                 ó   — || _         y 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˜/Ð*Ð*r   c                 ó`   — 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                 óL   — | j                   ›dt        | j                  d«      ›�S )Nz: F)r   r   r   r"   s    r   r/   zTrace.__str__/  s   € ØŸ>›>¬<¸¿	¹	À5Ô+IÐJÐJr   c                 ój   — 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  s(   � à—;“;¤¨T¯Y©Y¸Õ >ÀÇÃðPð 	Qr   N)r5   r6   r7   r8   r9   r   rk   r¦   r   r   r)   r#   r/   r1   r:   r   r   r    r      se   „ ñð €Iòð
 ñó ðð ñó ðð ñ+ó ð+ò-ò
!òKóQr   r    c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú_Tracesc                 ó<   — t        j                  | «       || _        y 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   ó2   K  — | ]  }t        |«      –— Œ y ­w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                 ó2   — |j                   | j                  v S r   )r¢   r±   r¤   s     r   rˆ   z_Traces.__contains__F  r‰   r   c                 ó`   — 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Ñ,Ð,r   N)	r5   r6   r7   r   rx   r…   rˆ   r)   r1   r:   r   r   r¯   r¯   7  s    „ òò
!ò.ò,ò/ó
-r   r¯   c                 óp   — t         j                  j                  | «      } | j                  d«      r| d d } | S )Nz.pycéÿÿÿÿ)ÚosÚpathÚnormcaseÚendswith)rY   s    r   Ú_normalize_filenamer¿   R  s4   € Ü�w‰w×Ñ Ó)€HØ×Ñ˜Ô Ø˜C˜R�=ˆØ€Or   c                   ó   — e Zd Zd„ Zd„ Zy)Ú
BaseFilterc                 ó   — || _         y 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  s   „ ò#ó"r   rÁ   c                   óJ   ‡ — e Zd Z	 dˆ fd„	Zed„ «       Zd„ Zd„ Zd„ Zd„ Z	ˆ xZ
S )ÚFilterc                 ó|   •— t         ‰| �  |«       || _        t        |«      | _        || _        || _        || _        y r   )Úsuperr   rÃ   r¿   Ú_filename_patternr^   Ú
all_framesr¦   )r   rÃ   Úfilename_patternr^   rÌ   r¦   Ú	__class__s         €r   r   zFilter.__init__b  s:   ø€ ä‰Ñ˜Ô#Ø"ˆŒÜ!4Ð5EÓ!FˆÔØˆŒØ$ˆŒØˆ�r   c                 ó   — | j                   S r   )rË   r"   s    r   rÍ   zFilter.filename_patternk  s   € à×%Ñ%Ð%r   c                 ó’   — t        |«      }t        j                  || j                  «      sy| j                  €y|| j                  k(  S )NFT)r¿   ÚfnmatchrË   r^   ©r   rY   r^   s      r   Ú_match_frame_implzFilter._match_frame_implo  s?   € Ü& xÓ0ˆÜ�‰˜x¨×)?Ñ)?Ô@ØØ�;‰;ÐØà˜dŸk™kÑ)Ð*r   c                 óB   — | j                  ||«      | j                   z  S r   )rÓ   rÃ   rÒ   s      r   Ú_match_framezFilter._match_framex  s!   € Ø×%Ñ% h°Ó7¸t¿~¹~Ð;MÑNÐNr   c                 óª   ‡ — ‰ j                   r-t        ˆ fd„|D «       «      r‰ j                  S ‰ j                   S |d   \  }}‰ j                  ||«      S )Nc              3   óH   •K  — | ]  \  }}‰j                  ||«      –— Œ y ­wr   )rÓ   )r}   rY   r^   r   s      €r   r   z*Filter._match_traceback.<locals>.<genexpr>}  s*   øè ø€ ò 6Ù'�x ð ×)Ñ)¨(°F×;ñ 6ùs   ƒ"r   )rÌ   ÚanyrÃ   rÕ   )r   r   rY   r^   s   `   r   Ú_match_tracebackzFilter._match_traceback{  sW   ø€ Ø�?Š?Üó 6Ø+4ô6ô 6à—~‘~Ð%à ŸN™NÐ*Ð+à(¨™|ÑˆH�fØ×$Ñ$ X¨vÓ6Ð6r   c                 ó²   — |\  }}}}| j                  |«      }| j                  �2| j                  r|xr || j                  k(  S |xs || j                  k7  S |S r   )rÙ   r¦   rÃ   )r   r~   r¦   r   r   rt   Úress          r   rÆ   zFilter._match†  s^   € Ø05Ñ-ˆ��i Ø×#Ñ# IÓ.ˆØ�;‰;Ð"Ø�~Š~ØÒ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  s4   ø„ à7;õð ñ&ó ð&ò+òOò	7ör   rÈ   c                   ó4   ‡ — e Zd Zˆ fd„Zed„ «       Zd„ Zˆ xZS )ÚDomainFilterc                 ó2   •— t         ‰| �  |«       || _        y 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                 óJ   — |\  }}}}|| 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©nÐ*<Ñ=Ð=r   )r5   r6   r7   r   rk   r¦   rÆ   rÜ   rÝ   s   @r   rß   rß   ‘  s!   ø„ ôð ñó ðö>r   rß   c                   óN   — 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y
)ÚSnapshotzB
    Snapshot of traces of memory blocks allocated by Python.
    c                 ó2   — t        |«      | _        || _        y r   )r¯   r²   Útraceback_limit)r   r²   rç   s      r   r   zSnapshot.__init__¤  s   € ô ˜f“oˆŒØ.ˆÕr   c                 ó�   — t        |d«      5 }t        j                  | |t        j                  «       ddd«       y# 1 sw Y   yxY w)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‰K˜˜b¤&×"9Ñ"9Ô:÷	;÷ 	;ñ 	;ús	   �&<¼Ac                 óp   — t        | d«      5 }t        j                  |«      cddd«       S # 1 sw Y   yxY w)z.
        Load a snapshot from a file.
        ÚrbN)rê   rë   Úload)rY   rî   s     r   rñ   zSnapshot.load±  s0   € ô
 �(˜DÓ!ð 	# RÜ—;‘;˜r“?÷	#÷ 	#ò 	#ús   �,¬5c                 ób   ‡— |rt        ˆfd„|D «       «      sy|rt        ˆfd„|D «       «      ryy)Nc              3   ó@   •K  — | ]  }|j                  ‰«      –— Œ y ­wr   ©rÆ   ©r}   Útrace_filterr~   s     €r   r   z)Snapshot._filter_trace.<locals>.<genexpr>»  s$   øè ø€ ò <Ø'ð $×*Ñ*¨5×1ñ <ùs   ƒFc              3   óB   •K  — | ]  }|j                  ‰«       –— Œ y ­wr   rô   rõ   s     €r   r   z)Snapshot._filter_trace.<locals>.<genexpr>¿  s'   øè ø€ ò 8Ø#ð $×*Ñ*¨5Ó1Ô1ñ 8ùs   ƒT)rØ   )r   Úinclude_filtersÚexclude_filtersr~   s      `r   Ú_filter_tracezSnapshot._filter_trace¹  s<   ø€ ÙÜó <Ø+:ô<ô <àÙÜó 8Ø'6ô8ô 8àØr   c                 óÈ  — t        |t        «      s!t        dt        |«      j                  z  «      ‚|rqg }g }|D ]1  }|j
                  r|j                  |«       Œ!|j                  |«       Œ3 | j                  j                  D �cg c]  }| j                  |||«      r|‘Œ }}n$| j                  j                  j                  «       }t        || j                  «      S c c}w )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 %s)r%   r   Ú	TypeErrorÚtyper5   rÃ   rJ   r²   r±   rú   Úcopyrå   rç   )r   Úfiltersrø   rù   rö   r~   Ú
new_tracess          r   Úfilter_traceszSnapshot.filter_tracesÄ  sá   € ô ˜'¤8Ô,ÜÐGÜ" 7›m×4Ñ4ñ5ó 6ð 6áØ ˆOØ ˆOØ 'ò 9�Ø×)Ò)Ø#×*Ñ*¨<Õ8à#×*Ñ*¨<Õ8ð	9ð
 .2¯[©[×-@Ñ-@ö 8 EØ!×/Ñ/°Ø0?Ø05ô7ò  ð 8ˆJñ 8ð
 Ÿ™×,Ñ,×1Ñ1Ó3ˆJÜ˜
 D×$8Ñ$8Ó9Ð9ùò8s   ÂCc                 ó&  — |dvrt        d|›�«      ‚|r|dvrt        d|z  «      ‚i }i }|sZ| j                  j                  D ]?  }|\  }}}}		 ||   }
	 ||
   }|xj
                  |z  c_        |xj                  dz  c_        ŒA |S | j                  j                  D ]F  }|\  }}}}	|D ]8  }	 ||   }
	 ||
   }|xj
                  |z  c_        |xj                  dz  c_        Œ: ŒH |S # t        $ r1 |dk(  r|}n|dk(  r|d d }n|d   d   dff}t	        |«      }
|
||<   Y ŒÎw xY w# t        $ r t        |
|d«      ||
<   Y Œýw xY w# t        $ r$ |dk(  r|f}n|d   dff}t	        |«      }
|
||<   Y Œ¾w xY w# t        $ r t        |
|d«      ||
<   Y Œæw xY w)	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ÐAÓBÐBÙ˜(Ð*@Ñ@Üð 0Ø2:ñ;ó <ð <ð ˆØˆ
ÙØŸ™×,Ñ,ò E�Ø>CÑ;�˜˜o¨|ð
<Ø *¨?Ñ ;�IðEØ  Ñ+�DØ—I’I Ñ%•IØ—J’J !‘O–Jð!EðN ˆð% Ÿ™×,Ñ,ò I�Ø>CÑ;�˜˜o¨|Ø,ò I�Eð6Ø$.¨uÑ$5˜	ðIØ$ YÑ/˜ØŸ	š	 TÑ)�	ØŸ
š
 a™ž
ñIðIð$ ˆøôG  ò <Ø ;Ò.Ø!0™Ø! XÒ-Ø!0°°!Ð!4™à#2°1Ñ#5°aÑ#8¸!Ð"<Ð!>˜Ü )¨&Ó 1�IØ2;�J˜Ó/ð<ûô  ò EÜ'0°¸DÀ!Ó'D�E˜)Ó$ðEûô $ò 6Ø# xÒ/Ø&+ X™Fà',¨Q¡x° mÐ%5˜FÜ$-¨fÓ$5˜	Ø,5˜
 5Ó)ð6ûô $ò IÜ+4°YÀÀaÓ+H˜˜iÓ(ðIúsH   ÁC(Á/D%Â-EÂ3/E4Ã(7D"Ä!D"Ä%EÅ EÅ*E1Å0E1Å4FÆFc                 óž   — | j                  ||«      }t        |j                  «       «      }|j                  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  sA   € ð
 —.‘. ¨:Ó6ˆÜ˜'Ÿ.™.Ó*Ó+ˆ
Ø�‰ ¬)×*=Ñ*=ˆÔ>ØÐr   c                 ó¨   — | j                  ||«      }|j                  ||«      }t        ||«      }|j                  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  sN   € ð —N‘N 8¨ZÓ8ˆ	Ø ×*Ñ*¨8°ZÓ@ˆ	Ü+¨I°yÓAˆ
Ø�‰ ¬-×*AÑ*AˆÔBØÐr   N)F)r5   r6   r7   r8   r   rì   Ústaticmethodrñ   rú   r  r
  rM   r  r:   r   r   rå   rå   Ÿ  s?   „ ñò/ò;ð ñ#ó ð#ò	ò:ò21ófô
r   rå   c                  ól   — 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  '  s7   € ô Œ<Üð <ó =ð 	=ä‹]€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÷P/ ñ / òdð( ÷#Nð #Nó ð#NðL ôJ�ó Jó ðJòZ÷$Qñ $QôN-ˆhô -ò6÷"ñ "ô-ˆZô -ô`>�:ô >÷Eñ EóP	-r   