+
    Bi                     p   ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	H
t
Ht ^ RIHt ^ RIHt ^ RIHt ^ RIHt  ^ RIt^ RIt^ t]P,                  ! R4      tRtR	 tR
 tR tR tR tR tR t ! R R]P@                  4      t! ! R R]P@                  4      t" ! R R]P@                  4      t# ! R R]P@                  4      t$ ! R R]P@                  4      t%]PL                  ! ]RJ R4       ! R R]P@                  4      4       t'](R8X  d   ]PR                  ! 4        R# R#   ] d    RtRt Li ; i)    N)patch)assert_python_okassert_python_failure interpreter_requires_environment)support)force_not_colorized)	os_helper)threading_helper    c                    . p\         P                  ! ^4      p\        V 4       FS  pVP                  pVP                  V,           pVP                  VP                  V34       ^ pVP                  pVe   KS   M	  \        V4      #    )	sys	_getframerangef_codef_linenoappendco_filenamef_backtuple)nframelineno_deltaframesframeindexcodelinenos   &&     ,/usr/lib/python3.14/test/test_tracemalloc.py
get_framesr       ss    FMM!Ev||,.t''01=  =r   c           	          \         P                  ! 4       pV \        ,
          p\        V^4      pRV,          pV\         P                  ! V\        \        V4      V4      4      3# )r      x)tracemallocget_traceback_limitEMPTY_STRING_SIZEr    	Tracebackminlen)sizer   	bytes_lenr   datas   &    r   allocate_bytesr,   )   sT    ,,.F))I"F)D&&vs3v;/GHHHr   c                  t    ^p . ROp\         P                  ! W4      p. ROp\         P                  ! W04      pW$3# )   )r   
   )a.pyr.   b.py      r/   r/   r   r.   r2      r3   r6   r.   B   )r4   r   r   r6      	<unknown>r   r   )r/   r/   r/   )r.   r.   r8   r6   )r.     r8   r6   )r5     )c.pyB  r   )r#   Snapshot)traceback_limit
raw_tracessnapshotraw_traces2	snapshot2s        r   create_snapshotsrN   0   sB    O

J ##J@H	K $$[BI  r   c                 0    \         P                  ! W34      # N)r#   _Framefilenamer   s   &&r   r   r   Q   s    x011r   c                  .    \         P                  ! V 4      # rP   )r#   r&   )r   s   *r   	tracebackrU   T   s      ((r   c                     \        W34      # rP   )rU   rR   s   &&r   traceback_linenorW   W   s    h'((r   c                     \        V ^ 4      # r   )rW   )rS   s   &r   traceback_filenamerZ   Z   s    Ha((r   c                   &   a  ] tR t^^t o R tRtV tR# )TestTracebackc                    R  R lpV P                  V! R	4      R4       V P                  V! R	^ 4      R4       R
pRpV P                  V! V4      RV R24       V P                  V! V^4      RV R24       R# )c                $    V ^8  d   QhR\         /# )r.   return)str)formats   "r   __annotate__-TestTraceback.test_repr.<locals>.__annotate__`   s     	6 	6s 	6r   c                  <    \        \        P                  ! V !  4      # rP   )reprr#   r&   )argss   *r   get_repr)TestTraceback.test_repr.<locals>.get_repr`   s    --t455r   z<Traceback ()>z<Traceback () total_nframe=0>z@(<Frame filename='f2' lineno=2>, <Frame filename='f1' lineno=1>)z<Traceback >z total_nframe=2>N ))f1r   )f2r.   )assertEqual)selfrg   r   exp_repr_framess   &   r   	test_reprTestTraceback.test_repr_   s    	6 	"'78"a*IJ'/ 	 	&)&&7q9	;&!,&&77GH	Jr   rj   N)__name__
__module____qualname____firstlineno__rp   __static_attributes____classdictcell____classdict__s   @r   r\   r\   ^   s     J Jr   r\   c                      a  ] tR t^qt o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tR tR tR t]P*                  ! 4       R 4       tR tRtV tR# )TestTracemallocEnabledc                    \         P                  ! 4       '       d   V P                  R 4       \         P                  ! ^4       R# z+tracemalloc must be stopped before the testN)r#   
is_tracingskipTeststartrn   s   &r   setUpTestTracemallocEnabled.setUpr   s,    !!##MMGH!r   c                0    \         P                  ! 4        R # rP   r#   stopr   s   &r   tearDownTestTracemallocEnabled.tearDownx       r   c                >   \        R 4       Uu. uF  p\        ^{4      NK  	  pp\        P                  ! 4       pV P	                  V^ 4       \        P
                  ! 4        \        P                  ! 4       pV P	                  V^ 4       V P                  WC4       R# u upi )  N)r   r,   r#   get_tracemalloc_memoryassertGreaterEqualclear_tracesassertLessEqual)rn   countr+   r)   size2s   &    r   test_get_tracemalloc_memory2TestTracemallocEnabled.test_get_tracemalloc_memory{   sz    16t=s#=113a(  "224q)U) >s   Bc                    \         P                  ! 4        R p\        V4      w  r#\         P                  ! V4      pV P	                  WC4       R# 90  N)r#   r   r,   get_object_tracebackrm   rn   obj_sizeobjobj_tracebackrU   s   &    r   test_get_object_traceback0TestTracemallocEnabled.test_get_object_traceback   s>      "+H544S9	2r   c                l   \         P                  ! 4        \        P                  ! 4        . pR p. p\         P                  ! 4       p\        VR4      p\         P                  ! V\        \        V4      V4      4      p\         P                  ! V4      pV P                  V4       V P                  WT4       R # )N)r#   r   r   
