+
    Bi:                     n   ^ RI t ^ RIt^ RIt^ RIt ^ RIHt  ^ RIHt ^ RIH	t	  ! R R4      t
 ! R	 R
]
4      t] ! R R]
4      4       t] ! R R]
4      4       t ! R R]4      t ! R R]4      t ! R R4      t ! R R]]P"                  4      t ! R R4      t ! R R]]4      t ! R R]]4      t ! R R]]4      t ! R R ]]P"                  4      t ! R! R"4      t ! R# R$]]4      t ! R% R&]]4      t ! R' R(]]4      t ! R) R*]]P"                  4      t ! R+ R,]4      t] ! R- R.]4      4       t] ! R/ R0]4      4       t] ! R1 R2]]4      4       t ]	PB                   ! R3 R4]]P"                  4      4       t"]#R58X  d   ]PH                  ! 4        R# R#   ] d    R t ELi ; i  ] d    R t ELi ; i)6    N)with_tp_delc                 $     ! R  R\         4      pV# )c                   &   a  ] tR t^t o R tRtV tR# )with_tp_del.<locals>.Cc                .    \         P                  ! R 4      h)zrequires _testcapi.with_tp_delunittestSkipTestclsargskwargss   &*,-/usr/lib/python3.14/test/test_finalization.py__new__with_tp_del.<locals>.C.__new__   s    ''(HII     N__name__
__module____qualname____firstlineno__r   __static_attributes____classdictcell____classdict__s   @r   Cr      s     J Jr   r   )objectr   r   s   & r   r   r      s    	J 	J r   )
without_gcc                      ! R  R4      pV# )c                   &   a  ] tR t^t o R tRtV tR# )without_gc.<locals>.Cc                .    \         P                  ! R 4      h)zrequires _testcapi.without_gcr   r   s   &*,r   r   without_gc.<locals>.C.__new__   s    ''(GHHr   r   Nr   r   s   @r   r   r#      s     I Ir   r   r   r   s   & r   r    r       s    	I 	I r   )supportc                      a  ] tR t^t o . t. t. t. tRtRt	]
R 4       t]
]P                  R 4       4       tR tR tR tRtV tR# )	NonGCSimpleBaseFc                <   V P                   P                  4        V P                  P                  4        \        P                  P                  4        \        P
                  ! 4        V P                  P                  4        V P                  P                  4        R # N)	survivorsclearerrorsgcgarbagecollect	del_callstp_del_callsr   s   &r   _cleanupNonGCSimpleBase._cleanup.   s]    







 r   c              #    "   \         P                  ! 4       ;_uu_ 4        V P                  P                  4        V P                  P                  4        R \
        n         Rx  V P                  '       d   V P                  ^ ,          h R\
        n        V P                  4         RRR4       R#   R\
        n        T P                  4        i ; i  + '       g   i     R# ; i5i)FNT)	r&   
