
    G j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
  SSKJr  SSK7  SS	KJr  SS
KJrJr  S/S jrS/S jrS/S jrS/S jrS/S jrS/S jrS/S jrS/S jr\R6                  R9                  S\\/S S9    S0S j5       rS/S 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(\R6                  R9                  S%\'\(S9r)\*\+-  \-  \-  \$-  \%-  \&-  r,S&\-S''   \/ \,4   r.S&\-S('   \)S1S) j5       r/\)S1S* j5       r0\)    S1S+ j5       r1S/S, jr2S/S- jr3S/S. jr4g)2    )annotationsN)Callable)	TypeAlias   )_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   f/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/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_CapacityLimiterrE   5   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   )infr/   )mathrG   r1   r6   r2   r7   r8   r"   r3   r9   r:   r;   )rG   rC   s     r   test_CapacityLimiter_infrI   {   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   r.   i   r   r/      >   r   r/   r   rL      )r1   r"   r3   r4   r2   r5   r   r'   ranger(   r?   r   r&   r    r<   r!   r7   rB   rC   r)   is      r   (test_CapacityLimiter_change_total_tokensrQ      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)Nr/   )r2   r   )
r1   r>   r   r'   r(   r   cancel_scopecancellen_pending_borrowers)limiterns     r    test_CapacityLimiter_memleak_548rY      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)NrK   r   >   r   r/   r   rL   rM   r/      )r1   r2   r   r'   rN   r(   r?   r   r&   r    r<   r!   rB   r"   r3   r@   r;   rS   rT   rV   rO   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   r.   r/   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   r`   ra   )rb   	Semaphorer   r   )r"   r3   r4   re   r5   r6   value	max_valuer:   r    r!   r;   r   r>   r   r@   r'   r(   r   )rb   rc   r)   r   s      @r   test_Semaphorerh     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)	Nr/   r,   )rg   z%^max_values must be >= initial_value$r   r   z#^semaphore released too many times$r   )
r"   r3   r4   re   r5   rg   r6   r:   rf   r;   )bss    r   test_Semaphore_boundedrk   ;  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>rq   L  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rn   )r   r=   r
   )holder_taskls   r   holder,test_Lock_and_StrictFIFOLock.<locals>.holdert  s;     ((*1/!! 11! 111sS   A'AA'AA	AA'AA'	AA'A$AA$ A'r   r/   r   )lockedweakrefrefr6   ro   r   r;   r:   r>   r"   r3   r9   r   r'   r(   r   r@   r    printownerr!   rS   rT   )rl   rrx   r)   r    rv   rw   s        @@r   test_Lock_and_StrictFIFOLockr   L  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)Nr/   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rn   )r   add)rP   rC   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)rL   r   >   r   r/   r   r   )rP   intr   r   )r"   r3   r4   	Conditionre   StrictFIFOLockLockrz   r   r>   r;   r9   r:   r   notify
notify_allr&   r   r'   rN   r(   r   r    r}   r!   lock_statisticsCancelScoperT   )rw   r   r)   rP   r    scoperC   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 Nr/   )r   rb   r   rN   send_nowait)selfcapacity_s      r   __init__ChannelLock1.__init__  s>    ,T28<x!|$AFFt$ %rr   c                :    U R                   R                  S 5        g rn   rb   r   r   s    r   r;   ChannelLock1.acquire_nowait      4 rr   c                V   #    U R                   R                  S 5      I S h  vN   g  N7frn   )rb   sendr   s    r   r>   ChannelLock1.acquire  s     ffkk$s   )')c                8    U R                   R                  5         g rn   r   receive_nowaitr   s    r   r:   ChannelLock1.release      rr   r   rb   N)r   r   r   r   r   	ro   
__module____qualname____firstlineno__r   r;   r>   r:   __static_attributes__ rr   r   r   r     s    %
!  rr   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   rb   r   r   r   s    r   r   ChannelLock2.__init__  s+    ,T2264 rr   c                8    U R                   R                  5         g rn   r   r   s    r   r;   ChannelLock2.acquire_nowait
  r   rr   c                T   #    U R                   R                  5       I S h  vN   g  N7frn   )r   receiver   s    r   r>   ChannelLock2.acquire  s     ffnns   (&(c                :    U R                   R                  S 5        g rn   r   r   s    r   r:   ChannelLock2.release  r   rr   r   Nr   r   r   rr   r   r   r     s    ! !rr   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   rb   r   acquiredr   s    r   r   ChannelLock3.__init__  s"    ,T215 rr   c                8    U R                   (       a   eSU l         g NT)r   r   s    r   r;   ChannelLock3.acquire_nowait  s    ==  rr   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   rb   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   r@   r   r   s    r   r:   ChannelLock3.release'  s?    	"FF!!# 	"== =!DM	"s    .AA)r   r   rb   Nr   r   r   rr   r   r   r     s    %"rr   r   c                     [        S5      $ r   )r1   r   rr   r   rq   rq   0  s	    OArr   c                     [        S5      $ r   )re   r   rr   r   rq   rq   1  s    IaLrr   c                     [        S5      $ r   r   r   rr   r   rq   rq   4  s	    Lrr   c                     [        S5      $ r   r   r   rr   r   rq   rq   5  s    LOrr   )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   rK   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)Nr/   TF)rN   r   r   )	lock_liker   LOOPSacquiresin_critical_sections     r   worker+test_generic_lock_exclusion.<locals>.worker_  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'   rN   r(   )	r   WORKERSr   r)   r   r   r   r   r   s	         @@@r   test_generic_lock_exclusionr   X  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)NrK   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rn   )r   rN   )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r/   r   rL   )r   r   r   r   r   r   )r   r'   r(   rN   )r   r   r   r)   rP   r   r   r   s        @@@r   test_generic_lock_fifo_fairnessr   u  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r_   )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!r`   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"   r3   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                  " [        R
                  " [        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"   RaisesGroup	RaisesExcr   r'   r(   r>   )r   r)   s     r   test_lock_multiple_acquirer     s      *)))99;D			$$B	

 $$&&'t||,t||, '&
 *)))) '&&&
 
sf   ADC34C5C387C/C3:C;C3?DC3C3C0	C" C0	,C33
D=D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:   rU   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   )rl   ztype[Lock | StrictFIFOLock]r   r   )r   r   r   r   )5
__future__r   r   r{   collections.abcr   typingr   r"    r   _core._parking_lotr   _sync	_timeoutsr
   testingr   r   r*   rE   rI   rQ   rY   r\   rh   rk   markparametrizer   r   r   r   _channelr   r   r   r   r   lock_factorieslock_factory_namesgeneric_lock_testr1   re   r   __annotations__r   r   r   r   r   r   r   r   rr   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 < <. 	 **"*"*rr   