
     f5C                    d   U d dl mZ d dlZd dlmZmZmZ d dlZddlm	Z	 ddl
T ddlmZ ddlmZmZ erd d	lmZ d-dZd-dZd-dZd-dZd-dZd-dZd-dZej                            deegd           d.d            Zd-dZddlm Z  ddl
m!Z!  G d de!          Z" G d de!          Z# G d d e!          Z$d! d" eed# d$ e#e$gZ%g d%Z&ej                            d&e%e&          Z'ee(e)eee"e#e$f         Z*d'e+d(<   eg e*f         Z,d'e+d)<   e'd/d*            Z-e'd/d+            Z.e'd/d,            Z/dS )0    )annotationsN)TYPE_CHECKINGCallableUnion   )_core)*)sleep_forever)assert_checkpointswait_all_tasks_blocked)	TypeAliasreturnNonec                 F  K   t                                                      rJ                                 j        dk    sJ                                                                  sJ t                      5                                   d {V  d d d            n# 1 swxY w Y   t                      g dfd} t          j                    4 d {V }|	                    |            |	                    |            t                       d {V  ddgk    sJ                                 j        dk    sJ                                  t                       d {V  g dk    sJ 	 d d d           d {V  d S # 1 d {V swxY w Y   d S )	Nr   r   r   c                    K                        d                                             d {V                       d           d S )Nsleepingwoken)appendwait)erecords   X/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/trio/_tests/test_sync.pychildztest_Event.<locals>.child   sJ      j!!!ffhhg    r   r   )r   r   r   r   r   r   )Eventis_set
statisticstasks_waitingsetr   r   r   open_nursery
start_soonr   )r   nurseryr   r   s     @@r   
test_Eventr$      s     Axxzz<<>>'1,,,,EEGGG88::			  ffhh               	AF      
 !## D D D D D D Dw5!!!5!!!$&&&&&&&&&*j11111||~~+q0000	$&&&&&&&&&CCCCCCCCD D D D D D D D D D D D D D D D D D D D D D D D D D D D D Ds%    B''B+.B+"BF