gc_collectr$   r    r&   r'   r(   r   assertIsNotNonerm   )rn   r   r   r   r   rU   s   &     r   test_new_reference)TestTracemallocEnabled.test_new_reference   s      "  002FB'#--fc#f+v6NO44S9	Y'2r   c                f   ^
p\         P                  ! 4        V P                  \        \         P                  R4       \         P                  ! 4        \         P                  ! ^
4       \        V4      w  r#\         P                  ! V4      pV P                  \        V4      ^
4       V P                  WC4       \         P                  ! 4        \         P                  ! ^4       \        V4      w  rV\         P                  ! V4      pV P                  \        V4      ^4       V P                  WF4       R# )r0   N)	r#   r   assertRaises
ValueErrorr   r,   r   rm   r(   )rn   r   obj2obj2_tracebackrU   r   r   s   &      r   test_set_traceback_limit/TestTracemallocEnabled.test_set_traceback_limit   s    *k&7&7<"-h744T:	Y,3!+H544S9	Y+2r   c                    V F/  pV^,          VP                   8X  g   K  V^,          V8X  g   K-  Vu # 	  V P                  R4       R# )r.   ztrace not foundN)_framesfail)rn   tracesrU   r)   traces   &&&& r   
find_trace!TestTracemallocEnabled.find_trace   s?     EQx9,,,qT1A  			#$r   c                |   \         P                  ! 4        R p\        V4      w  r#\         P                  ! 4       pV P	                  WCV4      pV P                  V\        4       Vw  rgrV P                  WP                  4       \         P                  ! 4        V P                  \         P                  ! 4       . 4       R# r   )
r#   r   r,   _get_tracesr   assertIsInstancer   rm   r   r   )
rn   r   r   r   r   r   domainr)   rU   lengths
   &         r   test_get_traces&TestTracemallocEnabled.test_get_traces   s      "+H5((*x@eU+*/'i$9$9:002B7r   c                  aa R  oV3R loV3R lp\         P                  ! 4        \         P                  ! ^4       ^{p^}pV! V4      w  rEV! V4      w  rg\         P                  ! 4       p\	        \        VP                  4      4      Vn        \	        \        VP                  4      4      Vn        V P                  WV4      p	V P                  WV4      p
