
    <|h{                         d dl mZ  ej                          d dlZ	 d dlZd dlZd dlZd dl	Z	d dl
Z
dZd Z G d de
j                        Zedk(  r e
j                           yy# e$ r	 d dl mZ Y Ow xY w)    )monkeyN)contextvarsc                 B     t        j                          fd       }|S )z*Needed to make reftracking test mode work.c                  X    t        j                         } |j                  g| i |S Nr   Contextrun)argskwargsctxfuncs      ]/var/www/html/test/engine/venv/lib/python3.12/site-packages/gevent/tests/test__contextvars.pywrapperz!isolated_context.<locals>.wrapper   s,    !!#swwt-d-f--    )	functoolswraps)r   r   s   ` r   isolated_contextr      s%    __T. . Nr   c                      e Zd Z eej
                  d      sej
                  j                  Zd Ze	d        Z
d Zd Zd Zd Zd Ze	d	        Zd
 Zd Zd Ze	d        Ze	d        Ze	d        Ze	d        Ze	d        Zd Ze	d        Zy)ContextTestassertRaisesRegexc                    | j                  t              5  t        j                          d d d        t        j                  d      }| j	                  |j
                  d       | j                  t              5  d|_        d d d        | j                  t        |      t        d             y # 1 sw Y   xY w# 1 sw Y   :xY w)Naaabbb)	assertRaises	TypeErrorr   
ContextVarassertEqualnameAttributeErrorassertNotEqualhash)selfcs     r   test_context_var_new_1z"ContextTest.test_context_var_new_1*   s    y) 	%""$	% ""5)'~. 	AF	 	DGT%[1	% 	%	 	s   B.9B:.B7:Cc                    t        j                  d      }| j                  dt        |             t        j                  dd      }| j                  dt        |             g }t        j                  d|      }|j	                  |       | j                  dt        |             | j                  dt        |             |j                  d      }| j                  t        |      t        |             | j                  dt        |             |j                  |       | j                  dt        |             y )Na{   default123z...   z used )r   r   assertInreprappendsetassertNotInreset)r#   r$   lstts       r   test_context_var_repr_1z#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                    | j                  t              5  t        j                  d       d d d        | j                  t              5  t        j                  dd       d d d        | j                  t              5  t        j                  d       d d d        t        j                  di i  y # 1 sw Y   xY w# 1 sw Y   _xY w# 1 sw Y   7xY w)Nr,   r'    )r   r   r   r	   )r#   s    r   test_context_new_1zContextTest.test_context_new_1]   s    y) 	#"	#y) 	(Q'	(y) 	%!$	%!b!	# 	#	( 	(	% 	%s#   B3	B?>C3B<?CCc                 b   t        j                         }| j                  t        d      5  |d    d d d        | j                  t        d      5  d|v  d d d        | j                  t        d      5  |j	                  d       d d d        y # 1 sw Y   ]xY w# 1 sw Y   FxY w# 1 sw Y   y xY w)NzContextVar key was expectedr,   )r   r	   r   r   getr#   r   s     r   test_context_typerrors_1z$ContextTest.test_context_typerrors_1f   s    !!###I/LM 	F	##I/LM 	H	##I/LM 	GGAJ	 			 		 		 	s#   BB2B%BB"%B.c                 l    t        j                         }| j                  |t         j                         y r   )r   copy_contextassertIsInstancer	   r<   s     r   test_context_get_context_1z&ContextTest.test_context_get_context_1p   s&    &&(c;#6#67r   c                    t        j                         }d }|t        j                  |      fD ]  }| j	                  |j                  |      dddif       | j	                  |j                  |d      dddif       | j	                  |j                  |d      dddd	f       | j	                  |j                  |d
d      dddd	f       i }| j	                   |j
                  |d
