ó
    F\hF  ã                   ó\  • S SK JrJr  S SKJr  S SKrS SKrS SKrS SK	r	S SK
7  S SK
JrJr  S r " S S5      r " S	 S
5      rS r\ " S S5      5       r\ " S S\5      5       rS r " S S5      r " S S\5      rS r " S S5      r " S S\5      r " S S\5      r " S S5      rS rg)é    )ÚSequenceÚIterable)Útotal_orderingN)Ú*)Ú_get_object_tracebackÚ_get_tracesc                 óÐ   • S H`  n[        U 5      S:  a  US:w  a  U(       a  SX4-  s  $ SX4-  s  $ [        U 5      S:  d  US:X  a  U(       a  SX4-  s  $ S	X4-  s  $ U S
-  n Mb     g )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.13/tracemalloc.pyÚ_format_sizer      sr   € Û1ˆÜˆt‹9�s‹?˜t s›{æØ! T LÑ0Ò0à  D <Ñ/Ò/Üˆt‹9�yÓ  D¨E£MæØ! T LÑ0Ò0à  D <Ñ/Ò/Ø�‰Šò 2ó    c                   ó@   • \ rS rSrSrSrS rS rS rS r	S r
S	 rS
rg)Ú	Statisticé   zK
Statistic difference on memory allocations between two Snapshot instance.
©Ú	tracebackr   Úcountc                 ó(   • Xl         X l        X0l        g ©Nr   )Úselfr   r   r   s       r   Ú__init__ÚStatistic.__init__%   s   € Ø"ŒØŒ	Ø�
r   c                 óZ   • [        U R                  U R                  U R                  45      $ r   )Úhashr   r   r   ©r   s    r   Ú__hash__ÚStatistic.__hash__*   s    € Ü�T—^‘^ T§Y¡Y°·
±
Ð;Ó<Ð<r   c                 óê   • [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R
                  UR
                  :H  $ r   )Ú
isinstancer   ÚNotImplementedr   r   r   ©r   Úothers     r   Ú__eq__ÚStatistic.__eq__-   sT   € Ü˜%¤×+Ñ+Ü!Ð!Ø—‘ %§/¡/Ñ1÷ .Ø—I‘I §¡Ñ+÷.à—J‘J %§+¡+Ñ-ð	/r   c                 óÞ   • SU R                   [        U R                  S5      U R                  4-  nU R                  (       a+  U R                  U R                  -  nUS[        US5      -  -  nU$ )Nz%s: size=%s, count=%iFú, average=%s)r   r   r   r   ©r   ÚtextÚaverages      r   Ú__str__ÚStatistic.__str__4   sc   € Ø'Ø—N‘NÜ  §¡¨EÓ2Ø—J‘Jð ñ ˆð �:�:Ø—i‘i $§*¡*Ñ,ˆGØ�N¤\°'¸5Ó%AÑAÑAˆDØˆr   c                 óN   • SU R                   U R                  U R                  4-  $ )Nz)<Statistic traceback=%r size=%i count=%i>r   r$   s    r   Ú__repr__ÚStatistic.__repr__>   s%   € Ø;Ø—>‘> 4§9¡9¨d¯j©jÐ9ñ:ð 	;r   c                 óH   • U R                   U R                  U R                  4$ r   )r   r   r   r$   s    r   Ú	_sort_keyÚStatistic._sort_keyB   s   € Ø—	‘	˜4Ÿ:™: t§~¡~Ð6Ð6r   )r   r   r   N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__r    r%   r,   r3   r6   r9   Ú__static_attributes__© r   r   r   r      s,   † ñð /€Iòò
=ò/òò;õ7r   r   c                   ó@   • \ rS rSrSrSrS rS rS rS r	S r
S	 rS
rg)ÚStatisticDifféF   zX
Statistic difference on memory allocations between an old and a new
Snapshot instance.
©r   r   Ú	size_diffr   Ú
count_diffc                 ó@   • Xl         X l        X0l        X@l        XPl        g r   rG   )r   r   r   rH   r   rI   s         r   r    ÚStatisticDiff.__init__M   s   € Ø"ŒØŒ	Ø"ŒØŒ
Ø$�r   c                 ó†   • [        U R                  U R                  U R                  U R                  U R
                  45      $ r   )r#   r   r   rH   r   rI   r$   s    r   r%   ÚStatisticDiff.__hash__T   s3   € Ü�T—^‘^ T§Y¡Y°·±Ø—Z‘Z §¡ð2ó 3ð 	3r   c                 ój  • [        U[        5      (       d  [        $ U R                  UR                  :H  =(       ay    U R                  UR                  :H  =(       aY    U R
                  UR
                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r   )r(   rE   r)   r   r   rH   r   rI   r*   s     r   r,   Ú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                 ó  • SU R                   [        U R                  S5      [        U R                  S5      U R                  U R
                  4-  nU R                  (       a+  U R                  U R                  -  nUS[        US5      -  -  nU$ )Nz %s: size=%s (%s), count=%i (%+i)FTr/   )r   r   r   rH   r   rI   r0   s      r   r3   ÚStatisticDiff.__str__a   sx   € Ø2Ø—>‘>Ü §	¡	¨5Ó1Ü §¡°Ó5Ø—:‘:Ø—?‘?ð	$ñ$ˆð �:�:Ø—i‘i $§*¡*Ñ,ˆGØ�N¤\°'¸5Ó%AÑAÑAˆDØˆr   c                 óz   • SU R                   U R                  U R                  U R                  U R                  4-  $ )Nz9<StatisticDiff traceback=%r size=%i (%+i) count=%i (%+i)>rG   r$   s    r   r6   ÚStatisticDiff.__repr__m   s4   € ØKØ—>‘> 4§9¡9¨d¯n©nØ—:‘:˜tŸ™ð0ñ0ð 	1r   c                 ó˜   • [        U R                  5      U R                  [        U R                  5      U R                  U R
                  4$ r   )r   rH   r   rI   r   r   r$   s    r   r9   ÚStatisticDiff._sort_keyr   s7   € Ü�D—N‘NÓ# T§Y¡YÜ�D—O‘OÓ$ d§j¡jØ—‘ð ð 	 r   )r   rI   r   rH   r   Nr;   rC   r   r   rE   rE   F   s-   † ñð J€Iò%ò3ò9ò
ò1õ
 r   rE   c           	      ó8  • / nUR                  5        H´  u  p4U R                  US 5      nUbR  [        UUR                  UR                  UR                  -
  UR                  UR                  UR                  -
  5      nO7[        UUR                  UR                  UR                  UR                  5      nUR                  U5        M¶     U R                  5        H;  u  p4[        USUR                  * SUR                  * 5      nUR                  U5        M=     U$ ©Nr   )ÚitemsÚpoprE   r   r   Úappend)Ú	old_groupÚ	new_groupÚ
statisticsr   ÚstatÚpreviouss         r   Ú_compare_grouped_statsr`   x   sê   € Ø€JØ$Ÿ?™?Ö,‰ˆ	Ø—=‘= ¨DÓ1ˆØÑÜ  Ø!%§¡¨D¯I©I¸¿¹Ñ,EØ!%§¡¨T¯Z©Z¸(¿.¹.Ñ-HóJ‰Dô ! Ø!%§¡¨D¯I©IØ!%§¡¨T¯Z©Zó9ˆDð 	×Ñ˜$Öñ -ð %Ÿ?™?Ö,‰ˆ	Ü˜Y¨¨D¯I©I¨:°q¸4¿:¹:¸+ÓFˆØ×Ñ˜$Öñ -ð Ðr   c                   ó`   • \ rS rSrSrSrS r\S 5       r\S 5       r	S r
S rS	 rS
 rS rSrg)ÚFrameéŒ   z
Frame of a traceback.
©Ú_framec                 ó   • Xl         g r   rd   ©r   Úframes     r   r    ÚFrame.__init__“   s   € à�r   c                 ó    • U R                   S   $ rW   rd   r$   s    r   ÚfilenameÚFrame.filename—   ó   € à�{‰{˜1‰~Ðr   c                 ó    • U R                   S   $ ©Né   rd   r$   s    r   ÚlinenoÚFrame.lineno›   rm   r   c                 ój   • [        U[        5      (       d  [        $ U R                  UR                  :H  $ r   ©r(   rb   r)   re   r*   s     r   r,   ÚFrame.__eq__Ÿ   ó(   € Ü˜%¤×'Ñ'Ü!Ð!Ø—‘˜uŸ|™|Ñ+Ð,r   c                 ój   • [        U[        5      (       d  [        $ U R                  UR                  :  $ r   rt   r*   s     r   Ú__lt__ÚFrame.__lt__¤   s(   € Ü˜%¤×'Ñ'Ü!Ð!Ø—‘˜eŸl™lÑ*Ð+r   c                 ó,   • [        U R                  5      $ r   )r#   re   r$   s    r   r%   ÚFrame.__hash__©   ó   € Ü�D—K‘KÓ Ð r   c                 ó<   • U R                   < SU R                  < 3$ )NÚ:©rk   rq   r$   s    r   r3   ÚFrame.__str__¬   s   € ØŸ-œ-¨¯«Ð5Ð5r   c                 ó@   • SU R                   < SU R                  < S3$ )Nz<Frame filename=z lineno=Ú>r   r$   s    r   r6   ÚFrame.__repr__¯   s   � Ø26·-´-ÀÇÄÐMÐMr   N)r<   r=   r>   r?   r@   rA   r    Úpropertyrk   rq   r,   rx   r%   r3   r6   rB   rC   r   r   rb   rb   Œ   sU   † ñð €Iòð ñó ðð ñó ðò-ò
,ò
!ò6õNr   rb   c                   óp   • \ rS rSrSrSrSS jr\S 5       rS r	S r
S	 rS
 rS rS rS rS rSS jrSrg)Ú	Tracebacké³   zT
Sequence of Frame instances sorted from the oldest frame
to the most recent frame.
)Ú_framesÚ_total_nframeNc                 ón   • [         R                  " U 5        [        [        U5      5      U l        X l        g r   )r   r    ÚtupleÚreversedrˆ   r‰   )r   ÚframesÚtotal_nframes      r   r    ÚTraceback.__init__»   s)   € Ü×Ò˜$Ôô
 œX fÓ-Ó.ˆŒØ)Õr   c                 ó   • U R                   $ r   )r‰   r$   s    r   rŽ   ÚTraceback.total_nframeÄ   s   € à×!Ñ!Ð!r   c                 ó,   • [        U R                  5      $ r   )Úlenrˆ   r$   s    r   Ú__len__ÚTraceback.__len__È   ó   € Ü�4—<‘<Ó Ð r   c                 óš   • [        U[        5      (       a  [        S U R                  U    5       5      $ [	        U R                  U   5      $ )Nc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr   )rb   ©Ú.0Útraces     r   Ú	<genexpr>Ú(Traceback.__getitem__.<locals>.<genexpr>Í   ó   é € ÐGÒ3F¨%œ˜uŸ˜Ò3Fùó   ‚)r(   Úslicer‹   rˆ   rb   ©r   Úindexs     r   Ú__getitem__ÚTraceback.__getitem__Ë   ó=   € Ü�eœU×#Ñ#ÜÑG°4·<±<ÀÒ3FÓGÓGÐGä˜Ÿ™ eÑ,Ó-Ð-r   c                 ó4   • UR                   U R                  ;   $ r   )re   rˆ   rg   s     r   Ú__contains__ÚTraceback.__contains__Ñ   ó   € Ø�|‰|˜tŸ|™|Ñ+Ð+r   c                 ó,   • [        U R                  5      $ r   )r#   rˆ   r$   s    r   r%   ÚTraceback.__hash__Ô   s   € Ü�D—L‘LÓ!Ð!r   c                 ój   • [        U[        5      (       d  [        $ U R                  UR                  :H  $ r   ©r(   r†   r)   rˆ   r*   s     r   r,   ÚTraceback.__eq__×   s(   € Ü˜%¤×+Ñ+Ü!Ð!Ø—‘ §¡Ñ-Ð.r   c                 ój   • [        U[        5      (       d  [        $ U R                  UR                  :  $ r   r­   r*   s     r   rx   ÚTraceback.__lt__Ü   s(   € Ü˜%¤×+Ñ+Ü!Ð!Ø—‘˜uŸ}™}Ñ,Ð-r   c                 ó   • [        U S   5      $ rW   )Ústrr$   s    r   r3   ÚTraceback.__str__á   s   € Ü�4˜‘7‹|Ðr   c                 óp   • S[        U 5       3nU R                  c  US-  nU$ USU R                   S3-  nU$ )Nz<Traceback r‚   z total_nframe=)r‹   r‰   rŽ   )r   Úss     r   r6   ÚTraceback.__repr__ä   sO   € Øœ% ›+˜Ð'ˆØ×ÑÑ%Ø�‰HˆAð ˆð �> $×"3Ñ"3Ð!4°AÐ6Ñ6ˆAØˆr   c                 ót  • / nUb  US:”  a  X* S  nOU S U nOU nU(       a  [        U5      nU H†  nUR                  SUR                  < SUR                  < 35        [        R
                  " UR                  UR                  5      R                  5       nU(       d  Mr  UR                  SU-  5        Mˆ     U$ )Nr   z  File "z", line z    %s)rŒ   rZ   rk   rq   Ú	linecacheÚgetlineÚstrip)r   ÚlimitÚmost_recent_firstÚlinesÚframe_slicerh   Úlines          r   ÚformatÚTraceback.formatì   s£   € ØˆØÑØ�q‹yØ" 6 7˜m‘à" 6 E˜l‘àˆKæÜ" ;Ó/ˆKÛ ˆEØ�LŠLØ!ŸNœN¨E¯L«Lð:ô ;ä×$Ò$ U§^¡^°U·\±\ÓB×HÑHÓJˆDßˆtØ—‘˜X¨™_Ö-ñ !ð ˆr   r   )NF)r<   r=   r>   r?   r@   rA   r    r„   rŽ   r”   r£   r§   r%   r,   rx   r3   r6   rÀ   rB   rC   r   r   r†   r†   ³   sT   † ñð -€Iô*ð ñ"ó ð"ò!ò.ò,ò"ò/ò
.ò
ò÷r   r†   c                 ó6   • [        U 5      nUb  [        U5      $ g)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   r†   )Úobjr�   s     r   Úget_object_tracebackrÄ     s"   € ô # 3Ó'€FØÑÜ˜Ó Ð àr   c                   ój   • \ rS rSrSrSrS r\S 5       r\S 5       r	\S 5       r
S rS	 rS
 rS rSrg)ÚTracei  z
Trace of a memory block.
©Ú_tracec                 ó   • Xl         g r   rÇ   ©r   r›   s     r   r    ÚTrace.__init__  s	   € ð �r   c                 ó    • U R                   S   $ rW   rÇ   r$   s    r   ÚdomainÚTrace.domain  rm   r   c                 ó    • U R                   S   $ ro   rÇ   r$   s    r   r   Ú
Trace.size  rm   r   c                 ó,   • [        U R                  SS  6 $ )Né   )r†   rÈ   r$   s    r   r   ÚTrace.traceback#  s   € ä˜$Ÿ+™+ a b˜/Ð*Ð*r   c                 ój   • [        U[        5      (       d  [        $ U R                  UR                  :H  $ r   )r(   rÆ   r)   rÈ   r*   s     r   r,   ÚTrace.__eq__'  rv   r   c                 ó,   • [        U R                  5      $ r   )r#   rÈ   r$   s    r   r%   ÚTrace.__hash__,  r|   r   c                 óP   • U R                   < S[        U R                  S5      < 3$ )Nz: F)r   r   r   r$   s    r   r3   ÚTrace.__str__/  s   € ØŸ>œ>¬<¸¿	¹	À5Õ+IÐJÐJr   c                 óp   • SU R                   < S[        U R                  S5      < SU R                  < S3$ )Nz<Trace domain=z size=Fz, traceback=r‚   )rÍ   r   r   r   r$   s    r   r6   ÚTrace.__repr__2  s(   � à—;”;¤¨T¯Y©Y¸Ö >ÀÇÄðPð 	Qr   N)r<   r=   r>   r?   r@   rA   r    r„   rÍ   r   r   r,   r%   r3   r6   rB   rC   r   r   rÆ   rÆ     se   † ñð €Iòð
 ñó ðð ñó ðð ñ+ó ð+ò-ò
!òKõQr   rÆ   c                   ó8   • \ rS rSrS rS rS rS rS rS r	Sr
g	)
Ú_Tracesi7  c                 ó<   • [         R                  " U 5        Xl        g r   )r   r    Ú_traces)r   Útracess     r   r    Ú_Traces.__init__8  s   € Ü×Ò˜$Ôà�r   c                 ó,   • [        U R                  5      $ r   )r“   rß   r$   s    r   r”   Ú_Traces.__len__=  r–   r   c                 óš   • [        U[        5      (       a  [        S U R                  U    5       5      $ [	        U R                  U   5      $ )Nc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr   )rÆ   r™   s     r   rœ   Ú&_Traces.__getitem__.<locals>.<genexpr>B  rž   rŸ   )r(   r    r‹   rß   rÆ   r¡   s     r   r£   Ú_Traces.__getitem__@  r¥   r   c                 ó4   • UR                   U R                  ;   $ r   )rÈ   rß   rÊ   s     r   r§   Ú_Traces.__contains__F  r©   r   c                 ój   • [        U[        5      (       d  [        $ U R                  UR                  :H  $ r   )r(   rÝ   r)   rß   r*   s     r   r,   Ú_Traces.__eq__I  s(   € Ü˜%¤×)Ñ)Ü!Ð!Ø—‘ §¡Ñ-Ð.r   c                 ó   • S[        U 5      -  $ )Nz<Traces len=%s>)r“   r$   s    r   r6   Ú_Traces.__repr__N  s   € Ø ¤3 t£9Ñ,Ð,r   )rß   N)r<   r=   r>   r?   r    r”   r£   r§   r,   r6   rB   rC   r   r   rÝ   rÝ   7  s    † òò
!ò.ò,ò/õ
-r   rÝ   c                 óz   • [         R                  R                  U 5      n U R                  S5      (       a  U S S n U $ )Nz.pycéÿÿÿÿ)ÚosÚpathÚnormcaseÚendswith)rk   s    r   Ú_normalize_filenamerô   R  s7   € Ü�w‰w×Ñ Ó)€HØ×Ñ˜× Ñ Ø˜C˜R�=ˆØ€Or   c                   ó    • \ rS rSrS rS rSrg)Ú
BaseFilteriY  c                 ó   • Xl         g r   ©Ú	inclusive)r   rù   s     r   r    ÚBaseFilter.__init__Z  s   € Ø"�r   c                 ó   • [         er   )ÚNotImplementedErrorrÊ   s     r   Ú_matchÚBaseFilter._match]  s   € Ü!Ð!r   rø   N)r<   r=   r>   r?   r    rý   rB   rC   r   r   rö   rö   Y  s   † ò#õ"r   rö   c                   óV   ^ • \ rS rSr S	U 4S jjr\S 5       rS rS rS r	S r
SrU =r$ )
ÚFilteria  c                 ót   >• [         TU ]  U5        Xl        [        U5      U l        X0l        X@l        XPl        g r   )Úsuperr    rù   rô   Ú_filename_patternrq   Ú
all_framesrÍ   )r   rù   Úfilename_patternrq   r  rÍ   Ú	__class__s         €r   r    ÚFilter.__init__b  s2   ø€ ä‰Ñ˜Ô#Ø"ŒÜ!4Ð5EÓ!FˆÔØŒØ$ŒØ�r   c                 ó   • U R                   $ r   )r  r$   s    r   r  ÚFilter.filename_patternk  s   € à×%Ñ%Ð%r   c                 óœ   • [        U5      n[        R                  " XR                  5      (       d  gU R                  c  gX R                  :H  $ )NFT)rô   Úfnmatchr  rq   ©r   rk   rq   s      r   Ú_match_frame_implÚFilter._match_frame_implo  s>   € Ü& xÓ0ˆÜ�Š˜x×)?Ñ)?×@Ñ@ØØ�;‰;ÑØàŸk™kÑ)Ð*r   c                 óH   • U R                  X5      U R                  (       + -  $ r   )r  rù   r  s      r   Ú_match_frameÚFilter._match_framex  s   € Ø×%Ñ% hÓ7¸t¿~¹~Ô;MÑNÐNr   c                 óÄ   ^ • T R                   (       a7  [        U 4S jU 5       5      (       a  T R                  $ T R                  (       + $ US   u  p#T R                  X#5      $ )Nc              3   óJ   >#   • U  H  u  pTR                  X5      v •  M     g 7fr   )r  )rš   rk   rq   r   s      €r   rœ   Ú*Filter._match_traceback.<locals>.<genexpr>}  s)   øé € ð 6Ú+4Ñ'�xð ×)Ñ)¨(×;Ð;Ú+4ùs   ƒ #r   )r  Úanyrù   r  )r   r   rk   rq   s   `   r   Ú_match_tracebackÚFilter._match_traceback{  sX   ø€ Ø�?�?Üô 6Ù+4ó6÷ 6ñ 6à—~‘~Ð%à ŸN™NÔ*Ð+à(¨™|ÑˆHØ×$Ñ$ XÓ6Ð6r   c                 óÊ   • Uu  p#pEU R                  U5      nU R                  b?  U R                  (       a  U=(       a    X R                  :H  $ U=(       d    X R                  :g  $ U$ r   )r  rÍ   rù   )r   r›   rÍ   r   r   rŽ   Úress          r   rý   ÚFilter._match†  sV   € Ø05Ñ-ˆ�iØ×#Ñ# IÓ.ˆØ�;‰;Ñ"Ø�~�~Ø×6 ¯+©+Ñ 5Ð6à×5˜v¯©Ñ4Ð5Øˆ
r   )r  r  rÍ   rù   rq   )NFN)r<   r=   r>   r?   r    r„   r  r  r  r  rý   rB   Ú__classcell__©r  s   @r   r   r   a  s9   ø† à7;÷ð ñ&ó ð&ò+òOò	7÷ð r   r   c                   ó>   ^ • \ rS rSrU 4S jr\S 5       rS rSrU =r	$ )ÚDomainFilteri‘  c                 ó0   >• [         TU ]  U5        X l        g r   )r  r    Ú_domain)r   rù   rÍ   r  s      €r   r    ÚDomainFilter.__init__’  s   ø€ Ü‰Ñ˜Ô#Ø�r   c                 ó   • U R                   $ r   ©r   r$   s    r   rÍ   ÚDomainFilter.domain–  s   € à�|‰|Ðr   c                 óL   • Uu  p#pEX R                   :H  U R                  (       + -  $ r   )rÍ   rù   )r   r›   rÍ   r   r   rŽ   s         r   rý   ÚDomainFilter._matchš  s%   € Ø05Ñ-ˆ�iØŸ+™+Ñ%¨d¯n©nÔ*<Ñ=Ð=r   r#  )
r<   r=   r>   r?   r    r„   rÍ   rý   rB   r  r  s   @r   r  r  ‘  s&   ø† õð ñó ð÷>ð >r   r  c                   óZ   • \ rS rSrSrS rS r\S 5       rS r	S r
S rSS	 jrSS
 jrSrg)ÚSnapshotiŸ  z:
