+
    lhF                     ^   ^ RI HtHt ^ RIHt ^ RIt^ RIt^ RIt^ RI	t	^ RI
5 ^ RI
HtHt R t ! R R4      t ! R	 R
4      tR t] ! R R4      4       t] ! R R]4      4       tR t ! R R4      t ! R R]4      tR t ! R R4      t ! R R]4      t ! R R]4      t ! R R4      tR tR# )    )SequenceIterable)total_orderingN)*)_get_object_traceback_get_tracesc                    R Fz  p\        V 4      ^d8  d(   VR 8w  d!   V'       d   RW3,          u # RW3,          u # \        V 4      R	8  g   VR8X  d!   V'       d   RW3,          u # RW3,          u # V R,          p K|  	  R# )
BTiBz%+.1f %sz%.1f %si   z%+.0f %sz%.0f %sN)r
   KiBMiBGiBr   i (  )abs)sizesignunits   && lib/python3.14/tracemalloc.py_format_sizer      sr    1t9s?ts{!TL00 D<//t9y DEM!TL00 D<// 2    c                   L   a  ] tR t^t o RtR
tR tR tR tR t	R t
R tRtV tR	# )	StatisticzK
Statistic difference on memory allocations between two Snapshot instance.
c                *    Wn         W n        W0n        R # N	tracebackr   count)selfr   r   r   s   &&&&r   __init__Statistic.__init__%   s    "	
r   c                Z    \        V P                  V P                  V P                  34      # r   )hashr   r   r   r   s   &r   __hash__Statistic.__hash__*   s     T^^TYY

;<<r   c                    \        V\        4      '       g   \        # V P                  VP                  8H  ;'       d;    V P                  VP                  8H  ;'       d    V P
                  VP
                  8H  # r   )
isinstancer   NotImplementedr   r   r   r   others   &&r   __eq__Statistic.__eq__-   s^    %++!!%//1 . .II+. .JJ%++-	/r   c                    R V P                   \        V P                  R4      V P                  3,          pV P                  '       d8   V P                  V P                  ,          pVR\        VR4      ,          ,          pV# )z%s: size=%s, count=%iF, average=%s)r   r   r   r   r   textaverages   &  r   __str__Statistic.__str__4   se    'NN E2JJ   :::ii$**,GN\'5%AAADr   c                V    R V P                   V P                  V P                  3,          # )z)<Statistic traceback=%r size=%i count=%i>r   r"   s   &r   __repr__Statistic.__repr__>   s%    ;>>499djj9: 	;r   c                H    V P                   V P                  V P                  3# r   )r   r   r   r"   s   &r   	_sort_keyStatistic._sort_keyB   s    		4::t~~66r   )r   r   r   Nr   __name__
__module____qualname____firstlineno____doc__	__slots__r   r#   r*   r1   r4   r7   __static_attributes____classdictcell____classdict__s   @r   r   r      s4      /I
=/;7 7r   r   c                   L   a  ] tR t^Ft o RtR
tR tR tR tR t	R t
R tRtV tR	# )StatisticDiffzX
Statistic difference on memory allocations between an old and a new
Snapshot instance.
c                B    Wn         W n        W0n        W@n        WPn        R # r   r   r   	size_diffr   
count_diff)r   r   r   rH   r   rI   s   &&&&&&r   r   StatisticDiff.__init__M   s    "	"
$r   c                    \        V P                  V P                  V P                  V P                  V P
                  34      # r   )r!   r   r   rH   r   rI   r"   s   &r   r#   StatisticDiff.__hash__T   s3    T^^TYYZZ2 3 	3r   c                t   \        V\        4      '       g   \        # V P                  VP                  8H  ;'       d}    V P                  VP                  8H  ;'       d\    V P
                  VP
                  8H  ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # r   )r&   rE   r'   r   r   rH   r   rI   r(   s   &&r   r*   StatisticDiff.__eq__X   s    %//!!%//1 8 8II+8 8NNeoo58 8 JJ%++-8 8 OOu'7'77		9r   c                @   R V P                   \        V P                  R4      \        V P                  R4      V P                  V P
                  3,          pV P                  '       d8   V P                  V P                  ,          pVR\        VR4      ,          ,          pV# )z %s: size=%s (%s), count=%i (%+i)FTr-   )r   r   r   rH   r   rI   r.   s   &  r   r1   StatisticDiff.__str__a   sz    2>>		515::??	$$ :::ii$**,GN\'5%AAADr   c                    R V P                   V P                  V P                  V P                  V P                  3,          # )z9<StatisticDiff traceback=%r size=%i (%+i) count=%i (%+i)>rG   r"   s   &r   r4   StatisticDiff.__repr__m   s4    K>>499dnn::t00 	1r   c                    \        V P                  4      V P                  \        V P                  4      V P                  V P
                  3# r   )r   rH   r   rI   r   r   r"   s   &r   r7   StatisticDiff._sort_keyr   s7    DNN#TYYDOO$djj  	 r   )r   rI   r   rH   r   NrG   r9   rB   s   @r   rE   rE   F   s5      JI%39
