
    2hhA                     `   S SK r S SK Jr  S SKrS SKrS SKrSr\R                  " \5      rS r " S S\ R                  5      r
 " S S\ R                  5      r " S	 S
\ R                  5      r " S S\ R                  5      r " S S\ R                  5      r\S:X  a  \ R                   " 5         gg)    N)mockz^<(?P<class>.*?) object at (?P<address>.*?)\[(?P<extras>(set|unset|locked|unlocked|filling|draining|resetting|broken)(, value:\d)?(, waiters:\d+)?(, waiters:\d+\/\d+)?)\]>\Zc                  0    [         R                  " S 5        g N)asyncioset_event_loop_policy     E/opt/python-3.13.8/usr/lib/python3.13/test/test_asyncio/test_locks.pytearDownModuler      s    !!$'r	   c                   \    \ 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)	LockTests   c                   #    [         R                  " 5       nU R                  [        U5      R	                  S5      5        U R                  [
        R                  [        U5      5      5        UR                  5       I S h  vN   U R                  [        U5      R	                  S5      5        U R                  [
        R                  [        U5      5      5        g  N[7f)Nz[unlocked]>	[locked]>)r   Lock
assertTruereprendswithRGX_REPRmatchacquireselflocks     r
   	test_reprLockTests.test_repr   s     ||~T
++M:;tDz23llnT
++K89tDz23 	s   A?CCACc                    #    [         R                  " 5       nU R                  [        S5         UI S h  vN   S S S 5        U R	                  UR                  5       5        g  N,! , (       d  f       N0= f7f)Nz/object Lock can't be used in 'await' expression)r   r   assertRaisesRegex	TypeErrorassertFalselockedr   s     r
   	test_lockLockTests.test_lock%   sW     ||~##=
 JJ	
 	' 	
 
s+   ,A4A#A!A#(A4!A##
A1-A4c                 j  #    [         R                  [         R                  [         R                  [         R                  [         R
                  /n[         R                  " 5       nU H5  nU R                  [        UR                   S35         U" US9  S S S 5        M7     g ! , (       d  f       MI  = f7f)Nz8\.__init__\(\) got an unexpected keyword argument 'loop'loop)
r   r   	ConditionEvent	SemaphoreBoundedSemaphoreget_running_loopr   r   __name__)r   primitives_clsr&   clss       r
   &test_lock_doesnt_accept_loop_parameter0LockTests.test_lock_doesnt_accept_loop_parameter0   s     LLMM$$
 '')!C''LL> "+ ,
   " s   BB3B!B3!
B0	+B3c                 ,  #    [         R                  " 5       [         R                  " 5       [         R                  " 5       [         R                  " 5       /nU H  n[         R
                  " S5      I S h  vN   U R                  UR                  5       5        U R                  [        S5         UI S h  vN     S S S 5        S S S 5        U R                  UR                  5       5        M     g  Nz N<! , (       d  f       N>= f! , (       d  f       NG= f7f)N{Gz?z.object \w+ can't be used in 'await' expression)
r   r   r'   r)   r*   sleepr    r!   r   r   )r   
primitivesr   s      r
   test_lock_by_with_statement%LockTests.test_lock_by_with_statementC   s     LLN$$&	

 D--%%%T[[]+''A  ZZ  	 T[[]+ %  Z	 sT   A1D3C.49D-D3C04D8C2:D-D0D2
D <D
D	Dc                 8  ^#    [         R                  " 5       m/ nU R                  TR                  5       I S h  vN 5        U4S jnU4S jnU4S jn[         R                  " U" U5      5      n[         R                  " U" U5      5      n[         R
                  " S5      I S h  vN   U R                  / U5        TR                  5         [         R
                  " S5      I S h  vN   U R                  S/U5        [         R
                  " S5      I S h  vN   U R                  S/U5        [         R                  " U" U5      5      nTR                  5         [         R
                  " S5      I S h  vN   U R                  SS/U5        TR                  5         [         R
                  " S5      I S h  vN   U R                  / SQU5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        g  GNP GN GN GN| GN" N7f)Nc                 n   >#    TR                  5       I S h  vN (       a  U R                  S5        g N7fN   Tr   appendresultr   s    r
   c1"LockTests.test_acquire.<locals>.c1\   )     \\^##a  $   535c                 n   >#    TR                  5       I S h  vN (       a  U R                  S5        g N7fN   Tr;   r=   s    r
   c2"LockTests.test_acquire.<locals>.c2a   rA   rB   c                 n   >#    TR                  5       I S h  vN (       a  U R                  S5        g N7fN   Tr;   r=   s    r
   c3"LockTests.test_acquire.<locals>.c3f   rA   rB   r   r:   rE   r:   rE   rJ   )
r   r   r   r   create_taskr3   assertEqualreleasedoner>   )	r   r>   r?   rF   rK   t1t2t3r   s	           @r
   test_acquireLockTests.test_acquireV   s    ||~dlln,-	
	
	
   F,  F,mmAV$mmA!f%mmA!f%  F,mmA!Q(mmAF+	"		$	"		$	"		$[ -( 	 	 	 	 	sm   6JJ	A+J%J&?J%J&0JJAJ3J4AJ5J6CJJJJJJc                   #    [         R                  " 5       nU R                  UR                  5       I S h  vN 5        [         R                  " UR                  5       5      n[         R
                  " 5       R                  UR                  5        U R                  [         R                  5         UI S h  vN   S S S 5        U R                  UR                  5        g  N N*! , (       d  f       N.= f7fr   )r   r   r   r   rN   r+   	call_sooncancelassertRaisesCancelledErrorr    _waiters)r   r   tasks      r
   test_acquire_cancelLockTests.test_acquire_cancel   s     ||~dlln,-""4<<>2  ",,T[[9w556JJ 7' -
  76s:   4C4CA9C40C#6C!7C#;%C4!C##
C1-C4c                 |  ^#    [         R                  " 5       mU4S jn[         R                  " 5       R                  5       n[         R                  " U" SU5      5      n[         R
                  " S5      I S h  vN   U R                  TR                  5       5        [         R                  " U" SS 5      5      n[         R
                  " S5      I S h  vN   U R                  [        TR                  5      S5        [         R                  " U" SS 5      5      n[         R
                  " S5      I S h  vN   U R                  [        TR                  5      S5        UR                  S 5        UR                  5         U R                  TR                  S   R                  5       5        [         R
                  " S5      I S h  vN   U R                  TR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        UI S h  vN   g  GN GN` GN Nu N7f)Nc                    >#    TR                  5       I S h  vN    Ub
  UI S h  vN   TR                  5         g  N# N! TR                  5         f = f7fr   )r   rP   )nameblockerr   s     r
   lockit*LockTests.test_cancel_race.<locals>.lockit   sD     ,,.  &!MM ! "s.   A;A? =? A? AAAr   Br:   CrE   )r   r   r+   create_futurerN   r3   r   r!   rO   lenr\   
set_resultrY   	cancelledr    rQ   )r   rd   fatatbtcr   s         @r
   test_cancel_raceLockTests.test_cancel_race   s     ||~	 %%'557  R1mmA&  T!23mmAT]]+Q/  T!23mmAT]]+Q/ 	d
		a(2245mmA'	"'% 	 	 	 	 	s^   A5H<8H/9AH<H2AH<2H53BH<H8A&H<)H:*H<2H<5H<8H<:H<c                   ^^^^	#    [         R                  " 5       n[         R                  " 5       mSmSmUUU4S jnUU	4S jnTR                  5       I S h  vN   [         R                  " U" 5       5      m	[         R                  " U" 5       5      n[         R                  " U" 5       5      n[         R
                  " S5      I S h  vN   UR                  U5        U R                  [         R                  5         T	I S h  vN   S S S 5        U R                  TS5        U R                  TS5        U R                  T	R                  5       =(       a    UR                  5       5        UR                  5         [         R
                  " S5      I S h  vN   U R                  UR                  5       5        g  GN_ N N! , (       d  f       N= f N<7f)Nr   c                  V   >#    T S-  m TR                  5       I S h  vN   TS-  mg  N
7fNr:   )r   )
call_countr   
lock_counts   r
   rd   2LockTests.test_cancel_release_race.<locals>.lockit   s.      !OJ,,.  !OJ !s   )')c                  F   > TR                  5         T R                  5         g r   )rY   rP   )r   rR   s   r
   trigger3LockTests.test_cancel_release_race.<locals>.trigger   s    IIKLLNr	   r:   rJ   )r   r+   r   r   rN   r3   rX   rZ   r[   rO   r   rl   rQ   rY   )
r   r&   rd   rz   rS   rT   rv   r   rw   rR   s
         @@@@r
   test_cancel_release_race"LockTests.test_cancel_release_race   sG     '')||~

		 lln  *  *  * mmAww556HH 7
 	Q'Q'427795 			mmA'/ 	 	
  76 	s\   AGF6A.GF94G;F=F;F=BGG%G9G;F==
GGc                   #    [         R                  " 5       nUR                  5       I S h  vN   U R                  UR	                  5       5        [         R
                  " UR                  5       5      n[         R                  " S5      I S h  vN   U R                  [        UR                  5      S5        [         R
                  " UR                  5       5      nUR                  5         UR                  5         [         R                  " S5      I S h  vN   U R                  UR	                  5       5        U R                  UR                  5       5        UI S h  vN   g  GN6 N NR N7fNr   r:   )r   r   r   r   r!   rN   r3   rO   rj   r\   rY   rP   rl   )r   r   ro   rp   s       r
   test_finished_waiter_cancelled(LockTests.test_finished_waiter_cancelled   s     ||~lln&  0mmAT]]+Q/   0
		mmA&' % 	 	 	 	sH   )E*E!A E*E$BE*E&AE*E(E*$E*&E*(E*c                 v   #    [         R                  " 5       nU R                  [        UR                  5        g 7fr   )r   r   rZ   RuntimeErrorrP   r   s     r
   test_release_not_acquired#LockTests.test_release_not_acquired  s$     ||~,5s   79c                   #    [         R                  " 5       nUR                  5       I S h  vN   U R                  UR	                  5       5        UR                  5         U R                  UR	                  5       5        g  NS7fr   )r   r   r   r   r!   rP   r    r   s     r
   test_release_no_waiters!LockTests.test_release_no_waiters  sS     ||~lln&'	 	   )BA?ABc                 b  #    [         R                  " 5       nU R                  UR                  5       5        U IS h  vN   U R	                  UR                  5       5        S S S 5      IS h  vN   U R                  UR                  5       5        g  NS N&! , IS h  vN  (       d  f       N;= f7fr   )r   r   r    r!   r   r   s     r
   test_context_managerLockTests.test_context_manager  sc     ||~'4OODKKM* 4 	' 444E   ;B/BB/ B!B/,B-%B/B/B,BB,(B/r   N)r,   
