
    [h-)                        d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ d dlmZ d dl	m	Z	 d dl	m
Z
 dd	lmZ dd
lmZ 	 d dlmZ d dlmZ d dlmZ  edd          Z edd          ZdZn# e$ r	 dxZxZZY nw xY w eedud           G d de                      Z eedud           G d de                      Zedk    r ej                     dS dS )    )print_functionN)partial)
skipUnless)skipIf)greenlet)
getcurrent   )TestCase)PY314)Context)
ContextVar)copy_contextid)defaultvarzContextVar not supportedc                   V    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd ZdS )ContextVarsTestsc                 4     t                      j        |i |S N)r   run)selfargskwargss      n/var/www/api.easyaligner.net/htdocs/venv_linux/lib/python3.11/site-packages/greenlet/tests/test_contextvars.py_new_ctx_runzContextVarsTests._new_ctx_run#   s    !|~~!426222    c                 ^   t           }|(|                     |                                           n(|                     |                                |           |                    |           t          d          D ].}||                                xx         dz  cc<    |             /d S )N   r	   )ID_VARassertIsNonegetassertEqualsetrange)r   greenlet_idcallbackcountsexpectctx_var_s          r   
_incrementzContextVarsTests._increment&   s    >gkkmm,,,,W[[]]F333K   q 	 	A7;;==!!!Q&!!!HJJJJ	 	r   c           	          t                               d           t                      j        t	          d t          d          D                        fdt          dd          D             }|D ]:}dk    rt                      |_        dk    rt                      j        |_        ;t          d          D ]B}t                                           xx         dz  cc<   |D ]}|                                 Cd	k    r't          |          D ]}|                                 n|D ]}|                                 |D ]W} 
                    |j                   d	k    r                     |j                   =                     |j                   Xdk    r                     ddddd
d           d S                      t                                                    t          dg                     d S )Nr   c              3      K   | ]}|d fV  	dS )r   N ).0is     r   	<genexpr>z1ContextVarsTests._test_context.<locals>.<genexpr>6   s&      //q!f//////r      c                     g | ]e}t          t          d k    r&t          t                      j        j                  nj        |dk    r|dz
  ndv rdnd                    fS )r   sharer	   )r#   r   r   N)r%   r&   r'   r(   )r   r   r   r   r+   )r/   r0   r&   r'   propagate_byr   s     r   
<listcomp>z2ContextVarsTests._test_context.<locals>.<listcomp>8   s     
 
 
  W "U**  NN&O   15!)W44AEE%77AAT    
 
 
r   r	   r#   r4   r   r      )r   r	   r         )r   r#   r   switchdictr$   r   
gr_contextr!   reversed
assertTruedeadr    assertIsNotNoner"   values)r   r5   letsletr0   r&   r'   s   ``   @@r   _test_contextzContextVarsTests._test_context1   sF   

1<<&//eAhh/////
 
 
 
 
 
 
 1a[[
 
 
"  	9 	9Cu$$!-((!+!8q 	 	A6::<<   A%     

 5  ~~  

   

 		5 		5COOCH%%%
 u$$!!#.1111$$S^4444 7""VqQ1%C%CDDDDDS113s88<<<<<r   c                 <    |                      | j        d           d S )Nr   r   rD   r   s    r   &test_context_propagated_by_context_runz7ContextVarsTests.test_context_propagated_by_context_runn   !    $,e44444r   c                 <    |                      | j        d           d S )Nr#   rF   rG   s    r   ,test_context_propagated_by_setting_attributez=ContextVarsTests.test_context_propagated_by_setting_attributeq   rI   r   c                 <    |                      | j        d            d S r   rF   rG   s    r   test_context_not_propagatedz,ContextVarsTests.test_context_not_propagatedt   s!    $,d33333r   c                 <    |                      | j        d           d S )Nr4   rF   rG   s    r   test_context_sharedz$ContextVarsTests.test_context_sharedw   s!    $,g66666r   c                 F   t          t                      j                  }t          t                      j                  }|                    t	                      j                   |                    t	                      j                   |                                 d S r   )r   r   r   r:   r   r   let1let2s      r   test_break_ctxvarsz#ContextVarsTests.test_break_ctxvarsz   so    *++*++JLL'(((JLL'((( 	r   c                 r   t          t                      j                  }t          t                      j                  }t                      |_        t                      |_        |                                 |                                 |                                 |                                 d S r   )r   r   r:   r   r<   rQ   s      r   9test_not_broken_if_using_attribute_instead_of_context_runzJContextVarsTests.test_not_broken_if_using_attribute_instead_of_context_run   sx    
+,,
+,,&..&..r   c                     t                               d             fd}t          |                               t          d          5  `d d d            n# 1 swxY w Y                        j                                                   \  }}                     |j                    	                    |t                    d            	                    |t                    d            	                    |
                    t           j                  d           |_                                                              j        |           d _                                                              j        |           d _                                                              j                   d t          j                      	                    t          j        |          t           sdnd            	                    t          j        |          t           sdnd           d S )Nc                                          t                                                                          j                   t                              d                               j        t                                         t                                          d                               j        t                   d           j        } d _                             t                                                                          j                   t                              d                               j        t                                         t                                          d                               j        t                   d           j        }t                      j	        
                    | |f                               t                                          d           |_                            t                                          d           t                      j	        
                                                      t                                                                          j                   | _                            t                                          d           t                      j	        
                                                      t                                                                          j                   d S )Nr	   r   )r    r   r!   r<   r#   assertIsInstancer   r"   r   parentr:   )old_contextnew_contextgrr   s     r   targetzFContextVarsTests.test_context_assignment_while_running.<locals>.target   sj   fjjll+++bm,,, JJqMMM!!"-999VZZ\\1---R]62A666 -K BMfjjll+++bm,,,JJqMMM!!"-999VZZ\\1---R]62A666-KLL&&['ABBB VZZ\\1---'BMVZZ\\1---LL&&(((fjjll+++bm,,,'BMVZZ\\1---LL&&(((fjjll+++bm,,,,,r   zcan't delete context attributer	   r   )r   r#   r   assertRaisesRegexAttributeErrorr<   r    r:   assertIsr"   r   r!   gccollectsysgetrefcountr   )r   r^   r[   r\   r]   s   `   @r   %test_context_assignment_while_runningz6ContextVarsTests.test_context_assignment_while_running   s9   

4'	- '	- '	- '	- '	- '	-R f##N4TUU 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	"-(((#%99;; [k2=111V,a000V,a00044a888#
		bm[111
		bm[111
		"-((( 

 	557Lqq1MMM557Lqq1MMMMMs   AA #A c                   	
 dd l }t                              d            t                      |                                	|                                |                                |                                
g 	fd
fd}|                    |d          }|                                 	                    d           d         }|                     t          d          5  t          |d           d d d            n# 1 swxY w Y   |                     t          d          5  d |_        d d d            n# 1 swxY w Y                                                        d           |                     |j                   |                     |j        t                   d	           d |_        
                                 |                    d           |                     |d g           |                     |j                   |_        |                     |j                   d d = d }d }d S )