1
   r   rE   c           	      J   . pVP                  4        F  w  r4V P                  VR 4      pVe[   \        VVP                  VP                  VP                  ,
          VP                  VP                  VP                  ,
          4      pM7\        VVP                  VP                  VP                  VP                  4      pVP                  V4       K  	  V P                  4        F;  w  r4\        V^ VP                  ) ^ VP                  ) 4      pVP                  V4       K=  	  V# r   )itemspoprE   r   r   append)	old_group	new_group
statisticsr   statpreviouss   &&    r   _compare_grouped_statsr^   x   s    J$??,	==D1 !%DII,E!%TZZ(..-HJD !!%DII!%TZZ9D 	$ - %??,	YDII:q4::+F$ - r   c                   l   a  ] tR t^t o RtR
tR t]R 4       t]R 4       t	R t
R tR tR tR	 tR
tV tR# )Framez
Frame of a traceback.
c                    Wn         R # r   _framer   frames   &&r   r   Frame.__init__   s    r   c                (    V P                   ^ ,          # r   rb   r"   s   &r   filenameFrame.filename       {{1~r   c                (    V P                   ^,          #    rb   r"   s   &r   linenoFrame.lineno   rk   r   c                l    \        V\        4      '       g   \        # V P                  VP                  8H  # r   r&   r`   r'   rc   r(   s   &&r   r*   Frame.__eq__   (    %''!!u||+,r   c                l    \        V\        4      '       g   \        # V P                  VP                  8  # r   rr   r(   s   &&r   __lt__Frame.__lt__   s(    %''!!ell*+r   c                ,    \        V P                  4      # r   )r!   rc   r"   s   &r   r#   Frame.__hash__       DKK  r   c                <    V P                   : R V P                  : 2# ):ri   ro   r"   s   &r   r1   Frame.__str__   s    --55r   c                @    R V P                   : RV P                  : R2# )z<Frame filename=z lineno=>r}   r"   s   &r   r4   Frame.__repr__   s    26--MMr   rb   N)r:   r;   r<   r=   r>   r?   r   propertyri   ro   r*   rv   r#   r1   r4   r@   rA   rB   s   @r   r`   r`      s^      I    -
,
!6N Nr   r`   c                   |   a  ] tR t^t o RtRtRR lt]R 4       tR t	R t
R tR tR	 tR
 tR tR tRR ltRtV tR# )	TracebackzT
Sequence of Frame instances sorted from the oldest frame
to the most recent frame.
Nc                p    \         P                  ! V 4       \        \        V4      4      V n        W n        R # r   )r   r   tuplereversed_frames_total_nframe)r   framestotal_nframes   &&&r   r   Traceback.__init__   s)    $
 Xf-.)r   c                    V P                   # r   )r   r"   s   &r   r   Traceback.total_nframe   s    !!!r   c                ,    \        V P                  4      # r   )lenr   r"   s   &r   __len__Traceback.__len__       4<<  r   c                   \        V\        4      '       dO   \        ;QJ d%    . R  V P                  V,           4       F  NK  	  5# ! R  V P                  V,           4       4      # \	        V P                  V,          4      # )c              3   8   "   T F  p\        V4      x  K  	  R # 5ir   )r`   .0traces   & r   	<genexpr>(Traceback.__getitem__.<locals>.<genexpr>        G3F%u3F   )r&   slicer   r   r`   r   indexs   &&r   __getitem__Traceback.__getitem__   W    eU##5G4<<3FG5G5G4<<3FGGGe,--r   c                4    VP                   V P                  9   # r   )rc   r   rd   s   &&r   __contains__Traceback.__contains__       ||t||++r   c                ,    \        V P                  4      # r   )r!   r   r"   s   &r   r#   Traceback.__hash__   s    DLL!!r   c                l    \        V\        4      '       g   \        # V P                  VP                  8H  # r   r&   r   r'   r   r(   s   &&r   r*   Traceback.__eq__   s(    %++!!-.r   c                l    \        V\        4      '       g   \        # V P                  VP                  8  # r   r   r(   s   &&r   rv   Traceback.__lt__   s(    %++!!u}},-r   c                &    \        V ^ ,          4      # rh   )strr"   s   &r   r1   Traceback.__str__   s    47|r   c                    R \        V 4       2pV P                  f   VR,          pV# VRV P                   R2,          pV# )z<Traceback r   z total_nframe=)r   r   r   )r   ss   & r   r4   Traceback.__repr__   sO    %+'%HA  >$"3"3!4A66Ar   c                   . pVe   V^ 8  d   W) R  pMV R V pMT pV'       d   \        V4      pV F  pVP                  RVP                  : RVP                  : 24       \        P
                  ! VP                  VP                  4      P                  4       pV'       g   Ks  VP                  RV,          4       K  	  V# )Nz  File "z", line z    %s)r   rX   ri   ro   	linecachegetlinestrip)r   limitmost_recent_firstlinesframe_slicere   lines   &&&    r   formatTraceback.format   s    qy"67m"6ElK";/K ELL!NNELL: ;$$U^^U\\BHHJDtX_- ! r   )r   r   r   )NF)r:   r;   r<   r=   r>   r?   r   r   r   r   r   r   r#   r*   rv   r1   r4   r   r@   rA   rB   s   @r   r   r      s\      -I* " "!.,"/
.
 r   r   c                :    \        V 4      pVe   \        V4      # R# )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                   v   a  ] tR tRt o RtRtR t]R 4       t]R 4       t	]R 4       t
R tR tR	 tR
 tRtV tR# )Tracei  z
Trace of a memory block.
c                    Wn         R # r   _tracer   r   s   &&r   r   Trace.__init__  s	     r   c                (    V P                   ^ ,          # rh   r   r"   s   &r   domainTrace.domain  rk   r   c                (    V P                   ^,          # rm   r   r"   s   &r   r   
Trace.size  rk   r   c                6    \        V P                  R ,          !  # ):   NN)r   r   r"   s   &r   r   Trace.traceback#  s    $++b/**r   c                l    \        V\        4      '       g   \        # V P                  VP                  8H  # r   )r&   r   r'   r   r(   s   &&r   r*   Trace.__eq__'  rt   r   c                ,    \        V P                  4      # r   )r!   r   r"   s   &r   r#   Trace.__hash__,  rz   r   c                P    V P                   : R \        V P                  R4      : 2# )z: F)r   r   r   r"   s   &r   r1   Trace.__str__/  s    >><		5+IJJr   c                p    R V P                   : R\        V P                  R4      : RV P                  : R2# )z<Trace domain=z size=Fz, traceback=r   )r   r   r   r   r"   s   &r   r4   Trace.__repr__2  s(    ;;TYY >P 	Qr   r   N)r:   r;   r<   r=   r>   r?   r   r   r   r   r   r*   r#   r1   r4   r@   rA   rB   s   @r   r   r     sn      I
     + +-
!KQ Qr   r   c                   D   a  ] tR tRt o R tR tR tR tR tR t	Rt
V tR	# )
_Tracesi7  c                >    \         P                  ! V 4       Wn        R # r   )r   r   _traces)r   tracess   &&r   r   _Traces.__init__8  s    $r   c                ,    \        V P                  4      # r   )r   r   r"   s   &r   r   _Traces.__len__=  r   r   c                   \        V\        4      '       dO   \        ;QJ d%    . R  V P                  V,           4       F  NK  	  5# ! R  V P                  V,           4       4      # \	        V P                  V,          4      # )c              3   8   "   T F  p\        V4      x  K  	  R # 5i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    VP                   V P                  9   # r   )r   r   r   s   &&r   r   _Traces.__contains__F  r   r   c                l    \        V\        4      '       g   \        # V P                  VP                  8H  # r   )r&   r   r'   r   r(   s   &&r   r*   _Traces.__eq__I  s(    %))!!-.r   c                &    R \        V 4      ,          # )z<Traces len=%s>)r   r"   s   &r   r4   _Traces.__repr__N  s     3t9,,r   )r   N)r:   r;   r<   r=   r   r   r   r   r*   r4   r@   rA   rB   s   @r   r   r   7  s(     
!.,/
- -r   r   c                 |    \         P                  P                  V 4      p V P                  R 4      '       d   V RR p V # )z.pycN)ospathnormcaseendswith)ri   s   &r   _normalize_filenamer   R  s7    ww)H  CR=Or   c                   ,   a  ] tR tRt o R tR tRtV tR# )
BaseFilteriY  c                    Wn         R # r   	inclusive)r   r   s   &&r   r   BaseFilter.__init__Z  s    "r   c                    \         hr   )NotImplementedErrorr   s   &&r   _matchBaseFilter._match]  s    !!r   r   N)r:   r;   r<   r=   r   r   r@   rA   rB   s   @r   r   r   Y  s     #" "r   r   c                   ^   a a ] tR tRt oR	V 3R llt]R 4       tR tR tR t	R t
RtVtV ;t# )
Filteria  c                v   < \         SV `  V4       Wn        \        V4      V n        W0n        W@n        WPn        R # r   )superr   r   r   _filename_patternro   
all_framesr   )r   r   filename_patternro   r  r   	__class__s   &&&&&&r   r   Filter.__init__b  s2    #"!45E!F$r   c                    V P                   # r   )r   r"   s   &r   r  Filter.filename_patternk  s    %%%r   c                    \        V4      p\        P                  ! WP                  4      '       g   R # V P                  f   R# W P                  8H  # )FT)r   fnmatchr   ro   r   ri   ro   s   &&&r   _match_frame_implFilter._match_frame_implo  s>    &x0x)?)?@@;;kk)*r   c                P    V P                  W4      V P                  '       * ,          # r   )r
  r   r	  s   &&&r   _match_frameFilter._match_framex  s    %%h7t~~;MNNr   c                  a  S P                   '       d^   \        ;QJ d    V 3R  lV 4       F  '       g   K   RM	  RM! V 3R  lV 4       4      '       d   S P                  # S P                  '       * # V^ ,          w  r#S P                  W#4      # )c              3   J   <"   T F  w  rSP                  W4      x  K  	  R # 5ir   )r
  )r   ri   ro   r   s   &  r   r   *Filter._match_traceback.<locals>.<genexpr>}  s)      6+4'x ))(;;+4s    #TF)r  anyr   r  )r   r   ri   ro   s   f&  r   _match_tracebackFilter._match_traceback{  so    ???s 6+46sss 6+46 6 6~~% NN*+(|H$$X66r   c                    Vw  r#rEV P                  V4      pV P                  eC   V P                  '       d   T;'       d    W P                  8H  # T;'       g    W P                  8g  # V# r   )r  r   r   )r   r   r   r   r   r   ress   &&     r   r   Filter._match  s^    05-i##I.;;"~~~66++ 5655v45