Snapshot of traces of memory blocks allocated by Python.
c                 ó0   • [        U5      U l        X l        g r   )rÝ   rà   Útraceback_limit)r   rà   r*  s      r   r    ÚSnapshot.__init__¤  s   € ô ˜f“oˆŒØ.Õr   c                 óš   • [        US5       n[        R                  " X[        R                  5        SSS5        g! , (       d  f       g= f)z!
Write the snapshot into a file.
ÚwbN)ÚopenÚpickleÚdumpÚHIGHEST_PROTOCOL)r   rk   Úfps      r   r0  ÚSnapshot.dumpª  s0   € ô �(˜DÔ! RÜ�KŠK˜¤&×"9Ñ"9Ô:÷ "×!Ö!ús	   �&<¼
A
c                 ó|   • [        U S5       n[        R                  " U5      sSSS5        $ ! , (       d  f       g= f)z
Load a snapshot from a file.
ÚrbN)r.  r/  Úload)rk   r2  s     r   r6  ÚSnapshot.load±  s'   € ô
 �(˜DÔ! RÜ—;’;˜r“?÷ "×!×!ús   �-­
;c                 óŽ   ^• U(       a  [        U4S jU 5       5      (       d  gU(       a  [        U4S jU 5       5      (       a  gg)Nc              3   óF   >#   • U  H  nUR                  T5      v •  M     g 7fr   ©rý   ©rš   Útrace_filterr›   s     €r   rœ   Ú)Snapshot._filter_trace.<locals>.<genexpr>»  s&   øé € ð <Ú+:˜<ð $×*Ñ*¨5×1Ð1Ú+:ùs   ƒ!Fc              3   óP   >#   • U  H  nUR                  T5      (       + v •  M     g 7fr   r:  r;  s     €r   rœ   r=  ¿  s)   øé € ð 8Ú'6�|ð $×*Ñ*¨5Ó1×1Ñ1Ú'6ùs   ƒ#&T)r  )r   Úinclude_filtersÚexclude_filtersr›   s      `r   Ú_filter_traceÚSnapshot._filter_trace¹  sF   ø€ ÞÜô <Ù+:ó<÷ <ñ <àÞÜô 8Ù'6ó8÷ 8ñ 8àØr   c                 óþ  • [        U[        5      (       d!  [        S[        U5      R                  -  5      eU(       aƒ  / n/ nU H8  nUR
                  (       a  UR                  U5        M'  UR                  U5        M:     U R                  R                   Vs/ s H  nU R                  UUU5      (       d  M  UPM!     nnO$U R                  R                  R                  5       n[        X`R                  5      $ s  snf )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Útyper<   rù   rZ   rà   rß   rA  Úcopyr(  r*  )r   Úfiltersr?  r@  r<  r›   Ú
new_tracess          r   Úfilter_tracesÚSnapshot.filter_tracesÄ  sà   € ô ˜'¤8×,Ñ,ÜÐGÜ" 7›m×4Ñ4ñ5ó 6ð 6æØ ˆOØ ˆOÛ '�Ø×)×)Ø#×*Ñ*¨<Ö8à#×*Ñ*¨<Ö8ñ	 !(ð
 .2¯[©[×-@Ò-@ó 8Ò-@ EØ!×/Ñ/°Ø0?Ø05÷7÷  Ñ-@ˆJð 8ˆJð
 Ÿ™×,Ñ,×1Ñ1Ó3ˆJÜ˜
×$8Ñ$8Ó9Ð9ùò8s   ÂC:Â8C:c                 óF  • US;  a  [        SU< 35      eU(       a  US;  a  [        SU-  5      e0 n0 nU(       dX  U R                  R                   H<  nUu  pgp‰ XH   n
 X:   nU=R
                  U-  sl        U=R                  S-  sl        M>     U$ U R                  R                   HE  nUu  pgp‰U H7  n XM   n
 X:   nU=R
                  U-  sl        U=R                  S-  sl        M9     MG     U$ ! [         a2    US:X  a  UnOUS:X  a  US S nOUS   S   S44n[	        U5      n
X¤U'    NÑf = f! [         a    [        X§S5      X:'    Mý  f = f! [         a$    US:X  a  U4nOUS   S44n[	        U5      n
X¤U'    NÄf = f! [         a    [        X§S5      X:'    Më  f = f)	N)r   rk   rq   zunknown key_type: )rq   rk   z/cumulative mode cannot by used with key type %rr   rq   rp   r   )Ú
ValueErrorrà   rß   ÚKeyErrorr†   r   r   r   )r   Úkey_typeÚ
cumulativeÚstatsÚ
tracebacksr›   rÍ   r   Útrace_tracebackrŽ   r   r�   r^   rh   s                 r   Ú	_group_byÚSnapshot._group_byÝ  sï  € ØÐ>Ó>Ý²xÐAÓBÐBÞ˜(Ð*@Ó@Üð 0Ø2:ñ;ó <ð <ð ˆØˆ
ÞØŸ™×,Ô,�Ø>CÑ;�˜oð
<Ø *Ñ ;�IðEØ Ñ+�DØ—I’I Ñ%•IØ—J’J !‘O—Jñ! -ðN ˆð% Ÿ™×,Ô,�Ø>CÑ;�˜oÛ,�Eð6Ø$.Ñ$5˜	ðIØ$Ñ/˜ØŸ	š	 TÑ)�	ØŸ
š
 a™Ÿ
ó -ñ -ð$ ˆøôG  ó <Ø ;Ó.Ø!0™Ø! XÓ-Ø!0°°!Ð!4™à#2°1Ñ#5°aÑ#8¸!Ð"<Ð!>˜Ü )¨&Ó 1�IØ2;˜Ó/ð<ûô  ó EÜ'0°À!Ó'D�EÔ$ðEûô $ó 6Ø# xÓ/Ø&+ X™Fà',¨Q¡x° mÐ%5˜FÜ$-¨fÓ$5˜	Ø,5 5Ó)ð6ûô $ó IÜ+4°YÀaÓ+H˜Ô(ðIúsH   ÁC5Á .D4Â8EÂ=.FÃ59D1Ä0D1Ä4EÅEÅ+FÆ FÆF ÆF c                 ó–   • U R                  X5      n[        UR                  5       5      nUR                  S[        R
                  S9  U$ )zL
Group statistics by key_type. Return a sorted list of Statistic
instances.
T©ÚreverseÚkey)rS  ÚlistÚvaluesÚsortr   r9   )r   rN  rO  Úgroupedr]   s        r   r]   ÚSnapshot.statistics  s?   € ð
 —.‘. Ó6ˆÜ˜'Ÿ.™.Ó*Ó+ˆ
Ø�‰ ¬)×*=Ñ*=ˆÑ>ØÐr   c                 óœ   • U R                  X#5      nUR                  X#5      n[        XT5      nUR                  S[        R                  S9  U$ )z�
Compute the differences with an old snapshot old_snapshot. Get
statistics as a sorted list of StatisticDiff instances, grouped by
group_by.
TrV  )rS  r`   r[  rE   r9   )r   Úold_snapshotrN  rO  r\   r[   r]   s          r   Ú
compare_toÚSnapshot.compare_to  sH   € ð —N‘N 8Ó8ˆ	Ø ×*Ñ*¨8Ó@ˆ	Ü+¨IÓAˆ
Ø�‰ ¬-×*AÑ*AˆÑBØÐr   )r*  rà   N)F)r<   r=   r>   r?   r@   r    r0  Ústaticmethodr6  rA  rI  rS  r]   r`  rB   rC   r   r   r(  r(  Ÿ  s?   † ñò/ò;ð ñ#ó ð#ò	ò:ò21ôf÷
r   r(  c                  ót   • [        5       (       d  [        S5      e[        5       n [        5       n[	        X5      $ )zA
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_snapshotrg  '  s7   € ô �<‰<Üð <ó =ð 	=ä‹]€FÜ)Ó+€OÜ�FÓ,Ð,r   )Úcollections.abcr   r   Ú	functoolsr   r  r¸   Úos.pathrð   r/  Ú_tracemallocr   r   r   r   rE   r`   rb   r†   rÄ   rÆ   rÝ   rô   rö   r   r  r(  rg  rC   r   r   Ú<module>rl     sÓ   ðß .Ý $Û Û Û Û ô ß ;ò÷"%7ñ %7÷P/ ñ / òdð( ÷#Nð #Nó ð#NðL ôJ�ó Jó ðJòZ÷$Qñ $QôN-ˆhô -ò6÷"ñ "ô-ˆZô -ô`>�:ô >÷Eñ EóP	-r   