FFc                 
  K   t          j        t                    5  t          d           d d d            n# 1 swxY w Y   t          j        t          d          5  t          d           d d d            n# 1 swxY w Y   t          d          } t          |            | j        dk    sJ | j        dk    sJ | j        dk    sJ t          j        t                    5  | 
                                 d d d            n# 1 swxY w Y   | j        dk    sJ |                                  | j        dk    sJ | j        dk    sJ |                                 }|j        dk    sJ |j        dk    sJ |j        t          j                    gk    sJ |j        dk    sJ t          j        t                    5  |                                  d d d            n# 1 swxY w Y   | j        dk    sJ t          j        t                    5  |                                  d {V  d d d            n# 1 swxY w Y   | j        dk    sJ t%                      5  |                     d           d {V  d d d            n# 1 swxY w Y   | j        dk    sJ t          j        t          j                  5  |                     d	           d d d            n# 1 swxY w Y   t-          |                                 j                  t          j                    dhk    sJ |                     t          j                               |                                 j        dgk    sJ |                     d           | j        dk    sJ t%                      5  | 4 d {V  | j        dk    sJ 	 d d d           d {V  n# 1 d {V swxY w Y   d d d            n# 1 swxY w Y   t          j                    4 d {V }|                     d
           d {V  |                     d           d {V  |                    | j        d           t5                       d {V  | j        dk    sJ |                                 j        dk    sJ |                     d           | j        dk    sJ t          j        t          j                  5  |                                  d d d            n# 1 swxY w Y   d d d           d {V  n# 1 d {V swxY w Y   |                     d           |                     d
           d S )N      ?^total_tokens must be >= 1$matchr   r      someonezthird partyzvalue 1zvalue 2zvalue 3)pytestraises	TypeErrorCapacityLimiter
ValueErrorreprtotal_tokensborrowed_tokensavailable_tokensRuntimeErrorreleaseacquire_nowaitr   	borrowersr   current_taskr   acquirer   acquire_on_behalf_of
WouldBlockacquire_on_behalf_of_nowaitr    release_on_behalf_ofr!   r"   r   )cstatsr#   s      r   test_CapacityLimiterrB   /   s     	y	!	!                	z)F	G	G	G                AGGG>Q!!!!""""	|	$	$  			              !!!!!!!!""""LLNNE A%%%%""""?u13344444!#### 
|	$	$  	              !!!!	|	$	$  iikk              !!!! 
		 0 0$$Y/////////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 !!!!	u'	(	( 5 5	%%m4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 q||~~'((U-?-A-A9,MMMMM 5-//000<<>>#	{22229%%%!!!!			 * * 	* 	* 	* 	* 	* 	* 	* 	*$)))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	** * * * * * * * * * * * * * * !##       w$$Y/////////$$Y/////////119===$&&&&&&&&& A%%%%||~~+q0000	y))) A%%%%]5+,, 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	                           9%%%9%%%%%s   8<<A::A>A>#DDD=GG"%G"H66H:=H:JJJ:KK #K 	O#%O4O#
O	O#O	O##O'*O'CTS:.T:S>	>TS>	T
T!$T!c                   K   ddl m}  t          |           }t          |           |j        | k    sJ |j        dk    sJ |j        | k    sJ t          j        t                    5  |
                                 d d d            n# 1 swxY w Y   |j        dk    sJ |                                 |j        dk    sJ |j        | k    sJ d S )Nr   )infr+   )mathrD   r0   r2   r3   r4   r5   r-   r.   r6   r7   r8   )rD   r@   s     r   test_CapacityLimiter_infrF   t   s1     AGGG>S    !!!!$$$$	|	$	$  			              !!!!!!!!$$$$$$s   'BBBc                   K   t          d          } t          j        t                    5  d| _        d d d            n# 1 swxY w Y   t          j        t
          d          5  d| _        d d d            n# 1 swxY w Y   t          j        t
          d          5  d| _        d d d            n# 1 swxY w Y   | j        dk    sJ t          j                    4 d {V }t          d          D ]1}|	                    | j
        |           t                       d {V  2t          |                                 j                  ddhk    sJ |                                 j        d	k    sJ | xj        dz  c_        t          |                                 j                  h d
k    sJ |                                 j        dk    sJ | xj        d	z  c_        | j        dk    sJ | j        dk    sJ |                     d           |                     d           |                     d           t          |                                 j                  d	hk    sJ |                                 j        dk    sJ |                     d	           t          |                                 j                  dhk    sJ |                                 j        dk    sJ 	 d d d           d {V  d S # 1 d {V swxY w Y   d S )Nr   r&   r'   r(   r   i   r+      >   r   r+   r   rI      )r0   r-   r.   r/   r3   r1   r   r!   ranger"   r<   r   r    r   r9   r   r4   r?   )r@   r#   is      r   (test_CapacityLimiter_change_total_tokensrM      s;     A	y	!	!                 
z)F	G	G	G                 
z)F	G	G	G                 >Q!## 1 1 1 1 1 1 1wq 	+ 	+Aq5q999(**********1<<>>+,,A6666||~~+q0000	!1<<>>+,,<<<<||~~+q0000	! A%%%%~""""	q!!!	q!!!	q!!!1<<>>+,,3333||~~+q0000	q!!!1<<>>+,,3333||~~+q00000'1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1sF   ?AA%A99A= A=B33B7:B7$HK::
LLc                   K   t          d          } |                                  d {V  t          j                    4 d {V }|                    | j                   t                       d {V  |j                                         d d d           d {V  n# 1 d {V swxY w Y   t          | j	                  dk    sJ d S )Nr+   )r3   r   )
r0   r;   r   r!   r"   r   cancel_scopecancellen_pending_borrowers)limiterns     r    test_CapacityLimiter_memleak_548rU      s]     1---G
//

!##              q	W_%%%$&&&&&&&&&	                                                      w)**a//////s   AB  
B*-B*c                   K   t          j        t                    5  t          d           d d d            n# 1 swxY w Y   t          j        t          d          5  t          d           d d d            n# 1 swxY w Y   t          d          } t          |            | j        dk    sJ | j        J |                                  | j        dk    sJ | 	                                j
        dk    sJ |                                  | j        dk    sJ t                      5  |                                  d {V  d d d            n# 1 swxY w Y   | j        dk    sJ t          j        t          j                  5  |                                  d d d            n# 1 swxY w Y   |                                  | j        dk    sJ t                      5  | 4 d {V  | j        dk    sJ 	 d d d           d {V  n# 1 d {V swxY w Y   d d d            n# 1 swxY w Y   | j        dk    sJ |                                  g dfd}t          j                    4 d {V }|                    ||            t%                       d {V  dgk    sJ | j        dk    sJ |                                  | j        dk    sJ t          j        t          j                  5  |                                  d d d            n# 1 swxY w Y   d d d           d {V  n# 1 d {V swxY w Y   ddgk    sJ d S )Nr&   z^initial value must be >= 0$r(   r*   r+   r   r   s	Semaphorer   r   c                   K                        d           |                                  d {V                       d           d S Nstartedfinished)r   r;   )rW   r   s    r   
do_acquirez"test_Semaphore.<locals>.do_acquire   sQ      i   iikkj!!!!!r   r[   r\   )rW   rX   r   r   )r-   r.   r/   rX   r1   r2   value	max_valuer7   r   r   r8   r   r;   r   r=   r!   r"   r   )rW   r]   r#   r   s      @r   test_Semaphorer`      s     	y	!	!  #              	z)G	H	H	H  "              !AGGG7a<<<<;IIKKK7a<<<<<<>>'1,,,,7a<<<<			  iikk              7a<<<<	u'	(	(  	               IIKKK7a<<<<			     	  	  	  	  	  	  	  	 7a<<<<<	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	                               7a<<<<F" " " " " "
 !## 	 	 	 	 	 	 	w:q)))$&&&&&&&&&)$$$$w!||||			w!||||]5+,, 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 i,,,,,,,s   9= =A;;A?A?)EEEF''F+.F+!	H(*H9H(
H	H(H	H((H,/H,5B L35L
L3L	L3L	L33
L= L=c                   K   t          j        t                    5  t          dd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          dd           d d d            n# 1 swxY w Y   t          dd          } | j        dk    sJ t          |            t          j        t          d          5  |                                  d d d            n# 1 swxY w Y   | j        dk    sJ | 	                                 | j        dk    sJ |                                  | j        dk    sJ d S )	Nr+   r&   )r_   z%^max_values must be >= initial_value$r(   r   z#^semaphore released too many times$r   )
r-   r.   r/   rX   r1   r_   r2   r7   r^   r8   )bss    r   test_Semaphore_boundedrc      s     	y	!	! $ $!s####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $	z)P	Q	Q	Q " "!q!!!!" " " " " " " " " " " " " " "	1	"	"	"B<1HHH	z)N	O	O	O  


              8q====8q====JJLLL8q======s1   :>> A>>BBC22C69C6lockclsc                    | j         S N)__name__)fns    r   <lambda>ri      s    2; r   )idstype[Lock | StrictFIFOLock]c                ,	  K    |                                              rJ t          j                  } |            u sJ t                     | j        t                    v sJ t                      5  4 d {V                                   sJ t                     d d d           d {V  n# 1 d {V swxY w Y   d d d            n# 1 swxY w Y                                    rJ                                                                   sJ                                                                   rJ t                      5                                   d {V  d d d            n# 1 swxY w Y                                    sJ                                                                   rJ                                  t          j
        t                    5                                   d d d            n# 1 swxY w Y                                    t          j
        t                    5                                   d d d            n# 1 swxY w Y   d dfd}t          j                    4 d {V }                                 rJ |                    |           t                       d {V                                   sJ t          j
        t          j                  5                                   d d d            n# 1 swxY w Y   t          j
        t                    5                                   d d d            n# 1 swxY w Y                                   }t%          |           |j         sJ |j        u sJ |j        dk    sJ |                    |           t                       d {V                                  }t%          |           |j        dk    sJ |j                                         d d d           d {V  n# 1 d {V swxY w Y                                   }|j         rJ |j        J |j        dk    sJ d S )Nr   r   c                    K   t          j                     4 d {V  t                       d {V  d d d           d {V  d S # 1 d {V swxY w Y   d S rf   )r   r:   r
   )holder_taskls   r   holderz,test_Lock_and_StrictFIFOLock.<locals>.holder   s      (** 	" 	" 	" 	" 	" 	" 	" 	"//!!!!!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   A
AAr   r+   r   )lockedweakrefrefr2   rg   r   r8   r7   r;   r-   r.   r6   r   r!   r"   r   r=   r   printownerr   rO   rP   )rd   rrp   r#   r   rn   ro   s        @@r   test_Lock_and_StrictFIFOLockrw      s      			Axxzz 	AA133!8888GGGtAww&&&&			   	 	 	 	 	 	 	 	88::GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	               xxzz88::IIKKKxxzz			  iikk              88::IIKKKxxzz	|	$	$  	               IIKKK	|	$	$  			               K" " " " " " " !## & & & & & & &w88::6"""$&&&&&&&&&xxzz]5+,, 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]<(( 	 	IIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 \\^^
j    ;....'1,,,,6"""$&&&&&&&&&\\^^
j'1,,,,##%%%1& & & & & & & & & & & & & & & & & & & & & & & & & & &4 J    ####q((((((s   <	C&B=+C=
C	C
C	CC!CFFF<HH!$H!I66I:=I:#A4QL8,Q8L<	<Q?L<	 QM=1Q=N	QN	B9Q
QQc                   K   t          j        t                    5  t          t	          d                     d d d            n# 1 swxY w Y   t          j        t                    5  t          t
                     d d d            n# 1 swxY w Y   t                      } t          |           |                                 rJ                                 rJ t                      5  	                                 d {V  d d d            n# 1 swxY w Y   |                                 sJ                                 sJ t                                                      rJ 
                                                                 sJ t          j        t                    5  
                                 d d d            n# 1 swxY w Y                                    t          j        t                    5                                   d {V  d d d            n# 1 swxY w Y   t          j        t                    5                                   d d d            n# 1 swxY w Y   t          j        t                    5                                   d d d            n# 1 swxY w Y   t!                      dfd}t#          j                    4 d {V }t'          d          D ],}|                    ||           t+                       d {V  -4 d {V                                   d d d           d {V  n# 1 d {V swxY w Y                                   sJ t+                       d {V  dhk    sJ 4 d {V                                   d d d           d {V  n# 1 d {V swxY w Y   t+                       d {V  h d	k    sJ 	 d d d           d {V  n# 1 d {V swxY w Y   t!                      t#          j                    4 d {V }t'          d          D ],}|                    ||           t+                       d {V  -4 d {V                      d
                                           }t/          |           |j        dk    sJ |j        j        d