V	w  rrV
w  ppppV P                  VV4       R# )c                     \        V 4      # rP   )r,   r)   s   &r   allocate_bytes2PTestTracemallocEnabled.test_get_traces_intern_traceback.<locals>.allocate_bytes2   s    !$''r   c                    < S! V 4      # rP   rj   )r)   r   s   &r   allocate_bytes3PTestTracemallocEnabled.test_get_traces_intern_traceback.<locals>.allocate_bytes3       "4((r   c                    < S! V 4      # rP   rj   )r)   r   s   &r   allocate_bytes4PTestTracemallocEnabled.test_get_traces_intern_traceback.<locals>.allocate_bytes4   r   r   N)	r#   r   r   r   r   reversedr   r   assertIs)rn   r   	obj1_size	obj2_sizeobj1obj1_tracebackr   r   r   trace1trace2domain1size1
traceback1length1domain2r   
traceback2length2r   r   s   &                  @@r    test_get_traces_intern_traceback7TestTracemallocEnabled.test_get_traces_intern_traceback   s    	(	)	) 	!		.y9.y9((*!&x0F0F'G!H!&x0F0F'G!HCC.4+
.4+
Gj*-r   c                (   R pRp\         P                  ! 4        \        V4      w  r4\         P                  ! 4       w  rVV P	                  WR4       V P	                  We4       V P                  WR,
          V4       V P                  We,
          V4       Rp\         P                  ! 4       w  rxV P                  Wu4       V P	                  WW,
          W!,
          4       V P	                  W4       \         P                  ! 4        V P                  \         P                  ! 4       R4       \        V4      w  r4\         P                  ! 4       w  rVV P	                  WR4       \         P                  ! 4        V P                  \         P                  ! 4       R4       R# )   N   )r   r   )	r#   r   r,   get_traced_memoryr   r   
assertLessrm   r   )	rn   	max_errorr   r   r   r)   	peak_sizer   
peak_size2s	   &        r   test_get_traced_memory-TestTracemallocEnabled.test_get_traced_memory   s<    	   "+H5%779/	0T_i8Y-y9 '99;$h.BC
6 	  "668&A ,H5%779/ 	668&Ar   c                    \        ^{4      w  r\        P                  ! V4      pV P                  V4       \        P                  ! 4        \        P                  ! V4      pV P                  V4       R# ){   N)r,   r#   r   r   r   assertIsNone)rn   r   r   rU   r   s   &    r   test_clear_traces(TestTracemallocEnabled.test_clear_traces  sW    +C044S9	Y'  " 55c:
*%r   c                   \         P                  ! 4        \        \        \	        R 4      4      4      p\         P
                  ! 4       w  r#\         P                  ! 4        \         P
                  ! 4       w  rEV P                  WT4       V P                  WS4       Rp\        V4      w  rx\         P
                  ! 4       w  rV P                  W4       V P                  W4       V P                  W,
          V4       R# )i Nr   )r#   r   sumlistr   r   
reset_peakr   r   r,   assertGreater)rn   	large_sumr   peak1r   peak2r   r   r   size3peak3s   &          r   test_reset_peak&TestTracemallocEnabled.test_reset_peak  s     	  " U6]+,	"446 	 "446-% +H5"446-5(x8r   c                    \         P                  ! 4        V P                  \         P                  ! 4       4       \         P                  ! 4        V P                  \         P                  ! 4       4       R # rP   )r#   r   assertFalser~   r   
assertTruer   s   &r   test_is_tracing&TestTracemallocEnabled.test_is_tracing-  sF    //12..01r   c                   \        ^{4      w  r\        P                  ! 4       pV P                  VP                  ^,          P
                  P                  ^
4       VP                  \        P                  4       V P                  \        P                  \        P                  4       \        P                  P                  \        P                  4      pV P                  VP                  VP                  4       \        P                  ! 4        V P!                  \"        4      ;_uu_ 4       p\        P                  ! 4        RRR4       V P                  \%        XP&                  4      R4       R#   + '       g   i     L7; i)r   NzLthe tracemalloc module must be tracing memory allocations to take a snapshot)r,   r#   take_snapshotr   r   rU   total_nframedumpr	   TESTFN
addCleanupunlinkrH   loadrm   r   r   RuntimeErrorr`   	exception)rn   r   sourcerK   rM   cms   &     r   test_snapshot$TestTracemallocEnabled.test_snapshot4  s   $S) ,,. 	8??1-77DDbI 	i&&'	(()*:*:;  ((--i.>.>?	))8??; 	|,,%%' -R\\*:	; -,s   ,E11F	c                j   \         P                  ! 4       pR Vn        VP                  \        P
                  4       V P                  \        P                  \        P
                  4       \         P                  P                  \        P
                  4      pV P                  VP                  R 4       R# )newN)r#   r   	test_attrr   r	   r   r   r   rH   r   rm   )rn   rK   rM   s   &  r   test_snapshot_save_attr.TestTracemallocEnabled.test_snapshot_save_attrM  sx    ,,."i&&'	(()*:*:;  ((--i.>.>?	,,e4r   c                    \         P                  ! 4       '       g   ^# Rp\        V4      w  r#\         P                  ! V4      pVf   ^# ^ # )r.   r   )r#   r~   r,   r   r   s   &    r   
fork_child!TestTracemallocEnabled.fork_childX  sD    %%''+H544S9	 r   c                    \         P                  ! 4       pV'       g,   ^p V P                  4       p\         P                  ! V4       R# \        P
                  ! V^ R7       R#   \         P                  ! T4       i ; i)r   )exitcodeN)osforkr  _exitr   wait_process)rn   pidr  s   &  r   	test_fork TestTracemallocEnabled.test_forke  sT     ggiH#??,"  q1 "s   A# #A;c                L   \         P                  ! 4        \         P                  ! ^4       R pV! ^ 4      P                  ^ ,          p\         P                  ! V4      pV P                  RVR,          P                  4       V P                  RVR,          P                  4       R# )   c                    a  V 3R  lpV# )c                     < S # rP   rj   )xs   r   gFTestTracemallocEnabled.test_no_incomplete_frames.<locals>.f.<locals>.gx  s    r   rj   )r  r  s   f r   f;TestTracemallocEnabled.test_no_incomplete_frames.<locals>.fw  s    Hr   test_tracemallocNr   )r#   r   r   __closure__r   assertInrS   assertNotIn)rn   r  r   rU   s   &   r   test_no_incomplete_frames0TestTracemallocEnabled.test_no_incomplete_framess  s{    !	
 dq!44S9	()B-*@*@A+Yr]-C-CDr   rj   N)rr   rs   rt   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   requires_forkr  r$  rv   rw   rx   s   @r   r{   r{   q   s     *33(3(%8.8"BH&902;2	5 2 2E Er   r{   c                   r   a  ] tR tRt o RtR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tRtV tR# )TestSnapshoti  i  c           
        R.p\         P                  ! 4       ;_uu_ 4       pVP                  \        P                  ! \
        RRR7      4       VP                  \        P                  ! \
        R^R7      4       VP                  \        P                  ! \
        RVR7      4       \
        P                  ! 4       pV P                  VP                  ^4       V P                  \        VP                  4      ^4       VP                  ^ ,          pV P                  VP                  ^4       V P                  VP                  P                  ^
4       V P                  \        VP                  4      ^4       V P                  VP                  ^ ,          P                  R4       V P                  VP                  ^ ,          P                  ^4       RRR4       R#   + '       g   i     R# ; i)	r   r2   r~   T)return_valuer$   r   N)r   r:   )r1   r0   )
contextlib	ExitStackenter_contextr   objectr#   r   rm   rI   r(   r   r)   rU   r   rS   r   )rn   rJ   stackrK   r   s   &    r   test_create_snapshot!TestSnapshot.test_create_snapshot  sa   01
!!##u[,:>!@ A[:O:;!= >[-:D!F G #002HX55q9S115OOA&EUZZ+U__992>S115U__Q/88&AU__Q/66:! $###s   F/GG+	c                <   \        4       w  r\        P                  ! R R4      p\        P                  ! RR^4      p\        P                  ! RR^4      p\        VP                  P
                  4      pVP                  V34      pV P                  VP                  P
                  . RO4       V P                  VP                  P
                  V4       VP                  WE34      pV P                  VP                  P
                  . RO4       VP                  R4      p	V P                  W4       V P                  V	P                  VP                  4       V P                  V	P                  VP                  4       V P                  \        VP                  V4       R# )Fr4   Tr2   N)r/   r/   r/   r7   r>   )r/   r/   r/   r7   rj   )rN   r#   Filterr   r   _tracesfilter_tracesrm   assertIsNotr   	TypeError)
rn   rK   rM   filter1filter2filter3original_traces	snapshot3	snapshot4	snapshot5s
   &         r   test_filter_tracesTestSnapshot.test_filter_traces  sN   .0$$UF3$$T615$$T615x667 **G:6	))11 4
 	 	00/B ++W,>?	))11 4
 	 **2.	-))8??;))8??;)X%;%;WEr   c                   \        4       w  r\        P                  ! R R^R7      p\        P                  ! RR^R7      p\        VP                  P
                  4      pVP                  V34      pV P                  VP                  P
                  . RO4       VP                  V34      pV P                  VP                  P
                  . RO4       R# )Fr2   r   TN)r/   r/   r/   r;   r>   )rN   r#   r3  r   r   r4  r5  rm   )rn   rK   rM   r8  r9  r;  r<  s   &      r   test_filter_traces_domain&TestSnapshot.test_filter_traces_domain  s    .0$$UF1=$$T6!<x667 **G:6	))11 4
 	 **G:6	))11 4
 	r   c                d   \        4       w  r\        P                  ! R ^R7      p\        P                  ! R^R7      pVP                  V34      pV P	                  VP
                  P                  . RO4       VP                  V34      pV P	                  VP
                  P                  R.4       R# )FrB  TN)r/   r/   r/   r7   r;   r>   )rN   r#   DomainFilterr5  rm   r   r4  )rn   rK   rM   r8  r9  r<  s   &     r    test_filter_traces_domain_filter-TestSnapshot.test_filter_traces_domain_filter  s    .0**5;**4: **G:6	))11 4
 	 **G:6	))11*4
 	r   c                   \        4       w  r\        R ^ 4      p\        R^4      p\        R^4      p\        R^4      p\        RR4      pVP                  R4      pV P                  V\        P
                  ! V^B^4      \        P
                  ! V^^4      \        P
                  ! V^^4      \        P
                  ! V^^4      .4       VP                  R4      p	V P                  V	\        P
                  ! VR^4      \        P
                  ! VR^4      \        P
                  ! V^^4      .4       VP                  VR4      p
V P                  V
\        P                  ! VRR^^4      \        P                  ! VRR^^4      \        P                  ! V^ R
^ R4      \        P                  ! V^ R^ R4      \        P                  ! V^^ ^^ 4      .4       R	# )rB   r2   r4   rF   rG   r     rD   rC   Nr   )rN   rW   
statisticsrm   r#   	Statistic
compare_toStatisticDiff)rn   rK   rM   tb_0tb_a_2tb_a_5tb_b_1tb_c_578stats1stats2rM  s   &          r   test_snapshot_group_by_line(TestSnapshot.test_snapshot_group_by_line  s   .0Q/!&!,!&!,!&!,#FC0 $$X.!!&"a0!!&"a0!!$1-!!&!Q/	"
 	 %%h/!!&$2!!(C3!!&"a0"
 	 ))(H=
%%fdD!Q?%%hS!Q?%%faa<%%dAr1b9%%fb!Q:&
 	r   c                   \        4       w  r\        R 4      p\        R4      p\        R4      p\        R4      pVP                  R4      pV P                  V\        P
                  ! V^B^4      \        P
                  ! V^ ^4      \        P
                  ! V^^4      .4       VP                  R4      pV P                  V\        P
                  ! VR^4      \        P
                  ! VR^4      .4       VP                  VR4      p	V P                  V	\        P                  ! VRR^^4      \        P                  ! VRR^^4      \        P                  ! V^ R	^ R
4      \        P                  ! V^ R^ R
4      .4       R# )rB   r2   r4   rF   rS   i  rD   rC   NrK  r   rL  )rN   rZ   rM  rm   r#   rN  rO  rP  )
rn   rK   rM   rQ  tb_atb_btb_crV  rW  diffs
   &         r   test_snapshot_group_by_file(TestSnapshot.test_snapshot_group_by_file  s^   .0!+.!&)!&)!&) $$Z0!!$A.!!$A.!!$1-"
 	 %%j1!!$a0!!$Q/"
 	 ##Hj9%%dD$1=%%dCa;%%dAsAr:%%dAr1b9	 
 	r   c                   \        4       w  r\        RR	4      p\        R
R	4      p\        R4      p\        R4      pVP                  R4      pV P                  V\        P
                  ! V^B^4      \        P
                  ! V^^4      \        P
                  ! V^^4      \        P
                  ! V^^4      .4       \        R4      pVP                  R4      p	V P                  V	\        P
                  ! VR^4      \        P
                  ! VR^4      \        P
                  ! V^^4      .4       VP                  VR4      p
V P                  V
\        P                  ! VRR^^4      \        P                  ! VRR^^4      \        P                  ! V^ R^ R4      \        P                  ! V^ R^ R4      \        P                  ! V^^ ^^ 4      .4       V P                  \        VP                  RRR7       R# )r2   rU   rJ  rD   rC   T)
cumulativeNr1   r3   r9   r=   rA   rE   rK  r   rL  )
rN   rU   rM  rm   r#   rN  rO  rP  r   r   )rn   rK   rM   tb1tb2tb3tb4rV  tb5rW  r^  s   &          r    test_snapshot_group_by_traceback-TestSnapshot.test_snapshot_group_by_traceback2  s   .0 [1[1$()$$[1!!#r1-!!#r1-!!#q!,!!#q!,	"
 	 &%%k2!!#tQ/!!#sA.!!#r1-"
 	 ##Hk:%%c4q!<%%c3Q:%%c1c1b9%%c1b!R8%%c2q!Q7 
 	 	*"--{t 	 	Mr   c                   \        4       w  r\        R 4      p\        R4      p\        R4      p\        R^4      p\        R^4      p\        R^4      p\        R^4      p	VP                  RR4      p
V P	                  V
\
        P                  ! V^b^4      \
        P                  ! V^ ^4      \
        P                  ! V^^4      .4       VP                  RR4      p
V P	                  V
\
        P                  ! V^B^4      \
        P                  ! V	^ ^4      \
        P                  ! V^^4      \
        P                  ! V^^4      \
        P                  ! V^^4      .4       R# )rB   r2   r4   rS   Tr   N)rN   rZ   rW   rM  rm   r#   rN  )rn   rK   rM   rQ  r[  r\  rR  rS  rT  tb_b_4statss   &          r   !test_snapshot_group_by_cumulative.TestSnapshot.test_snapshot_group_by_cumulativeX  s=   .0!+.!&)!&)!&!,!&!,!&!,!&!, ##J5!!$A.!!$A.!!$1-!
 	 ##Hd3!!&"a0!!&"a0!!&"a0!!$1-!!&!Q/!
 	r   c                   \        4       w  rVP                  ^ ,          pV P                  \        V4      R4       VP                  pV P                  \        V4      R4       V^ ,          pV P                  \        V4      R4       R# )r   zb.py:4: 10 Bzb.py:4N)rN   r   rm   r`   rU   )rn   rK   rM   r   rU   r   s   &     r   test_trace_formatTestSnapshot.test_trace_formatt  si    .0"U^4OO	Y2!UX.r   c                    \        4       w  rVP                  R 4      pV^ ,          pV P                  \        V4      R4       R# )r   z(b.py:1: size=66 B, count=1, average=66 BN)rN   rM  rm   r`   rn   rK   rM   rl  stats   &    r   test_statistic_format"TestSnapshot.test_statistic_format}  s>    .0##H-QxTC	Er   c                    \        4       w  rVP                  VR 4      pV^ ,          pV P                  \        V4      R4       R# )r   z;a.py:5: size=5002 B (+5000 B), count=2 (+1), average=2501 BN)rN   rO  rm   r`   rs  s   &    r   test_statistic_diff_format'TestSnapshot.test_statistic_diff_format  s@    .0$$Xx8QxTV	Xr   c                8   \        4       w  rV P                  VP                  R ,          VP                  ^ ,          VP                  ^,          34       VP                  ^ ,          P                  pV P                  VR ,          V^ ,          V^,          34       R# ):Nr.   NN)rN   rm   r   rU   )rn   rK   rM   rU   s   &   r   test_slicesTestSnapshot.test_slices  s{    .0,"//!,hooa.@A	C OOA&00	2#A,	!5	7r   c           	        \        4       w  rR  p\        P                  P                  RVR7      ;_uu_ 4        VP                  ^ ,          P
                  pV P                  VP                  4       . RO4       V P                  VP                  ^R7      RR.4       V P                  VP                  RR7      RR.4       V P                  VP                  RR	7      . RO4       V P                  VP                  ^RR
