
    i\%                         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  edd          Z edd          ZdZ G d de          Zedk    r ej                     dS dS )    N)Context)
ContextVar)copy_context)partial)
getcurrent)greenlet   )PY314)TestCaseid)defaultvarc                   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      e/var/www/html/crypto-bot/backend/venv/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>.   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,   r-   r#   r$   propagate_byr   s     r   
<listcomp>z2ContextVarsTests._test_context.<locals>.<listcomp>0   s     
 
 
  W "U**  NN&O   15!)W44AEE%77AAT    
 
 
r   r	   r    r1   r   r      )r   r	   r         )r   r    r   switchdictr!   r   
gr_contextr   reversed
assertTruedeadr   assertIsNotNoner   values)r   r2   letsletr-   r#   r$   s   ``   @@r   _test_contextzContextVarsTests._test_context)   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   rA   r   s    r   &test_context_propagated_by_context_runz7ContextVarsTests.test_context_propagated_by_context_runf   !    $,e44444r   c                 <    |                      | j        d           d S )Nr    rC   rD   s    r   ,test_context_propagated_by_setting_attributez=ContextVarsTests.test_context_propagated_by_setting_attributei   rF   r   c                 <    |                      | j        d            d S r   rC   rD   s    r   test_context_not_propagatedz,ContextVarsTests.test_context_not_propagatedl   s!    $,d33333r   c                 <    |                      | j        d           d S )Nr1   rC   rD   s    r   test_context_sharedz$ContextVarsTests.test_context_sharedo   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   r7   r   r   let1let2s      r   test_break_ctxvarsz#ContextVarsTests.test_break_ctxvarsr   so    *++*++JLL'(((JLL'((( 	r   c                 r   t          t                      j                  }t          t                      j                  }t                      |_        t                      |_        |                                 |                                 |                                 |                                 d S r   )r   r   r7   r   r9   rN   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   r9   r    assertIsInstancer   r   r   parentr7   )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AttributeErrorr9   r   r7   assertIsr   r   r   gccollectsysgetrefcountr
   )r   r[   rX   rY   rZ   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   rW   r7   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 )Nrf   )r   r9   ri   r7   r    rh   )rZ   ctxdid_suspendrm   rj   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[   daemonrf   zrunning in a differentr9   r   )	threadingrg   r    r   EventThreadstartrh   r\   
ValueErrorgetattrr9   r^   r   joinr   )r   rt   rr   threadrZ   ro   rp   rm   rj   rk   rq   rl   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\   	TypeErrorr9   )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(   rA   rE   rH   rJ   rL   rQ   rS   rc   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   __main__)r_   ra   unittestcontextvarsr   r   r   	functoolsr   r   r    r
   r   r   rg   r   r   mainr+   r   r   <module>r      s8   				 



        " " " " " " $ $ $ $ $ $                               
D$	'	'	'
*UD
)
)
)
|  |  |  |  | x |  |  | ~ zHMOOOOO r   