
    i$U                       % S SK Jr  S SKrS SKrS SKJr  S SKJr  S SKrS SK	J
r
Jr  SSKJr  SSKJr  SS	K7  SS
KJr  SSKJrJr  S0S jrS0S jrS0S jrS0S jrS0S jrS0S jrS0S jrS0S jr\R<                  R?                  S\ \!/S S9    S1S j5       r"S0S jr#SSK$J%r%  SSKJ&r&   " S S\&5      r' " S S\&5      r( " S S \&5      r)S! S" \ \!S# S$ \(\)/r*/ S%Qr+\R<                  R?                  S&\*\+S9r,\-\.-  \ -  \!-  \'-  \(-  \)-  r/S'\0S('   \/ \/4   r1S'\0S)'   \,S2S* j5       r2\,S2S+ j5       r3\,    S2S, j5       r4S0S- jr5S0S. jr6S0S/ jr7g)3    )annotationsN)Callable)	TypeAlias)MatcherRaisesGroup   )_core)GLOBAL_PARKING_LOT_BREAKER)*)sleep_forever)assert_checkpointswait_all_tasks_blockedc                   ^^#    [        5       mTR                  5       (       a   eTR                  5       R                  S:X  d   e[        R
                  " [        SS9   TR                  5         S S S 5        TR                  5         TR                  5       (       d   e[        5          TR                  5       I S h  vN   S S S 5        [        5       m/ mSUU4S jjn [        R                  " 5        IS h  vN nUR                  U 5        UR                  U 5        [        5       I S h  vN   TSS/:X  d   eTR                  5       R                  S:X  d   eTR                  5         [        5       I S h  vN   T/ SQ:X  d   eS S S 5      IS h  vN   g ! , (       d  f       GN/= f N! , (       d  f       N= f N N NH N0! , IS h  vN  (       d  f       g = f7f)	Nr   ztrio\.Event\.__bool__ is deprecated since Trio 0\.31\.0; use trio\.Event\.is_set instead \(https://github.com/python-trio/trio/issues/3238\)matchc                    >#    TR                  S5        T R                  5       I S h  vN   TR                  S5        g  N7f)Nsleepingwoken)appendwait)erecords   BC:\des-py\RoboSAPF\venv\Lib\site-packages\trio/_tests/test_sync.pychildtest_Event.<locals>.child'   s0     j!ffhg 	   %A?Ar   r   )r   r   r   r   returnNone)Eventis_set
statisticstasks_waitingpytestwarnsDeprecationWarning__bool__setr   r   r	   open_nursery
start_soonr   )r   nurseryr   r   s     @@r   
test_Eventr,      st    Axxzz><<>''1,,,	 ^
 	


	
 EEG88:::		ffh 
 	AF 
 !!##w5!5!$&&&*j1111||~++q000	$&&&CCCC $##)
 
 	 
	 $ 	' 	' $###s   AGF09G)F,=F*>F,6G8F=9G<0G,F?-AG8G9GGGG
F'"G*F,,
F:6G?GGGGGGGc                   #    [        S5      R                  S:X  d   e[        R                  " [        5         [        S5        S S S 5        [        R                  " [
        SS9   [        S5        S S S 5        [        S5      n [        U 5        U R                  S:X  d   eU R                  S:X  d   eU R                  S:X  d   e[        R                  " [        5         U R                  5         S S S 5        U R                  S:X  d   eU R                  5         U R                  S:X  d   eU R                  S:X  d   eU R                  5       nUR                  S:X  d   eUR                  S:X  d   eUR                  [        R                  " 5       /:X  d   eUR                   S:X  d   e[        R                  " [        5         U R                  5         S S S 5        U R                  S:X  d   e[        R                  " [        5         U R#                  5       I S h  vN   S S S 5        U R                  S:X  d   e[%        5          U R'                  S5      I S h  vN   S S S 5        U R                  S:X  d   e[        R                  " [        R(                  5         U R+                  S	5        S S S 5        [-        U R                  5       R                  5      [        R                  " 5       S1:X  d   eU R/                  [        R                  " 5       5        U R                  5       R                  S/:X  d   eU R/                  S5        U R                  S:X  d   e[%        5          U  IS h  vN   U R                  S:X  d   eS S S 5      IS h  vN   S S S 5        [        R0                  " 5        IS h  vN nU R'                  S
5      I S h  vN   U R'                  S5      I S h  vN   UR3                  U R&                  S5        [5        5       I S h  vN   U R                  S:X  d   eU R                  5       R                   S:X  d   eU R/                  S5        U R                  S:X  d   e[        R                  " [        R(                  5         U R                  5         S S S 5        S S S 5      IS h  vN   U R/                  S5        U R/                  S
5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNI= f GN! , (       d  f       GN= f GN! , (       d  f       GN= f! , (       d  f       GN= f GN GN! , IS h  vN  (       d  f       GN= f! , (       d  f       GN= f GN GN GN GN! , (       d  f       GN= f N! , IS h  vN  (       d  f       GN= f7f)Nr         ?^total_tokens must be >= 0$r   r      someonezthird partyzvalue 1zvalue 2zvalue 3)CapacityLimitertotal_tokensr$   raises	TypeError
ValueErrorreprborrowed_tokensavailable_tokensRuntimeErrorreleaseacquire_nowaitr"   	borrowersr	   current_taskr#   acquirer   acquire_on_behalf_of
WouldBlockacquire_on_behalf_of_nowaitr(   release_on_behalf_ofr)   r*   r   )cstatsr+   s      r   test_CapacityLimiterrG   7   sR    1**a///	y	! 
"	z)G	H 
IAG>>Q!!!"""	|	$			 
%!!!!!!"""LLNE  A%%%"""??u1134444!### 
|	$	 
%!!!	|	$iik 
%!!! 
	$$Y/// 
 !!!	u''	(	%%m4 
) q||~''(U-?-?-A9,MMMM 5--/0<<>##	{2229%!!!		1$$))) 1 
 !!##w$$Y///$$Y///1119=$&&&  A%%%||~++q000	y)  A%%%]]5++, - $# 9%9%C 
"	!	H	H 
%	$ 
%	$ 	 
%	$ 	0 
	
 
)	( 111 
	 $//& -, $###s  6WS!!W%S31A.WT0CWT4W	T,T)T,"$WUT>U >WU0B8W(V/U%0V3U+VU(V!W7V8W;V8VV8)V*-V8V!A=V8V$&V8.W9V6:'W!
S0+W3
T=W
TW
T&!W)T,,
T;6W>U
UW
U"W%V(V+V	1U42V	>V
V	WV8V8!V8$
V3	.V86W8W>W?WWc                   #    SSK Jn   [        U 5      n[        U5        UR                  U :X  d   eUR
                  S:X  d   eUR                  U :X  d   e[        R                  " [        5         UR                  5         S S S 5        UR
                  S:X  d   eUR                  5         UR
                  S:X  d   eUR                  U :X  d   eg ! , (       d  f       NU= f7f)Nr   )infr1   )mathrI   r3   r8   r4   r9   r:   r$   r5   r;   r<   r=   )rI   rE   s     r   test_CapacityLimiter_infrK   }   s     AG>>S   !!!$$$	|	$			 
%!!!!!!$$$ 
%	$s   A-C /C AC 
CC c                 B  #    [        S5      n [        R                  " [        5         SU l        S S S 5        [        R                  " [
        SS9   SU l        S S S 5        [        R                  " [
        SS9   SU l        S S S 5        U R                  S:X  d   e[        R                  " 5        IS h  vN n[        S5       H1  nUR                  U R                  U5        [        5       I S h  vN   M3     [        U R                  5       R                  5      SS	1:X  d   eU R                  5       R                  S
:X  d   eU =R                  S-  sl        [        U R                  5       R                  5      1 Sk:X  d   eU R                  5       R                  S	:X  d   eU =R                  S
-  sl        U R                   S:X  d   eU R                  S	:X  d   eU R#                  S5        U R#                  S	5        U R#                  S5        [        U R                  5       R                  5      S
1:X  d   eU R                  5       R                  S	:X  d   eU R#                  S
5        [        U R                  5       R                  5      S1:X  d   eU R                  5       R                  S:X  d   eS S S 5      IS h  vN   g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNp= f GNH GN NA! , IS h  vN  (       d  f       g = f7f)Nr   r.   r/   r   r0   i   r   r1      >   r   r1   r   rN      )r3   r$   r5   r6   r4   r7   r	   r)   ranger*   rA   r   r(   r"   r>   r#   r9   rD   rE   r+   is      r   (test_CapacityLimiter_change_total_tokensrS      s`    A	y	! 
" 
z)G	H 
I 
z)G	H 
I >>Q!!##wqAq55q9(***  1<<>++,A666||~++q000	!1<<>++,<<<||~++q000	!  A%%%~~"""	q!	q!	q!1<<>++,333||~++q000	q!1<<>++,333||~++q000' $## 
"	! 
I	H 
I	H
 $ + $###s   &LK!LK!L:K+3L5K=6L98L1L 2GL6LLL
KL
K(#L+
K:5	L LLLLLLc                   #    [        SS9n U R                  5       I S h  vN   [        R                  " 5        IS h  vN nUR	                  U R                  5        [        5       I S h  vN   UR                  R                  5         S S S 5      IS h  vN   [        U R                  5      S:X  d   eg  N Ny NN N&! , IS h  vN  (       d  f       N;= f7f)Nr1   )r4   r   )
r3   r@   r	   r)   r*   r   cancel_scopecancellen_pending_borrowers)limiterns     r    test_CapacityLimiter_memleak_548r[      s     1-G
//
!!##q	W__%$&&&	 $# w))*a/// #& $###sg   CB5CB7C)B=*B9+B=	CB;!C7C9B=;C=CCCCc                 ^	  #    [        S5      n U R                  S:X  d   e[        R                  " 5        IS h  vN nSU l        [	        S5       H1  nUR                  U R                  U5        [        5       I S h  vN   M3     [        U R                  5       R                  5      [        5       :X  d   eU R                  5       R                  S:X  d   eSU l        [        U R                  5       R                  5      1 Sk:X  d   eUR                  U R                  S5        [        5       I S h  vN   U R                  5       R                  S:X  d   e[	        S5       H  nU R                  U5        M     U R                  5       R                  S:X  d   eU R                  S5        SU l        [        R                  " [        R                  5         U R!                  5         S S S 5        UR                  U R                  S5        [        5       I S h  vN   U R                  5       R                  S:X  d   eU R                  5       R                  / :X  d   eSU l        U R                  5       R                  S:X  d   eU R                  5       R                  S/:X  d   eU R                  S5        U R                  S5      I S h  vN   UR                  U R                  S5        [        5       I S h  vN   SU l        U R                  5       R                  S/:X  d   eU R                  S5        [        5       I S h  vN   U R                  5       R                  / :X  d   eU R                  5       R                  S:X  d   eSU l        [        5       I S h  vN   U R                  5       R                  S/:X  d   eU R                  5       R                  S:X  d   eU R                  S5        SU l        UR"                  R%                  5         S S S 5      IS h  vN   U R                  S:X  d   eU R                  5       R                  / :X  d   eU R&                  0 :X  d   eg  GN/ GN GN=! , (       d  f       GN= f GNl GN GN GNJ N Nr! , IS h  vN  (       d  f       N= f7f)NrM   r   >   r   r1   r   rN   rO   r1      )r3   r4   r	   r)   rP   r*   rA   r   r(   r"   r>   r#   rD   r$   r5   rB   r=   rU   rV   rX   rQ   s      r   &test_CapacityLimiter_zero_limit_tokensr^      s    A>>Q!!##wqAq55q9(***  1<<>++,555||~++q0001<<>++,???11115$&&&||~++q000qA""1%  ||~++q000	q! ]]5++, - 	11115$&&&||~++q000||~''2---||~++q000||~''A3...	q!$$Q'''11115$&&&||~''A3...	q!$&&&||~''2---||~++q000$&&&||~''A3...||~++q000	q!##%C $#F >>Q<<>##r)))2%%%K $
 + 	' -, 	' 	( 	' 	'
 	's $###s   7R-Q(R-?R<Q+=B4R1Q.2B#RQ1&1RRB1R	R
-R7R	8A
RRARRA7RR-RA
R-+R.R1
R 	;	RR	RRRR-R*RR*&R-c                   ^#    [         R                  " [        5         [        S5        S S S 5        [         R                  " [        SS9   [        S5        S S S 5        [        S5      n [        U 5        U R                  S:X  d   eU R                  b   eU R                  5         U R                  S:X  d   eU R                  5       R                  S:X  d   eU R                  5         U R                  S:X  d   e[        5          U R                  5       I S h  vN   S S S 5        U R                  S:X  d   e[         R                  " [        R                  5         U R                  5         S S S 5        U R                  5         U R                  S:X  d   e[        5          U  IS h  vN   U R                  S:X  d   eS S S 5      IS h  vN   S S S 5        U R                  S:X  d   eU R                  5         / mSU4S jjn[        R                   " 5        IS h  vN nUR#                  X5        [%        5       I S h  vN   TS	/:X  d   eU R                  S:X  d   eU R                  5         U R                  S:X  d   e[         R                  " [        R                  5         U R                  5         S S S 5        S S S 5      IS h  vN   TS	S
/:X  d   eg ! , (       d  f       GN= f! , (       d  f       GN= f GN! , (       d  f       GN= f! , (       d  f       GN= f GN| GN]! , IS h  vN  (       d  f       GNs= f! , (       d  f       GN}= f GN; GN! , (       d  f       N= f N! , IS h  vN  (       d  f       N= f7f)Nr.   z^initial value must be >= 0$r   r0   r1   r   r   c                   >#    TR                  S5        U R                  5       I S h  vN   TR                  S5        g  N7fNstartedfinished)r   r@   )sr   s    r   
do_acquire"test_Semaphore.<locals>.do_acquire+  s2     i iikj! 	r   rb   rc   )rd   	Semaphorer   r   )r$   r5   r6   rg   r7   r8   value	max_valuer<   r"   r#   r=   r   r@   r	   rB   r)   r*   r   )rd   re   r+   r   s      @r   test_Semaphorerj     sr    	y	!# 
"	z)H	I" 
J!AG77a<<;;IIK77a<<<<>''1,,,77a<<		iik 
77a<<	u''	(	 
) IIK77a<<		177a<< 1 
 77a<<F"
 !!##w:)$&&&)$$$ww!||			ww!||]]5++, - $# i,,,,Y 
"	!	I	I 	 
	 
)	( 111 
	 $& -, $###sD  N	K!N	K*B-N	K?K<K?>N	L,4N	 M'L#(M+L)>M	L&
MAN	MN	M/>M?A%M/$M5M/=N	M-	N	
K'"N	*
K94N	<K??
L	N	
L N	#M&M)M	/L20M	<M
M	N	M/
M*	&M/-N	/N5M86NN	c                 z   [         R                  " [        5         [        SSS9  S S S 5        [         R                  " [        SS9   [        SSS9  S S S 5        [        SSS9n U R
                  S:X  d   e[        U 5        [         R                  " [        SS9   U R                  5         S S S 5        U R                  S:X  d   eU R                  5         U R                  S:X  d   eU R                  5         U R                  S:X  d   eg ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f)	Nr1   r.   )ri   z%^max_values must be >= initial_value$r   r   z#^semaphore released too many times$r   )
r$   r5   r6   rg   r7   ri   r8   r<   rh   r=   )bss    r   test_Semaphore_boundedrm   =  s    	y	!!s# 
"	z)Q	R!q! 
S	1	"B<<1H	z)O	P


 
Q88q==88q==JJL88q== 
"	!	R	R
 
Q	Ps#   D
DD,

D
D),
D:lockclsc                    U R                   $ N)__name__)fns    r   <lambda>rs   N  s    2;;    )idsc                	  ^^#    U " 5       mTR                  5       (       a   e[        R                  " T5      nU" 5       TL d   e[        T5        U R                  [        T5      ;   d   e[        5          T IS h  vN   TR                  5       (       d   e[        T5        S S S 5      IS h  vN   S S S 5        TR                  5       (       a   eTR                  5         TR                  5       (       d   eTR                  5         TR                  5       (       a   e[        5          TR                  5       I S h  vN   S S S 5        TR                  5       (       d   eTR                  5         TR                  5       (       a   eTR                  5         [        R                  " [        5         TR                  5         S S S 5        TR                  5         [        R                  " [        5         TR                  5         S S S 5        S mSUU4S jjn[        R                  " 5        IS h  vN nTR                  5       (       a   eUR                  U5        [        5       I S h  vN   TR                  5       (       d   e[        R                  " [        R                   5         TR                  5         S S S 5        [        R                  " [        5         TR                  5         S S S 5        TR#                  5       n[%        U5        UR                   (       d   eUR&                  TL d   eUR(                  S:X  d   eUR                  U5        [        5       I S h  vN   TR#                  5       n[%        U5        UR(                  S:X  d   eUR*                  R-                  5         S S S 5      IS h  vN   TR#                  5       nUR                   (       a   eUR&                  b   eUR(                  S:X  d   eg  GN GN^! , IS h  vN  (       d  f       GNt= f! , (       d  f       GN~= f GN! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNc= f GNB GN! , (       d  f       GN= f! , (       d  f       GN= f GN7 N! , IS h  vN  (       d  f       N= f7f)Nc                    >#    [         R                  " 5       m T IS h  vN   [        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rp   )r	   r?   r   )holder_taskls   r   holder,test_Lock_and_StrictFIFOLock.<locals>.holderv  s;     ((*1/!! 11! 111sS   A'AA'AA	AA'AA'	AA'A$AA$ A'r   r1   r   )lockedweakrefrefr8   rq   r   r=   r<   r@   r$   r5   r;   r	   r)   r*   r   rB   r"   printownerr#   rU   rV   )rn   rrz   r+   r"   rx   ry   s        @@r   test_Lock_and_StrictFIFOLockr   N  sK     		Axxzz> 	AA3!8O8GtAw&&&		188:::G 1 
 xxzz>88:::IIKxxzz>		iik 
88:::IIKxxzz>	|	$	 
% IIK	|	$			 
% K" " !!##w88::~6"$&&&xxzzz]]5++, - ]]<(IIK ) \\^
j    ;...''1,,,6"$&&&\\^
j''1,,,##%1 $#4 J    #####q(((y 111 
	 	 
	 
%	$ 
%	$ $ 	' -, )( 	'' $###sU  A1R>5P*<P	=P* #P#P*.P/P*3A7R>*P?>P<?P?A0R>3Q2R>6Q#,R>3Q54R>76R$-Q8.?R$-Q;>"R$ R1A7R$(R)AR$4R>?R" A	R>	P*P*P'	PP'	"P**
P94R><P??
Q	R>
Q R>#
Q2-	R>8R$;
R
	R$
R		R$"R>$R;*R-+R;7R>c                   ^^#    [         R                  " [        5         [        [	        S5      5        S S S 5        [         R                  " [        5         [        [
        5        S S S 5        [        5       n [        U 5      mU R                  5       (       a   eTR                  5       (       a   e[        5          TR                  5       I S h  vN   S S S 5        U R                  5       (       d   eTR                  5       (       d   e[        5       mTR                  5       (       a   eTR                  5         TR                  5       (       d   e[         R                  " [        5         TR                  5         S S S 5        TR                  5         [         R                  " [        5         TR                  5       I S h  vN   S S S 5        [         R                  " [        5         TR                  5         S S S 5        [         R                  " [        5         TR                  5         S S S 5        [!        5       mSUU4S jjn["        R$                  " 5        IS h  vN n['        S5       H&  nUR)                  X5        [+        5       I S h  vN   M(     T IS h  vN   TR                  5         S S S 5      IS h  vN   TR                  5       (       d   e[+        5       I S h  vN   TS1:X  d   eT IS h  vN   TR                  5         S S S 5      IS h  vN   [+        5       I S h  vN   T1 Sk:X  d   eS S S 5      IS h  vN   [!        5       m["        R$                  " 5        IS h  vN n['        S5       H&  nUR)                  X5        [+        5       I S h  vN   M(     T IS h  vN   TR                  S5        TR-                  5       n[/        U5        UR0                  S:X  d   eUR2                  R0                  S:X  d   eS S S 5      IS h  vN   TR-                  5       R2                  R0                  S:X  d   e[+        5       I S h  vN   TSS1:X  d   eT IS h  vN   TR                  5         S S S 5      IS h  vN   S S S 5      IS h  vN   ["        R4                  " 5        nT IS h  vN   UR7                  5          TR                  5       I S h  vN   TR                  5       (       d   e S S S 5      IS h  vN   S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f GNs! , (       d  f       GNx= f! , (       d  f       GN= f GN! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNi= f GN@ GN GN GN! , IS h  vN  (       d  f       GN= f GN GN GN! , IS h  vN  (       d  f       GN= f GN GN! , IS h  vN  (       d  f       GN= f GN GNm GNa GN! , IS h  vN  (       d  f       GN= f GN GN GN! , IS h  vN  (       d  f       GN= f GN! , IS h  vN  (       d  f       GN= f GN GN! TR                  5       (       d   ef = f GN! , IS h  vN  (       d  f       GN= f! , (       d  f       g = f7f)Nr1   c                   >#    T IS h  vN   TR                  5       I S h  vN   S S S 5      IS h  vN   TR                  U 5        g  N> N( N! , IS h  vN  (       d  f       N/= f7frp   )r   add)rR   rE   finished_waiterss    r   waitertest_Condition.<locals>.waiter  s@     1&&(NN 1Q  111sQ   A)A	A)AAAA)AA)AA)A&AA&"A)rN   r   >   r   r1   r   r   )rR   intr   r   )r$   r5   r6   	Conditionrg   StrictFIFOLockLockr|   r   r@   r=   r;   r<   r   notify
notify_allr(   r	   r)   rP   r*   r   r"   r   r#   lock_statisticsCancelScoperV   )ry   r   r+   rR   r"   scoperE   r   s         @@r   test_Conditionr     sH    	y	!)A, 
"	y	!.! 
"A!Axxzz>xxzz>		iik 
88:::88:::Axxzz>88:::	|	$	 
%IIK	|	$ffh 
% 
|	$	
 
% 
|	$	 
% u   
 !!##wqAv)(***  1HHJ 1xxzzz$&&&A3&&&1LLN 1$&&&9,,, $# u!!##wqAv)(***  1HHQKJ*++q000--;;q@@@ 1 ||~--;;q@@@$&&&Aq6)))1LLN 1! $#* 
			1LLN"ffhxxzz!z 1 
	U 
"	!	!	! 	 
	 
%	$ 	 
%	$ 
%	$ 
%	$ $ +111 	'111& $### $ +111 	' 111! $###,  xxzz!z 111 
	sH  [T"[T0&A[;UUUB[,U=2[/U,U)U,"[*U>;"[V.4["V"#[&-W3V%W3"V(#W3&V.7W3V+(W3+W	,W3?W W3WW3W W31W-2W3 [W0'[3X4[7-Y$X%Y3X4Y7AXYX;YX5Y.X8/Y2X>YX;Y[Y[8Z7?Y7 Z7ZY=(Y:)Y=-ZZ7ZZ7	[
T-([0
T?:[U
U[
U&![)U,,
U;6[>
V[
V	[%W3(W3+W3.W	4V75W		W3W3W3W*	WW*	%	W30[3X9W<:X	[YYYX2	 X#!X2	-	Y8Y;Y>Y	YY	Y[Y4"Y%#Y4/[7Z7:Y==ZZZ7Z4	"Z%#Z4	/Z77
[[)open_memory_channel)AsyncContextManagerMixinc                  <    \ rS rSrSS jrS	S jrS	S jrS	S jrSrg)
ChannelLock1i  c                    [         S    " U5      u  U l        U l        [        US-
  5       H  nU R                  R	                  S 5        M      g Nr1   )r   rd   r   rP   send_nowait)selfcapacity_s      r   __init__ChannelLock1.__init__  s>    ,T28<x!|$AFFt$ %rt   c                :    U R                   R                  S 5        g rp   rd   r   r   s    r   r=   ChannelLock1.acquire_nowait      4 rt   c                V   #    U R                   R                  S 5      I S h  vN   g  N7frp   )rd   sendr   s    r   r@   ChannelLock1.acquire   s     ffkk$s   )')c                8    U R                   R                  5         g rp   r   receive_nowaitr   s    r   r<   ChannelLock1.release      rt   r   rd   N)r   r   r   r   r   	rq   
__module____qualname____firstlineno__r   r=   r@   r<   __static_attributes__ rt   r   r   r     s    %
!  rt   r   c                  <    \ rS rSrSS jrSS jrSS jrSS jrSrg)	ChannelLock2i  c                r    [         S    " S5      u  U l        U l        U R                  R                  S 5        g N
   )r   rd   r   r   r   s    r   r   ChannelLock2.__init__  s+    ,T2264 rt   c                8    U R                   R                  5         g rp   r   r   s    r   r=   ChannelLock2.acquire_nowait  r   rt   c                T   #    U R                   R                  5       I S h  vN   g  N7frp   )r   receiver   s    r   r@   ChannelLock2.acquire  s     ffnns   (&(c                :    U R                   R                  S 5        g rp   r   r   s    r   r<   ChannelLock2.release  r   rt   r   Nr   r   r   rt   r   r   r     s    ! !rt   r   c                  <    \ rS rSrSS jrSS jrSS jrSS jrSrg)	ChannelLock3i  c                J    [         S    " S5      u  U l        U l        SU l        g )Nr   F)r   rd   r   acquiredr   s    r   r   ChannelLock3.__init__  s"    ,T215 rt   c                8    U R                   (       a   eSU l         g NT)r   r   s    r   r=   ChannelLock3.acquire_nowait  s    ==  rt   c                   #    U R                   (       a$  U R                  R                  S 5      I S h  vN   g SU l         [        R                  " 5       I S h  vN   g  N* N7fr   )r   rd   r   r	   
checkpointr   s    r   r@   ChannelLock3.acquire"  sE     ==&&++d### DM""$$$ $ %s!   0A!A$A!AA!A!c                     U R                   R                  5         g ! [        R                   a    U R                  (       d   eSU l         g f = f)NF)r   r   r	   rB   r   r   s    r   r<   ChannelLock3.release)  s?    	"FF!!# 	"== =!DM	"s    .AA)r   r   rd   Nr   r   r   rt   r   r   r     s    %"rt   r   c                     [        S5      $ r   )r3   r   rt   r   rs   rs   2  s	    OArt   c                     [        S5      $ r   )rg   r   rt   r   rs   rs   3  s    IaLrt   c                     [        S5      $ r   r   r   rt   r   rs   rs   6  s	    Lrt   c                     [        S5      $ r   r   r   rt   r   rs   rs   7  s    LOrt   )zCapacityLimiter(1)zSemaphore(1)r   r   zChannelLock1(10)zChannelLock1(1)r   r   lock_factoryr   LockLikeLockFactoryc                J  ^^^#    SmSnSmSmSUUU4S jjn[         R                  " 5        IS h  vN nU " 5       n[        U5       H  nUR                  X$5        M     S S S 5      IS h  vN   T(       a   eTTU-  :X  d   eg  NS N! , IS h  vN  (       d  f       N0= f7f)Nr   rM   Fr   c                X  >#    [        T5       Hs  nU  IS h  vN   TS-  mT(       a   eSm[        R                  " 5       I S h  vN   [        R                  " 5       I S h  vN   T(       d   eSmS S S 5      IS h  vN   Mu     g  Nn NC N( N! , IS h  vN  (       d  f       M  = f7f)Nr1   TF)rP   r	   r   )	lock_liker   LOOPSacquiresin_critical_sections     r   worker+test_generic_lock_exclusion.<locals>.workera  s     uA yA...&*#&&(((&&(((***&+# !yy   )( !yyysh   B*BB*)BB	B"B#B2B*=B>
B*	BBB*B'	BB'	"B*)r   r   r   r   )r	   r)   rP   r*   )	r   WORKERSr   r+   r   r   r   r   r   s	         @@@r   test_generic_lock_exclusionr   Z  s     EGH
, 
, !!##w N	wAv1   $# #""uw&&& $###sD   ,B#BB#+B	 B#+B,B#B#	B BB B#c                  ^^^#    / m/ mSmSUUU4S jjnU " 5       n[         R                  " 5        IS h  vN nUR                  USU5        UR                  USU5        UR                  USU5        S S S 5      IS h  vN   [        T5       H  nTSU-  SUS-   -   T:X  a  M   e   g  Nt N-! , IS h  vN  (       d  f       NB= f7f)NrM   c                   >#    TR                  U 5        [        T5       H/  nU IS h  vN   TR                  U 5        S S S 5      IS h  vN   M1     g  N* N! , IS h  vN  (       d  f       MP  = f7frp   )r   rP   )namer   r   r   initial_orderr   s      r   loopy.test_generic_lock_fifo_fairness.<locals>.loopy}  sE     T"uA yd# !yy  yyysC   &A3AA3AA3
A
A3A3A0	A!A0	+A3r1   r   rN   )r   r   r   r   r   r   )r	   r)   r*   rP   )r   r   r   r+   rR   r   r   r   s        @@@r   test_generic_lock_fifo_fairnessr   w  s     MFE$ $ I!!##w5!Y/5!Y/5!Y/ $# 5\a!ea1q5k*m;;;  $###sJ   1C	B+C	:B/4C	?B- "C	&C	-C	/C5B86CC	c                h  ^^#    U " 5       m/ mSUU4S jjn[         R                  " 5        IS h  vN nTR                  5         UR                  U5        [	        5       I S h  vN   TS/:X  d   eTR                  5         S S S 5      IS h  vN   g  Na N0 N	! , IS h  vN  (       d  f       g = f7f)Nc                    >#    TR                  S5        T  IS h  vN    S S S 5      IS h  vN   TR                  S5        g  N' N! , IS h  vN  (       d  f       N-= f7fra   )r   )r   r   s   r   
lock_takerCtest_generic_lock_acquire_nowait_blocks_acquire.<locals>.lock_taker  s8     i 9 9j! 999sA   A!AA!AA!AA!A!AAAA!rb   r   )r	   r)   r=   r*   r   r<   )r   r   r+   r   r   s      @@r   /test_generic_lock_acquire_nowait_blocks_acquirer     s      IF" " !!##w  ":&$&&&)$$$ $## 	' $###sV   ,B2BB2/B#B$BB2BB2BB2B/B!B/+B2c                 V  #    [         (       a   e[        R                  5       n [        R                  5        ISh  vN nUR	                  U R
                  5        SSS5      ISh  vN   [        R                  " [        U R                  R                  S   5      5      n[        R                  " [        R                  SU S3S9   U R                  5       I Sh  vN   SSS5        [         (       a   eg N N! , ISh  vN  (       d  f       N= f N8! , (       d  f       N<= f7f)zTest that trying to acquire a lock whose owner has exited raises an error.
see https://github.com/python-trio/trio/issues/3035
Nr   .^Owner of this lock exited without releasing: $r   )r
   trior   r)   r*   r@   reescapestr_lot	broken_byr$   r5   BrokenResourceError)lockr+   	owner_strs      r   test_lock_acquire_unowned_lockr     s      *)))99;D  ""g4<<( #"		#dii11!456I	  >ykK
 lln	

 *)))) #""" 		
 
sp   :D)C8D) C<D)'C:(A!D)	DDD"D):D)<DDDD)D
D&"D)c                   #    [         (       a   e[        R                  5       n [        [	        [        R
                  SS95         [        R                  5        ISh  vN nUR                  U R                  5        UR                  U R                  5        SSS5      ISh  vN   SSS5        [         (       a   eg N` N! , ISh  vN  (       d  f       N1= f! , (       d  f       N:= f7f)z}Test for error if awaiting on a lock whose owner exits without releasing.
see https://github.com/python-trio/trio/issues/3035r   r   N)	r
   r   r   r   r   r   r)   r*   r@   )r   r+   s     r   test_lock_multiple_acquirer     s      *)))99;D	$$B	

 $$&&'t||,t||, '&
 *)))) '&&&
 
sf   AC.CB?C"7CC$C%C)C.?CCC		C
C	C
C+'C.c                   #    [         (       a   eS n [        R                  5       nUR                  5         [        R
                  " 5       UR                  /0[         :X  d   e[        R                  5        IS h  vN nUR                  UR                  5        [        5       I S h  vN   UR                  5         [        [         5      S:X  d   e[        [        [         5      5      n [         U    UR                  /:X  d   eS S S 5      IS h  vN   UR                  R                  U /:X  d   e[         (       a   eg  N N N3! , IS h  vN  (       d  f       NH= f7fr   )r
   r   r   r=   r	   r?   r   r)   r*   r@   r   r<   rW   nextiterr   )
child_taskr   r+   s      r   test_lock_handoverr     s$    ))))"J99;D 	II
 
$	$ $ $   ""g4<<($&&& 	 -.!333$9:;
)*5$))DDD #" 99:,...))))) #& #"""s[   A8E:D>;E>)E'E (AEEE0E EEE
EEEr   )rn   ztype[Lock | StrictFIFOLock]r   r   )r   r   r   r   )8
__future__r   r   r}   collections.abcr   typingr   r$   trio.testingr   r    r	   _core._parking_lotr
   _sync	_timeoutsr   testingr   r   r,   rG   rK   rS   r[   r^   rj   rm   markparametrizer   r   r   r   _channelr   r   r   r   r   lock_factorieslock_factory_namesgeneric_lock_testr3   rg   r   __annotations__r   r   r   r   r   r   r   r   rt   r   <module>r     s   " 	  $   -  ;  % @!DHC&L% !1J0J&Z--`" T>$:@VWJ)(J)	J) XJ)ZQ"h + , +   !+ !"+ "8 		  KK++ ,   
  	
   	)  ""h,/Y /
 ' '8 < <. 	 **"*"*rt   