
    0hh                     B   S SK r S SK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 SKrS SKr\R                  " SS9   " S S	\5      rS
 r " S S5      r " S S\R&                  \5      r " S S\R&                  \5      rS r\S:X  a  \R0                  " 5         gg)    N)DocTestSuite)support)threading_helper)import_moduleT)modulec                       \ rS rSrSrg)Weak    N__name__
__module____qualname____firstlineno____static_attributes__r       B/opt/python-3.13.8/usr/lib/python3.13/test/test_threading_local.pyr	   r	      s    r   r	   c                 n    [        5       nX l        UR                  [        R                  " U5      5        g N)r	   weakappendweakrefref)localweaklistr   s      r   targetr      s#    6DJOOGKK%&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\R$                  S 5       rSrg)BaseLocalTest   c                 j    U R                  S5        U R                  S5        U R                  S5        g )N   2   d   )_local_refsselfs    r   test_local_refsBaseLocalTest.test_local_refs   s,    r   c                 r   U R                  5       n/ n[        U5       H=  n[        R                  " [        X#4S9nUR                  5         UR                  5         M?     A[        R                  " 5         U R                  [        U5      U5        U Vs/ s H  of" 5       b  M  UPM     nnU R                  [        U5      US-
  U45        S Ul        [        R                  " 5         U Vs/ s H  of" 5       b  M  UPM     nnU R                  [        U5      US-
  U4U[        U5      45        g s  snf s  snf )Nr   args   )_localrange	threadingThreadr   startjoinr   
gc_collectassertEquallenassertInsomeothervar)r&   nr   r   itr   deadlists           r   r$   BaseLocalTest._local_refs"   s    qA  e5FGAGGIFFH  X* &.@XTDX@c(mac1X. "%-@XTDX@c(mac1X3x=/AB A As   D/#D/+D4:D4c                    ^ ^^^ SS K m " U4S jST R                  5      nU" 5       mUU 4S jm[        R                  " U4S j[	        S5       5       5          S S S 5        g ! , (       d  f       g = f)Nr   c                   "   > \ rS rSrU 4S jrSrg))BaseLocalTest.test_derived.<locals>.Local>   c                 (   > TR                  S5        g )Ng{Gz?)sleep)r&   times    r   __init__2BaseLocalTest.test_derived.<locals>.Local.__init__?   s    

4 r   r   Nr   r   r   r   rD   r   )rC   s   r   Localr?   >   s    ! !r   rG   c                 L   > U Tl         TR                  TR                   U 5        g r   )xr4   )r9   r   r&   s    r   f%BaseLocalTest.test_derived.<locals>.fC   s    EGUWWa(r   c              3   P   >#    U  H  n[         R                  " TU4S 9v   M     g7f)r*   N)r/   r0   ).0r9   rJ   s     r   	<genexpr>-BaseLocalTest.test_derived.<locals>.<genexpr>H   s(      ,@5> -6,<,<AQD,Q5>s   #&
   )rC   r-   r   start_threadsr.   )r&   rG   rJ   r   rC   s   ` @@@r   test_derivedBaseLocalTest.test_derived8   s`    
 		!DKK 	! 	)
 ++ ,@5:2Y,@ @@ @ @s   A##