k    sJ 	 d d d           d {V  n# 1 d {V swxY w Y                                   j        j        dk    sJ t+                       d {V  ddhk    sJ 4 d {V                                   d d d           d {V  n# 1 d {V swxY w Y   d d d           d {V  n# 1 d {V swxY w Y   t#          j                    5 }4 d {V  |                                 	                                  d {V                                  sJ n#                                 sJ w xY w	 d d d           d {V  n# 1 d {V swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr+   rL   intr   r   c                   K   4 d {V                                    d {V  d d d           d {V  n# 1 d {V swxY w Y                       |            d S rf   )r   add)rL   r@   finished_waiterss    r   waiterztest_Condition.<locals>.waiterh  s       	 	 	 	 	 	 	 	&&((NNNNNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	Qs   9
AArI   r   >   r   r+   r   r   )rL   ry   r   r   )r-   r.   r/   	ConditionrX   StrictFIFOLockLockrq   r   r;   r8   r6   r7   r   notify
notify_allr    r   r!   rK   r"   r   r   rt   r   lock_statisticsCancelScoperP   )ro   r}   r#   rL   r   scoper@   r|   s         @@r   test_Conditionr   F  s"     	y	!	!    )A,,                             	y	!	! " ".!!!" " " " " " " " " " " " " " "A!Axxzzxxzz			  iikk              88::88::Axxzz88::	|	$	$  	              IIKKK	|	$	$  ffhh               
|	$	$  	


               
|	$	$  	               uu             
 !## - - - - - - -wq 	+ 	+Avq)))(********** 	 	 	 	 	 	 	 	HHJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	xxzz$&&&&&&&&&A3&&&& 	 	 	 	 	 	 	 	LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	$&&&&&&&&&999,,,,,- - - - - - - - - - - - - - - - - - - - - - - - - - - uu!##       wq 	+ 	+Avq)))(********** 	A 	A 	A 	A 	A 	A 	A 	AHHQKKKJ*+q0000-;q@@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A ||~~-;q@@@@$&&&&&&&&&Aq6)))) 	 	 	 	 	 	 	 	LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	!                          * 
			 " 	" 	" 	" 	" 	" 	" 	" 	"LLNNN"ffhhxxzz!!!!qxxzz!!!!!!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"" " " " " " " " " " " " " " " " " "s  AAA+BBB.DDD3GGGH33H7:H7I88I<?I<J==KK6AP;M"P"