disable_gcr1   r,   r2   r(   	_cleaningr-   r4   r3   s   &r   testNonGCSimpleBase.test7   s      !!MM!""$(-O%:::**Q-'  -1) "! -1) "!!s5   C%A C!)B1C'
C%1CCC"		C%c                    R # r*   r   selfs   &r   check_sanityNonGCSimpleBase.check_sanityI       r   c                     V P                   '       gG   V P                  P                  \        V 4      4       V P	                  4        V P                  4        R # R #   \         d'   pT P                  P                  T4        R p?R # R p?ii ; ir*   )r8   r1   appendidr>   side_effect	Exceptionr-   r=   es   & r   __del__NonGCSimpleBase.__del__N   sj    
	">>>%%bh/!!#  " "  	"KKq!!	"   A AA B'BBc                    R # r*   r   r<   s   &r   rD   NonGCSimpleBase.side_effect[   r@   r   r   N)r   r   r   r   r+   r1   r2   r-   r8   	__slots__classmethodr4   
contextlibcontextmanagerr9   r>   rH   rD   r   r   r   s   @r   r(   r(      sm      IILFII! !    
" r   r(   c                   ,   a  ] tR t^at o R tR tRtV tR# )
SimpleBasec                &    \        V 4      V n        R # r*   )rC   id_r<   s   &r   __init__SimpleBase.__init__c   s    d8r   c                    R # r*   r   r<   s   &r   r>   SimpleBase.check_sanityf   s    r   )rT   N)r   r   r   r   rU   r>   r   r   r   s   @r   rR   rR   a   s     $ $r   rR   c                       ] tR t^jtRtRtR# )NonGCr   N)r   r   r   r   rM   r   r   r   r   rZ   rZ   j   s    Ir   rZ   c                   *   a  ] tR t^nt o RtR tRtV tR# )NonGCResurrectorc                <    V P                   P                  V 4       R # r*   r+   rB   r<   s   &r   rD   NonGCResurrector.side_effectr        	d#r   r   N)r   r   r   r   rM   rD   r   r   r   s   @r   r\   r\   n   s     I$ $r   r\   c                       ] tR t^xtRtR# )Simpler   Nr   r   r   r   r   r   r   r   rb   rb   x       r   rb   c                   &   a  ] tR t^|t o R tRtV tR# )SimpleResurrectorc                <    V P                   P                  V 4       R # r*   r^   r<   s   &r   rD   SimpleResurrector.side_effect~   r`   r   r   Nr   r   r   r   rD   r   r   r   s   @r   rf   rf   |   s     $ $r   rf   c                   J   a  ] tR t^t o R tR tR tR tR tR t	R t
RtV tR	# )
TestBasec                d    \         P                  R ,          V n        . \         P                  R &   R# ):NNNN)r.   r/   old_garbager<   s   &r   setUpTestBase.setUp   s    ::a=

1r   c                     V P                  \        P                  . 4       V =\        P                  ! 4        R #   T =\        P                  ! 4        i ; ir*   )assertEqualr.   r/   rm   r0   r<   s   &r   tearDownTestBase.tearDown   s=    	RZZ, JJL  JJLs	    ; Ac                j    V P                  \        \        P                  4      \        V4      4       R # r*   )rq   sortedrR   r1   r=   idss   &&r   assert_del_callsTestBase.assert_del_calls   s!    
 4 45vc{Cr   c                j    V P                  \        \        P                  4      \        V4      4       R # r*   )rq   ru   rR   r2   rv   s   &&r   assert_tp_del_callsTestBase.assert_tp_del_calls   s!    
 7 78&+Fr   c                x    V P                  \        R  \        P                   4       4      \        V4      4       R# )c              3   8   "   T F  p\        V4      x  K  	  R # 5ir*   rC   .0xs   & r   	<genexpr>,TestBase.assert_survivors.<locals>.<genexpr>   s     D/C!1/C   N)rq   ru   rR   r+   rv   s   &&r   assert_survivorsTestBase.assert_survivors   s'    Dz/C/CDDfSkRr   c                x    V P                  \        R  \        P                   4       4      \        V4      4       R# )c              3   8   "   T F  p\        V4      x  K  	  R # 5ir*   r   r   s   & r   r   *TestBase.assert_garbage.<locals>.<genexpr>   s     :z!1zr   N)rq   ru   r.   r/   rv   s   &&r   assert_garbageTestBase.assert_garbage   s%    :rzz::F3KHr   c                B    \         P                  P                  4        R # r*   )rR   r+   r,   r<   s   &r   clear_survivorsTestBase.clear_survivors   s    ""$r   )rm   N)r   r   r   r   rn   rr   rx   r{   r   r   r   r   r   r   s   @r   rk   rk      s1     DGSI% %r   rk   c                   t   a  ] tR t^t o R tR t]P                  R 4       t]P                  R 4       t	Rt
V tR# )SimpleFinalizationTestc                   \         P                  4       ;_uu_ 4        \        4       p\        V4      .p\        P
                  ! V4      p?\        P                  ! 4        V P                  V4       V P                  . 4       V P                  V! 4       R 4       \        P                  ! 4        V P                  V4       V P                  . 4       R R R 4       R #   + '       g   i     R # ; ir*   )rR   r9   rb   rC   weakrefrefr.   r0   rx   r   assertIsr=   srw   wrs   &   r   test_simple"SimpleFinalizationTest.test_simple   s    __Aa5'CQBJJL!!#&!!"%MM"$%JJL!!#&!!"%    B3CC+	c                (   \         P                  4       ;_uu_ 4        \        4       p\        V4      .p\        P
                  ! V4      p?\        P                  ! 4        V P                  V4       V P                  V4       V P                  V! 4       R 4       V P                  4        \        P                  ! 4        V P                  V4       V P                  . 4       R R R 4       V P                  X! 4       R 4       R #   + '       g   i     L); ir*   )rR   r9   rf   rC   r   r   r.   r0   rx   r   assertIsNotr   r   r   s   &   r   test_simple_resurrect,SimpleFinalizationTest.test_simple_resurrect   s    __!#Aa5'CQBJJL!!#&!!#&RT4(  "JJL!!#&!!"%  	bdD! s   CDD	c                   \         P                  4       ;_uu_ 4        \        4       pV P                  \        P
                  ! V4      4       \        V4      .p?\        P                  ! 4        V P                  V4       V P                  . 4       \        P                  ! 4        V P                  V4       V P                  . 4       R R R 4       R #   + '       g   i     R # ; ir*   )
rR   r9   rZ   assertFalser.   
is_trackedrC   r0   rx   r   r=   r   rw   s   &  r   test_non_gc"SimpleFinalizationTest.test_non_gc   s    __AR]]1-.a5'CJJL!!#&!!"%JJL!!#&!!"% s   B+CC#	c                   \         P                  4       ;_uu_ 4        \        4       pV P                  \        P
                  ! V4      4       \        V4      .p?\        P                  ! 4        V P                  V4       V P                  V4       V P                  4        \        P                  ! 4        V P                  V^,          4       V P                  V4       RRR4       R#   + '       g   i     R# ; i   N)rR   r9   r\   r   r.   r   rC   r0   rx   r   r   r   s   &  r   test_non_gc_resurrect,SimpleFinalizationTest.test_non_gc_resurrect   s    __ "AR]]1-.a5'CJJL!!#&!!#&  "JJL!!#'*!!#& s   CC))C:	r   N)r   r   r   r   r   r   r&   cpython_onlyr   r   r   r   r   s   @r   r   r      sC     
&"  & & ' 'r   r   c                   >   a a ] tR t^t oV 3R ltV 3R ltRtVtV ;t# )SelfCycleBasec                0   < \         SV `  4        W n        R # r*   )superrU   r   r=   	__class__s   &r   rU   SelfCycleBase.__init__   s    r   c                $   < \         SV `  4        R # r*   )r   r>   r   s   &r   r>   SelfCycleBase.check_sanity   s    r   r   )	r   r   r   r   rU   r>   r   r   __classcell__r   r   s   @@r   r   r      s        r   r   c                       ] tR t^tRtR# )SimpleSelfCycler   Nrc   r   r   r   r   r      rd   r   r   c                       ] tR t^tRtR# )SelfCycleResurrectorr   Nrc   r   r   r   r   r      rd   r   r   c                   &   a  ] tR t^t o R tRtV tR# )SuicidalSelfCyclec                    R V n         R # r*   r   r<   s   &r   rD   SuicidalSelfCycle.side_effect   s     r   r   Nri   r   s   @r   r   r      s      r   r   c                   2   a  ] tR t^t o R tR tR tRtV tR# )SelfCycleFinalizationTestc                   \         P                  4       ;_uu_ 4        \        4       p\        V4      .p\        P
                  ! V4      p?\        P                  ! 4        V P                  V4       V P                  . 4       V P                  V! 4       R 4       \        P                  ! 4        V P                  V4       V P                  . 4       R R R 4       R #   + '       g   i     R # ; ir*   )rR   r9   r   rC   r   r   r.   r0   rx   r   r   r   s   &   r   r   %SelfCycleFinalizationTest.test_simple  s    __!Aa5'CQBJJL!!#&!!"%MM"$%JJL!!#&!!"% r   c                *   \         P                  4       ;_uu_ 4        \        4       p\        V4      .p\        P
                  ! V4      p?\        P                  ! 4        V P                  V4       V P                  V4       V P                  V! 4       R 4       V P                  4        \        P                  ! 4        V P                  V4       V P                  . 4       V P                  V! 4       R 4       R R R 4       R #   + '       g   i     R # ; ir*   )rR   r9   r   rC   r   r   r.   r0   rx   r   r   r   r   s   &   r   r   /SelfCycleFinalizationTest.test_simple_resurrect  s    __$&Aa5'CQBJJL!!#&!!#&MM"$%   "JJL!!#&!!"%MM"$%! s   CDD	c                
   \         P                  4       ;_uu_ 4        \        4       p\        V4      .p\        P
                  ! V4      p?\        P                  ! 4        V P                  V4       V P                  . 4       V P                  V! 4       R 4       \        P                  ! 4        V P                  V4       V P                  . 4       V P                  V! 4       R 4       R R R 4       R #   + '       g   i     R # ; ir*   )rR   r9   r   rC   r   r   r.   r0   rx   r   r   r   s   &   r   test_simple_suicide-SelfCycleFinalizationTest.test_simple_suicide%  s     __!#Aa5'CQBJJL!!#&!!"%MM"$%JJL!!#&!!"%MM"$% s   C
C11D	r   N)	r   r   r   r   r   r   r   r   r   r   s   @r   r   r      s     &&(& &r   r   c                   8   a a ] tR tRt oR tV 3R ltRtVtV ;t# )ChainedBasei7  c                ,    R V n         Wn        Wn        R# )FNsuicidedleftright)r=   r   s   &&r   chainChainedBase.chain9  s    	
r   c                   < \         SV `  4        V P                  '       d   R # V P                  pVP                  '       d    V P                  pVP                  '       d   R # R # r*   )r   r>   r   r   r   )r=   r   r   r   s   &  r   r>   ChainedBase.check_sanity>  s?    === 99D}}} JJE~~~r   )r   r   )	r   r   r   r   r   r>   r   r   r   r   s   @@r   r   r   7  s     
* *r   r   c                       ] tR tRtRtR# )SimpleChainediO  r   Nrc   r   r   r   r   r   O  rd   r   r   c                       ] tR tRtRtR# )ChainedResurrectoriR  r   Nrc   r   r   r   r   r   R  rd   r   r   c                   &   a  ] tR tRt o R tRtV tR# )SuicidalChainediU  c                0    R V n         RV n        RV n        R# )TNr   r<   s   &r   rD   SuicidalChained.side_effectW  s     	
r   )r   r   r   Nri   r   s   @r   r   r   U  s      r   r   c                   b   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V tR# )CycleChainFinalizationTesti`  c                    V Uu. uF	  q"! 4       NK  	  pp\        \        V4      4       F'  pW4,          P                  W4^,
          ,          4       K)  	  V# u upi )   )rangelenr   )r=   classesr   nodesis   &&   r   build_chain&CycleChainFinalizationTest.build_chaing  sI    ")*'3'*s5z"AHNN51:& # +s   Ac           	     d   \        V4      p\        P                  4       ;_uu_ 4        V P                  V4      pV Uu. uF  p\	        V4      NK  	  ppV Uu. uF  p\
        P                  ! V4      NK  	  pp?\        P                  ! 4        V P                  V4       V P                  . 4       T P                  V Uu. uF	  qw! 4       NK  	  upR .V,          4       \        P                  ! 4        V P                  V4       R R R 4       R # u upi u upi u upi   + '       g   i     R # ; ir*   )r   rR   r9   r   rC   r   r   r.   r0   rx   r   rq   )r=   r   Nr   r   rw   wrsr   s   &&      r   check_non_resurrecting_chain7CycleChainFinalizationTest.check_non_resurrecting_chainm  s    L__$$W-E"'(%Q2a5%C(+015a7;;q>5C1JJL!!#&!!"%S1SrbdS1D6A:>JJL!!#& (1
 2 s5   DDDD7A	D D6DDD/	c           	     *   \        V4      p\        P                  4       ;_uu_ 4        V P                  V4      p\        V4      pV Uu. uF  p\	        V4      NK  	  ppV Uu. uF&  p\        V\        4      '       g   K  \	        V4      NK(  	  ppV Uu. uF  p\        P                  ! V4      NK  	  pp?\        P                  ! 4        V P                  V4       V P                  V4       T P                  V Uu. uF	  q! 4       NK  	  upR .V,          4       V P                  4        \        P                  ! 4        V P                  V4       V P                  . 4       R R R 4       R # u upi u upi u upi u upi   + '       g   i     R # ; ir*   )r   rR   r9   r   rC   
isinstancerf   r   r   r.   r0   rx   r   rq   r   )	r=   r   r   r   r   rw   survivor_idsr   r   s	   &&       r   check_resurrecting_chain3CycleChainFinalizationTest.check_resurrecting_chain{  s-   L__$$W-EE
A"'(%Q2a5%C(+0U5aJqBS4TEBqE5LU+015a7;;q>5C1JJL!!#&!!,/S1SrbdS1D6A:>  "JJL!!#&!!"%  )U1 2 sI   !F	E-F#E2 E2FE74A	F=E<AF-FF	c                @    V P                  \        .^,          4       R#    N)r   r   r<   s   &r   test_homogenous*CycleChainFinalizationTest.test_homogenous  s    ))=/A*=>r   c                @    V P                  \        .^,          4       R# r   )r   r   r<   s   &r   test_homogenous_resurrect4CycleChainFinalizationTest.test_homogenous_resurrect  s    %%'9&:Q&>?r   c                @    V P                  \        .^,          4       R# r   )r   r   r<   s   &r   test_homogenous_suicidal3CycleChainFinalizationTest.test_homogenous_suicidal  s    ))?*;a*?@r   c                J    V P                  \        \        .^,          4       R# r   r   r   r   r<   s   &r   test_heterogenous_suicidal_one9CycleChainFinalizationTest.test_heterogenous_suicidal_one  s    ))?M*JQ*NOr   c                f    V P                  \        .^,          \        .^,          ,           4       R# r   r   r<   s   &r   test_heterogenous_suicidal_two9CycleChainFinalizationTest.test_heterogenous_suicidal_two  s'    ))!]Oa$77	9r   c                J    V P                  \        \        .^,          4       R# r   )r   r   r   r<   s   &r   test_heterogenous_resurrect_one:CycleChainFinalizationTest.test_heterogenous_resurrect_one  s    %%'9=&IA&MNr   c                T    V P                  \        \        \        .^,          4       R# r   r   r   r   r   r<   s   &r   test_heterogenous_resurrect_two:CycleChainFinalizationTest.test_heterogenous_resurrect_two  s     %%@1D	Fr   c                    V P                  \        .^,          \        .^,          ,           \        .^,          ,           4       R# r   r  r<   s   &r   !test_heterogenous_resurrect_three<CycleChainFinalizationTest.test_heterogenous_resurrect_three  s6    %% 1$'::o=NQR=RR	Tr   r   N)r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r   r   s   @r   r   r   `  sH     '&&?@AP9OFT Tr   r   c                   ,   a  ] tR tRt o R tR tRtV tR# )
LegacyBasei  c                     V P                   '       g7   V P                  P                  \        V 4      4       V P	                  4        R # R #   \
         d'   pT P                  P                  T4        R p?R # R p?ii ; ir*   )r8   r1   rB   rC   r>   rE   r-   rF   s   & r   rH   LegacyBase.__del__  s`    	" >>>%%bh/!!# "  	"KKq!!	"s   A 4A A=A88A=c                     V P                   '       gG   V P                  P                  \        V 4      4       V P	                  4        V P                  4        R # R #   \         d'   pT P                  P                  T4        R p?R # R p?ii ; ir*   )r8   r2   rB   rC   r>   rD   rE   r-   rF   s   & r   
__tp_del__LegacyBase.__tp_del__  sl    	">>>!!((D2!!#  " "  	"KKq!!	"rJ   r   N)r   r   r   r   rH   r  r   r   r   s   @r   r  r    s     "
" 
"r   r  c                       ] tR tRtRtR# )Legacyi  r   Nrc   r   r   r   r  r        r   r  c                   &   a  ] tR tRt o R tRtV tR# )LegacyResurrectori  c                <    V P                   P                  V 4       R # r*   r^   r<   s   &r   rD   LegacyResurrector.side_effect  r`   r   r   Nri   r   s   @r   r  r    s     $ $r   r  c                       ] tR tRtRtR# )LegacySelfCyclei  r   Nrc   r   r   r   r  r    r  r   r  c                   D   a a ] tR tRt oV 3R ltR tR tR tRtVt	V ;t
# )LegacyFinalizationTesti  c                   < \         P                  P                  4        \         P                  ! 4        \        SV `  4        R # r*   )r.   r/   r,   r0   r   rr   r   s   &r   rr   LegacyFinalizationTest.tearDown  s)     	




r   c                   \         P                  4       ;_uu_ 4        \        4       p\        V4      .p\        P
                  ! V4      p?\        P                  ! 4        V P                  V4       V P                  V4       V P                  . 4       V P                  V! 4       R 4       \        P                  ! 4        V P                  V4       V P                  V4       R R R 4       R #   + '       g   i     R # ; ir*   )rR   r9   r  rC   r   r   r.   r0   rx   r{   r   r   r   s   &   r   test_legacy"LegacyFinalizationTest.test_legacy  s    __Aa5'CQBJJL!!#&$$S)!!"%MM"$%JJL!!#&$$S) s   CC++C<	c                z   \         P                  4       ;_uu_ 4        \        4       p\        V4      .p\        P
                  ! V4      p?\        P                  ! 4        V P                  V4       V P                  V4       V P                  V4       V P                  V! 4       R 4       V P                  4        \        P                  ! 4        V P                  V4       V P                  V^,          4       V P                  V4       R R R 4       V P                  X! 4       R 4       R #   + '       g   i     L); ir*   )rR   r9   r  rC   r   r   r.   r0   rx   r{   r   r   r   r   s   &   r   test_legacy_resurrect,LegacyFinalizationTest.test_legacy_resurrect  s    __!#Aa5'CQBJJL!!#&$$S)!!#&MM"$%  "JJL!!#&$$S1W-!!#&   	bdD!! s   C,D**D:	c                8   \         P                  4       ;_uu_ 4        \        4       p\        V4      .p\        P
                  ! V4      p?\        P                  ! 4        V P                  . 4       V P                  . 4       V P                  . 4       V P                  V4       V P                  V! 4       R 4       R \        P                  ^ ,          n        R R R 4       V P                  . 4       V P                  X! 4       R 4       R #   + '       g   i     L:; ir*   )rR   r9   r  rC   r   r   r.   r0   rx   r{   r   r   r   r/   r   r   s   &   r   test_legacy_self_cycle-LegacyFinalizationTest.test_legacy_self_cycle  s    __!Aa5'CQBJJL!!"%$$R(!!"%$RT4( $BJJqM  	BbdD! s   B:D		D	r   )r   r   r   r   rr   r"  r%  r(  r   r   r   r   s   @@r   r  r    s     *"&" "r   r  __main__)%rO   r.   r	   r   	_testcapir   ImportErrorr    r9   r&   r(   rR   rZ   r\   rb   rf   rk   TestCaser   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r  r   mainr   r   r   <module>r/     s  
  	  %$ ? ?D$ $ O   $ $ $	Z 	$
 $% %<>'Xx'8'8 >'B   	mV 		=*; 	v 7&(*;*; 7&t* *0	K 		&7 	k6 GT8+<+< GTZ" "0 	Z 	 	 $
 $ $ 	mZ 	 	 	>"Xx'8'8 >" >"B zMMO [    s"   F F& 
F#"F#&
F43F4