A1c                   ^^^^^  " S SU R                   5      mS mSm[        R                  " 5       m[        R                  " 5       mUUUUU4S jn[        R                  " US9nUR	                  5         TR                  5         [        S5       Vs/ s H
  nT" 5       PM     snmTR                  5         UR                  5         U R                  T5        g s  snf )Nc                       \ rS rSrSrg)7BaseLocalTest.test_derived_cycle_dealloc.<locals>.LocalN   r   Nr   r   r   r   rG   rV   N       r   rG   Fc                     > T" 5       /n U R                  U 5        SU S   l        A [        R                  " 5         TR	                  5         TR                  5         [        S T 5       5      mg )Nbarr   c              3   D   #    U  H  n[        US 5      (       + v   M     g7f)fooN)hasattr)rM   r   s     r   rN   FBaseLocalTest.test_derived_cycle_dealloc.<locals>.f.<locals>.<genexpr>d   s     GuWUE222s    )r   r\   r   r3   setwaitall)cyclerG   e1e2localspasseds    r   rJ   3BaseLocalTest.test_derived_cycle_dealloc.<locals>.fU   sZ     WIELL E!HL  FFHGGI GGGFr   r   rP   )
r-   r/   Eventr0   r1   r`   r.   r_   r2   
assertTrue)	r&   rJ   r:   r9   rG   rc   rd   re   rf   s	       @@@@@r   test_derived_cycle_dealloc(BaseLocalTest.test_derived_cycle_deallocL   s    	DKK 	____	H 	H" A&		
	
 $)9-9a%'9-
		 .s   Cc                      " S SU R                   5      nU" SS9  U" S5        U R                  [        U R                   SS9  U R                  [        U R                   S5        g )Nc                       \ rS rSrS rSrg)-BaseLocalTest.test_arguments.<locals>.MyLocalu   c                     g r   r   )r&   r+   kwargss      r   rD   6BaseLocalTest.test_arguments.<locals>.MyLocal.__init__v   s    r   r   NrF   r   r   r   MyLocalro   u   s    r   rt   r,   )a)r-   assertRaises	TypeError)r&   rt   s     r   test_argumentsBaseLocalTest.test_argumentss   sQ    	dkk 	 	!
)T[[A6)T[[!4r   c                   ^ ^^^^ ST l         T" 5       m[        R                  " 5       m[        R                  " 5       mUUU4S jnUUU 4S jn[        R                  " US9nUR	                  5         TR                  5         [        R                  " US9nUR	                  5         UR                  5         TR                  5         UR                  5         T R                  T R                   T R                   5        g )Nz No error message set or cleared.c                  f   > STl         STl        T?T R                  5         TR                  5         g )Nr\   rZ   )rI   yr_   r`   )rc   rd   objs   r   f1)BaseLocalTest._test_one_class.<locals>.f1   s(    CECEFFHGGIr   c                     >  TR                   n SU < ST< S3Tl        [        R                  R	                  TR                  5        g ! [
         a
    STl         g f = f)NzIncorrectly got value z from class 
 )rI   _failedsysstderrwriteAttributeError)r\   cr}   r&   s    r   f2)BaseLocalTest._test_one_class.<locals>.f2   sO    /ee "%a!)

  . " "!"s   A	 	AArh   )	r   r/   ri   r0   r1   r`   r2   r_   assertFalse)	r&   r   r~   r   t1t2rc   rd   r}   s	   ``    @@@r   _test_one_classBaseLocalTest._test_one_class~   s    9c____			/ R(


	R(


	

	t||4r   c                 :    U R                  U R                  5        g r   )r   r-   r%   s    r   test_threading_local"BaseLocalTest.test_threading_local   s    T[[)r   c                 P     " S SU R                   5      nU R                  U5        g )Nc                       \ rS rSrSrSrg)BBaseLocalTest.test_threading_local_subclass.<locals>.LocalSubclass   (To test that subclasses behave properly.r   Nr   r   r   r   __doc__r   r   r   r   LocalSubclassr          :r   r   )r-   r   r&   r   s     r   test_threading_local_subclass+BaseLocalTest.test_threading_local_subclass   s     	;DKK 	;]+r   c                 *   U" 5       nSUl         U R                  UR                  SS05        U R                  [        5         0 Ul        S S S 5        U R                  [        5         U?S S S 5        g ! , (       d  f       N/= f! , (       d  f       g = f)N   rI   )rI   r4   __dict__rv   r   )r&   clsr}   s      r   _test_dict_attribute"BaseLocalTest._test_dict_attribute   sm    eQx0~.CL /~. /. /...s   A3'B3