r   )r   r  r   r   ro   )NFN)r:   r;   r<   r=   r   r   r  r
  r  r  r   r@   rA   __classcell__r  rC   s   @@r   r   r   a  s8      & &+O	7 r   r   c                   H   a a ] tR tRt oV 3R lt]R 4       tR tRtVt	V ;t
# )DomainFilteri  c                2   < \         SV `  V4       W n        R # r   )r   r   _domain)r   r   r   r  s   &&&r   r   DomainFilter.__init__  s    #r   c                    V P                   # r   r  r"   s   &r   r   DomainFilter.domain  s    ||r   c                T    Vw  r#rEW P                   8H  V P                  '       * ,          # r   )r   r   )r   r   r   r   r   r   s   &&    r   r   DomainFilter._match  s%    05-i++%dnn*<==r   r   )r:   r;   r<   r=   r   r   r   r   r@   rA   r  r  s   @@r   r  r    s(       > >r   r  c                   f   a  ] tR tRt o RtR tR t]R 4       tR t	R t
R tRR	 ltRR
 ltRtV tR# )Snapshoti  z:
Snapshot of traces of memory blocks allocated by Python.
c                2    \        V4      V n        W n        R # r   )r   r   traceback_limit)r   r   r'  s   &&&r   r   Snapshot.__init__  s     fo.r   c                    \        VR4      ;_uu_ 4       p\        P                  ! W\        P                  4       RRR4       R#   + '       g   i     R# ; i)z!
Write the snapshot into a file.
wbN)openpickledumpHIGHEST_PROTOCOL)r   ri   fps   && r   r-  Snapshot.dump  s6     (D!!RKK&"9"9: "!!!s   &AA	c                    \        V R4      ;_uu_ 4       p\        P                  ! V4      uuRRR4       #   + '       g   i     R# ; i)z
Load a snapshot from a file.
rbN)r+  r,  load)ri   r/  s   & r   r3  Snapshot.load  s-    
 (D!!R;;r? "!!!s	   6A	c                0  a V'       dC   \         ;QJ d    V3R  lV 4       F  '       g   K   RM	  RM! V3R  lV 4       4      '       g   R# V'       dC   \         ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      '       d   R# R# )c              3   F   <"   T F  pVP                  S4      x  K  	  R # 5ir   r   r   trace_filterr   s   & r   r   )Snapshot._filter_trace.<locals>.<genexpr>  s&      <+:< $**511+:s   !TFc              3   P   <"   T F  pVP                  S4      '       * x  K  	  R # 5ir   r7  r8  s   & r   r   r:    s)      8'6| $**5111'6s   #&)r  )r   include_filtersexclude_filtersr   s   &&&fr   _filter_traceSnapshot._filter_trace  sp    3 <+:<333 <+:< < <s 8'68sss 8'68 8 8r   c                   \        V\        4      '       g&   \        R\        V4      P                  ,          4      hV'       d   . p. pV F9  pVP
                  '       d   VP                  V4       K(  VP                  V4       K;  	  V P                  P                   Uu. uF   pV P                  VVV4      '       g   K  VNK"  	  ppM$V P                  P                  P                  4       p\        W`P                  4      # u upi )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   rX   r   r   r>  copyr%  r'  )r   filtersr<  r=  r9  r   
new_tracess   &&     r   filter_tracesSnapshot.filter_traces  s     '8,,G"7m445 6 6 O O ')))#**<8#**<8	 !(
 .2[[-@-@ 8-@E!//0?057  %-@J 8J
 ,,113J
$8$8998s   D?Dc                   VR9  d   \        RV: 24      hV'       d   VR9  d   \        RV,          4      h/ p/ pV'       gi   V P                  P                   FL  pVw  rgr WH,          p
 W:,          pV;P
                  V,          un        V;P                  ^,          un        KN  	  V# V P                  P                   FU  pVw  rgrV FG  p WM,          p
 W:,          pV;P
                  V,          un        V;P                  ^,          un        KI  	  KW  	  V#   \         dA    TR 8X  d   TpM$TR8X  d   TR,          pMT^ ,          ^ ,          ^ 33p\	        T4      p
YT&    Li ; i  \         d    \        Y^4      Y:&    EK.  i ; i  \         d*    TR8X  d   T3pMT^ ,          ^ 33p\	        T4      p
YT&    Li ; i  \         d    \        Y^4      Y:&    EK  i ; i)r   ro   zunknown key_type: z/cumulative mode cannot by used with key type %r:Nrn   N)r   ri   ro   )ro   ri   )
ValueErrorr   r   KeyErrorr   r   r   r   )r   key_type
cumulativestats
tracebacksr   r   r   trace_tracebackr   r   r   r\   re   s   &&&           r   	_group_bySnapshot._group_by  s   >>xABB(*@@ 02:; < < 
,,>C;o
< * ;IE +DII%IJJ!OJ! -N % ,,>C;o,E6$.$5	I$/		T)	

