
    /hhr|                        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rS SKrS SK	J
r
  S SKJr   S SKJr  S r " S S\R"                  5      r " S S	5      r " S
 S\5      r " S S5      r " S S\5      r " S S\5      r\R4                  " \SL S5       " S S\R"                  5      5       r\S:X  a  \R:                  " 5         gg! \ a    Sr Nf = f)    N)support)threading_helperhamtc                 F   ^  [         R                  " T 5      U 4S j5       nU$ )z*Needed to make reftracking test mode work.c                  Z   > [         R                  " 5       nUR                  " T/U Q70 UD6$ NcontextvarsContextrun)argskwargsctxfuncs      :/opt/python-3.13.8/usr/lib/python3.13/test/test_context.pywrapper!isolated_context.<locals>.wrapper   s*    !!#wwt-d-f--    )	functoolswraps)r   r   s   ` r   isolated_contextr      s%    __T. . Nr   c                   
   \ rS rSrS r\S 5       rS rS rS r	S r
S rS	 rS
 rS r\S 5       rS rS rS r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       rS r\\R4                  " 5       S 5       5       rSrg)ContextTest   c                 2   U R                  [        S5         [        R                  " 5         S S S 5        U R                  [        S5         [        R                  " S5        S S S 5        [        R                  " S5      nU R	                  UR
                  S5        U R                  [        5         SUl        S S S 5        U R                  [        U5      [        S5      5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       NU= f)Nztakes exactly 1zmust be a str   aaabbb)
assertRaisesRegex	TypeErrorr   
ContextVarassertEqualnameassertRaisesAttributeErrorassertNotEqualhash)selfcs     r   test_context_var_new_1"ContextTest.test_context_var_new_1   s    ##I/@A""$ B ##I?""1% @ ""5)'~.AF / 	DGT%[1 BA @? /.s#   C&C71D&
C47
D
Dc                 z   [         R                  " S5      nU R                  S[        U5      5        [         R                  " SSS9nU R                  S[        U5      5        / n[         R                  " SUS9nUR	                  U5        U R                  S[        U5      5        U R                  S[        U5      5        UR                  S5      nU R                  [        U5      [        U5      5        U R                  S[        U5      5        UR                  U5        U R                  S[        U5      5        g )Na{   default123z...r   z used )r   r"   assertInreprappendsetassertNotInreset)r)   r*   lstts       r   test_context_var_repr_1#ContextTest.test_context_var_repr_1+   s    ""3'c47#""34eT!W%""34

1eT!W%eT#Y'EE!Hd1gtAw'47+	
hQ(r   c                    U R                  [        S5          " S S[        R                  5      nS S S 5        U R                  [        S5          " S S[        R                  5      nS S S 5        U R                  [        S5          " S S[        R
                  5      nS S S 5        g ! , (       d  f       N= f! , (       d  f       NX= f! , (       d  f       g = f)Nznot an acceptable base typec                       \ rS rSrSrg)<ContextTest.test_context_subclassing_1.<locals>.MyContextVarA    N__name__
__module____qualname____firstlineno____static_attributes__rA   r   r   MyContextVarr?   A   s    r   rH   c                       \ rS rSrSrg)9ContextTest.test_context_subclassing_1.<locals>.MyContextF   rA   NrB   rA   r   r   	MyContextrJ   F       r   rL   c                       \ rS rSrSrg)7ContextTest.test_context_subclassing_1.<locals>.MyTokenJ   rA   NrB   rA   r   r   MyTokenrO   J   rM   r   rQ   )r    r!   r   r"   r   Token)r)   rH   rL   rQ   s       r   test_context_subclassing_1&ContextTest.test_context_subclassing_1?   s    ##I/LM{55  N
 ##I/LMK//  N ##I/LM+++  NM NM
 NM NMs#   B*B;C*
B8;
C	
Cc                    U R                  [        S5         [        R                  " S5        S S S 5        U R                  [        S5         [        R                  " SSS9  S S S 5        U R                  [        S5         [        R                  " SS9  S S S 5        [        R                  " S0 0 D6  g ! , (       d  f       N= f! , (       d  f       Ni= f! , (       d  f       NG= f)Nzany argumentsr   r.   rA   )r    r!   r   r   r)   s    r   test_context_new_1ContextTest.test_context_new_1M   s    ##I?" @##I?Q' @##I?!$ @!b! @?????s#   B4C C4
C
C
C$c                      " S S[         5      nU R                  [        S5         [        R                  " U" 5       5        S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)GContextTest.test_context_new_unhashable_str_subclass.<locals>.weird_strX   c                     g r	   rA   r)   others     r   __eq__NContextTest.test_context_new_unhashable_str_subclass.<locals>.weird_str.__eq__Y   s    r   rA   N)rC   rD   rE   rF   ra   rG   rA   r   r   	weird_strr\   X   s    r   rc   zunhashable type)strr    r!   r   r"   )r)   rc   s     r   (test_context_new_unhashable_str_subclass4ContextTest.test_context_new_unhashable_str_subclassV   s>    	 	 ##I/@A""9;/ BAAs   A
Ac                    [         R                  " 5       nU R                  [        S5         US     S S S 5        U R                  [        S5         SU;     S S S 5        U R                  [        S5         UR	                  S5        S S S 5        g ! , (       d  f       Nc= f! , (       d  f       NP= f! , (       d  f       g = f)NzContextVar key was expectedr   )r   r   r    r!   getr)   r   s     r   test_context_typerrors_1$ContextTest.test_context_typerrors_1_   s    !!###I/LMF N##I/LMH N##I/LMGGAJ NM	 NMMMMMs#   BB 4B1
B 
B.1
B?c                 n    [         R                  " 5       nU R                  U[         R                  5        g r	   )r   copy_contextassertIsInstancer   ri   s     r   test_context_get_context_1&ContextTest.test_context_get_context_1i   s&    &&(c;#6#67r   c                     [         R                  " 5       nU R                  [        S5         UR	                  5         S S S 5        g ! , (       d  f       g = f)Nzmissing 1 required)r   r   r    r!   r   ri   s     r   test_context_run_1ContextTest.test_context_run_1m   s7    !!###I/CDGGI EDDs   A
Ac           	         [         R                  " 5       nS nU[        R                  " U5      4 H  nU R	                  UR                  U5      SSS045        U R	                  UR                  US5      SSS045        U R	                  UR                  USS9SSSS	.45        U R	                  UR                  US
SS9SSSS	.45        0 nU R	                  UR
                  " US
40 UD6SSS045        U R	                  U0 5        M     g )Nc                      SUS'   U S-  n X4$ )NfoospambarrA   r   r   s     r   r   ,ContextTest.test_context_run_2.<locals>.funcv   s    "F6NHD<r   rx   rw   rv   r   )r   ry      rV   )r.   rw      )r}   ry   )r   r   r   partialr#   r   )r)   r   r   fr.   s        r   test_context_run_2ContextTest.test_context_run_2s   s   !!#	 
 	))$/0A SWWQZ(VUO)DESWWQ]Z&%,IJQE235 2#Au568 A2##vuo.0 Q#% 1r   c                    [         R                  " 5       nS nU R                  [        5         UR	                  U5        S S S 5        U R                  [        5         UR	                  USS5        S S S 5        U R                  [        5         UR	                  USSSS9  S S S 5        g ! , (       d  f       Np= f! , (       d  f       NP= f! , (       d  f       g = f)Nc                      SS-    g )Nr   r   rA   rz   s     r   r   ,ContextTest.test_context_run_3.<locals>.func   s	    Er   r   r|   r/   rV   )r   r   r%   ZeroDivisionErrorr   )r)   r   r   s      r   test_context_run_3ContextTest.test_context_run_3   s    !!#	 01GGDM 201GGD!Q 201GGD!Q#G& 21	 211111s#   B*B;C*
B8;
C	
Cc                 >  ^ ^^^ [         R                  " 5       n[         R                  " 5       m[         R                  " S5      mU U4S jmUUU U4S jnUR                  U5      nT R	                  X5        T R	                  UT   S5        T R                  TU5        g )Nvarc                  F   > T R                  TR                  S 5      5        g r	   )assertIsNonerh   r)   r   s   r   func2-ContextTest.test_context_run_4.<locals>.func2   s    cggdm,r   c                  X  > TR                  TR                  S 5      5        TR                  S5        TR                  T5        TR	                  TR                  S 5      S5        [
        R                  " 5       n TR	                  [        U 5      S5        TR	                  U T   S5        U $ )Nrw   r   )r   rh   r6   r   r#   r   rm   len)curctx2r   r)   r   s    r   func1-ContextTest.test_context_run_4.<locals>.func1   s    cggdm,GGFOHHUOSWWT]F3**,CSXq)SXv.Jr   rw   )r   r   r"   r   r#   r3   )r)   ctx1r   returned_ctxr   r   r   s   `   @@@r   test_context_run_4ContextTest.test_context_run_4   s~    ""$""$$$U+	-		 		 xx,c*F3c<(r   c                 ,  ^ ^ [         R                  " 5       n[         R                  " S5      mU U4S jnT R                  [        5         UR                  U5        S S S 5        T R                  TR                  S 5      5        g ! , (       d  f       N/= f)Nr   c                  r   > T R                  TR                  S 5      5        TR                  S5        SS-    g )Nrw   r   r   )r   rh   r6   r   s   r   r   ,ContextTest.test_context_run_5.<locals>.func   s+    cggdm,GGFOEr   )r   r   r"   r%   r   r   r   rh   )r)   r   r   r   s   `  @r   test_context_run_5ContextTest.test_context_run_5   sh    !!#$$U+	
 01GGDM 2 	#''$-( 21s   
B
Bc                    ^ ^^ [         R                  " 5       m[         R                  " SSS9mUUU 4S jnTR                  U5        g )Nr.   r   r0   c                  *  > TR                  T R                  5       S5        TR                  TR                  T 5      5        T R                  S5        TR                  T R                  5       S5        TR                  TR                  T 5      S5        g )Nr   *   )r#   rh   r   r6   )r*   r   r)   s   r   fun+ContextTest.test_context_run_6.<locals>.fun   sh    QUUWa(cggaj)EE"IQUUWb)SWWQZ,r   r   r   r"   r   r)   r   r*   r   s   ` @@r   test_context_run_6ContextTest.test_context_run_6   s5    !!#""32	- 	r   c                 f   ^ ^^ [         R                  " 5       mUUU 4S jmTR                  T5        g )Nc                     > TR                  [        S5         T R                  T5        S S S 5        g ! , (       d  f       g = f)Nzis already entered)r    RuntimeErrorr   )r   r   r)   s   r   r   +ContextTest.test_context_run_7.<locals>.fun   s,    ''6JK LKKs	   3
Ar
   )r)   r   r   s   `@@r   test_context_run_7ContextTest.test_context_run_7   s#    !!#	 	r   c                 v	   [         R                  " S5      nU R                  [        5         UR	                  5         S S S 5        U R                  UR	                  S 5      5        UR                  S5      nU R                  UR	                  5       S5        U R                  UR	                  S 5      S5        U R                  UR                  UR                  5        U R                  UR                  [         R                  R                  5        U R                  UR                  U5        UR                  S5      nU R                  UR	                  5       S5        U R                  UR	                  S 5      S5        U R                  UR                  S5        UR                  U5        U R                  UR	                  5       S5        U R                  UR	                  S 5      S5        UR                  S5        U R                  [        S5         UR                  U5        S S S 5        U R                  UR	                  5       S5        [         R                   " 5       nU R#                  X5        UR                  U5        U R                  [        S5         UR                  U5        S S S 5        U R                  UR	                  S 5      5        U R#                  X5        U R                  XA   S5        U R                  UR	                  US5      S5        U R                  [%        U5      S5        U R                  ['        UR)                  5       5      US4/5        U R                  ['        UR+                  5       5      S/5        U R                  ['        UR-                  5       5      U/5        U R                  ['        U5      U/5        [         R                   " 5       nU R/                  X5        U R                  [0        5         XQ     S S S 5        U R                  UR	                  US5      S5        U R                  [%        U5      S5        U R                  ['        U5      / 5        g ! , (       d  f       GN>= f! , (       d  f       GNg= f! , (       d  f       GN= f! , (       d  f       N= f)	Nr*   r   rw   spam2zhas already been usedaar   r   )r   r"   r%   LookupErrorrh   r   r6   r#   assertIs	old_valueMISSINGrR   r   r8   r    r   rm   r3   r   listitemsvalueskeysr7   KeyError)r)   r*   t0r:   r   r   s         r   test_context_getset_1!ContextTest.test_context_getset_1   sK   ""3'{+EEG , 	!%%+&UU2Y"%tb)bllBJJ/bllK$5$5$=$=>bffa EE&M&)tf-b)	
"%tb)	g##L2IJGGAJ K'*'')a	##L2IJGGBK K!%%+&a'*!T*G4TA&djjl+q'l^<dkkm,wi8diik*QC0daS)'')!x(G )!T*D1TA&dR(c ,+, KJ KJ )(s/   Q4RRR*4
R
R
R'*
R8c                     [         R                  " S5      n[         R                  " S5      nUR                  S5      nU R                  [        S5         UR                  U5        S S S 5        g ! , (       d  f       g = f)Nv1v2r   zby a different)r   r"   r6   r    
ValueErrorr8   )r)   r   r   t1s       r   test_context_getset_2!ContextTest.test_context_getset_2  sX    ##D)##D)VVBZ##J0@AHHRL BAAs   A//
A=c                    ^ ^^ [         R                  " SSS9m[         R                  " 5       mUUU 4S jnTR                  U5        g )Nr*   r   r0   c                  &  > TR                  TR                  5       S5        TR                  [        5         TT     S S S 5        TR	                  TR                  T5      5        TR                  TR                  TS5      S5        TR                  TT5        TR                  [        TR                  5       5      / 5        TR                  S5      n TR                  [        TR                  5       5      T/5        TR                  TT   S5        TR                  U 5        TR                  [        TR                  5       5      / 5        TR                  [        5         TT     S S S 5        g ! , (       d  f       GN:= f! , (       d  f       g = f)Nr   rw   r   )
r#   rh   r%   r   r   r7   r   r   r6   r8   )r:   r*   r   r)   s    r   r   .ContextTest.test_context_getset_3.<locals>.fun  s"   QUUWb)""8,A -cggaj)SWWQ/8Q$T#((*-r2aAT#((*-s3SVQ'GGAJT#((*-r2""8,A -, -, -,s   E0!F0
E?
F)r   r"   r   r   r   s   ` @@r   test_context_getset_3!ContextTest.test_context_getset_3  s5    ""33!!#	$ 	r   c                    [         R                  " SSS9n[         R                  " 5       nUR                  UR                  S5      nU R                  [        S5         UR                  U5        S S S 5        g ! , (       d  f       g = f)Nr*   r   r0   r   zdifferent Context)r   r"   r   r   r6   r    r   r8   )r)   r*   r   toks       r   test_context_getset_4!ContextTest.test_context_getset_42  s_    ""33!!#ggaeeQ##J0CDGGCL EDDs   A88
Bc                    ^ ^ [         R                  " SSS9mTR                  / 5        UU 4S jn[         R                  " 5       R	                  U5        T R                  TR                  5       / 5        g )Nr*   r   r0   c                     > T R                  / 5        T R                  5       R                  S5        TR                  T R                  5       S/5        g )Nr   )r6   rh   r5   r#   r*   r)   s   r   r   .ContextTest.test_context_getset_5.<locals>.funA  s8    EE"IEEGNN2QUUWrd+r   )r   r"   r6   rm   r   r#   rh   )r)   r   r*   s   ` @r   test_context_getset_5!ContextTest.test_context_getset_5<  sT    ""33	b		,
 	  "&&s+"%r   c                    ^ ^^^ [         R                  " 5       m[         R                  " SSS9mUUUU 4S jnUU 4S jmTR                  U5        g )Nr*   r   r0   c                  ^  > TR                  S5        TR                  5       n TR                  U T   S5        TR                  S5        TR                  TT   S5        TR                  U T   S5        U R                  T5        TR                  TT   S5        TR                  U T   S5        g )N
         )r6   copyr#   r   )r   r*   r   ctx2_funr)   s    r   ctx1_fun1ContextTest.test_context_copy_1.<locals>.ctx1_funM  s    EE"I99;DT!Wb)EE"IT!Wb)T!Wb)HHXT!Wb)T!Wb)r   c                     > TR                  T R                  5       S5        T R                  S5        TR                  T R                  5       S5        g )Nr   r   )r#   rh   r6   r   s   r   r   1ContextTest.test_context_copy_1.<locals>.ctx2_fun[  s:    QUUWb)EE"IQUUWb)r   r   )r)   r   r*   r   r   s   ` @@@r   test_context_copy_1ContextTest.test_context_copy_1I  s@    ""$""33	* 	*	*
 	r   c                 X  ^ ^ [         R                  " S5      mUU 4S jn[        R                  R	                  SS9n [        UR                  U[        S5      5      5      nUR                  5         T R                  U[        [        S5      5      5        g ! UR                  5         f = f)Ncvarc                    > [        S5       Hc  nTR                  X-   5        [        R                  " [        R
                  " SS5      5        TR                  TR                  5       X-   5        Me     U $ )Nr   gMbP?g?)ranger6   timesleeprandomuniformr#   rh   )numir   r)   s     r   sub/ContextTest.test_context_threads_1.<locals>.subg  sU    2Y!

6>>%67  SW5  Jr   r   )max_workers)
r   r"   
concurrentfuturesThreadPoolExecutorr   mapr   shutdownr#   )r)   r   tpresultsr   s   `   @r   test_context_threads_1"ContextTest.test_context_threads_1b  s     %%f-	 22r2B	266#uRy12GKKM$uRy/2 KKMs   $B B)rA   N)rC   rD   rE   rF   r+   r   r;   rS   rX   re   rj   ro   rr   r   r   r   r   r   r   r   r   r   r   r   r   r   requires_working_threadingr   rG   rA   r   r   r   r      s    2 ) )&"08$8' ) )0) 3) 3)j    0   
& 
&2 0023 3 3r   r   c                   8    \ rS rSrSrSS.S jrS rS rS rSr	g)	HashKeyiy  Nerror_on_eq_toc                (    X l         Xl        X0l        g r	   )r$   r(   r   )r)   r(   r$   r   s       r   __init__HashKey.__init__|  s    		,r   c                 <    SU R                    SU R                   S3$ )Nz
<Key name:z hash:>)r$   r(   rW   s    r   __repr__HashKey.__repr__  s    DII;fTYYKq99r   c                 v    U R                   b!  U R                   R                  (       a  [        eU R                  $ r	   )_crashererror_on_hashHashingErrorr(   rW   s    r   __hash__HashKey.__hash__  s(    ==$)D)Dyyr   c                    [        U[        5      (       d  [        $ U R                  b!  U R                  R                  (       a  [
        eU R                  b"  U R                  UL a  [        SU < SU< 35      eUR                  b"  UR                  U L a  [        SU< SU < 35      eU R                  U R                  4UR                  UR                  4:H  $ )Nzcannot compare z to )

isinstancer   NotImplementedr  error_on_eqEqErrorr   r   r$   r(   r_   s     r   ra   HashKey.__eq__  s    %))!!==$)B)BM*t/B/Be/Kthd5)DEE+0D0D0LuitD8DEE		499%%**ejj)AAAr   )r   r(   r$   )
rC   rD   rE   rF   r  r   r   r  ra   rG   rA   r   r   r   r   y  s    H59 -:Br   r   c                   4   ^  \ rS rSrU 4S jrU 4S jrSrU =r$ )KeyStri  c                    > [         R                  b%  [         R                  R                  (       a  [        e[        TU ]  5       $ r	   )r   r  r  r  superr  )r)   	__class__s    r   r  KeyStr.__hash__  s1    'G,<,<,J,Jw!!r   c                    > [         R                  b%  [         R                  R                  (       a  [        e[        TU ]  U5      $ r	   )r   r  r
  r  r  ra   )r)   r`   r  s     r   ra   KeyStr.__eq__  s1    'G,<,<,H,HMw~e$$r   rA   )rC   rD   rE   rF   r  ra   rG   __classcell__)r  s   @r   r  r    s    "
% %r   r  c                   0    \ rS rSrSSS.S jrS rS rSrg)	HaskKeyCrasheri  Fr  r
  c                    Xl         X l        g r	   r  )r)   r  r
  s      r   r   HaskKeyCrasher.__init__  s    *&r   c                 R    [         R                  b  [        S5      eU [         l        g )Nzcannot nest crashers)r   r  r   rW   s    r   	__enter__HaskKeyCrasher.__enter__  s"    '566r   c                     S [         l        g r	   )r   r  )r)   excs     r   __exit__HaskKeyCrasher.__exit__  s
    r   )r
  r  N)rC   rD   rE   rF   r   r  r   rG   rA   r   r   r  r    s    (-5 ' 
 r   r  c                       \ rS rSrSrg)r  i  rA   NrB   rA   r   r   r  r        r   r  c                       \ rS rSrSrg)r  i  rA   NrB   rA   r   r   r  r    r#  r   r  z&_testinternalcapi.hamt() not availablec                       \ rS rSrS rS rS rS rS rS r	S r
\R                  " S	5      S
 5       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)HamtTesti  c                    [        SS5      n[        SS5      nU R                  X5        U R                  [        U5      [        U5      5        [	        5       nSX1'   SX2'   U R                  X1   S5        U R                  X2   S5        g )Nr   r   r   r.   b)r   r'   r#   r(   dict)r)   k1k2ds       r   test_hashkey_helper_1HamtTest.test_hashkey_helper_1  sy    RRB#b48,F$$r   c                     [        5       nS ng r	   r   r)   hs     r   test_hamt_basics_1HamtTest.test_hamt_basics_1  s    Fr   c                 >   [        5       nU R                  [        U5      S5        UR                  SS5      nU R	                  X5        U R                  [        U5      S5        U R                  [        U5      S5        U R                  UR                  S5      5        U R                  UR                  SS5      S5        U R                  UR                  S5      S5        UR                  SS5      nU R	                  X#5        U R                  [        U5      S5        U R                  [        U5      S5        U R                  [        U5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      5        U R                  UR                  S5      5        U R                  UR                  S5      5        U R                  UR                  S5      S5        S =n=p#g )Nr   r.   r(  r   r   r   r|   )r   r#   r   r6   assertIsNotr   rh   )r)   r1  h2h3s       r   test_hamt_basics_2HamtTest.test_hamt_basics_2  s   FQ#UU3_Q#R!$!%%*%sB,c*VVC_ Q#R!$R!$c*b)!%%*%"&&+&!%%*%c*Br   c                     [        5       n[        5       nUR                  SU5      nUR                  SU5      nU R                  X45        g )N1)r   objectr6   r   )r)   r1  oh1r6  s        r   test_hamt_basics_3HamtTest.test_hamt_basics_3  s:    FHUU3]VVC^br   c                 N   [        5       nUR                  S/ 5      nUR                  S/ 5      nU R                  X#5        U R                  [	        U5      S5        U R                  [	        U5      S5        U R                  UR                  S5      UR                  S5      5        g )Nkeyr   )r   r6   r5  r#   r   rh   )r)   r1  r>  r6  s       r   test_hamt_basics_4HamtTest.test_hamt_basics_4  s    FUU5"VVE2 R!$R!$u6r   c                    [        SS5      n[        SS5      n[        SS5      n[        5       nUR                  US5      nUR                  US5      nU R                  UR	                  U5      S 5        U R                  UR	                  U5      S 5        U R                  UR	                  U5      S5        U R                  UR	                  U5      S 5        U R                  UR	                  U5      S5        U R                  UR	                  U5      S5        UR                  US5      nUR                  US5      nU R                  UR	                  U5      S5        U R                  UR	                  U5      S5        U R                  UR	                  U5      S5        U R                  UR	                  U5      S5        U R                  UR	                  U5      S 5        U R                  UR	                  U5      S5        U R                  UR	                  U5      S5        U R                  UR	                  U5      S5        U R                  UR	                  U5      S5        U R                  [        U5      S	5        U R                  [        U5      S
5        U R                  [        U5      S5        U R                  [        U5      S5        U R                  [        U5      S5        g )Nr   r   r   cccr.   r(  ccr   r   r   r|      )r   r   r6   r#   rh   r   )	r)   r*  r+  k3r1  r6  r7  h4h5s	            r   test_hamt_collision_1HamtTest.test_hamt_collision_1  s7   RRRFUU2s^VVB_rD)rD)S)T*S)S)VVBVVBS)S)S)T*T*S)T*T*T*Q#R!$R!$R!$R!$r   c                 N   [        SS5      n[        SS5      n[        SS5      n[        5       nUR                  US5      nUR                  US5      nUR                  US5      nU R                  UR	                  5        Vs1 s H  oUR
                  iM     sn1 Sk5        g s  snf )Nl        CDr   E>   rO  rP  rQ  )r   r   r6   r#   r   r$   )r)   rO  rP  rQ  r1  ks         r   test_hamt_collision_3HamtTest.test_hamt_collision_3$  s     93?93?93?FEE!SMEE!SMEE!SM* 	!&&(3(Q&&(3_E3s   B"cpuc           	      ,   SnSnSnSnSn[        U5       GH  n[        5       n[        5       n[        U5       GHp  n	[        U	5      n
X-  (       dA  [	        SS9   U R                  [        5         UR                  X5        S S S 5        S S S 5        UR                  X5      nX-  (       dJ  [	        SS9   U R                  [        5         UR                  [        U	5      5        S S S 5        S S S 5        XU
'   U R                  [        U5      [        U5      5        X-  (       a  M  U R                  [        UR                  5       5      [        UR                  5       5      5        U R                  [        UR                  5       5      [        UR                  5       5      5        GMs     U R                  [        U5      U5        [        U5       H.  n
U R                  UR                  [        U
5      S	5      U
5        M0     [        [        U5      5      n[        R                  " U5        [!        U5       GH  u  p[        U	5      n
X-  (       dA  [	        SS9   U R                  [        5         UR#                  U
5        S S S 5        S S S 5        X-  (       dJ  [	        SS9   U R                  [        5         UR#                  [        U	5      5        S S S 5        S S S 5        UR#                  U
5      nU R                  UR                  U
S	5      S	5        X	 U R                  [        U5      [        U5      5        XS
-  :X  a  UnUR%                  5       nX-  (       a  GM-  U R                  [        UR'                  5       5      [        UR'                  5       5      5        U R                  [        UR'                  5       5      [        UR'                  5       5      5        GM     U R                  [        U5      S5        U R                  [        U5      S5        W H/  n
U R                  WR                  [)        U
5      5      X   5        M1     U R                  [        U5      [        W5      5        [!        U5       GH  u  pUR#                  [)        U
5      5      nU R                  UR                  [)        U
5      S	5      S	5        UR+                  [)        U
5      S 5        U R                  [        U5      [        U5      5        X-  (       a  M  U R                  [        UR-                  5       5      [        UR-                  5       5      5        U R                  [        UR-                  5       5      [        UR-                  5       5      5        GM     U R                  [        U5      S5        U R                  [        U5      S5        U R                  [        UR                  5       5      / 5        GM     g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNK= f! , (       d  f       GNU= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f)NiX  i  a   r}   rH  Tr  r
  z	not foundr|   r   )r   r   r)  r  r  r%   r  r6   r  rh   r#   r   r   r   r   shuffle	enumeratedeleter   r   rd   popr   )r)   COLLECTION_SIZETEST_ITERS_EVERYCRASH_HASH_EVERYCRASH_EQ_EVERY
RUN_XTIMES_r1  r,  r   rB  keys_to_deleteiter_ihmdms                  r   test_hamt_stressHamtTest.test_hamt_stressG  s   
z"AAA?+Qi,'d;!..|<EE#M = < EE#M*'D9!..w7EE&), 8 : #  QQ0,,$$S^S^D$$S^S^D) ,, SV_5_-  vc{K!@#F . "%"89NNN>*&~6	Qi1'd;!..|<HHSM = < /'D9!..w7HHVAY/ 8 : HHSM  sK!8+FF  QQ011BB11$$S]CMB$$S]CMB1 74 SVQ'SVQ'   C!127; SWc"g.#N3YYs3x(  C+!>Ls3x&  QQ0,,$$S_c!((*oF$$S_c!((*oF 4 SVQ'SVQ'T!'')_b1a # =< <; 87 :9. =< <; 87 :9s   X0X	X5X<X*	&X<Y 4Y	Y (Z>Y2	Z
XX
X'*
X94X<<
Y
YY  
Y/2
Z<Z
Zc                 0   [        SS5      n[        SS5      n[        SS5      n[        SS5      n[        S	S
5      n[        SS5      n[        SSUS9n[        5       nUR                  US5      nUR                  US5      nUR                  US5      nUR                  US5      nUR                  US5      n[        U5      n	UR	                  U5      nU R                  [        U5      U	S-
  5        U R                  [        S5         UR	                  U5        S S S 5        UR	                  U5      nU R                  [        U5      U	S-
  5        UR	                  U5      n
U R                  X5        UR	                  U5      nU R                  [        U5      U	S-
  5        U R                  UR                  US5      S5        U R                  UR                  U5      S5        U R                  UR                  U5      S5        g ! , (       d  f       N= f)Nd   Ae   Bf   rO  g   rP  h   rQ  ZErr   r.   r(  r*   r,  er   cannot comparer|   rH  r   )
r   r   r6   r   r\  r#   r    r   r   rh   )r)   rl  rn  rO  rP  rQ  rs  rt  r1  orig_lenr6  s              r   test_hamt_delete_1HamtTest.test_hamt_delete_1  s   CCCCCD#S$q1FEE!SMEE!SMEE!SMEE!SMEE!SMq6 HHQKQA.##J0@AHHRL B HHQKQA.XXa[bHHQKQA.q"r*q3'q3' BAs   H
Hc                    [        SS5      n[        SS5      n[        SS5      n[        SS5      n[        S	S
5      n[        SS5      n[        SSUS9n[        5       nUR                  US5      nUR                  US5      nUR                  US5      nUR                  US5      nUR                  US5      n[        U5      n	U R	                  [
        S5         UR                  U5        S S S 5        UR                  U5      nU R                  [        U5      U	5        UR                  U5      nU R                  [        U5      U	S-
  5        UR                  U5      nU R                  [        U5      U	S-
  5        UR                  U5      nU R                  [        U5      U	S-
  5        U R                  UR                  U5      S5        U R                  UR                  U5      S5        UR                  U5      nUR                  U5      nUR                  U5      nUR                  U5      nU R                  [        U5      S5        g ! , (       d  f       GNj= f)Nrk  rl  ) rn  鉊 rO  rp  rP  rq  rQ  rr  rs  rt  r   r.   r(  r*   r,  ru  rv  r   r|   rH  r   )	r   r   r6   r   r    r   r\  r#   rh   )
r)   rl  rn  rO  rP  rQ  rs  rt  r1  rw  s
             r   test_hamt_delete_2HamtTest.test_hamt_delete_2  s   CFC FC CCD#VT!4FEE!SMEE!SMEE!SMEE!SMEE!SMq6 ##J0@AHHRL B HHQKQ*HHQKQA.HHQKQA.HHQKQA.q3'q3'HHQKHHQKHHQKHHQKQ#- BAs   I
Ic                    [        SS5      n[        SS5      n[        SS5      n[        SS5      n[        SS	5      n[        5       nUR                  US
5      nUR                  US5      nUR                  US5      nUR                  US5      nUR                  US5      n[        U5      nUR	                  U5      nU R                  [        U5      US-
  5        UR	                  U5      nU R                  [        U5      US-
  5        U R                  UR                  U5      S5        U R                  UR                  U5      S5        g )Nrk  rl  rm  rn   rO  rP  rq  rQ  r.   r(  r*   r,  ru  r   r|   )r   r   r6   r   r\  r#   rh   r)   rl  rn  rO  rP  rQ  r1  rw  s           r   test_hamt_delete_3HamtTest.test_hamt_delete_3  s   CCFC FC CFEE!SMEE!SMEE!SMEE!SMEE!SMq6 HHQKQA.HHQKQA.q3'q3'r   c                 *   [        SS5      n[        SS5      n[        SS5      n[        SS5      n[        SS5      n[        5       nUR                  US	5      nUR                  US
5      nUR                  US5      nUR                  US5      nUR                  US5      n[        U5      nUR	                  U5      nU R                  [        U5      US-
  5        UR	                  U5      nU R                  [        U5      US-
  5        UR	                  U5      nU R                  [        U5      US-
  5        UR	                  U5      nU R                  [        U5      US-
  5        UR	                  U5      nU R                  [        U5      S5        g )Nrk  rl  rm  rn  r  rO  rP  rQ  r.   r(  r*   r,  ru  r   r|   rH     r   )r   r   r6   r   r\  r#   r  s           r   test_hamt_delete_4HamtTest.test_hamt_delete_4&  sP   CCFC FC FC FEE!SMEE!SMEE!SMEE!SMEE!SMq6 HHQKQA.HHQKQA.HHQKQA.HHQKQA.HHQKQ#r   c                 b   [        5       n/ n[        S5       H>  n[        U[        U5      5      nUR	                  U5        UR                  USU 35      nM@     [        SS5      nUR                  US5      nU R                  [        U5      S5        UR                  US   5      nU R                  [        U5      S5        UR                  U5      nU R                  [        U5      S5        UR                  US   5      nU R                  [        U5      S5        UR                  US	   5      nU R                  [        U5      S
5        UR                  US	   5      nU R                  [        U5      S
5        U H  nUR                  U5      nM     U R                  [        U5      S5        g )N   zval-   18	collision   r|      r      r   )	r   r   r   rd   r5   r6   r#   r   r\  )r)   r1  r   r   rB  collision_key16s         r   test_hamt_delete_5HamtTest.test_hamt_delete_5P  sg   FrA!SV$CKKcT!:&A 
 ""d+EE/;/( 	Q$HHT!WQ$HH_%Q$HHT"XQ$HHT!WQ$HHT!WQ$CA Q#r   c           
         [        SS5      n[        SS5      n[        SS5      n[        SS5      n[        S	S
5      n[        SS5      n[        5       nUR                  US5      nUR                  US5      nUR                  US5      nUR                  US5      nUR                  US5      nUR                  US5      nUR                  5       nU R	                  [        [        U5      5      US4US4US4US4US4US415        g )Nrk  rl  r{  rn  r|  rO  rp  rP  rq  rQ  n   Fr.   r(  r*   r,  ru  r   r   r   r6   r   r#   r   	r)   rl  rn  rO  rP  rQ  r  r1  its	            r   test_hamt_items_1HamtTest.test_hamt_items_1  s    CFC FC CCCFEE!SMEE!SMEE!SMEE!SMEE!SMEE!SMWWYRMX3x!SAs8aX3xH	Jr   c           
         [        SS5      n[        SS5      n[        SS5      n[        SS5      n[        SS5      n[        S	S
5      n[        5       nUR                  US5      nUR                  US5      nUR                  US5      nUR                  US5      nUR                  US5      nUR                  US5      nUR                  5       nU R	                  [        [        U5      5      US4US4US4US4US4US415        g Nrk  rl  rm  rn  r  rO  rP  rQ  r  r  r.   r(  r*   r,  ru  r   r  r  s	            r   test_hamt_items_2HamtTest.test_hamt_items_2  s    CCFC FC FC CFEE!SMEE!SMEE!SMEE!SMEE!SMEE!SMWWYRMX3x!SAs8aX3xH	Jr   c           	      8   [        SS5      n[        SS5      n[        SS5      n[        SS5      n[        SS5      n[        S	S
5      n[        5       nUR                  US5      nUR                  US5      nUR                  US5      nUR                  US5      nUR                  US5      nUR                  US5      nU R                  [        [	        UR                  5       5      5      XX4XV15        U R                  [        [	        U5      5      XX4XV15        g r  )r   r   r6   r#   r   r   )r)   rl  rn  rO  rP  rQ  r  r1  s           r   test_hamt_keys_1HamtTest.test_hamt_keys_1  s    CCFC FC FC CFEE!SMEE!SMEE!SMEE!SMEE!SMEE!SMT!&&(^,qQ1.@AT!WaA'9:r   c                     [        5       nU R                  [        UR                  5       5      S5        U R                  [	        UR                  5       5      / 5        g )Nr   )r   r#   r   r   r   r0  s     r   test_hamt_items_3HamtTest.test_hamt_items_3  s=    FQWWY+aggi"-r   c                    [        SS5      n[        SS5      n[        SS5      n[        SS5      n[        SS	5      n[        5       nUR                  US
5      nUR                  US5      nUR                  US5      nUR                  US5      n[        5       nUR                  US
5      nU R                  Xg:H  5        U R	                  Xg:g  5        UR                  US5      nU R                  Xg:H  5        U R	                  Xg:g  5        UR                  US5      nU R                  Xg:H  5        U R	                  Xg:g  5        UR                  US5      nU R                  Xg:H  5        U R	                  Xg:g  5        UR                  US5      nU R	                  Xg:H  5        U R                  Xg:g  5        UR                  US5      nU R                  Xg:H  5        U R	                  Xg:g  5        UR                  U5      nU R                  Xg:H  5        U R	                  Xg:g  5        UR                  US5      nU R                  Xg:H  5        U R	                  Xg:g  5        g )Nrk  rl  rm  rn  r  rO  rP  x   rQ  r.   r(  r*   r,  d2ru  )r   r   r6   assertFalse
assertTruer\  )r)   rl  rn  rO  rP  rQ  r>  r6  s           r   test_hamt_eq_1HamtTest.test_hamt_eq_1  s   CCFC FC CVVVAs^VVAs^VVAs^VVAs^VVVAs^"!VVAs^"!VVAs^"!VVAt_"!VVAs^!"VVAs^"!YYq\"!VVAs^"!r   c                 r   [        SS5      n[        SSUS9n[        5       nUR                  US5      n[        5       nUR                  US5      nU R                  [        S5         X4:H    S S S 5        U R                  [        S5         X4:g    S S S 5        g ! , (       d  f       N2= f! , (       d  f       g = f)Nrk  rl  rt  r   r.   rv  )r   r   r6   r    r   )r)   rl  rt  r>  r6  s        r   test_hamt_eq_2HamtTest.test_hamt_eq_2  s    CS$q1VVVAs^VVVB_##J0@AH B ##J0@AH BA BA BAs   &B	B(
B%(
B6c                    [        SS5      n[        5       nUR                  SS5      n[        R                  " U5      n/ nUR                  U5        UR                  U5        / nUR                  U5        UR                  U5        UR                  X5      nAAA[        R                  " 5         [        R                  " 5         [        R                  " 5         U R                  U" 5       5        g )Nrk  rl  r   )	r   r   r6   weakrefrefr5   gccollectr   )r)   rl  r1  r  r.   r(  s         r   test_hamt_gc_1HamtTest.test_hamt_gc_1  s    CFEE!QKkk!n				EE!Kq!








#% r   c                    [        SS5      n[        SS5      n[        5       nUR                  US5      nUR                  X5      n[        R                  " U5      nUR                  5       n[        U5        AA[        R                  " 5         [        R                  " 5         [        R                  " 5         U R                  U" 5       5        g )Nrk  rl  rm  rn  r.   )
r   r   r6   r  r  r   nextr  r  r   )r)   rl  rn  r1  r  his         r   test_hamt_gc_2HamtTest.test_hamt_gc_2  s    CCFEE!SMEE!Kkk!nWWYRr








#% r   c                 (   [        SS5      n[        SS5      n[        SS5      n[        5       nUR                  US5      nU R                  X;   5        U R	                  X4;   5        U R                  [        5         [        SS9   X$;     S S S 5        S S S 5        U R                  [        5         [        SS9   X$;     S S S 5        S S S 5        g ! , (       d  f       NK= f! , (       d  f       NT= f! , (       d  f       N9= f! , (       d  f       g = f	Nrk  rl  rm  rn  r   TrY  rX  )	r   r   r6   r  r  r%   r  r  r  r)   rl  AArn  r1  s        r   test_hamt_in_1HamtTest.test_hamt_in_1-  s    CS#CFEE!QK w'D1 2 ( |,d3 4 -, 21 ('
 43 -,sH   <
C!CC!0
D:C2?D
C	C!!
C/2
D 	<D
Dc                    [        SS5      n[        SS5      n[        SS5      n[        5       nUR                  US5      nU R                  XA   S5        U R                  XB   S5        U R	                  [
        5         XC     S S S 5        U R	                  [        5         [        SS9   XB     S S S 5        S S S 5        U R	                  [        5         [        SS9   XB     S S S 5        S S S 5        g ! , (       d  f       Nw= f! , (       d  f       N\= f! , (       d  f       Ne= f! , (       d  f       NJ= f! , (       d  f       g = fr  )	r   r   r6   r#   r%   r   r  r  r  r  s        r   test_hamt_getitem_1HamtTest.test_hamt_getitem_1A  s    CS#CFEE!QKq!"x(D ) w'D1 2 ( |,d3 4 -, )( 21 ('
 43 -,sT   >C4 
D*D/D
D8D'#D84
D
D	D
D$'
D5	1D88
ErA   N)rC   rD   rE   rF   r-  r2  r8  r?  rC  rL  rS  r   requires_resourcerh  rx  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  rG   rA   r   r   r&  r&    s    %<7#%J!FF u%W2 &W2r+(Z2$h"(H($T/$bJ*J*;&.
-"^ !.!((r   r&  __main__)concurrent.futuresr   r   r   r  r   r   unittestr  testr   test.supportr   _testinternalcapir   ImportErrorr   TestCaser   r   rd   r  r  	Exceptionr  r  skipIfr&  rC   mainrA   r   r   <module>r     s       	      )&
X3(## X3|
B BB	%S 	%   	9 		i 	 
GHY
x   Y
 IY
x zMMO W"  Ds   C CC