M,	,P/M,	0>P.OP
O	P"O	#!P
P!$P!AV$AS?-V$?
T			V$T		AV$V/V$
V	V$V	V$$
V.1V.	Y$Y'XYX00Y4Y$
Y	Y$Y	Y$$Y(+Y()open_memory_channel)AsyncContextManagerMixinc                  .    e Zd Zd
dZddZddZddZd	S )ChannelLock1capacityry   r   r   c                    t          d          |          \  | _        | _        t          |dz
            D ]}| j                            d            d S Nr+   )r   rW   rv   rK   send_nowait)selfr   _s      r   __init__zChannelLock1.__init__  sZ    ,T28<<x!|$$ 	% 	%AFt$$$$	% 	%r   c                :    | j                             d            d S rf   rW   r   r   s    r   r8   zChannelLock1.acquire_nowait      4     r   c                J   K   | j                             d            d {V  d S rf   )rW   sendr   s    r   r;   zChannelLock1.acquire  s2      fkk$r   c                8    | j                                          d S rf   rv   receive_nowaitr   s    r   r7   zChannelLock1.release      r   N)r   ry   r   r   r   rg   
__module____qualname__r   r8   r;   r7    r   r   r   r     sd        % % % %
! ! ! !                  r   r   c                  .    e Zd ZddZddZddZddZdS )	ChannelLock2r   r   c                ~    t          d          d          \  | _        | _        | j                            d            d S N
   )r   rW   rv   r   r   s    r   r   zChannelLock2.__init__  s8    ,T22664     r   c                8    | j                                          d S rf   r   r   s    r   r8   zChannelLock2.acquire_nowait  r   r   c                H   K   | j                                          d {V  d S rf   )rv   receiver   s    r   r;   zChannelLock2.acquire  s0      fnnr   c                :    | j                             d            d S rf   r   r   s    r   r7   zChannelLock2.release  r   r   Nr   r   r   r   r   r   r     sd        ! ! ! !          ! ! ! ! ! !r   r   c                  .    e Zd ZddZddZddZddZdS )	ChannelLock3r   r   c                X    t          d          d          \  | _        | _        d| _        d S )Nr   F)r   rW   rv   acquiredr   s    r   r   zChannelLock3.__init__  s)    ,T2155 r   c                &    | j         rJ d| _         d S NT)r   r   s    r   r8   zChannelLock3.acquire_nowait  s    =   r   c                   K   | j         r"| j                            d            d {V  d S d| _         t          j                     d {V  d S r   )r   rW   r   r   