fi |dddif       | j	                  |i         y )Nc                      d|d<   | dz  } | |fS )Nfoospambarr8   r   r   s     r   r   z,ContextTest.test_context_run_2.<locals>.func~   s    "F6NHD<r   rF   rE   rD   r,   )r,   rG      r7   )r'   rE      )rJ   rG   )r   r	   r   partialr   r
   )r#   r   r   fr'   s        r   test_context_run_2zContextTest.test_context_run_2{   s   !!#	 
 	))$/0 	$A SWWQZ(VUO)DESWWQ]Z&%,IJQE235 2#Au568 A2##vuo.0 Q#%	$r   c                    t        j                         }d }| j                  t              5  |j	                  |       d d d        | j                  t              5  |j	                  |dd       d d d        | j                  t              5  |j	                  |ddd       d d d        y # 1 sw Y   nxY w# 1 sw Y   IxY w# 1 sw Y   y xY w)Nc                      ddz   y )Nr,   r   r8   rH   s     r   r   z,ContextTest.test_context_run_3.<locals>.func   s	    Er   r,   rI   r(   r7   )r   r	   r   ZeroDivisionErrorr
   )r#   r   r   s      r   test_context_run_3zContextTest.test_context_run_3   s    !!#	 01 	GGDM	01 	 GGD!Q	 01 	'GGD!Q#G&	' 	'		 		  	 	' 	's#   B,B8C,B58CCc                 6    t        j                         }t        j                         t        j                  d       fd fd}|j                  |      } j	                  ||        j	                  |   d        j                  |       y )Nvarc                  F     j                  j                  d              y r   )assertIsNoner;   r#   rS   s   r   func2z-ContextTest.test_context_run_4.<locals>.func2   s    cggdm,r   c                  V   j                  j                  d              j                  d       j                         j	                  j                  d       d       t        j                         } j	                  t        |       d       j	                  |    d       | S )NrE   r,   )rU   r;   r0   r
   r   r   r?   len)curctx2rW   r#   rS   s    r   func1z-ContextTest.test_context_run_4.<locals>.func1   s    cggdm,GGFOHHUOSWWT]F3**,CSXq)SXv.Jr   rE   )r   r	   r   r
   r   r-   )r#   ctx1r\   returned_ctxr[   rW   rS   s   `   @@@r   test_context_run_4zContextTest.test_context_run_4   s{    ""$""$$$U+	-		 xx|,c*F3c<(r   c                     t        j                         }t        j                  d       fd} j                  t              5  |j                  |       d d d         j                  j                  d              y # 1 sw Y   *xY w)NrS   c                  r     j                  j                  d              j                  d       ddz   y )NrE   r,   r   )rU   r;   r0   rV   s   r   r   z,ContextTest.test_context_run_5.<locals>.func   s+    cggdm,GGFOEr   )r   r	   r   r   rP   r
   rU   r;   )r#   r   r   rS   s   `  @r   test_context_run_5zContextTest.test_context_run_5   so    !!#$$U+	
 01 	GGDM	 	#''$-(	 	s   BBc                      t        j                         t        j                  dd       fd}j                  |       y )Nr'   r   r)   c                  *   j                   j                         d       j                  j                                 j                  d       j                   j                         d       j                  j                         d       y )Nr   *   )r   r;   rU   r0   )r$   r   r#   s   r   funz+ContextTest.test_context_run_6.<locals>.fun   sh    QUUWa(cggaj)EE"IQUUWb)SWWQZ,r   r   r	   r   r
   r#   rf   r$   r   s   ` @@r   test_context_run_6zContextTest.test_context_run_6   s5    !!#""32	- 	r   c                 b     t        j                          fdj                         y )Nc                  ~    j                  t        d      5   j                         d d d        y # 1 sw Y   y xY w)Nzis already entered)r   RuntimeErrorr
   )r   rf   r#   s   r   rf   z+ContextTest.test_context_run_7.<locals>.fun   s4    ''6JK   s   3<r   )r#   r   rf   s   `@@r   test_context_run_7zContextTest.test_context_run_7   s#    !!#	 	r   c                 R	   t        j                  d      }| j                  t              5  |j	                          d d d        | j                  |j	                  d              |j                  d      }| j                  |j	                         d       | j                  |j	                  d       d       | j                  |j                  |j                         | j                  |j                  t         j                  j                         | j                  |j                  |       |j                  d      }| j                  |j	                         d       | j                  |j	                  d       d       | j                  |j                  d       |j                  |       | j                  |j	                         d       | j                  |j	                  d       d       |j                  d       | j                  t        d      5  |j                  |       d d d        | j                  |j	                         d       t        j                          }| j#                  ||       |j                  |       | j                  t        d      5  |j                  |       d d d        | j                  |j	                  d              | j#                  ||       | j                  ||   d       | j                  |j	                  |d      d       | j                  t%        |      d       | j                  t'        |j)                               |dfg       | j                  t'        |j+                               dg       | j                  t'        |j-                               |g       | j                  t'        |      |g       t        j                          }| j/                  ||       | j                  t0              5  ||    d d d        | j                  |j	                  |d      d       | j                  t%        |      d       | j                  t'        |      g        y # 1 sw Y   <xY w# 1 sw Y   `xY w# 1 sw Y   xY w# 1 sw Y   xY w)	Nr$   re   rE   spam2zhas already been usedaar,   r   )r   r   r   LookupErrorr;   rU   r0   r   assertIs	old_valueMISSINGTokenrS   r2   r   rl   r?   r-   rY   listitemsvalueskeysr1   KeyError)r#   r$   t0r4   r]   r[   s         r   test_context_getset_1z!ContextTest.test_context_getset_1   sm   ""3'{+ 	EEG	 	!%%+&UU2Y"%tb)bllBJJ/bllK$5$5$=$=>bffa EE&M&)tf-b)	
