
    0hh7                     h   S SK r S SKrS SKrS SKrS SKrS SKrS SKJr  S SKJ	r	J
r
Jr  S SKJr  S SKJr  S SKJr  S SKJr   S SKrS SKrS r\R,                  " S5      rS	rS
 rS rS rS rS rS rS r " S S\R@                  5      r! " S S\R@                  5      r" " S S\R@                  5      r# " S S\R@                  5      r$ " S S\R@                  5      r%\RL                  " \SL S5       " S S\R@                  5      5       r'\(S:X  a  \RR                  " 5         gg! \ a    SrSr Nf = f)    N)patch)assert_python_okassert_python_failure interpreter_requires_environment)support)force_not_colorized)	os_helper)threading_helper    )i   @c                    / n[         R                  " S5      n[        U 5       HN  nUR                  nUR                  U-   nUR                  UR                  U45        SnUR                  nUb  MN    O   [        U5      $ )N   r   )	sys	_getframerangef_codef_linenoappendco_filenamef_backtuple)nframelineno_deltaframesframeindexcodelinenos          >/opt/python-3.13.8/usr/lib/python3.13/test/test_tracemalloc.py
get_framesr       ss    FMM!Ev||,.t''01=  =r   c           	          [         R                  " 5       nU [        -
  n[        US5      nSU-  nU[         R                  " U[        [        U5      U5      5      4$ )Nr      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    Sn / SQn[         R                  " X5      n/ SQn[         R                  " X05      nX$4$ )N   )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    [         R                  " X45      $ N)r#   _Framefilenamer   s     r   r   r   Q   s    x011r   c                  .    [         R                  " U 5      $ rP   )r#   r&   )r   s    r   	tracebackrU   T   s      ((r   c                     [        X45      $ rP   )rU   rR   s     r   traceback_linenorW   W   s    h'((r   c                     [        U S5      $ Nr   )rW   )rS   s    r   traceback_filenamerZ   Z   s    Ha((r   c                       \ rS rSrS rSrg)TestTraceback^   c                     S[         4S jnU R                  U" S5      S5        U R                  U" SS5      S5        SnSnU R                  U" U5      S	U S
35        U R                  U" US5      S	U S35        g )Nreturnc                  :    [        [        R                  " U 6 5      $ rP   )reprr#   r&   )argss    r   get_repr)TestTraceback.test_repr.<locals>.get_repr`   s    --t455r    z<Traceback ()>r   z<Traceback () total_nframe=0>))f1r   )f2r.   z@(<Frame filename='f2' lineno=2>, <Frame filename='f1' lineno=1>)z<Traceback >r.   z total_nframe=2>)strassertEqual)selfrc   r   exp_repr_framess       r   	test_reprTestTraceback.test_repr_   s    	6s 	6 	"'78"a*IJ'/ 	 	&)&&7q9	;&!,&&77GH	Jr   re   N)__name__
__module____qualname____firstlineno__rm   __static_attributes__re   r   r   r\   r\   ^   s    Jr   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S rS rS rS rS rS rS r\R*                  " 5       S 5       rS rSrg)TestTracemallocEnabledq   c                     [         R                  " 5       (       a  U R                  S5        [         R                  " S5        g )N+tracemalloc must be stopped before the testr   )r#   
is_tracingskipTeststartrk   s    r   setUpTestTracemallocEnabled.setUpr   s,    !!##MMGH!r   c                 .    [         R                  " 5         g rP   r#   stopr|   s    r   tearDownTestTracemallocEnabled.tearDownx       r   c                 >   [        S5       Vs/ s H  n[        S5      PM     nn[        R                  " 5       nU R	                  US5        [        R
                  " 5         [        R                  " 5       nU R	                  US5        U R                  XC5        g s  snf )N  {   r   )r   r,   r#   get_tracemalloc_memoryassertGreaterEqualclear_tracesassertLessEqual)rk   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                     [         R                  " 5         Sn[        U5      u  p#[         R                  " U5      nU R	                  XC5        g N90  )r#   r   r,   get_object_tracebackrj   rk   obj_sizeobjobj_tracebackrU   s        r   test_get_object_traceback0TestTracemallocEnabled.test_get_object_traceback   s>      "+H544S9	2r   c                 j   [         R                  " 5         [        R                  " 5         / nS n/ n[         R                  " 5       n[        US5      n[         R                  " U[        [        U5      U5      5      n[         R                  " U5      nU R                  U5        U R                  XT5        g )N)r#   r   r   
gc_collectr$   r    r&   r'   r(   r   assertIsNotNonerj   )rk   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                 d   Sn[         R                  " 5         U R                  [        [         R                  S5        [         R                  " 5         [         R                  " S5        [        U5      u  p#[         R                  " U5      nU R                  [        U5      S5        U R                  XC5        [         R                  " 5         [         R                  " S5        [        U5      u  pV[         R                  " U5      nU R                  [        U5      S5        U R                  XF5        g )Nr0   r   r   )	r#   r   assertRaises
ValueErrorr{   r,   r   rj   r(   )rk   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                 |    U H%  nUS   UR                   :X  d  M  US   U:X  d  M#  Us  $    U R                  S5        g )Nr.   r   ztrace not found)_framesfail)rk   tracesrU   r)   traces        r   
find_trace!TestTracemallocEnabled.find_trace   s?     EQx9,,,qT1A  			#$r   c                 z   [         R                  " 5         Sn[        U5      u  p#[         R                  " 5       nU R	                  XCU5      nU R                  U[        5        Uu  pgpU R                  XR                  5        [         R                  " 5         U R                  [         R                  " 5       / 5        g r   )
r#   r   r,   _get_tracesr   assertIsInstancer   rj   r   r   )
rk   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                   ^^ S mU4S jmU4S jn[         R                  " 5         [         R                  " S5        SnSnU" U5      u  pEU" U5      u  pg[         R                  " 5       n[	        [        UR                  5      5      Ul        [	        [        UR                  5      5      Ul        U R                  XU5      n	U R                  XU5      n
U	u  ppU
u  nnnnU R                  UU5        g )Nc                     [        U 5      $ rP   )r,   r)   s    r   allocate_bytes2PTestTracemallocEnabled.test_get_traces_intern_traceback.<locals>.allocate_bytes2   s    !$''r   c                    > T" U 5      $ rP   re   )r)   r   s    r   allocate_bytes3PTestTracemallocEnabled.test_get_traces_intern_traceback.<locals>.allocate_bytes3       "4((r   c                    > T" U 5      $ rP   re   )r)   r   s    r   allocate_bytes4PTestTracemallocEnabled.test_get_traces_intern_traceback.<locals>.allocate_bytes4   r   r   r5   r   }   )	r#   r   r{   r   r   reversedr   r   assertIs)rk   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                    SnSn[         R                  " 5         [        U5      u  p4[         R                  " 5       u  pVU R	                  XR5        U R	                  Xe5        U R                  XR-
  U5        U R                  Xe-
  U5        S n[         R                  " 5       u  pxU R                  Xu5        U R	                  XW-
  X!-
  5        U R	                  X5        [         R                  " 5         U R                  [         R                  " 5       S5        [        U5      u  p4[         R                  " 5       u  pVU R	                  XR5        [         R                  " 5         U R                  [         R                  " 5       S5        g )N      )r   r   )	r#   r   r,   get_traced_memoryr   r   
assertLessrj   r   )	rk   	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                     [        S5      u  p[        R                  " U5      nU R                  U5        [        R                  " 5         [        R                  " U5      nU R                  U5        g )Nr   )r,   r#   r   r   r   assertIsNone)rk   r   r   rU   r   s        r   test_clear_traces(TestTracemallocEnabled.test_clear_traces  sW    +C044S9	Y'  " 55c:
*%r   c                    [         R                  " 5         [        [        [	        S5      5      5      n[         R
                  " 5       u  p#[         R                  " 5         [         R
                  " 5       u  pEU R                  XT5        U R                  XS5        Sn[        U5      u  px[         R
                  " 5       u  pU R                  X5        U R                  X5        U R                  X-
  U5        g )Ni r   )r#   r   sumlistr   r   
reset_peakr   r   r,   assertGreater)rk   	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                     [         R                  " 5         U R                  [         R                  " 5       5        [         R                  " 5         U R                  [         R                  " 5       5        g rP   )r#   r   assertFalsery   r{   
assertTruer|   s    r   test_is_tracing&TestTracemallocEnabled.test_is_tracing-  sF    //12..01r   c                    [        S5      u  p[        R                  " 5       nU R                  UR                  S   R
                  R                  S5        UR                  [        R                  5        U R                  [        R                  [        R                  5        [        R                  R                  [        R                  5      nU R                  UR                  UR                  5        [        R                  " 5         U R!                  ["        5       n[        R                  " 5         S S S 5        U R                  [%        WR&                  5      S5        g ! , (       d  f       N4= f)Nr   r   r0   zLthe tracemalloc module must be tracing memory allocations to take a snapshot)r,   r#   take_snapshotr   r   rU   total_nframedumpr	   TESTFN
addCleanupunlinkrH   loadrj   r   r   RuntimeErrorri   	exception)rk   r   sourcerK   rM   cms         r   test_snapshot$TestTracemallocEnabled.test_snapshot4  s   $S) ,,. 	8??1-77DDbI 	i&&'	(()*:*:;  ((--i.>.>?	))8??; 	|,%%' -R\\*:	; -,s    E$$
E2c                 h   [         R                  " 5       nSUl        UR                  [        R
                  5        U R                  [        R                  [        R
                  5        [         R                  R                  [        R
                  5      nU R                  UR                  S5        g )Nnew)r#   r   	test_attrr   r	   r   r   r   rH   r   rj   )rk   rK   rM   s      r   test_snapshot_save_attr.TestTracemallocEnabled.test_snapshot_save_attrM  sx    ,,."i&&'	(()*:*:;  ((--i.>.>?	,,e4r   c                     [         R                  " 5       (       d  gSn[        U5      u  p#[         R                  " U5      nUc  gg)Nr.   r   r6   r   )r#   ry   r,   r   r   s        r   
fork_child!TestTracemallocEnabled.fork_childX  sD    %%''+H544S9	 r   c                     [         R                  " 5       nU(       d*  Sn U R                  5       n[         R                  " U5        g [        R
                  " USS9  g ! [         R                  " U5        f = f)Nr   r   )exitcode)osforkr  _exitr   wait_process)rk   pidr	  s      r   	test_fork TestTracemallocEnabled.test_forke  sT     ggiH#??,"  q1 "s   A A5c                 2   [         R                  " 5         [         R                  " S5        S nU" S5      R                  S   n[         R                  " U5      nU R                  SUS   R                  5        U R                  SUS   R                  5        g )N   c                    ^  U 4S jnU$ )Nc                     > T $ rP   re   )xs   r   gFTestTracemallocEnabled.test_no_incomplete_frames.<locals>.f.<locals>.gx  s    r   re   )r  r  s   ` r   f;TestTracemallocEnabled.test_no_incomplete_frames.<locals>.fw  s    Hr   r   test_tracemallocr   )r#   r   r{   __closure__r   assertInrS   assertNotIn)rk   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   re   N)ro   rp   rq   rr   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   requires_forkr  r  rs   re   r   r   ru   ru   q   sw    *33(3(%8.8"BH&902;2	5 2 2Er   ru   c                   f    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rSrg)TestSnapshoti  i  c           	         S/n[         R                  " 5        nUR                  [        R                  " [
        SSS95        UR                  [        R                  " [
        SSS95        UR                  [        R                  " [
        SUS95        [
        R                  " 5       nU R                  UR                  S5        U R                  [        UR                  5      S5        UR                  S	   nU R                  UR                  S5        U R                  UR                  R                  S
5        U R                  [        UR                  5      S5        U R                  UR                  S	   R                  S5        U R                  UR                  S	   R                  S5        S S S 5        g ! , (       d  f       g = f)N)r   r:   )r1   r0   ry   T)return_valuer$   r:   r   r   r   r0   r2   r.   )
contextlib	ExitStackenter_contextr   objectr#   r   rj   rI   r(   r   r)   rU   r   rS   r   )rk   rJ   stackrK   r   s        r   test_create_snapshot!TestSnapshot.test_create_snapshot  s[   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F<<
G
c                 :   [        5       u  p[        R                  " SS5      n[        R                  " SSS5      n[        R                  " SSS5      n[        UR                  R
                  5      nUR                  U45      nU R                  UR                  R
                  / SQ5        U R                  UR                  R
                  U5        UR                  XE45      nU R                  UR                  R
                  / SQ5        UR                  S	5      n	U R                  X5        U R                  U	R                  UR                  5        U R                  U	R                  UR                  5        U R                  [        UR                  U5        g )
NFr4   Tr2   r.   r:   )r/   r/   r/   r7   r>   )r/   r/   r/   r7   re   )rN   r#   Filterr   r   _tracesfilter_tracesrj   assertIsNotr   	TypeError)
rk   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                    [        5       u  p[        R                  " SSSS9n[        R                  " SSSS9n[        UR                  R
                  5      nUR                  U45      nU R                  UR                  R
                  / SQ5        UR                  U45      nU R                  UR                  R
                  / SQ5        g )NFr2   r   r   T)r/   r/   r/   r;   r>   )rN   r#   r.  r   r   r/  r0  rj   )rk   rK   rM   r3  r4  r6  r7  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                 V   [        5       u  p[        R                  " SSS9n[        R                  " SSS9nUR                  U45      nU R	                  UR
                  R                  / SQ5        UR                  U45      nU R	                  UR
                  R                  S/5        g )NFr6   r=  T)r/   r/   r/   r7   r;   r>   )rN   r#   DomainFilterr0  rj   r   r/  )rk   rK   rM   r3  r4  r7  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                    [        5       u  p[        SS5      n[        SS5      n[        SS5      n[        SS5      n[        SS	5      nUR                  S
5      nU R                  U[        R
                  " USS5      [        R
                  " USS5      [        R
                  " USS5      [        R
                  " USS5      /5        UR                  S
5      n	U R                  U	[        R
                  " USS5      [        R
                  " USS5      [        R
                  " USS5      /5        UR                  US
5      n
U R                  U
[        R                  " USSSS5      [        R                  " USSSS5      [        R                  " USSSS5      [        R                  " USSSS5      [        R                  " USSSS5      /5        g )NrB   r   r2   r.   r:   r4   r   rF   rG   r   r<      r6   r?     rD   rC   r   )rN   rW   
statisticsrj   r#   	Statistic
compare_toStatisticDiff)rk   rK   rM   tb_0tb_a_2tb_a_5tb_b_1tb_c_578stats1stats2rI  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                    [        5       u  p[        S5      n[        S5      n[        S5      n[        S5      nUR                  S5      nU R                  U[        R
                  " USS5      [        R
                  " USS	5      [        R
                  " US
S5      /5        UR                  S5      nU R                  U[        R
                  " USS5      [        R
                  " USS5      /5        UR                  US5      n	U R                  U	[        R                  " USSSS5      [        R                  " USSSS5      [        R                  " USSSS5      [        R                  " USSSS5      /5        g )NrB   r2   r4   rF   rS   r<   r       r5   r?   i  r:   rD   rC   r   rG  r   rH  )rN   rZ   rI  rj   r#   rJ  rK  rL  )
rk   rK   rM   rM  tb_atb_btb_crR  rS  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                    [        5       u  p[        SS5      n[        SS5      n[        S5      n[        S5      nUR                  S5      nU R                  U[        R
                  " USS5      [        R
                  " US	S
5      [        R
                  " USS5      [        R
                  " USS5      /5        [        S5      nUR                  S5      n	U R                  U	[        R
                  " USS5      [        R
                  " USS5      [        R
                  " US	S
5      /5        UR                  US5      n
U R                  U
[        R                  " USSSS5      [        R                  " USSSS5      [        R                  " USSSS5      [        R                  " USSSS5      [        R                  " US	SS
S5      /5        U R                  [        UR                  SSS9  g )Nr1   r3   r9   r=   rA   rU   r<   r   rE  r6   r?   r.   rE   rF  rD   rC   r   rG  r   rH  T)
cumulative)
rN   rU   rI  rj   r#   rJ  rK  rL  r   r   )rk   rK   rM   tb1tb2tb3tb4rR  tb5rS  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                    [        5       u  p[        S5      n[        S5      n[        S5      n[        SS5      n[        SS5      n[        SS5      n[        SS5      n	UR                  SS	5      n
U R	                  U
[
        R                  " US
S5      [
        R                  " USS5      [
        R                  " USS5      /5        UR                  SS	5      n
U R	                  U
[
        R                  " USS5      [
        R                  " U	SS5      [
        R                  " USS5      [
        R                  " USS5      [
        R                  " USS5      /5        g )NrB   r2   r4   r.   r:   r   r5   rS   Tb   rW  r?   r   r<   rE  r6   )rN   rZ   rW   rI  rj   r#   rJ  )rk   rK   rM   rM  rX  rY  rN  rO  rP  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                     [        5       u  pUR                  S   nU R                  [        U5      S5        UR                  nU R                  [        U5      S5        US   nU R                  [        U5      S5        g )Nr   zb.py:4: 10 Bzb.py:4)rN   r   rj   ri   rU   )rk   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                 ~    [        5       u  pUR                  S5      nUS   nU R                  [        U5      S5        g )Nr   r   z(b.py:1: size=66 B, count=1, average=66 B)rN   rI  rj   ri   rk   rK   rM   rj  stats        r   test_statistic_format"TestSnapshot.test_statistic_format}  s>    .0##H-QxTC	Er   c                     [        5       u  pUR                  US5      nUS   nU R                  [        U5      S5        g )Nr   r   z;a.py:5: size=5002 B (+5000 B), count=2 (+1), average=2501 B)rN   rK  rj   ri   rq  s        r   test_statistic_diff_format'TestSnapshot.test_statistic_diff_format  s@    .0$$Xx8QxTV	Xr   c                     [        5       u  pU R                  UR                  S S UR                  S   UR                  S   45        UR                  S   R                  nU R                  US S US   US   45        g )Nr.   r   r   )rN   rj   r   rU   )rk   rK   rM   rU   s       r   test_slicesTestSnapshot.test_slices  s    .0!,"//!,hooa.@A	C OOA&00	2A#A,	!5	7r   c                 V   [        5       u  pS n[        R                  R                  SUS9   UR                  S   R
                  nU R                  UR                  5       / SQ5        U R                  UR                  SS9SS	/5        U R                  UR                  S
S9SS/5        U R                  UR                  SS9/ SQ5        U R                  UR                  SSS9SS	/5        U R                  UR                  S
SS9SS/5        S S S 5        g ! , (       d  f       g = f)Nc                     SU < SU< S3$ )Nz  <z, rh   re   rR   s     r   getline3TestSnapshot.test_format_traceback.<locals>.getline  s    #+V44r   ztracemalloc.linecache.getline)side_effectr   )  File "b.py", line 4    <b.py, 4>  File "a.py", line 2    <a.py, 2>r   )limitr  r  r   r  r  T)most_recent_first)r  r  r  r  )r  r  )rN   unittestmockr   r   rU   rj   format)rk   rK   rM   r}  tbs        r   test_format_traceback"TestSnapshot.test_format_traceback  s4   .0	5]]  !@-4 ! 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 6s   C#D
D(re   N)ro   rp   rq   rr   maxDiffr+  r:  r>  rB  rT  r\  re  rk  rn  rs  rv  ry  r  rs   re   r   r   r#  r#    sO    G;*$FL6*!F>$ML8/EX7!0r   r#  c                   6    \ rS rSrSrS rS rS rS rS r	Sr
g	)
TestFiltersi  r   c                 j   [         R                  " SS5      nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                  5        U R                  UR                  S5        [         R                  " SSSS5      nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        [         R                  " SSSSS9nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  [        [        USS5        g )NTabcFztest.pyr   )	inclusivefilename_patternr   
all_framesr  )r#   r.  rj   r  r  r   r   r  r   AttributeErrorsetattrrk   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                 h
   [         R                  " SS5      nU R                  UR                  SS5      5        U R                  UR                  SS5      5        U R                  UR                  SS5      5        U R	                  UR                  SS5      5        U R	                  UR                  SS5      5        U R	                  UR                  SS5      5        [         R                  " SS5      nU R	                  UR                  SS5      5        U R	                  UR                  SS5      5        U R	                  UR                  SS5      5        U R                  UR                  SS5      5        U R                  UR                  SS5      5        U R                  UR                  SS5      5        [         R                  " SSS5      nU R	                  UR                  SS5      5        U R                  UR                  SS5      5        U R	                  UR                  SS5      5        U R	                  UR                  SS5      5        U R	                  UR                  SS5      5        U R	                  UR                  SS5      5        [         R                  " SSS5      nU R                  UR                  SS5      5        U R	                  UR                  SS5      5        U R                  UR                  SS5      5        U R                  UR                  SS5      5        U R                  UR                  SS5      5        U R                  UR                  SS5      5        [         R                  " SSS5      nU R                  UR                  SS5      5        U R	                  UR                  SS5      5        U R	                  UR                  SS5      5        U R	                  UR                  SS5      5        U R	                  UR                  SS5      5        U R	                  UR                  SS5      5        [         R                  " SSS5      nU R	                  UR                  SS5      5        U R                  UR                  SS5      5        U R                  UR                  SS5      5        U R                  UR                  SS5      5        U R                  UR                  SS5      5        U R                  UR                  SS5      5        g )NTr  r   r:   r0   12356F)r#   r.  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                 6   S nU R                  U" SSS5      5        U R                  U" SSS5      5        U R                  U" SSS5      5        U R                  U" SSS5      5        U R                  U" SSS5      5        U R                  U" SSS5      5        g )Nc                 R    [         R                  " X5      nUR                  US5      $ rY   r#   r.  r  )r  rS   patternr  s       r   fnmatch7TestFilters.test_filter_match_filename.<locals>.fnmatch	  s#    ""96A>>(A..r   Tr  r  rB   F)r   r   rk   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                 ~   S nU R                  U" SS5      5        U R                  U" SS5      5        U R                  U" SS5      5        U R                  U" SS5      5        U R                  U" SS5      5        U R                  U" SS5      5        U R                  U" SS5      5        U R                  U" SS5      5        U R                  U" SS5      5        U R                  U" SS	5      5        U R                  U" SS
5      5        U R                  U" SS5      5        U R                  U" SS5      5        U R                  U" SS5      5        U R                  U" SS5      5        U R                  U" SS5      5        U R                  U" SS5      5        U R                  U" SS5      5        U R                  U" SS5      5        U R                  U" SS5      5        U R                  U" SS5      5        [        R                  S:X  aa  U R                  U" SS5      5        U R                  U" SS5      5        U R                  U" SS5      5        U R                  U" SS5      5        O`U R                  U" SS5      5        U R                  U" SS5      5        U R                  U" SS5      5        U R                  U" SS5      5        [        R                  S:X  aa  U R                  U" SS 5      5        U R                  U" S S5      5        U R                  U" S!S"5      5        U R                  U" S#S$5      5        O`U R                  U" SS 5      5        U R                  U" S S5      5        U R                  U" S!S"5      5        U R                  U" S#S$5      5        U R                  U" S%S5      5        g )&Nc                 T    [         R                  " SU5      nUR                  U S5      $ )NTr   r  )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.pyo)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                 H   SnSnSnSn[         R                  " SSSS9nU R                  UR                  U5      5        U R                  UR                  U5      5        U R	                  UR                  U5      5        U R	                  UR                  U5      5        [         R                  " SSSS9nU R	                  UR                  U5      5        U R                  UR                  U5      5        U R	                  UR                  U5      5        U R	                  UR                  U5      5        [         R                  " SSSS9nU R	                  UR                  U5      5        U R	                  UR                  U5      5        U R                  UR                  U5      5        U R                  UR                  U5      5        [         R                  " SSSS9nU R                  UR                  U5      5        U R	                  UR                  U5      5        U R                  UR                  U5      5        U R                  UR                  U5      5        [         R                  " SS	SS9nU R                  UR                  U5      5        U R                  UR                  U5      5        U R                  UR                  U5      5        U R	                  UR                  U5      5        [         R                  " SS	SS9nU R	                  UR                  U5      5        U R	                  UR                  U5      5        U R                  UR                  U5      5        U R                  UR                  U5      5        [         R                  " SS	SS9nU R                  UR                  U5      5        U R                  UR                  U5      5        U R	                  UR                  U5      5        U R	                  UR                  U5      5        g )
N)r1   )r4   r6   )r3   )r4   r:   ))rF   r:   rA   r@   Tr4   )r  FrB   )r#   r.  r   _match_tracebackr   )rk   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   re   N)ro   rp   rq   rr   r  r  r  r  r  r  rs   re   r   r   r  r    s$    GQ225h<C3J.6r   r  c                       \ rS rSrS r\R                  " \" 5       S5      S 5       rS r	S r
S r\S 5       rS	 rS
 rS r\S 5       r\R                  " \SL S5      S 5       rSrg)TestCommandLinei  c                 j    Sn[        SU5      u  p#nUR                  5       nU R                  US5        g )N3import tracemalloc; print(tracemalloc.is_tracing())-c   Falser   rstriprj   rk   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                 j    Sn[        SSUSS9u  p#nUR                  5       nU R                  US5        g)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                 h    Sn[        SUSS9u  p#nUR                  5       nU R                  US5        g )Nr  r  0r  r  r  r  s        r   test_env_var_disabled%TestCommandLine.test_env_var_disabled  s5    D-dDCPF*r   c                 h    Sn[        SUSS9u  p#nUR                  5       nU R                  US5        g )Nr  r  r  r  s   Truer  r  s        r   test_env_var_enabled_at_startup/TestCommandLine.test_env_var_enabled_at_startup  s5    D-dDCPF)r   c                 h    Sn[        SUSS9u  p#nUR                  5       nU R                  US5        g )N<import tracemalloc; print(tracemalloc.get_traceback_limit())r  10r  s   10r  r  s        r   test_env_limitTestCommandLine.test_env_limit  s5    M-dDDQF'r   c                     [         R                  " 5          [        SS[        U5      S9u  p#nS S S 5        SW;   a  g SU;   a  g U R	                  SU< 35        g ! , (       d  f       N2= f)Nr  passr  1   ValueError: the number of frames must be in ranges+   PYTHONTRACEMALLOC: invalid number of framesunexpected output: )r   SuppressCrashReportr   ri   r   )rk   r   r  r  r  s        r   check_env_var_invalid%TestCommandLine.check_env_var_invalid  sd    ((*!6f"%f+"/B +
 @6I9VC		'z23 +*s   A
A(c                     [          H,  nU R                  US9   U R                  U5        S S S 5        M.     g ! , (       d  f       M@  = fNr   )INVALID_NFRAMEsubTestr  rk   r   s     r   test_env_var_invalid$TestCommandLine.test_env_var_invalid  s7    $FV,**62 -, %,,	   8
A	c                    S Hj  u  pU R                  XS9   Sn[        SUSU5      u  pEnUR                  5       nU R                  U[	        U5      R                  S5      5        S S S 5        Ml     g ! , (       d  f       M~  = f)N))r#   r   )ztracemalloc=1r   )ztracemalloc=15   )xoptionsr   r  -Xr  ascii)r  r   r  rj   ri   encode)rk   r  r   r   r  r  r  s          r   test_sys_xoptions!TestCommandLine.test_sys_xoptions  sx    !
H
 x?U%5dHdD%Q"F  V););G)DE	 @?!

 @?s   AA22
B	c                     SSU-  SS4n[         R                  " 5          [        U6 u  p4nS S S 5        SW;   a  g SU;   a  g U R                  SU< 35        g ! , (       d  f       N2= f)Nr  ztracemalloc=%sr  r  r  s/   -X tracemalloc=NFRAME: invalid number of framesr  )r   r  r   r   )rk   r   rb   r  r  r  s         r   check_sys_xoptions_invalid*TestCommandLine.check_sys_xoptions_invalid  sl    &/v>((*!6!=B + @6I=G		'z23 +*s   A
A%c                     [          H,  nU R                  US9   U R                  U5        S S S 5        M.     g ! , (       d  f       M@  = fr  )r  r  r  r  s     r   test_sys_xoptions_invalid)TestCommandLine.test_sys_xoptions_invalid  s7    $FV,//7 -, %,,r  Nneed _testcapic                 $    Sn[        SSSU5        g )Nz2import _testcapi; _testcapi.test_pymem_alloc0(); 1r  r#   r  )r   rk   r   s     r   test_pymem_alloc0!TestCommandLine.test_pymem_alloc0  s     D}dD9r   re   )ro   rp   rq   rr   r  r  skipIfr   r  r  r  r  r   r  r  r  r  r  	_testcapir  rs   re   r   r   r  r    s    + __57MO+O++*( 
4 
43

F	4 8 8
 __Y$&(89: ::r   r  r  c                      \ rS rSrSrS rS rS rSS jrSS jr	S r
S	 rS
 rS rS rS rS rS rS rS r\R*                  " \SL S5      \R0                  " 5       \R*                  " \R4                  S5      S 5       5       5       rS rSrg)TestCAPIr   i@  c                     [         R                  " 5       (       a  U R                  S5        SU l        SU l        [        U R                  5      S   U l        [        U R                  5      U l        g )Nrx   r:   r   r   )	r#   ry   rz   r   r)   r,   r   idptrr|   s    r   r}   TestCAPI.setUp  sR    !!##MMGH	!$)),Q/ dhh<r   c                 .    [         R                  " 5         g rP   r   r|   s    r   r   TestCAPI.tearDown  r   r   c                     [         R                  " U R                  U R                  5      nUb  [        R
                  " U5      $ g rP   )_testinternalcapi_PyTraceMalloc_GetTracebackr   r  r#   r&   )rk   r   s     r   get_tracebackTestCAPI.get_traceback  s6    ">>t{{DHHU((00r   c                     [        US5      n[        R                  " U R                  U R                  U R
                  U5        U$ )Nr   )r    r	  tracemalloc_trackr   r  r)   )rk   release_gilr   r   s       r   trackTestCAPI.track  s6    FA&##DKK499$/	1r   c                 \    [         R                  " U R                  U R                  U5        g rP   )r	  tracemalloc_untrackr   r  rk   r  s     r   untrackTestCAPI.untrack  s    %%dkk488[Ir   c                     [         R                  " 5       n[         R                  " SU R                  5      nUR	                  U/5      n[        S UR                   5       5      $ )NTc              3   8   #    U  H  oR                   v   M     g 7frP   r   ).0r   s     r   	<genexpr>-TestCAPI.get_traced_memory.<locals>.<genexpr>  s     ;?%::?s   )r#   r   rA  r   r0  r   r   )rk   rK   domain_filters      r   r   TestCAPI.get_traced_memory  sM    ,,.#00t{{C))=/:;8??;;;r   c                 B   Sn[         R                  " U5        [         R                  " 5       S   nU R                  X5      nU R	                  U R                  5       [         R                  " U5      5        U R	                  U R                  5       U R                  5        g )Nr:   r   )r#   r{   r   r  rj   r  r&   r)   )rk   r  r   r)   r   s        r   check_trackTestCAPI.check_track  s|    &!,,.q1K0++-$..v6	8 	//1499=r   c                 &    U R                  S5        g NFr)  r|   s    r   
test_trackTestCAPI.test_track  s    r   c                 &    U R                  S5        g NTr-  r|   s    r   test_track_without_gilTestCAPI.test_track_without_gil!  s     	r   c                     Sn[         R                  " U5        U R                  5         U R                  US9nU R                  U R	                  5       [         R
                  " U5      5        g )Nr:   r  )r#   r{   r  rj   r  r&   )rk   r   r   s      r   test_track_already_tracked#TestCAPI.test_track_already_tracked&  sY    &! 	

 6*++-$..v6	8r   c                    [         R                  " 5         U R                  5         U R                  U R	                  5       5        U R                  U R                  5       U R                  5        U R                  U5        U R                  U R	                  5       5        U R                  U R                  5       S5        U R                  U5        U R                  U5        g rY   )
r#   r{   r  r   r  rj   r   r)   r  r   r  s     r   check_untrackTestCAPI.check_untrack3  s    

T//12//1499= 	[!$,,.///115 	[![!r   c                 &    U R                  S5        g r,  r8  r|   s    r   test_untrackTestCAPI.test_untrackC  s    5!r   c                 &    U R                  S5        g r1  r;  r|   s    r   test_untrack_without_gil!TestCAPI.test_untrack_without_gilF  s    4 r   c                    [         R                  " 5         [         R                  " 5         U R                  [        5         U R                  5         S S S 5        U R                  U R                  5       5        g ! , (       d  f       N.= frP   )r#   r{   r   r   r   r  r   r  r|   s    r   test_stop_trackTestCAPI.test_stop_trackI  sV    |,JJL -$,,./ -,s    A99
Bc                     [         R                  " 5         U R                  5         [         R                  " 5         U R	                  [
        5         U R                  5         S S S 5        g ! , (       d  f       g = frP   )r#   r{   r  r   r   r   r  r|   s    r   test_stop_untrackTestCAPI.test_stop_untrackQ  sF    

|,LLN -,,s   A**
A8Nr  zneed release buildc                 .    [         R                  " 5         g rP   )r	  tracemalloc_track_racer|   s    r   test_tracemalloc_track_race$TestCAPI.test_tracemalloc_track_raceY  s     	((*r   c                 X    [         R                  " S[         S35      n[        SU5        g )Na  
            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  )textwrapdedentDEFAULT_DOMAINr   r  s     r   test_late_untrackTestCAPI.test_late_untracka  s3     $ %% &	  ( 	t$r   )r   r   r  r)   )Fr   )F)ro   rp   rq   rr   r  r}   r   r  r  r  r   r)  r.  r2  r5  r8  r<  r?  rB  rE  r  r  r	  r
   requires_working_threadingr   Py_DEBUGrI  rO  rs   re   r   r   r  r    s    G
 J<
> 
8" "!0 __Y$&(89002__W%%';<+ = 3 :+%r   r  __main__)*r&  r
  r   rL  r#   r  unittest.mockr   test.support.script_helperr   r   r   testr   test.supportr   r	   r
   r	  r  ImportErrorrN  	getsizeofr%   r  r    r,   rN   r   rU   rW   rZ   TestCaser\   ru   r#  r  r  r  r  ro   mainre   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M%x   M% 6M%` zMMO O#  Is   D$ $
D10D1