__module____qualname____firstlineno__r   r"   r/   r5   rU   r^   rq   r|   r   r   r   r   __static_attributes__r   r	   r
   r   r      sA    4	(&,&1%f(-^+(Z.6
((r	   r   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)

EventTestsi  c                    [         R                  " 5       nU R                  [        U5      R	                  S5      5        [
        R                  [        U5      5      nU R                  UR                  S5      S5        UR                  5         U R                  [        U5      R	                  S5      5        U R                  [
        R                  [        U5      5      5        UR                  R                  [        R                  " 5       5        U R                  S[        U5      ;   5        U R                  [
        R                  [        U5      5      5        g )Nz[unset]>extrasunsetz[set]>	waiters:1)r   r(   r   r   r   r   r   rO   groupsetr\   r<   r   Mock)r   evr   s      r
   r   EventTests.test_repr  s    ]]_R))*56tBx(X.8
R))(34tBx01
499;'tBx/0tBx01r	   c                   ^#    [         R                  " 5       mU R                  TR                  5       5        / nU4S jnU4S jnU4S jn[         R                  " U" U5      5      n[         R                  " U" U5      5      n[         R
                  " S5      I S h  vN   U R                  / U5        [         R                  " U" U5      5      nTR                  5         [         R
                  " S5      I S h  vN   U R                  / SQU5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        g  GN0 N7f)Nc                 p   >#    TR                  5       I S h  vN (       a  U R                  S5        g g  N7fru   waitr<   r>   r   s    r
   r?    EventTests.test_wait.<locals>.c13  $     WWYa     646c                 p   >#    TR                  5       I S h  vN (       a  U R                  S5        g g  N7f)NrE   r   r   s    r
   rF    EventTests.test_wait.<locals>.c27  r   r   c                 p   >#    TR                  5       I S h  vN (       a  U R                  S5        g g  N7f)NrJ   r   r   s    r
   rK    EventTests.test_wait.<locals>.c3;  r   r   r   )rJ   r:   rE   )r   r(   r    is_setrN   r3   rO   r   r   rQ   assertIsNoner>   )	r   r>   r?   rF   rK   rR   rS   rT   r   s	           @r
   	test_waitEventTests.test_wait-  s@    ]]_%	!	!	!   F,  F,mmAV$  F,
mmAF+	""))+&	""))+&	""))+& 	 	s&   BGGAG9G:CGGc                    #    [         R                  " 5       nUR                  5         UR                  5       I S h  vN nU R	                  U5        g  N7fr   )r   r(   r   r   r   )r   r   ress      r
   test_wait_on_setEventTests.test_wait_on_setR  s7     ]]_
GGIo s   9AAAc                   #    [         R                  " 5       n[         R                  " UR                  5       5      n[         R                  " 5       R                  UR                  5        U R                  [         R                  5         UI S h  vN   S S S 5        U R                  UR                  5        g  N(! , (       d  f       N,= f7fr   )r   r(   rN   r   r+   rX   rY   rZ   r[   r    r\   )r   r   r   s      r
   test_wait_cancelEventTests.test_wait_cancelY  s     ]]_""2779-  ",,T[[9w556JJ 7%  76s0   BC	B:B8B:$C8B::
CCc                 0  #    [         R                  " 5       nU R                  UR                  5       5        UR	                  5         U R                  UR                  5       5        UR                  5         U R                  UR                  5       5        g 7fr   )r   r(   r    r   r   r   clear)r   r   s     r
   
test_clearEventTests.test_clearb  s\     ]]_%
		$

%s   BBc                   ^#    [         R                  " 5       m/ nU4S jn[         R                  " U" U5      5      n[         R                  " S5      I S h  vN   U R	                  / U5        TR                  5         TR                  5         U R                  TR                  5       5        TR                  5         TR                  5         U R	                  S[        TR                  5      5        [         R                  " S5      I S h  vN   U R	                  S/U5        U R	                  S[        TR                  5      5        U R                  UR                  5       5        U R                  UR                  5       5        g  GN0 N~7f)Nc                 n   >#    TR                  5       I S h  vN (       a  U R                  S5        g N7fr9   r   r   s    r
   r?   .EventTests.test_clear_with_waiters.<locals>.c1p  s'     WWYa  rB   r   r:   )r   r(   rN   r3   rO   r   r   r    r   rj   r\   r   rQ   r>   )r   r>   r?   tr   s       @r
   test_clear_with_waiters"EventTests.test_clear_with_waitersl  s    ]]_	
 6
+mmAV$


%

C,-mmA!f%C,-!
#! 	 	s&   AFFB3F
F	A<F	Fr   N)r,   r   r   r   r   r   r   r   r   r   r   r   r	   r
   r   r     s!    2#'J&&$r	   r   c                       \ 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S rS rS rS rS rS rSrg)ConditionTestsi  c                 V  ^#    [         R                  " 5       m/ nU4S jnU4S jnU4S jn[         R                  " U" U5      5      n[         R                  " U" U5      5      n[         R                  " U" U5      5      n[         R                  " S5      I S h  vN   U R	                  / U5        U R                  TR                  5       5        U R                  TR                  5       I S h  vN 5        TR                  5         [         R                  " S5      I S h  vN   U R	                  / U5        U R                  TR                  5       5        TR                  5         [         R                  " S5      I S h  vN   U R	                  S/U5        U R                  TR                  5       5        TR                  S5        [         R                  " S5      I S h  vN   U R	                  S/U5        U R                  TR                  5       5        TR                  5         [         R                  " S5      I S h  vN   U R	                  SS/U5        U R                  TR                  5       5        TR                  5         [         R                  " S5      I S h  vN   U R	                  / SQU5        U R                  TR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        g  GN GN GNz GN GN GNc GN7f)Nc                    >#    TR                  5       I S h  vN   TR                  5       I S h  vN (       a  U R                  S5        g N3 N7fr9   r   r   r<   r>   conds    r
   r?   $ConditionTests.test_wait.<locals>.c1  ;     ,,.  YY[  a  !    AAAAAAc                    >#    TR                  5       I S h  vN   TR                  5       I S h  vN (       a  U R                  S5        g N3 N7frD   r   r   s    r
   rF   $ConditionTests.test_wait.<locals>.c2  r   r   c                    >#    TR                  5       I S h  vN   TR                  5       I S h  vN (       a  U R                  S5        g N3 N7frI   r   r   s    r
   rK   $ConditionTests.test_wait.<locals>.c3  r   r   r   r:   rE   rM   )r   r'   rN   r3   rO   r    r!   r   r   notifyrP   rQ   r>   	r   r>   r?   rF   rK   rR   rS   rT   r   s	           @r
   r   ConditionTests.test_wait  sz      "			   F,  F,  F,mmAV$'dlln,-mmAV$&mmA!f%&AmmA!f%&mmA!Q(&mmAF+&	"		$	"		$	"		$G 	 -
 	
 	
 	
 	s   BN)NAN).N/1N) N!AN)?N A N) N !AN) N#A N)!N&"C3N)N)N)N) N)#N)&N)c                   #    [         R                  " 5       nUR                  5       I S h  vN   [         R                  " UR	                  5       5      n[         R
                  " 5       R                  UR                  5        U R                  [         R                  5         UI S h  vN   S S S 5        U R                  UR                  5        U R                  UR                  5       5        g  N NI! , (       d  f       NM= f7fr   )r   r'   r   rN   r   r+   rX   rY   rZ   r[   r    r\   r   r!   )r   r   r   s      r
   r   ConditionTests.test_wait_cancel  s       "lln""499;/  ",,T[[9w556JJ 7'& 	
  76s;   )DC/A5D!C3'C1(C3,AD1C33
D=Dc                 F  #    [         R                  " 5       nUR                  5       I S h  vN   U R                  UR	                  5       5        [         R
                  " UR                  5       5      n[         R                  " S5      I S h  vN   U R                  UR	                  5       5        UR                  5       I S h  vN   U R                  UR	                  5       5        UR                  5         [         R                  " 5       R                  UR                  5        [         R                  " 5       R                  UR                  5         UI S h  vN   U R                  UR	                  5       5        g  GNS N N N+! [         R                   a     N?f = f7fNr   )r   r'   r   r   r!   rN   r   r3   r    r   r+   rX   rY   rP   r[   )r   r   	wait_tasks      r
   test_wait_cancel_contested)ConditionTests.test_wait_cancel_contested  s      "lln&''		4	mmA' lln&  ",,Y-=-=>  ",,T\\:	OO
 	&) 	 	 	 %% 		sk   )F!E>A F!F6F!FBF!F FF !F!F!F!F FF!FF!c                 v  ^^#    Sm[         R                  " 5       mUU4S jn[         R                  " U" 5       5      n[         R                  " S5      I S h  vN   TR	                  5       I S h  vN   TR                  5         [         R                  " S5      I S h  vN   UR                  5         [         R                  " S5      I S h  vN   TR                  5         [         R                  " S5      I S h  vN   U R                  UR                  5       5        U R                  T5        g  N N N Ni N=7f)NFc                     >#    T  IS h  vN   SmT R                  5       I S h  vN   S S S 5      IS h  vN   g  N/ N N	! , IS h  vN  (       d  f       g = f7fNTr   )r   waiteds   r
   wait_on_condBConditionTests.test_wait_cancel_after_notify.<locals>.wait_on_cond  s6     tiik!! tt! tttsL   A:AA <A A>AA A AA	AAr   )