Nr   c                  d   t                               d                                                                d           t                               d           t                      j                                                              t                                                      d S )Nr	   
   r   )VAR_VARr#   waitr   rZ   r:   appendr!   )holder
is_runningshould_suspends   r   greenlet_in_thread_fnzXContextVarsTests.test_context_assignment_different_thread.<locals>.greenlet_in_thread_fn   s~    KKNNNNN###KKNNNLL&&(((MM'++--(((((r   c                     t                    } | _                            |            |                                                                                       d           |                                  ~ t                       d S )Nri   )r   r<   rl   r:   r#   rk   )r]   ctxdid_suspendrp   rm   should_exits    r   	thread_fnzLContextVarsTests.test_context_assignment_different_thread.<locals>.thread_fn   sx    /00BBMMM"IIKKKOOR   IIKKKJJJJJr   T)r^   daemonri   zrunning in a differentr<   r   )	threadingrj   r#   r   EventThreadstartrk   r_   
ValueErrorgetattrr<   ra   r"   joinr    )r   rw   ru   threadr]   rr   rs   rp   rm   rn   rt   ro   s        @@@@@@@r   (test_context_assignment_different_threadz9ContextVarsTests.test_context_assignment_different_thread   s   Dii__&&
"**oo''oo''	) 	) 	) 	) 	) 	) 	)		 		 		 		 		 		 		 		 		 !!4!@@AY ##J0HII 	& 	&B%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&##J0HII 	! 	! BM	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	 	bmS)))w/333B"d,,, 	"-(((bmS))) 111Is$   9DDD<EEEc                     t                      }|                     t          d          5  | |_        d d d            d S # 1 swxY w Y   d S )Nz6greenlet context must be a contextvars.Context or None)r   r_   	TypeErrorr<   )r   gs     r   "test_context_assignment_wrong_typez3ContextVarsTests.test_context_assignment_wrong_type  s    JJ##I$\^ ^ 	  	 AL	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   ?AAN)__name__
__module____qualname__r   r+   rD   rH   rK   rM   rO   rT   rV   rf   r   r   r.   r   r   r   r   !   s        3 3 3	 	 	;= ;= ;=z5 5 55 5 54 4 47 7 7    HN HN HNT@ @ @D         r   r   zContextVar supportedc                       e Zd Zd ZdS )NoContextVarsTestsc                    t          t                      j                  }|                     t	          |d                     |                     t                    5  t          |d           d d d            n# 1 swxY w Y   |                     t                    5  d |_        d d d            n# 1 swxY w Y   |                                 |                     t                    5  t          |d           d d d            n# 1 swxY w Y   |                     t                    5  d |_        d d d            n# 1 swxY w Y   ~d S )Nr<   )	r   r   r:   assertFalsehasattrassertRaisesr`   r|   r<   )r   rR   s     r   test_contextvars_errorsz*NoContextVarsTests.test_contextvars_errors#  s"   
+,,|44555~.. 	( 	(D,'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( ~.. 	# 	#"DO	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	~.. 	( 	(D,'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( ~.. 	# 	#"DO	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# DDsH   A;;A?A? B44B8;B8-D

DD/EE
EN)r   r   r   r   r.   r   r   r   r   !  s#            r   r   __main__)
__future__r   rb   rd   unittest	functoolsr   r   r   r   r    r
   r   contextvarsr   r   r   r   rj   ImportErrorr   r   r   mainr.   r   r   <module>r      s   % % % % % % 				 



                                           /######&&&&&&(((((( Zd+++Fj---GJJ / / /*..G.j<<</ G4!;<<|  |  |  |  | x |  |  =<| ~ t344       54* zHMOOOOO s   .A- -A;:A;