checkpointr   s    r   r;   zChannelLock3.acquire  sj      = 	%&++d########### DM"$$$$$$$$$$$r   c                    	 | j                                          d S # t          j        $ r | j        sJ d| _        Y d S w xY w)NF)rv   r   r   r=   r   r   s    r   r7   zChannelLock3.release  sZ    	"F!!##### 	" 	" 	"=   !DMMMM	"s    A A Nr   r   r   r   r   r   r     sd              % % % %" " " " " "r   r   c                      t          d          S r   )r0   r   r   r   ri   ri     s    OA r   c                      t          d          S r   )rX   r   r   r   ri   ri     s    IaLL r   c                      t          d          S r   r   r   r   r   ri   ri     s    L r   c                      t          d          S r   r   r   r   r   ri   ri     s    LOO r   )zCapacityLimiter(1)zSemaphore(1)r   r   zChannelLock1(10)zChannelLock1(1)r   r   lock_factoryr   LockLikeLockFactoryc                .  K   dd}ddd
fd	}t          j                    4 d {V } |             }t          |          D ]}|                    ||           	 d d d           d {V  n# 1 d {V swxY w Y   rJ |z  k    sJ d S )Nr   rH   Fr   	lock_liker   r   r   c                  K   t                    D ]q}| 4 d {V  dz  rJ dt          j                     d {V  t          j                     d {V  sJ dd d d           d {V  n# 1 d {V swxY w Y   rd S )Nr+   TF)rK   r   r   )r   r   LOOPSacquiresin_critical_sections     r   workerz+test_generic_lock_exclusion.<locals>.worker	  sK     u 	, 	,A  , , , , , , , ,A....&*#&(((((((((&(((((((((****&+#, , , , , , , , , , , , , , , , , , , , , , , , , , ,	, 	,s   AA33
A=	 A=	)r   r   r   r   )r   r!   rK   r"   )	r   WORKERSr   r#   r   r   r   r   r   s	         @@@r   test_generic_lock_exclusionr     sj     EGH
, 
, 
, 
, 
, 
, 
, 
, !## 2 2 2 2 2 2 2w LNN	w 	2 	2Avy1111	22 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 #"""uw&&&&&&s   3A55
A?A?c                  K   g g ddfd} |             }t          j                    4 d {V }|                    |d	|           |                    |d
|           |                    |d|           d d d           d {V  n# 1 d {V swxY w Y   t                    D ]}d|z  d|d	z   z           k    sJ d S )NrH   namery   r   r   r   r   c                   K                        |            t                    D ]C}|4 d {V                       |            d d d           d {V  n# 1 d {V swxY w Y   Dd S rf   )r   rK   )r   r   r   r   initial_orderr   s      r   loopyz.test_generic_lock_fifo_fairness.<locals>.loopy%  s     T"""u 	$ 	$A  $ $ $ $ $ $ $ $d###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $	$ 	$s   A
A$	'A$	r+   r   rI   )r   ry   r   r   r   r   )r   r!   r"   rK   )r   r   r   r#   rL   r   r   r   s        @@@r   test_generic_lock_fifo_fairnessr     s     MFE$ $ $ $ $ $ $ $ I!## 0 0 0 0 0 0 0w5!Y///5!Y///5!Y///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5\\ < <a!ea1q5k)*m;;;;;< <s   AB
BBc                d  K    |             g dfd}t          j                    4 d {V }                                 |                    |           t	                       d {V  dgk    sJ                                  d d d           d {V  d S # 1 d {V swxY w Y   d S )Nr   r   c                    K                        d            4 d {V  	 d d d           d {V  n# 1 d {V swxY w Y                        d           d S rZ   )r   )r   r   s   r   
lock_takerzCtest_generic_lock_acquire_nowait_blocks_acquire.<locals>.lock_taker?  s      i    	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	j!!!!!s   5
??r[   r   )r   r!   r8   r"   r   r7   )r   r   r#   r   r   s      @@r   /test_generic_lock_acquire_nowait_blocks_acquirer   7  sr      IF" " " " " " " !##       w  """:&&&$&&&&&&&&&)$$$$                             s   AB
B),B)r   )rd   rk   r   r   )r   r   r   r   )0
__future__r   rr   typingr   r   r   r-    r   _sync	_timeoutsr
   testingr   r   typing_extensionsr   r$   rB   rF   rM   rU   r`   rc   markparametrizer   r   rw   r   _channelr   r   r   r   r   lock_factorieslock_factory_namesgeneric_lock_testr0   rX   r   __annotations__r   r   r   r   r   r   r   <module>r      ss   " " " " " " "  1 1 1 1 1 1 1 1 1 1            % % % % % % @ @ @ @ @ @ @ @ ,++++++D D D D<B& B& B& B&J% % % % !1 !1 !1 !1J0 0 0 0-- -- -- --`   " T>$:@V@VWWJ) J) J) XWJ)ZQ" Q" Q" Q"h + * * * * * , , , , , ,         +       ! ! ! ! !+ ! ! !" " " " "+ " " "8 		 	 	  K++N(: ,         ""h,/ / / / /
 ' ' ' '8 < < < <.      r   