r   r'   rN   r3   r   r   rY   rP   r   rl   )r   r   waiterr   r   s      @@r
   test_wait_cancel_after_notify,ConditionTests.test_wait_cancel_after_notify  s       "	" $$\^4mmAllnmmAmmAmmA((*+ 	sZ   AD9D/D9/D10-D9D3-D9D5-D99D7:6D91D93D95D97D9c                    #    [         R                  " 5       nU R                  [        5         UR	                  5       I S h  vN   S S S 5        g  N! , (       d  f       g = f7fr   )r   r'   rZ   r   r   r   r   s     r
   test_wait_unacquired#ConditionTests.test_wait_unacquired  sC       "|,))+ -, -,s.   +A"AAA	A"A
AA"c                 0  ^^^#    [         R                  " 5       mSmU4S jm/ nUU4S jn[         R                  " U" U5      5      n[         R                  " S5      I S h  vN   U R	                  / U5        TR                  5       I S h  vN   TR                  5         TR                  5         [         R                  " S5      I S h  vN   U R	                  / U5        SmTR                  5       I S h  vN   TR                  5         TR                  5         [         R                  " S5      I S h  vN   U R	                  S/U5        U R                  UR                  5       5        U R                  UR                  5       5        g  GN) GN N N N`7f)NFc                     > T $ r   r   )presults   r
   	predicate/ConditionTests.test_wait_for.<locals>.predicate  s    Nr	   c                    >#    TR                  5       I S h  vN   TR                  T5      I S h  vN (       a!  U R                  S5        TR                  5         g ND N-7fr9   )r   wait_forr<   rP   )r>   r   r   s    r
   r?   (ConditionTests.test_wait_for.<locals>.c1  sG     ,,.  ]]9---a 	 !-s   A AA A,A A r   Tr:   r   r'   rN   r3   rO   r   r   rP   r   rQ   r>   )r   r>   r?   r   r   r   r   s       @@@r
   test_wait_forConditionTests.test_wait_for  s,      "	 	 6
+mmAV$llnmmAV$llnmmA!f%!
## 	 	 	 	 	s[   AF!F
")FF=F	F
+F5F6=F3F4AFFFFFc                 ,  #    [         R                  " 5       nUR                  S 5      I S h  vN nU R                  / SQU5        U R	                  [
        5         UR                  S 5      I S h  vN   S S S 5        g  NQ N! , (       d  f       g = f7f)Nc                  
    / SQ$ )NrM   r   r   r	   r
   <lambda>9ConditionTests.test_wait_for_unacquired.<locals>.<lambda>6  s    )r	   rM   c                      g)NFr   r   r	   r
   r   r   :  s    r	   )r   r'   r   rO   rZ   r   )r   r   r   s      r
   test_wait_for_unacquired'ConditionTests.test_wait_for_unacquired2  sq       " MM"344C(|,--... -, 5 / -,s9   +BA?-BB1B2B6
BB
BBc                   ^#    [         R                  " 5       m/ nU4S jnU4S jnU4S jn[         R                  " U" U5      5      n[         R                  " U" U5      5      n[         R                  " U" U5      5      n[         R                  " S5      I S h  vN   U R	                  / U5        TR                  5       I S h  vN   TR                  S5        TR                  5         [         R                  " S5      I S h  vN   U R	                  S/U5        TR                  5       I S h  vN   TR                  S5        TR                  S5        TR                  5         [         R                  " S5      I S h  vN   U R	                  / SQU5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        g  GN GN GNU GN- N7f)Nc                    >#    TR                  5       I S h  vN   TR                  5       I S h  vN (       a!  U R                  S5        TR                  5         g NC N-7fr9   r   r   r<   rP   r   s    r
   r?   &ConditionTests.test_notify.<locals>.c1@  D     ,,.  YY[  a 	 !    AAAA,AAc                    >#    TR                  5       I S h  vN   TR                  5       I S h  vN (       a!  U R                  S5        TR                  5         g NC N-7frD   r   r   s    r
   rF   &ConditionTests.test_notify.<locals>.c2G  r   r   c                    >#    TR                  5       I S h  vN   TR                  5       I S h  vN (       a!  U R                  S5        TR                  5         g NC N-7frI   r   r   s    r
   rK   &ConditionTests.test_notify.<locals>.c3N  r   r   r   r:   i   rM   r   r   s	           @r
   test_notifyConditionTests.test_notify<  s      "			   F,  F,  F,mmAV$llnAmmA!f%llnADmmAF+	"		$	"		$	"		$+ 	 	 	 	 	s\   BI I)I I>I I*I .I/AI >I?CI I I I I c                   ^#    [         R                  " 5       m/ nU4S jnU4S jn[         R                  " U" U5      5      n[         R                  " U" U5      5      n[         R                  " S5      I S h  vN   U R	                  / U5        TR                  5       I S h  vN   TR                  5         TR                  5         [         R                  " S5      I S h  vN   U R	                  SS/U5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        g  N N N7f)Nc                    >#    TR                  5       I S h  vN   TR                  5       I S h  vN (       a!  U R                  S5        TR                  5         g NC N-7fr9   r   r   s    r
   r?   *ConditionTests.test_notify_all.<locals>.c1u  r   r   c                    >#    TR                  5       I S h  vN   TR                  5       I S h  vN (       a!  U R                  S5        TR                  5         g NC N-7frD   r   r   s    r
   rF   *ConditionTests.test_notify_all.<locals>.c2|  r   r   r   r:   rE   )r   r'   rN   r3   rO   r   