7      RR.4       V P                  VP                  RRR
7      RR.4       RRR4       R#   + '       g   i     R# ; i)c                     R V : RV: R2# )z  <z, ri   rj   rR   s   &&r   getline3TestSnapshot.test_format_traceback.<locals>.getline  s    #+V44r   ztracemalloc.linecache.getline)side_effect  File "b.py", line 4    <b.py, 4>  File "a.py", line 2    <a.py, 2>)limitT)most_recent_first)r  r  N)r  r  r  r  r   )r  r  r  r  )rN   unittestmockr   r   rU   rm   ra   )rn   rK   rM   r  tbs   &    r   test_format_traceback"TestSnapshot.test_format_traceback  s>   .0	5]]  !@-4 ! 6 6#--BRYY[/0 RYYQY/5-/0 RYYRY05-/0 RYYY>/0 RYYQ$YG5-/0 RYYR4YH5-/076 6 6 6s   C6D99E
	rj   N)rr   rs   rt   ru   maxDiffr0  r?  rC  rG  rX  r_  rh  rm  rp  ru  rx  r{  r  rv   rw   rx   s   @r   r(  r(    sW     G;*$FL6*!F>$ML8/EX7!0 !0r   r(  c                   B   a  ] tR tRt o RtR tR tR tR tR t	Rt
V tR	# )
TestFiltersi  r   c                r   \         P                  ! R R4      pV P                  VP                  R 4       V P                  VP                  R4       V P                  VP                  4       V P                  VP                  R4       \         P                  ! RR^{R 4      pV P                  VP                  R4       V P                  VP                  R4       V P                  VP                  ^{4       V P                  VP                  R 4       \         P                  ! RR^{R R7      pV P                  VP                  R4       V P                  VP                  R4       V P                  VP                  ^{4       V P                  VP                  R 4       V P                  \        \        VRR4       R# )TabcFztest.py)	inclusivefilename_patternr   
all_framesr  N)r#   r3  rm   r  r  r   r   r  r   AttributeErrorsetattrrn   r  s   & r   test_filter_attributes"TestFilters.test_filter_attributes  sS   tU+d+++U3!((#u- uid;e,++Y73't, SVcghe,++Y73't, 	.'16H%Pr   c                j
   \         P                  ! R R4      pV P                  VP                  R^ 4      4       V P                  VP                  R^4      4       V P                  VP                  R^
4      4       V P	                  VP                  R^ 4      4       V P	                  VP                  R^4      4       V P	                  VP                  R^
4      4       \         P                  ! RR4      pV P	                  VP                  R^ 4      4       V P	                  VP                  R^4      4       V P	                  VP                  R^
4      4       V P                  VP                  R^ 4      4       V P                  VP                  R^4      4       V P                  VP                  R^
4      4       \         P                  ! R R^4      pV P	                  VP                  R^ 4      4       V P                  VP                  R^4      4       V P	                  VP                  R^
4      4       V P	                  VP                  R^ 4      4       V P	                  VP                  R^4      4       V P	                  VP                  R^
4      4       \         P                  ! RR^4      pV P                  VP                  R^ 4      4       V P	                  VP                  R^4      4       V P                  VP                  R^
4      4       V P                  VP                  R^ 4      4       V P                  VP                  R^4      4       V P                  VP                  R^
4      4       \         P                  ! R R^ 4      pV P                  VP                  R^ 4      4       V P	                  VP                  R^4      4       V P	                  VP                  R^
4      4       V P	                  VP                  R^ 4      4       V P	                  VP                  R^4      4       V P	                  VP                  R^
4      4       \         P                  ! RR^ 4      pV P	                  VP                  R^ 4      4       V P                  VP                  R^4      4       V P                  VP                  R^
4      4       V P                  VP                  R^ 4      4       V P                  VP                  R^4      4       V P                  VP                  R^
4      4       R# )Tr  12356FN)r#   r3  r   _match_framer   r  s   & r   test_filter_matchTestFilters.test_filter_match  s   tU+ua01ua01ub12343445ue,q12q12r23w23w23w34 tUA.q12ua01r23343445ueQ/ua01q12ub12w23w23w34 tUA.ua01q12r23343445ueQ/q12ua01ub12w23w23w34r   c                8   R  pV P                  V! RRR4      4       V P                  V! RRR4      4       V P                  V! RRR4      4       V P                  V! RRR4      4       V P                  V! RRR4      4       V P                  V! RRR4      4       R# )c                 R    \         P                  ! W4      pVP                  V^ 4      # rY   r#   r3  r  )r  rS   patternr  s   &&& r   fnmatch7TestFilters.test_filter_match_filename.<locals>.fnmatch	  s#    ""96A>>(A..r   Tr  r  rB   FN)r   r   rn   r  s   & r   test_filter_match_filename&TestFilters.test_filter_match_filename  s    	/ 	eU34w67{E:;u56w67{E:;r   c                   R  pV P                  V! RR4      4       V P                  V! RR4      4       V P                  V! RR4      4       V P                  V! RR4      4       V P                  V! RR4      4       V P                  V! RR4      4       V P                  V! RR4      4       V P                  V! RR4      4       V P                  V! RR4      4       V P                  V! RR4      4       V P                  V! RR	4      4       V P                  V! RR
4      4       V P                  V! RR4      4       V P                  V! RR
4      4       V P                  V! RR4      4       V P                  V! RR4      4       V P                  V! RR4      4       V P                  V! RR4      4       V P                  V! RR4      4       V P                  V! RR4      4       V P                  V! RR4      4       \        P                  R8X  db   V P                  V! RR4      4       V P                  V! RR4      4       V P                  V! RR4      4       V P                  V! RR4      4       M`V P                  V! RR4      4       V P                  V! RR4      4       V P                  V! RR4      4       V P                  V! RR4      4       \        P                  R8X  db   V P                  V! RR4      4       V P                  V! RR4      4       V P                  V! R R!4      4       V P                  V! R"R#4      4       M`V P                  V! RR4      4       V P                  V! RR4      4       V P                  V! R R!4      4       V P                  V! R"R#4      4       V P                  V! R$R4      4       R%# )&c                 T    \         P                  ! R V4      pVP                  V ^ 4      # )Tr  )rS   r  filters   && r   r  =TestFilters.test_filter_match_filename_joker.<locals>.fnmatch  s'     ''g6F&&x33r   r   *abcddefza*zabc*zb*zabcd*za*cabcdcxza*cxabbabcdceabcdeza*c*e	abcbdefegza*bd*egabcdd	abcbdefefza.pycr2   ntaBCABcaBcDezAb*dEza.PYza.PYCza/bza\bza/b\cza\b/cza/b/cza\b\cza.pyoN)r   r   r  namer  s   & r    test_filter_match_filename_joker,TestFilters.test_filter_match_filename_joker  s&   	4
 	+,U+,B(C() 	u-./0./ 	t,-v./-.01 	u-.&12./623 	12Y78'23i89 	010177d?OOGE512OOGGW56OOGGV45OOGFG45 WUE23WWg67WWf56WVW5677d?OOGFF34OOGFF34OOGHh78OOGHh78 WVV45WVV45WXx89WXx89 	&12r   c                t   RpRpR	pR
p\         P                  ! RRRR7      pV P                  VP                  V4      4       V P                  VP                  V4      4       V P	                  VP                  V4      4       V P	                  VP                  V4      4       \         P                  ! RRRR7      pV P	                  VP                  V4      4       V P                  VP                  V4      4       V P	                  VP                  V4      4       V P	                  VP                  V4      4       \         P                  ! RRRR7      pV P	                  VP                  V4      4       V P	                  VP                  V4      4       V P                  VP                  V4      4       V P                  VP                  V4      4       \         P                  ! RRRR7      pV P                  VP                  V4      4       V P	                  VP                  V4      4       V P                  VP                  V4      4       V P                  VP                  V4      4       \         P                  ! RRRR7      pV P                  VP                  V4      4       V P                  VP                  V4      4       V P                  VP                  V4      4       V P	                  VP                  V4      4       \         P                  ! RRRR7      pV P	                  VP                  V4      4       V P	                  VP                  V4      4       V P                  VP                  V4      4       V P                  VP                  V4      4       \         P                  ! RRRR7      pV P                  VP                  V4      4       V P                  VP                  V4      4       V P	                  VP                  V4      4       V P	                  VP                  V4      4       R# )r2   r4   rB   T)r  FN)r1   )r4   r6   )r3   )r4   r:   ))rF   r:   rA   r@   )r#   r3  r   _match_tracebackr   )rn   t1t2t3unknownr  s   &     r   test_filter_match_trace#TestFilters.test_filter_match_traceZ  s@   '',%tV=**2./**2./++B/0++G45tV>++B/0**2./++B/0++G45uf>++B/0++B/0**2./**734uf?**2./++B/0**2./**734ukeD**2./**2./**2./++G45t[TB++B/0++B/0**2./**734ukdC**2./**2./++B/0++G45r   rj   N)rr   rs   rt   ru   r  r  r  r  r  r  rv   rw   rx   s   @r   r  r    s,     GQ225h<C3J.6 .6r   r  c                      a  ] tR tRt o R t]P                  ! ]! 4       R4      R 4       tR t	R t
R t]R 4       tR	 tR
 tR t]R 4       t]P                  ! ]RJ R4      R 4       tRtV tR# )TestCommandLinei  c                l    R p\        RV4      w  r#pVP                  4       pV P                  VR4       R# )3import tracemalloc; print(tracemalloc.is_tracing())-c   FalseNr   rstriprm   rn   r   okstdoutstderrs   &    r    test_env_var_disabled_by_default0TestCommandLine.test_env_var_disabled_by_default  s3    D-dD9F*r   z6Cannot run -E tests when PYTHON env vars are required.c                r    Rp\        RRVRR7      w  r#pVP                  4       pV P                  VR4       R# )zAPYTHON* environment variables must be ignored when -E is present.r  z-Er  1PYTHONTRACEMALLOCr  Nr  r  s   &    r   test_env_var_ignored_with_E+TestCommandLine.test_env_var_ignored_with_E  s;     E-dD$RUVF*r   c                p    R p\        RVRR7      w  r#pVP                  4       pV P                  VR4       R# )r  r  0r  r  Nr  r  s   &    r   test_env_var_disabled%TestCommandLine.test_env_var_disabled  s5    D-dDCPF*r   c                p    R p\        RVRR7      w  r#pVP                  4       pV P                  VR4       R# )r  r  r  r  s   TrueNr  r  s   &    r   test_env_var_enabled_at_startup/TestCommandLine.test_env_var_enabled_at_startup  s5    D-dDCPF)r   c                p    R p\        RVRR7      w  r#pVP                  4       pV P                  VR4       R# )<import tracemalloc; print(tracemalloc.get_traceback_limit())r  10r  s   10Nr  r  s   &    r   test_env_limitTestCommandLine.test_env_limit  s5    M-dDDQF'r   c           	         \         P                  ! 4       ;_uu_ 4        \        R R\        V4      R7      w  r#pRRR4       RX9   d   R# RV9   d   R# V P	                  RV: 24       R#   + '       g   i     L9; i)r  passr  N1   ValueError: the number of frames must be in ranges+   PYTHONTRACEMALLOC: invalid number of framesunexpected output: )r   SuppressCrashReportr   r`   r   )rn   r   r  r  r  s   &&   r   check_env_var_invalid%TestCommandLine.check_env_var_invalid  sg    ((**!6f"%f+"/B +
 @6I9VC		'z23 +*s   A**A:	c                    \          F7  pV P                  VR 7      ;_uu_ 4        V P                  V4       RRR4       K9  	  R#   + '       g   i     KN  ; ir   N)INVALID_NFRAMEsubTestr  rn   r   s   & r   test_env_var_invalid$TestCommandLine.test_env_var_invalid  s=    $FV,,**62 -, %,,,   AAc           	     $   R Fu  w  rV P                  WR7      ;_uu_ 4        Rp\        RVRV4      w  rEpVP                  4       pV P                  V\	        V4      P                  R4      4       RRR4       Kw  	  R#   + '       g   i     K  ; i)r#   )xoptionsr   r  -Xr  asciiN))r#   r   )ztracemalloc=1r   )ztracemalloc=15   )r  r   r  rm   r`   encode)rn   r  r   r   r  r  r  s   &      r   test_sys_xoptions!TestCommandLine.test_sys_xoptions  s~    !
H
 x??U%5dHdD%Q"F  V););G)DE	 @?!

 @??s   AA>>Bc                    R RV,          RR3p\         P                  ! 4       ;_uu_ 4        \        V!  w  r4pRRR4       RX9   d   R# RV9   d   R# V P                  RV: 24       R#   + '       g   i     L9; i)r  ztracemalloc=%sr  r  Nr  s/   -X tracemalloc=NFRAME: invalid number of framesr  )r   r  r   r   )rn   r   rf   r  r  r  s   &&    r   check_sys_xoptions_invalid*TestCommandLine.check_sys_xoptions_invalid  so    &/v>((**!6!=B + @6I=G		'z23 +*s   A))A9	c                    \          F7  pV P                  VR 7      ;_uu_ 4        V P                  V4       RRR4       K9  	  R#   + '       g   i     KN  ; ir  )r  r  r  r  s   & r   test_sys_xoptions_invalid)TestCommandLine.test_sys_xoptions_invalid  s=    $FV,,//7 -, %,,,r  Nneed _testcapic                &    R p\        RRRV4       R# )z2import _testcapi; _testcapi.test_pymem_alloc0(); 1r  r#   r  N)r   rn   r   s   & r   test_pymem_alloc0!TestCommandLine.test_pymem_alloc0  s     D}dD9r   rj   )rr   rs   rt   ru   r  r  skipIfr   r  r  r  r  r   r  r  r  r  r  	_testcapir  rv   rw   rx   s   @r   r  r    s     + __57MO+O++*( 
4 
43

F	4 8 8
 __Y$&(89: ::r   r  r  c                   X  a  ] tR tRt o RtR tR tR tRR ltRR lt	R t
R tR	 tR
 tR tR tR tR tR tR t]P*                  ! ]RJ R4      ]P0                  ! 4       ]P*                  ! ]P4                  R4      ]P6                  ! RRR7      R 4       4       4       4       tR tRtV tR# )TestCAPIr   c                    \         P                  ! 4       '       d   V P                  R 4       ^V n        ^{V n        \        V P                  4      ^ ,          V n        \        V P                  4      V n        R# r}   )	r#   r~   r   r   r)   r,   r   idptrr   s   &r   r   TestCAPI.setUp  sR    !!##MMGH	!$)),Q/ dhh<r   c                0    \         P                  ! 4        R # rP   r   r   s   &r   r   TestCAPI.tearDown  r   r   c                    \         P                  ! V P                  V P                  4      pVe   \        P
                  ! V4      # R # rP   )_testinternalcapi_PyTraceMalloc_GetTracebackr   r  r#   r&   )rn   r   s   & r   get_tracebackTestCAPI.get_traceback  s6    ">>t{{DHHU((00r   c                    \        V^4      p\        P                  ! V P                  V P                  V P
                  V4       V# r   )r    r
  tracemalloc_trackr   r  r)   )rn   release_gilr   r   s   &&& r   trackTestCAPI.track  s6    FA&##DKK499$/	1r   c                ^    \         P                  ! V P                  V P                  V4       R # rP   )r
  tracemalloc_untrackr   r  rn   r  s   &&r   untrackTestCAPI.untrack  s    %%dkk488[Ir   c                    \         P                  ! 4       p\         P                  ! R V P                  4      pVP	                  V.4      p\        R VP                   4       4      # )Tc              3   8   "   T F  qP                   x  K  	  R # 5irP   r   ).0r   s   & r   	<genexpr>-TestCAPI.get_traced_memory.<locals>.<genexpr>  s     ;?%::?s   )r#   r   rF  r   r5  r   r   )rn   rK   domain_filters   &  r   r   TestCAPI.get_traced_memory  sM    ,,.#00t{{C))=/:;8??;;;r   c                L   ^p\         P                  ! V4       \         P                  ! 4       ^ ,          pV P                  W4      pV P	                  V P                  4       \         P                  ! V4      4       V P	                  V P                  4       V P                  4       R# )r:   N)r#   r   r   r  rm   r  r&   r)   )rn   r  r   r)   r   s   &&   r   check_trackTestCAPI.check_track  s|    &!,,.q1K0++-$..v6	8 	//1499=r   c                (    V P                  R 4       R# FNr*  r   s   &r   
test_trackTestCAPI.test_track  s    r   c                (    V P                  R 4       R# TNr.  r   s   &r   test_track_without_gilTestCAPI.test_track_without_gil!  s     	r   c                    ^p\         P                  ! V4       V P                  4        V P                  VR7      pV P                  V P	                  4       \         P
                  ! V4      4       R# )r:   r  N)r#   r   r  rm   r  r&   )rn   r   r   s   &  r   test_track_already_tracked#TestCAPI.test_track_already_tracked&  sY    &! 	

 6*++-$..v6	8r   c                   \         P                  ! 4        V P                  4        V P                  V P	                  4       4       V P                  V P                  4       V P                  4       V P                  V4       V P                  V P	                  4       4       V P                  V P                  4       ^ 4       V P                  V4       V P                  V4       R# )r   N)
r#   r   r  r   r  rm   r   r)   r   r   r  s   &&r   check_untrackTestCAPI.check_untrack3  s    

T//12//1499= 	[!$,,.///115 	[![!r   c                (    V P                  R 4       R# r-  r9  r   s   &r   test_untrackTestCAPI.test_untrackC  s    5!r   c                (    V P                  R 4       R# r2  r<  r   s   &r   test_untrack_without_gil!TestCAPI.test_untrack_without_gilF  s    4 r   c                *   \         P                  ! 4        \         P                  ! 4        V P                  \        4      ;_uu_ 4        V P                  4        R R R 4       V P                  V P                  4       4       R #   + '       g   i     L1; irP   )r#   r   r   r   r   r  r   r  r   s   &r   test_stop_trackTestCAPI.test_stop_trackI  sY    |,,JJL -$,,./ -,s   BB	c                   \         P                  ! 4        V P                  4        \         P                  ! 4        V P	                  \
        4      ;_uu_ 4        V P                  4        R R R 4       R #   + '       g   i     R # ; irP   )r#   r   r  r   r   r   r   r   s   &r   test_stop_untrackTestCAPI.test_stop_untrackQ  sL    

|,,LLN -,,,s   A33B	Nr  zneed release buildz&gh-131566: race when setting allocatorT)threadc                0    \         P                  ! 4        R # rP   )r
  tracemalloc_track_racer   s   &r   test_tracemalloc_track_race$TestCAPI.test_tracemalloc_track_raceY  s     	((*r   c                Z    \         P                  ! R \         R24      p\        RV4       R# )a  
            from test import support
            import tracemalloc
            import _testcapi

            class Tracked:
                def __init__(self, domain, size):
                    self.domain = domain
                    self.ptr = id(self)
                    self.size = size
                    _testcapi.tracemalloc_track(self.domain, self.ptr, self.size)

                def __del__(self, untrack=_testcapi.tracemalloc_untrack):
                    untrack(self.domain, self.ptr, 1)

            domain = z
            tracemalloc.start()
            obj = Tracked(domain, 1024 * 1024)
            support.late_deletion(obj)
        r  N)textwrapdedentDEFAULT_DOMAINr   r  s   & r   test_late_untrackTestCAPI.test_late_untrackb  s3     $ %% &	  ( 	t$r   )r   r   r  r)   i@  )Fr   )F) rr   rs   rt   ru   r  r   r   r  r  r   r   r*  r/  r3  r6  r9  r=  r@  rC  rF  r  r	  r
  r
   requires_working_threadingr   Py_DEBUGskip_if_sanitizerrK  rQ  rv   rw   rx   s   @r   r  r    s     G
 J<
> 
8" "!0 __Y$&(89002__W%%';<GPTU+ V = 3 :
+% %r   r  __main__)r   i   @)*r+  r  r   rN  r#   r  unittest.mockr   test.support.script_helperr   r   r   testr   test.supportr   r	   r
   r
  r  ImportErrorrP  	getsizeofr%   r  r    r,   rN   r   rU   rW   rZ   TestCaser\   r{   r(  r  r  r	  r  rr   mainrj   r   r   <module>r_     sR    	 
    J J  , " ) MM#& I!B2)))JH%% J&NEX.. NEbs08$$ s0l	P6(## P6fZ:h'' Z:z 
d"$45N%x   N% 6N%b zMMO Q#  Is   D' 'D54D5