a
 - -$ G   <;.!0!X-!0!4#21#5a#8!"<!> )& 1I2;/<   E'0!'DE$E $ 6#x/&+XF',Qxm%5F$-f$5	,55)6 $ I+4Ya+H(IsI   #D,:E+F:GAE('E(+F	F	1G ?G G! G!c                    V P                  W4      p\        VP                  4       4      pVP                  R\        P
                  R7       V# )zL
Group statistics by key_type. Return a sorted list of Statistic
instances.
Treversekey)rP  listvaluessortr   r7   )r   rK  rL  groupedr[   s   &&&  r   r[   Snapshot.statistics  s?    
 ..6'..*+
)*=*=>r   c                    V P                  W#4      pVP                  W#4      p\        WT4      pVP                  R\        P                  R7       V# )z
Compute the differences with an old snapshot old_snapshot. Get
statistics as a sorted list of StatisticDiff instances, grouped by
group_by.
TrS  )rP  r^   rX  rE   r7   )r   old_snapshotrK  rL  rZ   rY   r[   s   &&&&   r   
compare_toSnapshot.compare_to  sH     NN88	 **8@	+IA
-*A*ABr   )r'  r   N)F)r:   r;   r<   r=   r>   r   r-  staticmethodr3  r>  rF  rP  r[   r]  r@   rA   rB   s   @r   r%  r%    sG     /; # #	:21f
 
r   r%  c                 v    \        4       '       g   \        R4      h\        4       p \        4       p\	        W4      # )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_snapshotrd  '  s7     << < = 	=]F)+OF,,r   )collections.abcr   r   	functoolsr   r  r   os.pathr   r,  _tracemallocr   r   r   r   rE   r^   r`   r   r   r   r   r   r   r   r  r%  rd   r   r   <module>rj     s    . $      ;"%7 %7P/  / d( #N #N #NL J J JZ$Q $QN-h -6" "-Z -`>: >E EP	-r   