B
Bc                 :    U R                  U R                  5        g r   )r   r-   r%   s    r   test_dict_attribute!BaseLocalTest.test_dict_attribute   s    !!$++.r   c                 P     " S SU R                   5      nU R                  U5        g )Nc                       \ rS rSrSrSrg)ABaseLocalTest.test_dict_attribute_subclass.<locals>.LocalSubclass   r   r   Nr   r   r   r   r   r      r   r   r   )r-   r   r   s     r   test_dict_attribute_subclass*BaseLocalTest.test_dict_attribute_subclass   s     	;DKK 	;!!-0r   c                      " S S5      nU" 5       nU R                  5       Ul        X"R                  l        [        R                  " U5      nA[
        R                  " 5         U R                  U" 5       5        g )Nc                       \ rS rSrSrg).BaseLocalTest.test_cycle_collection.<locals>.X   r   Nr   r   r   r   Xr      rX   r   r   )r-   r   rI   r   r   r   r3   assertIsNone)r&   r   rI   wrs       r   test_cycle_collection#BaseLocalTest.test_cycle_collection   sW    	 	 C++-	[[^"$r   c                     [        S5      nUR                  S S5        [        S5       H  n[        R                  " 5       nM     UR                  5         g )N	_testcapic                      g r   r   r   r   r   <lambda>?BaseLocalTest.test_threading_local_clear_race.<locals>.<lambda>   s    Tr   Fi  )r   call_in_temporary_c_threadr.   r/   r   join_temporary_c_thread)r&   r   _s      r   test_threading_local_clear_race-BaseLocalTest.test_threading_local_clear_race   sF     "+.	,,\5AtA!A  	))+r   c                      " S SU R                   5      n " S S5      nU" 5       nU R                  [        S5         UR                  U" 5       S5        S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrSrSrg)&BaseLocalTest.test_error.<locals>.Loop   r,   r   N)r   r   r   r   attrr   r   r   r   Loopr      s    Dr   r   c                       \ rS rSrS rSrg)1BaseLocalTest.test_error.<locals>.NameCompareTrue   c                     g)NTr   )r&   others     r   __eq__8BaseLocalTest.test_error.<locals>.NameCompareTrue.__eq__   s    r   r   N)r   r   r   r   r   r   r   r   r   NameCompareTruer      s    r   r   zLoop.*read-only   )r-   assertRaisesRegexr   __setattr__)r&   r   r   loops       r   
test_errorBaseLocalTest.test_error   sV    	4;; 	
	 	 v##N4EF_.2 GFFs   A
A,)r   N)r   r   r   r   r'   r$   rR   rk   rx   r   r   r   r   r   r   r   r   r   cpython_onlyr   r   r   r   r   r   r      s`    
C,(% N	5"5H*,
/1

 	, 3 3r   r   c                   ,    \ rS rSr\R
                  rSrg)ThreadLocalTest   r   N)r   r   r   r   _threadr-   r   r   r   r   r   r      s    ^^Fr   r   c                   ,    \ rS rSr\R
                  rSrg)PyThreadingLocalTest   r   N)r   r   r   r   _threading_localr   r-   r   r   r   r   r   r      s    ##Fr   r   c                    ^ UR                  [        S5      5        [        R                  mS nU4S jnUR	                  [        SX4S95        U$ )Nr   c                 6    [         R                  [        l        g r   )r   r-   r   r   )tests    r   setUpload_tests.<locals>.setUp   s    !(r   c                    > T[         l        g r   )r   r   )r   
local_origs    r   tearDownload_tests.<locals>.tearDown   s    !+r   )r   r   )addTestr   r   r   addTests)loadertestspatternr   r   r   s        @r   
load_testsr      sK    	MM,123!''J0,	NN< 2&+@  Lr   __main__)r   unittestdoctestr   r   r   test.supportr   test.support.import_helperr   r   r   r/   r   requires_working_threadingobjectr	   r   r   TestCaser   r   r   r   mainr   r   r   <module>r      s    
     ) 4      + +4 8	6 	'E3 E3Ph'' $8,,m $ zMMO r   