"%tb)	g##L2IJ 	GGAJ	'*'')a	##L2IJ 	GGBK	!%%+&aa'*!T*G4TA&djjl+q'l^<dkkm,wi8diik*QC0daS)'')D!x( 	G	!T*D1TA&dR(c	 	,	 		 		 	s/   Q6RRR6R RRR&c                     t        j                  d      }t        j                  d      }|j                  d      }| j                  t        d      5  |j                  |       d d d        y # 1 sw Y   y xY w)Nv1v2re   zby a different)r   r   r0   r   
ValueErrorr2   )r#   r~   r   t1s       r   test_context_getset_2z!ContextTest.test_context_getset_2  s`    ##D)##D)VVBZ##J0@A 	HHRL	 	 	s   A--A6c                      t        j                  dd      t        j                          fd}j                  |       y )Nr$   re   r)   c                     j                  j                         d       j                  t              5      d d d        j	                  j                               j                  j                  d      d       j                         j                  t        j                               g        j                  d      } j                  t        j                               g       j                     d       j                  |        j                  t        j                               g        j                  t              5      d d d        y # 1 sw Y   5xY w# 1 sw Y   y xY w)Nre   rE   r,   )
r   r;   r   rz   rU   r1   rv   ry   r0   r2   )r4   r$   r   r#   s    r   rf   z.ContextTest.test_context_getset_3.<locals>.fun&  s2   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!E=0E:=F)r   r   r	   r
   rh   s   ` @@r   test_context_getset_3z!ContextTest.test_context_getset_3!  s5    ""33!!#	$ 	r   c                 
   t        j                  dd      }t        j                         }|j                  |j                  d      }| j                  t        d      5  |j                  |       d d d        y # 1 sw Y   y xY w)Nr$   re   r)   r,   zdifferent Context)r   r   r	   r
   r0   r   r   r2   )r#   r$   r   toks       r   test_context_getset_4z!ContextTest.test_context_getset_4:  sg    ""33!!#ggaeeQ##J0CD 	GGCL	 	 	s   A99Bc                      t        j                  dd      j                  g         fd}t        j                         j	                  |        j                  j                         g        y )Nr$   re   r)   c                       j                  g         j                         j                  d       j                   j                         dg       y )Nre   )r0   r;   r/   r   r$   r#   s   r   rf   z.ContextTest.test_context_getset_5.<locals>.funI  s8    EE"IEEGNN2QUUWrd+r   )r   r   r0   r?   r
   r   r;   )r#   rf   r$   s   ` @r   test_context_getset_5z!ContextTest.test_context_getset_5D  sT    ""33	b		,
 	  "&&s+"%r   c                      t        j                         t        j                  dd       fd} fdj                  |       y )Nr$   re   r)   c                  ^   j                  d       j                         } j                  |    d       j                  d       j                     d       j                  |    d       | j                         j                     d       j                  |    d       y )N
         )r0   copyr   r
   )r[   r$   r]   ctx2_funr#   s    r   ctx1_funz1ContextTest.test_context_copy_1.<locals>.ctx1_funU  s    EE"I99;DT!Wb)EE"IT!Wb)T!Wb)HHXT!Wb)T!Wb)r   c                      j                   j                         d        j                  d       j                   j                         d       y )Nr   r   )r   r;   r0   r   s   r   r   z1ContextTest.test_context_copy_1.<locals>.ctx2_func  s:    QUUWb)EE"IQUUWb)r   rg   )r#   r   r$   r]   r   s   ` @@@r   test_context_copy_1zContextTest.test_context_copy_1Q  s;    ""$""33	*	*
 	r   c           	      8    t        j                  d       fd}t        j                  j	                  d      5 }t        |j                  |t        d                  }d d d         j                  t        t        d                   y # 1 sw Y   .xY w)Ncvarc                     t        d      D ]b  }j                  | |z          t        j                  t	        j
                  dd             j                  j                         | |z          d | S )Nr   gMbP?g?)ranger0   timesleeprandomuniformr   r;   )numir   r#   s     r   subz/ContextTest.test_context_threads_1.<locals>.subn  s^    2Y 6q!

6>>%67  S1W56 Jr   r   )max_workers)	r   r   
concurrentfuturesThreadPoolExecutorrv   mapr   r   )r#   r   tpresultsr   s   `   @r   test_context_threads_1z"ContextTest.test_context_threads_1j  s{    %%f-	 22r2B 	3b266#uRy12G	3 	$uRy/2	3 	3s   %BBN)__name__
__module____qualname__hasattrunittestTestCaseassertRaisesRegexpr   r%   r   r5   r9   r=   rA   rM   rQ   r_   rb   ri   rm   r|   r   r   r   r   r   r   r8   r   r   r   r   %   s    8$$&9:$--@@2  ) )D"8$8' ) )0) 3) 3)j    0   
& 
&2 3 3r   r   __main__)geventr   	patch_allconcurrent.futuresr   r   ImportErrorr   r   r   r   hamtr   r   r   r   mainr8   r   r   <module>r      s         #     S3(## S3t  zHMMO e!  #"#s   A# #A10A1