notify_allrP   r   rQ   r>   )r   r>   r?   rF   rR   rS   r   s         @r
   test_notify_allConditionTests.test_notify_allp  s      "		   F,  F,mmAV$llnmmA!Q(	"		$	"		$ 	 	 	s7   A5E<8E69)E<"E8#=E< E:!BE<8E<:E<c                 n    [         R                  " 5       nU R                  [        UR                  5        g r   )r   r'   rZ   r   r   r   s     r
   test_notify_unacquired%ConditionTests.test_notify_unacquired  s$      ",4r	   c                 n    [         R                  " 5       nU R                  [        UR                  5        g r   )r   r'   rZ   r   r  r   s     r
   test_notify_all_unacquired)ConditionTests.test_notify_all_unacquired  s$      ",8r	   c                   #    [         R                  " 5       nU R                  S[        U5      ;   5        U R                  [        R                  [        U5      5      5        UR                  5       I S h  vN   U R                  S[        U5      ;   5        UR                  R                  [        R                  " 5       5        U R                  S[        U5      ;   5        U R                  [        R                  [        U5      5      5        UR                  R                  [        R                  " 5       5        U R                  S[        U5      ;   5        U R                  [        R                  [        U5      5      5        g  GN7f)Nunlockedr!   r   	waiters:2)r   r'   r   r   r   r   r   r\   r<   r   r   r   s     r
   r   ConditionTests.test_repr  s       "
d4j01tDz23llnDJ./TYY[)tDz12tDz23TYY[)tDz12tDz23 	s   A3F5F6DFc                 b  #    [         R                  " 5       nU R                  UR                  5       5        U IS h  vN   U R	                  UR                  5       5        S S S 5      IS h  vN   U R                  UR                  5       5        g  NS N&! , IS h  vN  (       d  f       N;= f7fr   )r   r'   r    r!   r   r   s     r
   r   #ConditionTests.test_context_manager  sd       "'4OODKKM* 4' 444r   c                   ^ #    SU 4S jjnU" 5       I S h  vN   U" [         R                  " 5       5      I S h  vN   [         R                  " 5       nU" U[         R                  " U5      5      I S h  vN   g  Nb NA N	7f)Nc                   >#    U c  [         R                  " 5       n Uc  [         R                  " U 5      nTR                  UR                  U 5        TR                  U R                  5       5        TR                  UR                  5       5        U IS h  vN   TR                  U R                  5       5        TR                  UR                  5       5        S S S 5      IS h  vN   TR                  U R                  5       5        TR                  UR                  5       5        U  IS h  vN   TR                  U R                  5       5        TR                  UR                  5       5        S S S 5      IS h  vN   TR                  U R                  5       5        TR                  UR                  5       5        g  GN) N! , IS h  vN  (       d  f       N= f N Nd! , IS h  vN  (       d  f       Ny= f7fr   )r   r   r'   assertIs_lockr    r!   r   )r   r   r   s     r
   f,ConditionTests.test_explicit_lock.<locals>.f  s0    |||~|((.MM$**d+T[[]+T[[]+t.. t T[[]+T[[]+t.. t T[[]+T[[]+ ttt
 ttts   BG;F>G;?GG;#G$AG;,G-G;0?G!/G;:G;AG;G;G	G
GG;G;!G8'G*(G84G;)NN)r   r   r'   )r   r  r   s   `  r
   test_explicit_lock!ConditionTests.test_explicit_lock  s[     	,( c		||~g''-... 	.s1   A?A9"A?A;9A?3A=4A?;A?=A?c                    ^ ^#    [         R                  " 5       mT R                  TR                  5        UU 4S jnUU 4S jnU" 5       I S h  vN   U" 5       I S h  vN   g  N N7f)Nc                    >#    TR                  [        5         [        R                  " TS9  S S S 5        [        R                  " 5       n TU l        U  IS h  vN   [        R
                  " U 5      nTR                  [        S5         UR                  5       I S h  vN   S S S 5        S S S 5      IS h  vN   g ! , (       d  f       N= f Ns N0! , (       d  f       N4= f N+! , IS h  vN  (       d  f       g = f7fNr%   z"is bound to a different event loop)	rZ   r   r   r   _loopr'   r   r   r   r   r   r&   r   s     r
   wrong_loop_in_lock?ConditionTests.test_ambiguous_loops.<locals>.wrong_loop_in_lock  s     ""9-$' .<<>DDJt ((. ++ 8 ,,.((	 tt	 .-  )	  ttts   C=B;*C=CC=-C#	CCC"C#*C=5C!6C=;
C	C=C
C	C#!C=#C:)C,*C:6C=c                     >#    [         R                  " 5       n U  IS h  vN   TR                  [        5         [         R                  " U TS9  S S S 5        [         R                  " U 5      nTUl        TR                  [        S5         UR                  5       I S h  vN   S S S 5        S S S 5      IS h  vN   g  N! , (       d  f       Nu= f N0! , (       d  f       N4= f N+! , IS h  vN  (       d  f       g = f7fr   )	r   r   rZ   r   r'   r!  r   r   r   r"  s     r
   wrong_loop_in_cond?ConditionTests.test_ambiguous_loops.<locals>.wrong_loop_in_cond  s     <<>Dt&&y1%%d6 2((.!
++ 8 ))+%%	 tt11 &	  ttts   C>B<C>C$B>;C$
CCC#C$+C>6C"7C>>
C	C$C
C	C$"C>$C;*C-+C;7C>)r   new_event_loop
addCleanupclose)r   r#  r&  r&   s   `  @r
   test_ambiguous_loops#ConditionTests.test_ambiguous_loops  sP     %%'

#	)"	& !""" """ 	#"s$   A	A&A"A&A$A&$A&c                 t  #    [         R                  " 5       nU IS h  vN   U R                  [         R                  5         [         R                  " UR                  5       SS9I S h  vN   S S S 5        S S S 5      IS h  vN   g  Nh N! , (       d  f       N#= f N! , IS h  vN  (       d  f       g = f7f)Ng      ?timeout)r   r'   rZ   TimeoutErrorr   r   )r   	conditions     r
   test_timeout_in_block$ConditionTests.test_timeout_in_block  sn     %%'	9""7#7#78&&y~~'7EEE 9 99E 98 999sn   B8BB8 B'B)B	*B.B6B8BB8	B
B	BB8B5$B'%B51B8c                   ^ ^^^#    SmS m[         R                  " 5       mUUU U4S jn[         R                  " U" 5       5      n[         R                  " S5      I S h  vN   UR	                  SS9  T R                  [         R                  5       nUI S h  vN   S S S 5        T R                  WR                  R                  S5        T R                  UR                  T5        g  N NQ! , (       d  f       NU= f7f)NFc                  &  >#    T IS h  vN   TR                  [        R                  5       n TR                  U4S j5      I S h  vN   S S S 5        W R                  mTe NW N! , (       d  f       N = f! , IS h  vN  (       d  f       g = f7f)Nc                     > T $ r   r   wakes   r
   r   JConditionTests.test_cancelled_error_wakeup.<locals>.func.<locals>.<lambda>      r	   rZ   r   r[   r   	exceptionerrr   raisedr   r8  s    r
   func8ConditionTests.test_cancelled_error_wakeup.<locals>.func   `     t&&w'='=>#--555 ?	 5 ?> tt[   BA"B A7A&A$A&A7"B$A&&
A4	0A77B=B >B
Br   foomsgrD  )r   r'   rN   r3   rY   rZ   r[   rO   r<  argsr  r   r@  r]   r>  r   r?  r8  s   `   @@@r
   test_cancelled_error_wakeup*ConditionTests.test_cancelled_error_wakeup  s        "	 	 ""46*mmAw556#JJ 7++X6 	cmmV, 	  76s=   AC;C&2C;C*C(C*AC;(C**
C84C;c                   ^ ^^^#    SmS m[         R                  " 5       mUUU U4S jn[         R                  " U" 5       5      n[         R                  " S5      I S h  vN   TR	                  5       I S h  vN   SmTR                  5         [         R                  " S5      I S h  vN   UR                  SS9  TR                  5         T R                  [         R                  5       nUI S h  vN   S S S 5        T R                  WR                  R                  S5        T R                  UR                  T5        g  N N N NU! , (       d  f       NY= f7f)NFc                  &  >#    T IS h  vN   TR                  [        R                  5       n TR                  U4S j5      I S h  vN   S S S 5        W R                  mTe NW N! , (       d  f       N = f! , IS h  vN  (       d  f       g = f7f)Nc                     > T $ r   r   r7  s   r
   r   MConditionTests.test_cancelled_error_re_aquire.<locals>.func.<locals>.<lambda>  r:  r	   r;  r=  s    r
   r@  ;ConditionTests.test_cancelled_error_re_aquire.<locals>.func  rB  rC  r   TrD  rE  rG  )r   r'   rN   r3   r   r   rY   rP   rZ   r[   rO   r<  rH  r  rI  s   `   @@@r
   test_cancelled_error_re_aquire-ConditionTests.test_cancelled_error_re_aquire  s        "	 	 ""46*mmAllnmmAw556#JJ 7++X6 	cmmV, 	 	
  76sb   AED>E5E 6/E%E&AE(E.E/E3AE EEE
EEc                 "  ^^#    [         R                  " 5       mSmUU4S jn[        S5       Vs/ s H  n[         R                  " U" 5       5      PM      nn[         R                  " S5      I S h  vN   T IS h  vN   TS-  mTR                  S5        US   R                  5          [         R                  " S5       IS h  vN   TR                  U4S j5      I S h  vN   S S S 5      IS h  vN   U R                  TS5        SmTR                  5         S S S 5      IS h  vN   US   I S h  vN   g s  snf  N N N| Na NS! , IS h  vN  (       d  f       Nh= f! [         a     Nwf = f NK! , IS h  vN  (       d  f       N`= f NZ7f)Nr   c                     >#    T  IS h  vN    T R                  U4S j5      I S h  vN   TS:  a   S S S 5      IS h  vN   g TS-  mM<   NA N% N! , IS h  vN  (       d  f       g = f7f)Nc                     > T S:g  $ r   r   states   r
   r   HConditionTests.test_cancelled_wakeup.<locals>.consumer.<locals>.<lambda>>  	    UaZr	   r   r:   r   r1  rW  s   r
   consumer6ConditionTests.test_cancelled_wakeup.<locals>.consumer:  Y      y#,,-?@@@qy	 !yy
 QJE	  !@ !yyy^   A,AA,AAAA,A A,AA,AA,A)AA)%A,rE   r:   r2   c                     > T S:H  $ r   r   rV  s   r
   r   6ConditionTests.test_cancelled_wakeup.<locals>.<lambda>U  rY  r	   r   r'   rangerN   r3   r   rY   r/  r   r0  rO   r  r   r\  _cr1  rW  s       @@r
   test_cancelled_wakeup$ConditionTests.test_cancelled_wakeup3  s3    
 %%'		 7<Ah?hW  ,h?mmA9QJEQ aDKKM
"??400#,,-?@@@ 10 UA& E  "+ 9, d

3 @ 1@ 1000  999, 	s   ,F%D8F0D=1
F;D?<F?*E3*E!EE!E!E"E&E!1E2E!6$E3F%E1&F2F3F?FE!EE!E	EE	E!E3E!!
E.+E3-E..E31F3F
9E<:F
Fc                 b  ^^#    [         R                  " 5       mSmUU4S jn[        S5       Vs/ s H  n[         R                  " U" 5       5      PM      nn[         R                  " S5      I S h  vN   T IS h  vN   TS-  mTR                  S5        [         R                  " S5      I S h  vN   US   R                  5          [         R                  " S5       IS h  vN   TR                  U4S j5      I S h  vN   S S S 5      IS h  vN   U R                  TS5        SmTR                  5         S S S 5      IS h  vN   US   I S h  vN   g s  snf  N N N N~ Nc NU! , IS h  vN  (       d  f       Nj= f! [         a     Nyf = f NM! , IS h  vN  (       d  f       Nb= f N\7f)Nr   c                     >#    T  IS h  vN    T R                  U4S j5      I S h  vN   TS:  a   S S S 5      IS h  vN   g TS-  mM<   NA N% N! , IS h  vN  (       d  f       g = f7f)Nc                     > T S:g  $ r   r   rV  s   r
   r   OConditionTests.test_cancelled_wakeup_relock.<locals>.consumer.<locals>.<lambda>j  rY  r	   r   r:   rZ  r[  s   r
   r\  =ConditionTests.test_cancelled_wakeup_relock.<locals>.consumerf  r^  r_  rE   r:   r2   c                     > T S:H  $ r   r   rV  s   r
   r   =ConditionTests.test_cancelled_wakeup_relock.<locals>.<lambda>  rY  r	   rb  rc  re  s       @@r
   test_cancelled_wakeup_relock+ConditionTests.test_cancelled_wakeup_relock_  sL    
 %%'		 7<Ah?hW  ,h?mmA9QJEQ --""" aDKKM
"??400#,,-?@@@ 10 UA& E  "3 94 d

; @ # 1@ 1000 ' 9994 	s  ,F/%EF/0E1
F/;E<F/?0F/E0FF"E!#F&E'?E# E'FE%F$F8F/FF/F-F/F/F!F#E'%F'E>	-E0.E>	:F=F>F
FFFFF/F*FF*&F/r   N)r,   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r   r  r+  r2  rJ  rQ  rh  rq  r   r   r	   r
   r   r     sn    =%~	''2 4
#$J/2%h"%H594 (/4$#LF-4-@*X.r	   r   c                   n    \ 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S rSrg)SemaphoreTestsi  c                 n    [         R                  " S5      nU R                  UR                  5       5        g r   )r   r)   r   r!   r   sems     r
   test_initial_value_zero&SemaphoreTests.test_initial_value_zero  s$    "

%r	   c                 ,  #    [         R                  " 5       nU R                  [        U5      R	                  S5      5        U R                  [
        R                  [        U5      5      5        UR                  5       I S h  vN   U R                  [        U5      R	                  S5      5        U R                  S[        U5      ;  5        U R                  [
        R                  [        U5      5      5        UR                  c  [        R                  " 5       Ul        UR                  R                  [        R                  " 5       5        U R                  S[        U5      ;   5        U R                  [
        R                  [        U5      5      5        UR                  R                  [        R                  " 5       5        U R                  S[        U5      ;   5        U R                  [
        R                  [        U5      5      5        g  GN7f)Nz[unlocked, value:1]>r   waitersr   r  )r   r)   r   r   r   r   r   r   r\   collectionsdequer<   r   r   rv  s     r
   r   SemaphoreTests.test_repr  sK    !S	**+ABCtCy12kkmS	**;78	c23tCy12<<&,,.CLDIIK(tCy01tCy12DIIK(tCy01tCy12 	s   A?HHFHc                 \  #    [         R                  " 5       nU R                  SUR                  5        U R	                  [
        S5         UI S h  vN   S S S 5        U R                  UR                  5       5        U R                  SUR                  5        g  NH! , (       d  f       NL= f7f)Nr:   z4object Semaphore can't be used in 'await' expression)r   r)   rO   _valuer   r   r    r!   rv  s     r
   test_semaphoreSemaphoreTests.test_semaphore  s     !CJJ'##B
 II	
 	&CJJ' 	
 
s1   AB,
BBBAB,B
B)%B,c                 N    U R                  [        [        R                  S5        g )Nrb  )rZ   
ValueErrorr   r)   r   s    r
   test_semaphore_value#SemaphoreTests.test_semaphore_value  s    *g&7&7<r	   c                   ^#    [         R                  " S5      m/ nU R                  TR                  5       I S h  vN 5        U R                  TR                  5       I S h  vN 5        U R	                  TR                  5       5        U4S jnU4S jnU4S jnU4S jn[         R                  " U" U5      5      n[         R                  " U" U5      5      n[         R                  " U" U5      5      n[         R                  " S5      I S h  vN   U R                  S/U5        U R                  TR                  5       5        U R                  S[        TR                  5      5        U R                  STR                  5        [         R                  " U" U5      5      n	TR                  5         TR                  5         U R                  STR                  5        [         R                  " S5      I S h  vN   U R                  STR                  5        U R                  S[        U5      5        U R                  TR                  5       5        U R                  S[        TR                  5      5        U R                  STR                  5        U R                  UR                  5       5        U R                  UR                  5       5        XxU	/n
U
 Vs/ s H2  oR                  5       (       d  M  UR                  5       (       d  M0  UPM4     nnU R                  S[        U5      5        TR                  5         [         R                  " U
6 I S h  vN   g  GN! GN GNS GNms  snf  N7f)	NrJ   c                 d   >#    TR                  5       I S h  vN   U R                  S5        g N7fr9   r;   r>   rw  s    r
   r?   'SemaphoreTests.test_acquire.<locals>.c1  )     ++-MM!     0.0c                 d   >#    TR                  5       I S h  vN   U R                  S5        g N7frD   r;   r  s    r
   rF   'SemaphoreTests.test_acquire.<locals>.c2  r  r  c                 d   >#    TR                  5       I S h  vN   U R                  S5        g N7frI   r;   r  s    r
   rK   'SemaphoreTests.test_acquire.<locals>.c3  r  r  c                 d   >#    TR                  5       I S h  vN   U R                  S5        g N7fN   Tr;   r  s    r
   c4'SemaphoreTests.test_acquire.<locals>.c4  r  r  r   r:   rE   )r   r)   r   r   r    r!   rN   r3   rO   rj   r\   r  rP   rQ   r>   gather)r   r>   r?   rF   rK   r  rR   rS   rT   t4
race_tasksr   
done_tasksrw  s                @r
   rU   SemaphoreTests.test_acquire  sa    "ckkm+,ckkm+,&	
	
	
	
   F,  F,  F,mmA!f%

%C-.CJJ'  F,CJJ'mmACJJ'CK(

%C-.CJJ'	"		$b\
!+GAvvxaAHHJa
GC
O, 	nnj)))o ,+6 	 	 H
 	*ss   7M.M&M.!M"B,M.M!C(M.7M$8C!M.M'5M'M'AM.M,M.M.!M.$M.'M.c                   #    [         R                  " 5       nUR                  5       I S h  vN   [         R                  " UR                  5       5      n[         R                  " 5       R                  UR                  5        U R                  [         R                  5         UI S h  vN   S S S 5        U R                  UR                  (       + =(       d    [        S UR                   5       5      5        g  N NR! , (       d  f       NV= f7f)Nc              3   @   #    U  H  oR                  5       v   M     g 7fr   rQ   ).0r   s     r
   	<genexpr>5SemaphoreTests.test_acquire_cancel.<locals>.<genexpr>   s     EfKKMM   )r   r)   r   rN   r+   rX   rY   rZ   r[   r   r\   all)r   rw  r   s      r
   r^   "SemaphoreTests.test_acquire_cancel  s     !kkm%%ckkm4  ",,W^^<w556MM 7S\\) FEEE	G 	
  76s;   )DC8A5D!C<'C:(C<,AD:C<<
D
Dc                   #    [         R                  " SS9n[         R                  " UR                  5       5      n[         R                  " UR                  5       5      n[         R                  " UR                  5       5      n[         R                  " UR                  5       5      n[         R                  " S5      I S h  vN   UR                  5         UR                  5         UR                  5         [         R                  " S5      I S h  vN   [         R                  " S5      I S h  vN   [        S XE4 5       5      nU R                  US5        U R                  UR                  5       5        U R                  UR                  5       5        UR                  5         UR                  5         [         R                  " S5      I S h  vN   g  GN N N N7f)Nr   valuec              3   @   #    U  H  oR                  5       v   M     g 7fr   r  )r  r   s     r
   r  CSemaphoreTests.test_acquire_cancel_before_awoken.<locals>.<genexpr>  s     2Avvxxr  r:   )r   r)   rN   r   r3   rY   rP   sumrO   r   rQ   r    )r   rw  rR   rS   rT   r  num_dones          r
   !test_acquire_cancel_before_awoken0SemaphoreTests.test_acquire_cancel_before_awoken  s<    a(  /  /  /  /mmA
		
		mmAmmA2"221%	"#
		
		mmA 	 	 	sJ   B>G GAGGG,G-B GGGGGGc                 @  #    [         R                  " SS9n[         R                  " UR                  5       5      n[         R                  " UR                  5       5      n[         R                  " S5      I S h  vN   UR                  5         UR                  5         [         R                  " S5      I S h  vN   [         R                  " S5      I S h  vN   U R                  UR                  5       5        U R                  UR                  5       5        g  N Nc NG7f)Nr   r  )
r   r)   rN   r   r3   rY   rP   r   r!   rQ   )r   rw  rR   rS   s       r
   test_acquire_hang SemaphoreTests.test_acquire_hang  s     a(  /  /mmA
		mmAmmA

%	" 	 	s7   A6D8D9=D6D7DDADDDc                   ^ ^^#    [         R                  " S5      mUU4S jnU U4S jn[         R                  " U" 5       5      n[         R                  " U" 5       5      m[         R                  " UTSS9I S h  vN u  pET R	                  US L 5        T R	                  [        U[         R                  5      5        [         R                  " TR                  5       SS9I S h  vN   g  Nn N7f)Nr:   c                     >#    T  IS h  vN   [         R                  " S5      I S h  vN   S S S 5      IS h  vN   TR                  5         g  NC N' N! , IS h  vN  (       d  f       N.= f7fr   )r   r3   rY   )rw  rS   s   r
   r?   /SemaphoreTests.test_acquire_no_hang.<locals>.c1-  s@     smmA&&& sIIK & ssssQ   A.AA.AAAA.AA.AA.A+AA+'A.c                     >#    T IS h  vN   T R                  S5        S S S 5      IS h  vN   g  N& N! , IS h  vN  (       d  f       g = f7fr   )r    rv  s   r
   rF   /SemaphoreTests.test_acquire_no_hang.<locals>.c22  s(     s  & sssss9   A1A5A3AAA>AAT)return_exceptionsg      ?r.  )	r   r)   rN   r  r   
isinstancer[   r   r   )r   r?   rF   rR   r1r2rw  rS   s   `     @@r
   test_acquire_no_hang#SemaphoreTests.test_acquire_no_hang)  s     "	
	'   &  &~~b"EEd
#
2w'='=>?s{{}c:::	 F 	;s%   A4C,9C(:A(C,"C*#C,*C,c                 n    [         R                  " 5       nU R                  [        UR                  5        g r   )r   r*   rZ   r  rP   rv  s     r
   r   (SemaphoreTests.test_release_not_acquired?  s$    &&(*ckk2r	   c                   #    [         R                  " 5       nUR                  5       I S h  vN   U R                  UR	                  5       5        UR                  5         U R                  UR	                  5       5        g  NS7fr   )r   r)   r   r   r!   rP   r    rv  s     r
   r   &SemaphoreTests.test_release_no_waitersD  sV     !kkm

%&	 	r   c                   ^^#    [         R                  " S5      m/ mUU4S jn[         R                  " 5        IS h  vN nUR                  U" S5      5        UR                  U" S5      5        UR                  U" S5      5        S S S 5      IS h  vN   U R	                  / SQT5        g  Nn N! , IS h  vN  (       d  f       N0= f7f)Nr:   c                   >#    TR                  5       I S h  vN   TR                  U  S35        [        R                  " S5      I S h  vN   TR	                  5         TR                  5       I S h  vN   TR                  U  S35        [        R                  " S5      I S h  vN   TR	                  5         g  N Nq NK N7f)N_1r2   _2)r   r<   r   r3   rP   )tagr>   rw  s    r
   coro4SemaphoreTests.test_acquire_fifo_order.<locals>.coroP  s     ++-MMSE*%--%%%KKM++-MMSE*%--%%%KKM  %  %sE   CB91C	B;
'C1B=21C#B?$C;C=C?Cr?   rF   rK   )c1_1c2_1c3_1c1_2c2_2c3_2)r   r)   	TaskGrouprN   rO   )r   r  tgr>   rw  s      @@r
   test_acquire_fifo_order&SemaphoreTests.test_acquire_fifo_orderL  s     "		 $$&&"NN4:&NN4:&NN4:& '&
 	<	
 '&&&sF   9C
B,C
AB0C
B.C
.C
0C6B97CC
c                   ^	#    [         R                  " S5      m	/ nU	4S jnU	4S jnU	4S jn[         R                  " U" U5      5      n[         R                  " U" U5      5      n[         R                  " U" U5      5      n[         R                  " S5      I S h  vN   T	R	                  5         T	R	                  5         XVU/n[         R
                  " U6 I S h  vN   U R                  / SQU5        g  NX N7f)Nr:   c                 d   >#    TR                  5       I S h  vN   U R                  S5        g N7fr9   r;   r  s    r
   r?   4SemaphoreTests.test_acquire_fifo_order_2.<locals>.c1i  r  r  c                    >#    TR                  5       I S h  vN   U R                  S5        TR                  5         TR                  5       I S h  vN   U R                  S5        g NO N7f)NrE   r  T)r   r<   rP   r  s    r
   rF   4SemaphoreTests.test_acquire_fifo_order_2.<locals>.c2n  sR     ++-MM!KKM++-MM!    s!   A+A'8A+A)A+)A+c                 d   >#    TR                  5       I S h  vN   U R                  S5        g N7frI   r;   r  s    r
   rK   4SemaphoreTests.test_acquire_fifo_order_2.<locals>.c3v  r  r  r   r:   rE   rJ   r  )r   r)   rN   r3   rP   r  rO   
r   r>   r?   rF   rK   rR   rS   rT   tasksrw  s
            @r
   test_acquire_fifo_order_2(SemaphoreTests.test_acquire_fifo_order_2e  s     "	
		
   F,  F,  F,mmAnne$$$v. 	 	%s$   BC8C4>C8C6C86C8c                 Z  ^	#    [         R                  " S5      m	/ nU	4S jnU	4S jnU	4S jn[         R                  " U" U5      5      n[         R                  " U" U5      5      n[         R                  " U" U5      5      n[         R                  " S5      I S h  vN   UR	                  5         [         R                  " S5      I S h  vN   T	R                  5         T	R                  5         XVU/n[         R                  " USS06I S h  vN   U R                  SS/U5        g  N N] N7f)	Nr   c                 d   >#    TR                  5       I S h  vN   U R                  S5        g N7fr9   r;   r  s    r
   r?   4SemaphoreTests.test_acquire_fifo_order_3.<locals>.c1  r  r  c                 d   >#    TR                  5       I S h  vN   U R                  S5        g N7frD   r;   r  s    r
   rF   4SemaphoreTests.test_acquire_fifo_order_3.<locals>.c2  r  r  c                 d   >#    TR                  5       I S h  vN   U R                  S5        g N7frI   r;   r  s    r
   rK   4SemaphoreTests.test_acquire_fifo_order_3.<locals>.c3  r  r  r  TrE   rJ   )r   r)   rN   r3   rY   rP   r  rO   r  s
            @r
   test_acquire_fifo_order_3(SemaphoreTests.test_acquire_fifo_order_3  s     "	
	
	
   F,  F,  F,mmA
		mmAnne<t<<<!Q( 	 	 	=s7   BD+D%-D+	D'
AD+D)D+'D+)D+c                   ^ ^
^^#    [         R                  " S5      m/ nSnU
U UU4S jnU U4S jnU U4S jnS m
[         R                  " U" U5      5      n[         R                  " U" U5      5      n[         R                  " U" U5      5      nS m[         R                  " S5      I S h  vN   T R	                  TR
                  S5        T R	                  [        TR                  5      S5        [         R                  " S5      I S h  vN   XgUT/n	[         R                  " U	6 I S h  vN   T R	                  / SQU5        g  N N; N7f)	Nr   c                   >#    TR                  TR                  S5        TR                  5       I S h  vN   TR                  TR                  S5        [        R                  " T" U 5      5      mU R                  S5        g NN7f)Nr   r:   T)rO   r  r   r   rN   r<   )r>   r  r   rw  r  s    r
   r?   4SemaphoreTests.test_acquire_fifo_order_4.<locals>.c1  sg     SZZ+++-SZZ+ $$RZ0BMM!  s   0BBABc                 :  >#    TR                  5         TR                  5         TR                  5         TR                  TR                  S5        TR                  TR	                  5       5        TR                  5       I S h  vN   U R                  S5        g N7frD   )rP   rO   r  r   r!   r   r<   r>   r   rw  s    r
   rF   4SemaphoreTests.test_acquire_fifo_order_4.<locals>.c2  sl      KKMKKMKKMSZZ+OOCJJL)++-MM!  s   A?BBBc                    >#    TR                  5       I S h  vN   TR                  TR                  5       5        U R                  S5        g N57frI   )r   r   r!   r<   r  s    r
   rK   4SemaphoreTests.test_acquire_fifo_order_4.<locals>.c3  s;     ++-OOCJJL)MM!  s   AA6Ac                 .   #    U R                  S5        g7fr  r<   )r>   s    r
   r  4SemaphoreTests.test_acquire_fifo_order_4.<locals>.c4  s     MM!s   rE   rJ   r  )	r   r)   rN   r3   rO   r  rj   r\   r  )r   r>   countr?   rF   rK   rR   rS   rT   r  r  rw  r  s   `         @@@r
   test_acquire_fifo_order_4(SemaphoreTests.test_acquire_fifo_order_4  s     "
	 
				   F,  F,  F,mmAQ'S\\*A.mmAR nne$$$v. 	 	 	%s7   B$E	*E+AE		E
E	)E*E	E	E	r   N)r,   r   r   r   rx  r   r  r  rU   r^   r  r  r  r   r   r  r  r  r  r   r   r	   r
   rt  rt    sQ    &3*(=;*z	G2#;,3
'
2!/F")H7/r	   rt  c                      ^  \ rS rSrU 4S j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S rS rS rS rS rS rS rS rSrU =r$ )BarrierTestsi  c                 L   >#    [         TU ]  5       I S h  vN   SU l        g  N7f)N   )super
asyncSetUpN)r   	__class__s    r
   r  BarrierTests.asyncSetUp  s#     g """ 	#s   $"$c                 x    [        U5       Vs/ s H  n[        R                  " U" 5       5      PM      nnU$ s  snf r   )rd  r   rN   )r   nr  rf  r  s        r
   
make_tasksBarrierTests.make_tasks  s2    6;Ah?h$$TV,h? @s   %7c                 l   #    U R                  X5      n[        R                  " U6 I S h  vN nXC4$  N7fr   )r   r   r  )r   r  r  r  r   s        r
   gather_tasksBarrierTests.gather_tasks  s1     (NNE**z +s   (424c                 0  #    [         R                  " U R                  5      nU R                  S[	        U5      5        U R                  [        S5         UI S h  vN   S S S 5        U R                  S[	        U5      5        g  N(! , (       d  f       N,= f7f)Nfillingz2object Barrier can't be used in 'await' expression)r   Barrierr  assertInr   r   r   r   barriers     r
   test_barrierBarrierTests.test_barrier  sn     //$&&)ig/##@
 MM	
 	ig/ 	
 
s0   ABBBB$BB
BBc                   #    [         R                  " U R                  5      nU R                  [        R                  [        U5      5      5        U R                  S[        U5      5        / nS nSn[        U5       H.  nUR                  [         R                  " U" U5      5      5        M0     [         R                  " S5      I S h  vN   U R                  [        R                  [        U5      5      5        U R                  SU SU R                   3[        U5      ;   5        U R                  S[        U5      5        [        UR                  UR                  -
  5       H.  nUR                  [         R                  " U" U5      5      5        M0     [         R                  " S5      I S h  vN   U R                  [        R                  [        U5      5      5        U R                  S[        U5      5        [        U5       H.  nUR                  [         R                  " U" U5      5      5        M0     [         R                  " S5      I S h  vN   UR                  5       I S h  vN   U R                  [        R                  [        U5      5      5        U R                  S[        U5      5        [        U5       H.  nUR                  [         R                  " U" U5      5      5        M0     [         R                  " S5      I S h  vN   UR                  5       I S h  vN   U R                  [        R                  [        U5      5      5        U R                  S	[        U5      5        U R                  UR                   5        [         R"                  " US
S06I S h  vN   g  GN GN  GN` GNK N N N7f)Nr  c                 @   #    U R                  5       I S h  vN   g  N7fr   r   r
  s    r
   r   $BarrierTests.test_repr.<locals>.wait  s     ,,.  s   rE   r   zwaiters:/draining	resettingbrokenr  T)r   r  r  r   r   r   r   r  rd  r<   rN   r3   parties	n_waitingresetabortr  r  )r   r
  r{  r   incris         r
   r   BarrierTests.test_repr  s    //$&&)tG}56ig/	! tANN7..tG}=> mmAtG}56(4&$&&2d7mCDig/ w):)::;ANN7..tG}=> <mmAtG}56j$w-0 tANN7..tG}=> mmAmmotG}56k4=1 tANN7..tG}=> mmAmmotG}56hW.' nng>>>>I 	 	 	 	 	?s   CN>N,	C&N>/N/0B"N>N2N>*N5+B"N>N8N>%N:&B N>&N<'N>/N>2N>5N>8N>:N><N>c                    #    U R                  [        S 5        U R                  [        S 5        U R                  [        R                  " U R
                  5      [        R                  5        g 7f)Nc                  .    [         R                  " S5      $ r   r   r  r   r	   r
   r   3BarrierTests.test_barrier_parties.<locals>.<lambda>3  s    gooa.@r	   c                  .    [         R                  " S5      $ )Nr  r   r	   r
   r   r  4  s    goob.Ar	   )rZ   r  assertIsInstancer   r  r  r  s    r
   test_barrier_parties!BarrierTests.test_barrier_parties2  sH     *&@A*&ABgoodff5wGs   A.A0c                   ^^#    SU l         [        R                  " U R                   5      m/ mUU4S jnU R                  U R                   U5      I S h  vN   U R	                  [        T5      [        [        U R                   5      5      5        U R                  TR                  S5        U R                  TR                  5        g  Ns7f)NrJ   c                     >#    T IS h  vN n TR                  U 5        S S S 5      IS h  vN   g  N& N! , IS h  vN  (       d  f       g = f7fr   r  )r  r
  resultss    r
   r  /BarrierTests.test_context_manager.<locals>.coro=  s(     w!q! wwwwwr  r   )r  r   r  r  assertListEqualsortedlistrd  rO   r  r    r  r   r  r
  r'  s     @@r
   r   !BarrierTests.test_context_manager8  s     //$&&)	" ---VG_d5=.AB**A.(	 	.s   AC
CA4C
c                    ^#    [         R                  " S5      mU4S jnU" 5       I S h  vN nU R                  U5        U R                  TR                  S5        U R                  TR                  5        g  NM7f)Nr:   c                     >#    T IS h  vN n  S S S 5      IS h  vN   g N N! , IS h  vN  (       d  f       g = f7fr   r   )r  r
  s    r
   r  -BarrierTests.test_filling_one_task.<locals>.fJ  s     w! wwwwws0   ?!?%?#??<.<?r   )r   r  r   rO   r  r    r  )r   r  retr
  s      @r
   test_filling_one_task"BarrierTests.test_filling_one_taskG  s]     //!$	 Ci**A.(	 s   'A:A8AA:c                   #    [         R                  " S5      n[         R                  " UR                  5       5      n[         R                  " S5      I S h  vN   U R                  UR                  S5        [         R                  " UR                  5       5      n[         R                  " S5      I S h  vN   U R                  UR                  5       UR                  5       5        U R                  UR                  5       UR                  5       5        U R                  UR                  S5        U R                  UR                  5        g  N N7fNr:   r   )r   r  rN   r   r3   rO   r  r>   rQ   r    r  )r   r
  rR   rS   s       r
   test_filling_one_task_twice(BarrierTests.test_filling_one_task_twiceT  s     //!$  0mmA**A.  0mmAbiik2BGGI.**A.( 	 	s&   AEEAE4E5BEEc                   #    SU l         [        R                  " U R                   5      n[        R                  " UR	                  5       5      n[        R
                  " S5      I S h  vN   U R                  UR                  S5        U R                  S[        U5      5        [        R                  " UR	                  5       5      n[        R
                  " S5      I S h  vN   U R                  UR                  S5        U R                  S[        U5      5        [        R                  " UR	                  5       5      n[        R
                  " S5      I S h  vN   [        R                  " X#U/5      I S h  vN   U R                  UR                  S5        U R                  UR                  5        g  GNO N Na NC7f)NrJ   r   r:   r  rE   )r  r   r  rN   r   r3   rO   r  r  r   r    r  )r   r
  rR   rS   rT   s        r
   test_filling_task_by_task&BarrierTests.test_filling_task_by_taskd  s6    //$&&)  0mmA**A.ig/  0mmA**A.ig/  0mmAllBB<(((**A.( 	
 	
 	(sJ   A%F?'F6(A8F? F9!A8F?F;F?9F=:=F?9F?;F?=F?c                   ^^#    [         R                  " U R                  5      m/ mUU4S jnU R                  U R                  U5      I S h  vN   U R	                  [        T5      U R                  S-  5        U R	                  TR                  S5      U R                  5        U R	                  TR                  S5      U R                  5        U R	                  TR                  S5        U R                  TR                  5        g  N7f)Nc                  6  >#    T  IS h  vN   TR                  S5        T  IS h  vN   TR                  S5        S S S 5      IS h  vN   S S S 5      IS h  vN   g  NR N8 N! , IS h  vN  (       d  f       N.= f N%! , IS h  vN  (       d  f       g = f7f)NTFr  r
  r'  s   r
   r  8BarrierTests.test_filling_tasks_wait_twice.<locals>.coro~  sO     wt$"7NN5) #7 ww #777 wwws   BABA?AA?A#A?A!A?BA=BA?!A?#A:	)A,*A:	6A?=B?BBBBrE   TFr   )
r   r  r  r  rO   rj   r  r  r    r  r,  s     @@r
   test_filling_tasks_wait_twice*BarrierTests.test_filling_tasks_wait_twicez  s     //$&&)	* ---Wtvvax0t,dff5u-tvv6**A.( 	.s   A	D
DB;D
c                   ^^^#    [         R                  " U R                  5      m/ m/ mUUU4S jnU R                  U R                  U5      I S h  vN u  p#U R	                  [        T5      U R                  5        U R                  [        T5      5        U R	                  [        T5      U R                  5        U R                  [        T5      5        U R                  [        U5      [        [        U R                  5      5      5        U R	                  TR                  S5        U R                  TR                  5        g  N7f)Nc                  `  >#    T IS h  vN   TR                  S5        T IS h  vN n TR                  S5        U sS S S 5      IS h  vN   sS S S 5      IS h  vN   $  NU N; N N! , IS h  vN  (       d  f       O= fS S S 5      IS h  vN    g ! , IS h  vN  (       d  f       g = f7fr   r  )r  r
  results1results2s    r
   r  @BarrierTests.test_filling_tasks_check_return_value.<locals>.coro  sb     w%"7aOOD) #77 ww #  #77 wwwwws   B.A B.BA"BA(B	A$
BB.A&B."B$B&B.(A?	.A1/A?	;BB.BB.B+BB+'B.r   )r   r  r  r  rO   rj   r   r  r)  r*  r+  rd  r  r    r  )r   r  r   rf  r
  rC  rD  s       @@@r
   %test_filling_tasks_check_return_value2BarrierTests.test_filling_tasks_check_return_value  s     //$&&)	 ((66X/H&X/H&VC[$uTVV}*=>**A.( 7s   AEEC4Ec                   ^^#    [         R                  " U R                  5      m/ mUU4S jnU R                  U R                  U5      I S h  vN   U R	                  [        T5      U R                  5        U R	                  TS   S5        U R                  [        TS U R                  S-
   5      5        U R	                  TR                  S5        U R                  TR                  5        g  N7f)Nc                     >#    T  IS h  vN   TR                  S[        T 5      ;   5        S S S 5      IS h  vN   g  N2 N! , IS h  vN  (       d  f       g = f7f)Nr  )r<   r   r=  s   r
   r  .BarrierTests.test_draining_state.<locals>.coro  s/     wzT']:; wwwwws>   A=AAA?AAAA
AArb  Fr:   r   )r   r  r  r  rO   rj   r   r  r  r    r  r,  s     @@r
   test_draining_state BarrierTests.test_draining_state  s     //$&&)	<
 ---Wtvv.e,GITVVAX./0**A.( 	.s   A	C0C.B!C0c                   ^^^#    Sn[         R                  " U R                  5      m[         R                  " U R                  U-
  5      m/ nUmSnUUU4S jnU R                  U R                  U5      I S h  vN   g  N7f)NrE   r   c                     >#    T R                  5       I S h  vN   TS:  a  TS-  mT R                  5       I S h  vN   g TR                  5       I S h  vN   T R                  5       I S h  vN   g  NY N8 N! N7fr   r   )r
  barrier_nowaitingrewait_ns   r
   r  =BarrierTests.test_blocking_tasks_while_draining.<locals>.coro  sm      ,,.   !|Alln$$ (,,...lln$$ ! % /$sC   A9A1"A9A3A9A5A9+A7,A93A95A97A9)r   r  r  r  )r   rewaitr'  counterr  r
  rO  rP  s        @@@r
   "test_blocking_tasks_while_draining/BarrierTests.test_blocking_tasks_while_draining  sd     //$&&)#OODFFVO<	%& ---s   A3B 8A>9B c                 H  ^^#    SU l         [        R                  " U R                   5      m/ mUU4S jn[        R                  " U" 5       5      n[        R                  " S5      I S h  vN   U R                  TR                  S5        [        R                  " U" 5       5      n[        R                  " S5      I S h  vN   U R                  TR                  S5        UR                  5         [        R                  " S5      I S h  vN   U R                  TR                  S5        U R                  [        R                  5         UI S h  vN   S S S 5        U R                  UR                  5       5        [        R                  " U" 5       5      n[        R                  " S5      I S h  vN   U R                  TR                  S5        [        R                  " U" 5       5      n[        R                  " X4U5      I S h  vN   U R                  [        T5      U R                   5        U R                  [        T5      5        U R                  TR                  S5        U R                  TR                   5        g  GN GN GN~ GN;! , (       d  f       GN@= f N N7f)NrJ   c                  d   >#    T R                  5       I S h  vN   TR                  S5        g  N7fr   r   r=  s   r
   r  8BarrierTests.test_filling_tasks_cancel_one.<locals>.coro  s&     ,,.  NN4  !r  r   r:   rE   )r  r   r  rN   r3   rO   r  rY   rZ   r[   r   rl   r  rj   r  r    r  )r   r  rR   rS   rT   r  r
  r'  s         @@r
   test_filling_tasks_cancel_one*BarrierTests.test_filling_tasks_cancel_one  s    //$&&)	!   (mmA**A.  (mmA**A.
		mmA**A.w556HH 7'  (mmA**A.  (nnRR(((Wtvv.G%**A.(3 	 	 	  76
 	 	)s   A%J")J *AJ">J?A	J"J	?J"JJ	JAJ".J/AJ"J A<J"J"J"	J
J	J" J"c                 .  #    [         R                  " S5      n[         R                  " UR                  5       5        [         R                  " S5      I S h  vN   U R                  UR                  S5        U R                  UR                  5        g  N<7fr5  )	r   r  rN   r  r3   rO   r  r    r  r	  s     r
   test_reset_barrierBarrierTests.test_reset_barrier  sf     //!$GMMO,mmA**A.( 	   ABB=Bc                   ^^#    [         R                  " U R                  5      m/ mUU4S jnU4S jnU R                  U R                  S-
  U5      n[         R                  " S5      I S h  vN   [         R
                  " U" 5       5        [         R                  " U6 I S h  vN   U R                  [        T5      U R                  S-
  5        U R                  [        T5      5        U R                  TR                  S5        U R                  S[        T5      5        U R                  TR                  5        g  N N7f)Nc                     >#     T R                  5       I S h  vN   g  N! [        R                   a    TR                  S5         g f = f7fr   r   r   BrokenBarrierErrorr<   r=  s   r
   r  ABarrierTests.test_reset_barrier_while_tasks_waiting.<locals>.coro  s:     %lln$$-- %t$%s1   A    A  %AAAAc                  B   >#    T R                  5       I S h  vN   g  N7fr   )r  r  s   r
   
coro_resetGBarrierTests.test_reset_barrier_while_tasks_waiting.<locals>.coro_reset  s     --/!!s   r:   r   r  )r   r  r  r   r3   rN   r  rO   rj   r   r  r  assertNotInr   r    r  )r   r  re  r  r
  r'  s       @@r
   &test_reset_barrier_while_tasks_waiting3BarrierTests.test_reset_barrier_while_tasks_waiting  s     //$&&)	%	" 40mmA 	JL)nne$$$Wtvvax0G%**A.d7m4( 	 	%s%   A(E ,D<-5E "D>#BE >E c                   ^^^#    [         R                  " U R                  5      m/ mU R                  S-  mUUU4S jnU R                  U R                  U5      I S h  vN   U R	                  TS/T-  5        U R	                  TR
                  S5        U R                  S[        T5      5        U R                  TR                  5        g  Nm7f)NrE   c                     >#     T R                  5       I S h  vN   TT R                  :X  a  T R                  5       I S h  vN   g g  N. N! [        R                   a    TR                  S5         g f = f7fr   )r   _countr  r   rb  r<   )r
  rest_of_tasksrC  s   r
   r  FBarrierTests.test_reset_barrier_when_tasks_half_draining.<locals>.coro#  sh     	*lln$$ !GNN2!--/)) 3 % * -- &%&sI   A6A AA #A6 A	A6A 	A6%A30A62A33A6Tr   r  
r   r  r  r  rO   r  rg  r   r    r  )r   r  r
  rm  rC  s     @@@r
   +test_reset_barrier_when_tasks_half_draining8BarrierTests.test_reset_barrier_when_tasks_half_draining  s     //$&&)	
	* ---D6-#78**A.d7m4( 	.s   ACCA.Cc                   ^^^^^#    [         R                  " U R                  5      m/ m/ mU R                  S-  mSmUUUUU4S jnU R                  U R                  U5      I S h  vN   U R	                  TS/T-  5        U R	                  T/ 5        U R	                  TR
                  S5        U R                  S[        T5      5        U R                  TR                  5        g  N7f)NrE   r   c                    >#     T R                  5       I S h  vN   TS-  mTT:  a1  T R                  5       I S h  vN   T R                  5       I S h  vN   g  T R                  5       I S h  vN   g  NZ N9 N# N! [        R                   a    TR	                  S5         g f = f! [        R                   a-    TR	                  S5        T R                  5       I S h  vN     g f = f7fr9   )r   r  r   rb  r<   r
  blocking_tasksr  rC  rD  s   r
   r  TBarrierTests.test_reset_barrier_when_tasks_half_draining_half_blocking.<locals>.coro=  s     .lln$$ 
>)!--/)) ",,.((.%lln,,# % * ) -"55 . -.# -- %% lln$$%s   C*B& A3B& C*A5C*A7C*A; -A9.A; 2C*3B& 5C*7C*9A; ;%B# C*"B##C*&8C'C!C'$C*&C''C*Tr  ro  r   r  r
  ru  r  rC  rD  s     @@@@@r
   9test_reset_barrier_when_tasks_half_draining_half_blockingFBarrierTests.test_reset_barrier_when_tasks_half_draining_half_blocking6  s     //$&&)	. 	.2 ---D6.#892&**A.d7m4( 	.s   AC(&C&'B C(c                   ^^^#    [         R                  " U R                  5      m/ m/ mUUU4S jnUU4S jnU R                  U R                  S-
  U5      n[         R                  " TR                  5       5        [         R                  " S5      I S h  vN   [         R                  " U" 5       5        [         R                  " U6 I S h  vN   U R                  TR                  5        U R                  [        T5      U R                  S-
  5        U R                  [        T5      5        U R                  [        T5      U R                  5        U R                  [        T5      5        U R                  TR                  S5        g  N N7f)Nc                  N  >#     T R                  5       I S h  vN   T R                  5       I S h  vN   TR                  S5        g  N.! [        R                   a    TR                  S5         NSf = f NC! T R                  5       I S h  vN    TR                  S5        f = f7fr   ra  )r
  rC  rD  s   r
   coro1TBarrierTests.test_reset_barrier_while_tasks_waiting_and_waiting_again.<locals>.coro1c  s}     &lln$$ lln$$% %-- &%& %glln$$%s_   B%A	 AA	 B%A4B%A	 	%A1.A6 0A11A6 4B%6B"
BB""B%c                     >#    T  IS h  vN   TR                  S5        S S S 5      IS h  vN   g  N& N! , IS h  vN  (       d  f       g = f7fr   r  )r
  rD  s   r
   coro2TBarrierTests.test_reset_barrier_while_tasks_waiting_and_waiting_again.<locals>.coro2l  s&     w% wwwwwr  r:   r   )r   r  r  r   rN   r  r3   r  r    r  rO   rj   r   r  r  )r   r|  r  r  r
  rC  rD  s       @@@r
   8test_reset_barrier_while_tasks_waiting_and_waiting_againEBarrierTests.test_reset_barrier_while_tasks_waiting_and_waiting_again^  s    //$&&)	&	& q%0 	GMMO,mmA 	EG$nne$$$(Xq1H&X/H&**A. 	
 	%s%   BFF	5FFB>FFc                 p  ^ ^^^^^#    [         R                  " T R                  5      m/ m/ m/ mSmUUUUUU 4S jnT R                  T R                  U5      I S h  vN   T R	                  TR
                  5        T R                  [        T5      5        T R                  [        T5      T R                  S-
  5        T R                  [        T5      S5        T R                  [        T5      T R                  5        T R                  [        T5      5        T R                  TR                  S5        g  N7f)Nr   c                    >#    TR                  5       I S h  vN n TS-  mTTR                  :X  a1  TR                  5       I S h  vN   TR                  5       I S h  vN   O* TR                  5       I S h  vN   TR                  S5        TR                  5       I S h  vN nTR                  S5        g  N Ns N] NE! [         a  nTR                  S5         S nANRS nAff = f NF7fr9   )r   r  r  r<   	Exception)	r  ekr
  r  rC  rD  results3r   s	      r
   r  BBarrierTests.test_reset_barrier_while_tasks_draining.<locals>.coro  s      lln$AQJEmmo%% lln$$*!,,.(( OOD) lln$AOOD!- % & % ) ! *OOD))* %s{   C(B6,C(B8C(B:C(#B> 6B<7B> C(C& C(8C(:C(<B> >
C#CC(C##C(r:   )r   r  r  r  r    r  r   r  rO   rj   r  )r   r  r
  r  rC  rD  r  s   ` @@@@@r
   'test_reset_barrier_while_tasks_draining4BarrierTests.test_reset_barrier_while_tasks_draining  s     //$&&)	" 	"6 ---(H&Xq1X*X/H&**A. 	.s   AD6D4CD6c                 .  #    [         R                  " S5      n[         R                  " UR                  5       5        [         R                  " S5      I S h  vN   U R                  UR                  S5        U R                  UR                  5        g  N<7fr5  )	r   r  rN   r  r3   rO   r  r   r  r	  s     r
   test_abort_barrierBarrierTests.test_abort_barrier  sd     //!$GMMO,mmA**A.' 	r^  c                   ^^^^^#    [         R                  " U R                  5      m/ m/ mU R                  S-  mSmUUUUU4S jnU R                  U R                  U5      I S h  vN   U R	                  TR
                  5        U R                  TS/T-  5        U R                  TS/U R                  T-
  S-
  -  5        U R                  TR                  S5        U R                  S[        T5      5        g  N7f)NrE   r   c                  r  >#     T R                  5       I S h  vN   TS-  mTT:  a  T R                  5       I S h  vN   g  T R                  5       I S h  vN   g  NB N! N	! [        R                   a    TR	                  S5         g f = f! [        R                   a    TR	                  S5         g f = f7fr9   )r   r  r   rb  r<   rt  s   r
   r  TBarrierTests.test_abort_barrier_when_tasks_half_draining_half_blocking.<locals>.coro  s     .lln$$
 
>)!--/)).%lln,, % * -"55 . -. -- &%&s}   B7B AB B7AB7A! AA! B7B B7A! !%B	B7B		B7%B41B73B44B7Tr:   r  )
r   r  r  r  r   r  rO   r  rg  r   rw  s     @@@@@r
   9test_abort_barrier_when_tasks_half_draining_half_blockingFBarrierTests.test_abort_barrier_when_tasks_half_draining_half_blocking  s     //$&&)	. 	.& ---'D6.#89D6466.+@+B#CD**A.d7m4 	.s   AC<&C:'BC<c                   ^ ^^^#    [         R                  " T R                  5      m/ m/ mUUUU 4S jnT R                  T R                  U5      I S h  vN   T R	                  TR
                  5        T R                  [        T5      S5        T R                  [        T5      T R                  S-
  5        T R	                  [        T5      5        T R                  TR                  S5        g  N7f)Nc                    >#     T IS h  vN n U TR                   S-  :X  a  [        eS S S 5      IS h  vN   T IS h  vN   TR                  S5        S S S 5      IS h  vN   g  NZ N3! , IS h  vN  (       d  f       NH= f ND N%! , IS h  vN  (       d  f       g = f! [        R                   a    TR                  S5         g [         a    TR                  5       I S h  vN     g f = f7frD   )r  r   r<   r   rb  r  )r  r
  rC  rD  r   s    r
   r  <BarrierTests.test_abort_barrier_when_exception.<locals>.coro  s     	&"7aDFFAI~** #7 #7OOD) #77 #777 #777-- &% &mmo%%&s   C1B" A&B" A*B" A(
B" B B" BB"  B!B" %C1&B" (B" *B0A31B=B" B" BBBB" C1B" "%C.C1	C.%C(&C.+C1-C..C1r   r:   )
r   r  r  r  r   r  rO   rj   r  r  )r   r  r
  rC  rD  s   ` @@@r
   !test_abort_barrier_when_exception.BarrierTests.test_abort_barrier_when_exception  s     //$&&)
	& 
	& ---'X*Xq1H&**A. 	.s   AC/C-BC/c                   ^ ^^^^^#    [         R                  " T R                  5      m[         R                  " T R                  5      m/ m/ m/ mUUUUUU 4S jnT R                  T R                  U5      I S h  vN   T R	                  TR
                  5        T R                  [        T5      S5        T R                  [        T5      T R                  S-
  5        T R                  [        T5      5        T R                  [        T5      T R                  5        T R                  [        T5      5        T R                  TR                  S5        g  N7f)Nc                    >#     TR                  5       I S h  vN n U TR                  S-  :X  a  [        eTR                  5       I S h  vN   TR                  S5        TR                  5       I S h  vN n U TR                  S-  :X  a  TR                  5       I S h  vN   TR                  5       I S h  vN   TR                  5       I S h  vN   TR                  S5        g  N N! [        R
                   a    TR                  S5         N[         a    TR                  5       I S h  vN     Nf = f N N N No7frD   )r   r  r   r<   r   rb  r  r  )r  barrier1barrier2rC  rD  r  r   s    r
   r  KBarrierTests.test_abort_barrier_when_exception_then_resetting.<locals>.coro  s     	'"--/)	>&&mmo%%% mmo%ATVVQYnn&&&--/!!--/!!OOD!% * &-- &% 'nn&&&' &&!!s   D?C( C$0C( 	C&
C( D?2D73*D?D9D?5D;6D?D=D?$C( &C( (%D4D?D4+D.,D41D?3D44D?9D?;D?=D?r   r:   )r   r  r  r  r    r  rO   rj   r   r  r  )r   r  r  r  rC  rD  r  s   ` @@@@@r
   0test_abort_barrier_when_exception_then_resetting=BarrierTests.test_abort_barrier_when_exception_then_resetting  s     ??466*??466*	" 	", ---)X*Xq1H&X/H&++Q/ 	.s   A1E9E:CE)r  )r,   r   r   r   r  r   r  r  r   r#  r   r2  r6  r9  r?  rF  rK  rT  rY  r\  rh  rp  rx  r  r  r  r  r  r  r   __classcell__)r  s   @r
   r  r    s    
	01?fH))) ),)()0)$.:#)J))6)0&)P#/L+/Z( 5D/4'0 '0r	   r  __main__)unittestr   rer   r|  STR_RGX_REPRcompiler   r   IsolatedAsyncioTestCaser   r   r   rt  r  r,   mainr   r	   r
   <module>r     s      	    ::l#(@(00 @(Fi$11 i$XDX55 DLT/X55 T/l
x0833 x0v zMMO r	   