
    G jZ                       S SK Jr  S SKrS SKJr  S SKrS SKrS SKJrJrJ	r	  SSK
JrJr  \R                  S:  a  S SKJr  \(       a  S S	K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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!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)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r0S*S) jr1g)-    )annotationsN)TYPE_CHECKING)EndOfChannelas_safe_channelopen_memory_channel   )assert_checkpointswait_all_tasks_blocked      )ExceptionGroup)AsyncGeneratorc                 	  #    [         R                  " [        5         [        S5        S S S 5        [         R                  " [        SS9   [        S5        S S S 5        [        [
        [        -  S -     " S5      u  p[        U 5        [        U5        U R                  S5        [        5          U R                  S5      I S h  vN   S S S 5        [         R                  " [        R                  5         U R                  S 5        S S S 5        [        5          UR                  5       I S h  vN S:X  d   e S S S 5        UR                  5       S:X  d   e[         R                  " [        R                  5         UR                  5         S S S 5        U R                  S5        U R                  5       I S h  vN   [         R                  " [        R                   5         U R                  S5      I S h  vN   S S S 5        [         R                  " [        R                   5         U R                  S5        S S S 5        [         R                  " [        R                   5         U R#                  5         S S S 5        U R                  5       I S h  vN   UR                  5       S:X  d   e[         R                  " [$        5         UR                  5       I S h  vN   S S S 5        UR                  5       I S h  vN   [         R                  " [        R                   5         UR                  5       I S h  vN   S S S 5        [         R                  " [        R                   5         UR                  5         S S S 5        UR                  5       I S h  vN   g ! , (       d  f       GNw= f! , (       d  f       GN\= f GN! , (       d  f       GN= f! , (       d  f       GN= f GN! , (       d  f       GN= f! , (       d  f       GNu= f GNT GN! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f GN GNq! , (       d  f       GNv= f GNf GN,! , (       d  f       GN1= f! , (       d  f       GN= f N7f)	Ng      ?z^max_buffer_size must be >= 0$matchr      lastztoo late)pytestraises	TypeErrorr   
ValueErrorintstrreprsend_nowaitr	   sendtrio
WouldBlockreceivereceive_nowaitacloseClosedResourceErrorcloner   )srs     i/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/trio/_tests/test_channel.pytest_channelr)      s    	y	!C  
"	z)J	KB 
L sSy4/03DAGGMM!		ffQi 
	t	'	d 
( 
	YY[ A%%% 
"""	t	'	 
( MM&
((*	t//	0ffZ    
1	t//	0	j! 
1	t//	0		 
1
((*'''	|	$iik 
%
((*	t//	0iik 
1	t//	0	 
1
((*O 
"	!	K	K 	 
		'	' ! 
	 
(	'   
1	0	0	0	0	0 	 
%	$ 
1	0	0	0s  RN!R
N+AR.O N=O ,R4ORO',O$-
O'8AR:O9,R7P8(R P5P6P:,R&P#8,R$P55RQ4RQQ
QR9Q:(R"Q%6Q"7Q%;,R'Q78RR	R
N(#R+
N:5R=O  
O
R
O!R$O''
O61R9
P	RP
P R#
P2-R5
Q?	R
Q
Q	R"Q%%
Q4/R7
R	Rc                &  #    [         [           " S5      u  p[        R                  " S5       nUR	                  5       I S h  vN   S S S 5        WR
                  (       d   eUR                  S5      I S h  vN   g  N9! , (       d  f       N== f N7f)Nr   
   zTest for PR #553)r   r   r   move_on_afterr!   cancelled_caughtr   )autojump_clockr&   r'   timeout_scopes       r(   test_553r0   ?   so     s#A&DA			B	=iik 
 ))))
&&#
$$$ 	 
 	 %s:   ,BA>A<A>/B6B7B<A>>
BBc                 :  #    SS jn [         [           " S5      u  p[        R                  " 5        IS h  vN nU IS h  vN   [	        S5       H#  nUR                  XR                  5       U5        M%     S S S 5      IS h  vN   U Vs/ s S h  vN oUPM   Nc NZ N! , IS h  vN  (       d  f       N/= f N'
 Os  snf nnUR                  5         U[        [	        S5      5      :X  d   eS S S 5      IS h  vN    g ! , IS h  vN  (       d  f       g = f7f)Nc                   #    U  IS h  vN   [        SU-  SUS-   -  5       H  nU R                  U5      I S h  vN   M     S S S 5      IS h  vN   g  NJ N N	! , IS h  vN  (       d  f       g = f7f)Nr   r   )ranger   )send_channelijs      r(   producer1test_channel_multiple_producers.<locals>.producerH   sR     <1q5!q1u+."''*** /  <<*  <<<sT   A4AA4-AAAA4AA4AA4A1 A#!A1-A4r   r+      )r4   trio.MemorySendChannel[int]r5   r   returnNone)	r   r   r   open_nurseryr3   
start_soonr%   sortlist)r7   r4   receive_channelnurseryr5   valuegots          r(   test_channel_multiple_producersrE   G   s     + %8$<Q$?!L  ""g  <2Y""8-?-?-A1E   < )888uu #  <<< 988
d59o%%% #"""""s   4DBDDBD3B 8DBDB>B<B:B<B>DDD B7	&B)'B7	3D:B<<B>=2D/D:C=;DDD
DDc                   ^^#    [        5       m/ mSUU4S jjn [        R                  " 5        IS h  vN n[        R                  [           " S5      u  p#U IS h  vN   [        S5       H  nUR                  XU5        M     [        5       I S h  vN   [        S5       H  nUR                  U5      I S h  vN   M     S S S 5      IS h  vN   S S S 5      IS h  vN   T[        [        S5      5      :X  d   e[        T5      S:X  d   e[        T5      [        [        S5      5      :X  d   eg  N N N N} Nk! , IS h  vN  (       d  f       N= f Nw! , IS h  vN  (       d  f       N= f7f)Nc                r   >#    U   S h  vN nTR                  U5        TR                  U5        M-   N(
 g 7fN)addappend)rA   r5   rC   receivedsuccessful_receiverss      r(   consumer1test_channel_multiple_consumers.<locals>.consumer`   s1     * 	#% $$Q'OOE"	#?s   7535%757r      r+   )rA   trio.MemoryReceiveChannel[int]r5   r   r;   r<   )
setr   r=   r   r   r3   r>   r
   r   len)rM   rB   r4   rA   r5   rK   rL   s        @@r(   test_channel_multiple_consumersrS   \   s    5H# #
   ""g(,(@(@(Ea(H%<1X""8a@ (***2Y"''*** 	  < #"  3uQx=000x=Bx=Cb	N*** # +*  <<< #"""s   /E2D2E2&ED4E!2D<D6&D<:D8
;D<ED:EE2EAE24E6D<8D<:E<E	EE	EE2E/E!E/+E2c                 \	  #          SS jn [         S    " S5      u  p[        R                  " 5        IS h  vN nUR                  X[        R                  5        [        5       I S h  vN   UR                  5       I S h  vN   S S S 5      IS h  vN   [        R                  " [        R                  5         UR                  S 5        S S S 5        [        R                  " [        R                  5         UR                  S 5      I S h  vN   S S S 5        [        R                  " [        5         UR                  5         S S S 5        [        R                  " [        5         UR                  5       I S h  vN   S S S 5        [         S    " S5      u  p[        R                  " 5        IS h  vN nUR                  X[        R                  5        [        5       I S h  vN   UR                  5       I S h  vN   S S S 5      IS h  vN   [        R                  " [        R                  5         UR                  S 5        S S S 5        [        R                  " [        R                  5         UR                  S 5      I S h  vN   S S S 5        SS jn[         [           " S5      u  pV[        R                  " 5        IS h  vN nUR                  XF5        [        5       I S h  vN   UR                  5       I S h  vN   S S S 5      IS h  vN   [        R                  " [        R                  5         UR                  5         S S S 5        [        R                  " [        R                  5         UR                  5       I S h  vN   S S S 5        g  GNd GN5 GN  GN! , IS h  vN  (       d  f       GN)= f! , (       d  f       GN= f GN! , (       d  f       GN= f! , (       d  f       GN= f GN! , (       d  f       GN= f GN^ GN/ GN GN! , IS h  vN  (       d  f       GN#= f! , (       d  f       GN= f GN! , (       d  f       GN= f GN GNv GNa GNT! , IS h  vN  (       d  f       GNj= f! , (       d  f       GN?= f GN
! , (       d  f       g = f7f)Nc                   #    [         R                  " U5         U R                  S 5      I S h  vN   S S S 5        g  N! , (       d  f       g = f7frH   r   r   r   r&   expects     r(   
send_block%test_close_basics.<locals>.send_blockt   7      ]]6"&&, #" #"%   A><>	A>
AAr   c                   #    [         R                  " [        R                  5         U R	                  5       I S h  vN   S S S 5        g  N! , (       d  f       g = f7frH   r   r   r   r$   r!   r'   s    r(   receive_block(test_close_basics.<locals>.receive_block   9     ]]4334))+ 54 54,   %AAA	A 	A	A
AAr&   ztrio.MemorySendChannel[None]rX   type[BaseException]r;   r<   )r'   rP   r;   r<   )r   r   r=   r>   r$   r
   r#   r   r   r   r   r   r"   r!   BrokenResourceErrorr   )rY   r&   r'   rB   r`   _s2r2s          r(   test_close_basicsri   s   s	    '# 
 t$Q'DA  ""g:$*B*BC$&&&hhj #" 
t//	0	d 
1	t//	0ffTl 
1 
|	$	 
%	|	$iik 
% t$Q'DA  ""g:$*B*BC$&&&hhj #" 
t//	0	d 
1	t//	0ffTl 
1 "#&q)GC  ""g=-$&&&iik #" 
t//	0
 
1	t//	0jjl 
1	0Y #& #""" 
1	0 	 
1	0 
%	$ 	 
%	$
 #& #""" 
1	0 	 
1	0 #& #""" 
1	0 	 
1	0s<  6R,NR,.N(*N+N(N"N(R,N%(R,;O,R,9OOO"R,5O*"R,(O?<O<=O?2R,3P4R,7.P%P&P=P>PR,P(R,6P8,R,4Q	Q

Q;R,	Q
R,Q+,Q"-Q+Q%Q+	R,Q((R,=R,R,:RRR
R,N("N(%R,(O .N1/O ;R,
OR,O
O'"R,*
O94R,<O??
P		R,PPR,P5#P&$P50R,8
QR,
Q
Q	R,"Q+%Q+(R,+R1Q42R>R,
RR,R
R)%R,c                 	  #          SS jn [         S    " S5      u  p[        R                  " 5        IS h  vN nUR                  X[        R                  5        [        5       I S h  vN   UR                  5         S S S 5      IS h  vN   [        R                  " [        R                  5         UR                  S 5        S S S 5        [        R                  " [        R                  5         UR                  S 5      I S h  vN   S S S 5        [        R                  " [        5         UR                  5         S S S 5        [        R                  " [        5         UR                  5       I S h  vN   S S S 5        [         S    " S5      u  p[        R                  " 5        IS h  vN nUR                  X[        R                  5        [        5       I S h  vN   UR                  5         S S S 5      IS h  vN   [        R                  " [        R                  5         UR                  S 5        S S S 5        [        R                  " [        R                  5         UR                  S 5      I S h  vN   S S S 5        SS jn[         S    " S5      u  p[        R                  " 5        IS h  vN nUR                  XB5        [        5       I S h  vN   UR                  5         S S S 5      IS h  vN   [        R                  " [        R                  5         UR                  5         S S S 5        [        R                  " [        R                  5         UR                  5       I S h  vN   S S S 5        g  GNH GN GN! , IS h  vN  (       d  f       GN= f! , (       d  f       GN= f GN! , (       d  f       GN= f! , (       d  f       GN= f GNi! , (       d  f       GNn= f GNG GN GN! , IS h  vN  (       d  f       GN= f! , (       d  f       GN= f GN! , (       d  f       GN= f GN GNh GNK! , IS h  vN  (       d  f       GNa= f! , (       d  f       GN6= f GN! , (       d  f       g = f7f)Nc                   #    [         R                  " U5         U R                  S 5      I S h  vN   S S S 5        g  N! , (       d  f       g = f7frH   rV   rW   s     r(   rY   #test_close_sync.<locals>.send_block   r[   r\   r   c                   #    [         R                  " [        R                  5         U R	                  5       I S h  vN   S S S 5        g  N! , (       d  f       g = f7frH   r^   r_   s    r(   r`   &test_close_sync.<locals>.receive_block   rb   rc   rd   )r'   ztrio.MemoryReceiveChannel[None]r;   r<   )r   r   r=   r>   r$   r
   closer   r   r   r   r   r"   r!   rf   )rY   r&   r'   rB   r`   s        r(   test_close_syncrp      s    '# 
 t$Q'DA  ""g:$*B*BC$&&&		 #" 
t//	0	d 
1	t//	0ffTl 
1 
|	$	 
%	|	$iik 
% t$Q'DA  ""g:$*B*BC$&&&		 #" 
t//	0	d 
1	t//	0ffTl 
1 t$Q'DA  ""g=,$&&&		 #" 
t//	0	 
1	t//	0iik 
1	0Y #& #""" 
1	0 	 
1	0 
%	$ 	 
%	$
 #& #""" 
1	0 	 
1	0 #& #""" 
1	0 	 
1	0s  6RN R.N	*N+N	?R
N(R3N$,R1N9N6N9"R-O>"R O 4O5O 92R+O2,R/.O;O5O;2R=O8>(R&P8,R$P+9P(:P+>7R5P=6R9QQ Q-R8Q9(R!Q!2,RQ62Q33Q67
RN	R	N!NN!R$
N3.R6N99
OR
ORO  
O/*	R5O;8R;PPPR
P% R(P++
P:5	R QRQQQR!
Q0+R3Q66
R Rc                 *  #    [         S    " S5      u  pUR                  5       nUR                  5       nU R                  S 5        UR                  5       I S h  vN   U    S S S 5        [        R
                  " [        R                  5         UR                  5         S S S 5        [        R
                  " [        R                  5         UR                  5         S S S 5        U R                  S 5        UR                  5       I S h  vN   [        R
                  " [        R                  5         U R                  S 5        S S S 5        g  N! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f Nx! , (       d  f       g = f7f)Nr+   )	r   r%   r   r#   r   r   r   r$   rf   )r&   r'   rh   r3s       r(   $test_receive_channel_clone_and_closers      s    t$R(DA	
B	
BMM$
((*	 
 
t//	0		 
1 
t//	0

 
1 MM$
))+ 
t//	0	d 
1	0! 	 
1	0 
1	0  
1	0s~   AFEFE!,FE,F
E/,FF (F0F
F
EF
E,(F/
E=9F
FFc                   ^^#    [         [           " S5      u  mn TR                  5       mSU4S jjnS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R                  5       I S h  vN   U R                  5       I S h  vN S:X  d   eS S S 5      IS h  vN   g  N NM N7 N! N! , IS h  vN  (       d  f       g = f7f)Nr   c                    >#    [         R                  " [        R                  5         T R	                  S5      I S h  vN   S S S 5        g  N! , (       d  f       g = f7f)Nnope)r   r   r   r$   r   )s1s   r(   send_will_close9test_close_multiple_send_handles.<locals>.send_will_close  s<     ]]4334''&/!! 54! 54s,   %AAAA	AA
AAc                 D   >#    T R                  S5      I S h  vN   g  N7fNok)r   )s2s   r(   send_will_succeed;test_close_multiple_send_handles.<locals>.send_will_succeed  s     ggdms     r|   r;   r<   )	r   r   r%   r   r=   r>   r
   r#   r!   )r'   rx   r~   rB   rw   r}   s       @@r(    test_close_multiple_send_handlesr     s       $Q'EB	B"   ""g?+,-$&&&iikYY[ D((( #"" 	'  #"""s~   AC8CC80CC	C C!C8C9
CC8CC8CCCC8C5$C'%C51C8c                   ^^#    [         [           " S5      u  n mTR                  5       mSU4S jjnS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R                  5       I S h  vN   U R                  S5      I S h  vN   S S S 5      IS h  vN   g  Nz NH N2 N N! , IS h  vN  (       d  f       g = f7f)Nr   c                    >#    [         R                  " [        R                  5         T R	                  5       I S h  vN   S S S 5        g  N! , (       d  f       g = f7frH   r^   )r1s   r(   receive_will_close?test_close_multiple_receive_handles.<locals>.receive_will_close  s:     ]]4334**, 54 54s,   %AAA
A	A
A
AAc                 N   >#    T R                  5       I S h  vN S:X  d   eg  N7fr{   r!   )rh   s   r(   receive_will_succeedAtest_close_multiple_receive_handles.<locals>.receive_will_succeed!  s      ZZ\!T)))!s   %#%r|   r   )	r   r   r%   r   r=   r>   r
   r#   r   )r&   r   r   rB   r   rh   s       @@r(   #test_close_multiple_receive_handlesr     s       $Q'EAr	B*   ""g-./0$&&&iikffTl #"" 	' #"""s~   AC3CC30CC	C C!C9C:C>C3	C
C3CCCC3C0C" C0,C3c                 4  #    [         [           " [        S5      5      u  pU    [        S5       H  nU R	                  U5        M     S S S 5        U Vs/ s S h  vN o"PM  ! , (       d  f       N = f N
 Os  snf nnU[        [        S5      5      :X  d   eg 7f)Ninfr+   )r   r   floatr3   r   r@   )r   r!   r5   rD   s       r(   test_inf_capacityr   ,  s{     ',U5\:MD 
rAQ  
 $
$
$q1	 
 %
$C
$$uRy/!!!sL   !B$A!BA6A4A2
A4A6!
A/+B2A44A65#Bc                   #    [         S    " S5      u  pU R                  5       UR                  5       :X  d   eU R                  5       nUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR
                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eU R                  S 5        U R                  5       R                  S:X  d   eU R                  5       nU R                  5       R                  S:X  d   eU R                  5       I S h  vN   UR                  5       R                  S:X  d   eUR                  5       nUR                  5       R
                  S:X  d   eUR                  5       I S h  vN   UR                  5       R
                  S:X  d   e[        R                  " 5        IS h  vN nUR                  S 5        U R                  5       R                  S:X  d   eUR                  UR                  S 5        UR                  UR                  S 5        [        5       I S h  vN   U R                  5       R                  S:X  d   eUR                   R#                  5         S S S 5      IS h  vN   U R                  5       R                  S:X  d   e  UR%                  5         M   GN GN? GN N NC! , IS h  vN  (       d  f       NX= f! [        R&                   a     Of = f[        R                  " 5        IS h  vN  nUR                  UR(                  5        [        5       I S h  vN    U R                  5       R                  S:X  d   eUR                   R#                  5         S S S 5      IS h  vN    O! , IS h  vN  (       d  f       O= fU R                  5       R                  S:X  d   eg 7f)Nr   r   r   )r   
statisticscurrent_buffer_usedmax_buffer_sizeopen_send_channelsopen_receive_channelstasks_waiting_sendtasks_waiting_receiver   r%   r#   r   r=   r>   r   r
   cancel_scopecancelr"   r    r!   )r&   r'   statsr}   rh   rB   s         r(   test_statisticsr   8  s    t$Q'DA<<>Q\\^+++LLNE$$)))  A%%%##q(((&&!+++##q(((&&!+++MM$<<>--222	
B<<>,,111
((*==?--222	
B==?00A555
))+==?00A555  ""g
t||~11Q666277D)277D)$&&&||~00A555##% #" <<>,,111 ) 
  #
 	' #""" ??    ""g199%$&&&||~33q888##%	 #"""""
 <<>//1444s   D&O!(K)A'O!K=O!KO!A7K	K
>KO!K$O!9K3 O!O!O!KO!K0K" K0,O!3L
O!	L

O!&L)'O!+)N&M?N&O!N" O!&N=,N/-N=9(O!c                   ^#    [         [        S -     " S5      u  pU R                  S5        UR                  5       S:X  d   eU R                  S5        UR                  5       S:X  d   eS 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   U R                  S5        [        R                  " [        R                  5         UR                  5         S S S 5        S S S 5      IS h  vN   TS:X  d   e[         [        S -     " S5      u  pU R                  S5        [        R                  " [        R                  5         U R                  S 5        S S S 5        [        R
                  " 5        IS h  vN nUR                  U R                  S5        [        5       I S h  vN   UR                  5       S:X  d   e[        R                  " [        R                  5         U R                  S5        S S S 5        UR                  5       I S h  vN S:X  d   eS S S 5      IS h  vN   g  GN GN! , (       d  f       GNc= f GN[! , IS h  vN  (       d  f       GNq= f! , (       d  f       GN= f N N! , (       d  f       N= f Nx Nd! , IS h  vN  (       d  f       g = f7f)Nr   r   c                B   >#    U R                  5       I S h  vN mg  N7frH   r   )r'   results    r(   
do_receive)test_channel_fairness.<locals>.do_receivex  s     yy{""s   r   )r'   z%trio.MemoryReceiveChannel[int | None]r;   r<   )r   r   r   r"   r   r=   r>   r
   r   r   r    r   r!   )r&   r'   r   rB   r   s       @r(   test_channel_fairnessr   j  s     sTz*1-DAMM!"""MM!"""
 F#   ""g:)$&&&	a]]4??+ ,	 #" Q;;
 sTz*1-DAMM!	t	'	d 
(  ""g1661%$&&&!Q&&&]]4??+MM! ,iik!a''' #"" #&++	 #""" 
(	'"&++! #"""s  B
KIKI,0I19I,*I;I,KI)AK(J:!KJK*J2	J
>J2JJ25J.6
J2 KJ0KI,
I&	!I,)K,J2I53J?K
J	KJ2
J+	'J20K2K	8J;9K	Kc                 ^  #    [         [           " S5      u  p[        R                  " [        R
                  5         UR                  5         S S S 5        [        R                  " [        R
                  5         U R                  S5        S S S 5        SS jn[        R                  " 5        IS h  vN nUR                  X S5        [        5          UR                  5       I S h  vN S:X  d   e S S S 5        S S S 5      IS h  vN   [        R                  " [        R
                  5         UR                  5         S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f N N! , (       d  f       N= f Nz! , IS h  vN  (       d  f       N= f! , (       d  f       g = f7f)Nr   r   c                   #    [        5          U R                  U5      I S h  vN   S S S 5        g  N! , (       d  f       g = f7frH   )r	   r   )r&   vs     r(   do_send test_unbuffered.<locals>.do_send  s-     !&&)OO "! "!s$   A202	A2
A A)r&   r:   r   r   r;   r<   )r   r   r   r   r   r    r"   r   r=   r>   r	   r!   )r&   r'   r   rB   s       r(   test_unbufferedr     s
    s#A&DA	t	'	 
(	t	'	a 
(   ""g7q)!$))) " #" 
t	'	 
(	' 
(	'	'	' # % "! #""" 
(	's   :F-E,F-9E&F-1E+2F-5FE/&E-'
E/2F:F-F (F-.F?	F-
EF-
E($F--E//
E=	9F F-FF	FF-
F*&F-c                    #    [         SS j5       n U " 5        IS h  vN nU  S h  vN nUS:X  a  M   e N N
 S S S 5      IS h  vN    g ! , IS h  vN  (       d  f       g = f7f)Nc                   #    S7v   g 7fNr    r       r(   agen*test_as_safe_channel_exhaust.<locals>.agen  s
        	r   r;   AsyncGenerator[int]r   r   	recv_chanxs      r(   test_as_safe_channel_exhaustr     sR       vv  	!6M6 	y vvvvvs`   A'6A'A:8:AAA':AA'A	A'A$AA$ A'c                   #    [         SS j5       n U " 5        IS h  vN nUR                  5       I S h  vN S:X  d   eUR                  5       I S h  vN   [        R                  " [
        R                  5         UR                  5       I S h  vN   S S S 5        S S S 5      IS h  vN   g  N Nz N^ N#! , (       d  f       N'= f N! , IS h  vN  (       d  f       g = f7f)Nc                    #    S7v   S7v   g 7f)Nr   r   r   r   r   r(   r   2test_as_safe_channel_broken_resource.<locals>.agen  s        r   r   )r   	__anext__r#   r   r   r   r$   r   r   s     r(   $test_as_safe_channel_broken_resourcer     s       vv((**a///     ]]4334%%''' 5 vv* 	! ( 54 vvvs   C"B-C"CB/CB1(C;B5B3B5CC"'C(C"/C1C3B55
C	?CC"CCCC"c                 "  #    [         R                  " 5        n [        SS j5       nU" 5        IS h  vN   U R                  5         S S S 5      IS h  vN   S S S 5        g  N- N! , IS h  vN  (       d  f       N$= f! , (       d  f       g = f7f)Nc                    #    [        S5      e7f)Nz@cancel before consumption means generator should not be iteratedAssertionErrorr   r   r(   r   ,test_as_safe_channel_cancelled.<locals>.agen  s      R r   r;   AsyncGenerator[None])r   CancelScoper   r   )csr   s     r(   test_as_safe_channel_cancelledr     sZ     				r		 
	 66IIK 6 
	 666 
	sa   BA>A A>A$A>A"A>	B A>"A>$A;	*A-+A;	7A>>
BBc                 :  #    [         SS j5       n [        R                  " [        SS9   U " 5        IS h  vN nU  S h  vN nUS:X  a  M   e N N
 S S S 5      IS h  vN    O! , IS h  vN  (       d  f       O= fS S S 5        g ! , (       d  f       g = f7f)Nc                *   #    S7v   [        S5      e7f)Nr   oae)r   r   r   r(   r   *test_as_safe_channel_no_race.<locals>.agen  s        z^oae$r   r   r   )r   r   r   r   r   s      r(   test_as_safe_channel_no_racer     sn          
z	266Y$ aAvv 9 66666 
3	2	2s   (BB
AB
A'AA
AA'A'B
AA'B
 A#!B
'A>	-A0.A>	:B
	B

BBc                r  #    [         SS j5       n[        R                  " S5         U" 5        IS h  vN nU  S h  vN nUS:X  d   e[        R                  " 5       I S h  vN   M0   N6 N- N

 S S S 5      IS h  vN    O! , IS h  vN  (       d  f       O= fS S S 5        g ! , (       d  f       g = f7f)Nc                *   #    S7v   [        S5      e7f)Nr   z;buffer size 0 means we shouldn't be asked for another valuer   r   r   r(   r   8test_as_safe_channel_buffer_size_too_small.<locals>.agen  s     I
 	
r   rO   r   r   )r   r   r,   sleep_forever)r.   r   r   r   s       r(   *test_as_safe_channel_buffer_size_too_smallr     s      
 
 
		A	66Y$ +aAvv((*** +* % 66666 
		s   %B7B&A*B&BA0A,
A0!B#A.
$B*B&,A0.B0B1B&<A?=B&B		B
B	B&	B7&
B40B7c                 4  #    [         SS j5       n U " 5        IS h  vN nUR                  5       I S h  vN S:X  d   e[        R                  R	                  5       I S h  vN   S S S 5      IS h  vN   g  NY NC N N! , IS h  vN  (       d  f       g = f7f)Nc                    #    S7v   [         e7fr   r   r   r   r(   r   0test_as_safe_channel_no_interleave.<locals>.agen  s     r   r   r   )r   r   r   lowlevel
checkpointr   s     r(   "test_as_safe_channel_no_interleaver     sl       vv((**a///mm&&((( vv*( vvvsf   BA6BA>A8+A> A:!A>%B0A<1B8A>:A><B>BBBBc                 "  #    [         SS j5       n / n[        R                  " [        R                  " [        SS9[        R                  " [
        SS95       nU " U5       IS h  vN nU  S h  vN nUS:X  d   e[        S5      e N" N
 S S S 5      IS h  vN    O! , IS h  vN  (       d  f       O= fS S S 5        O! , (       d  f       O= f[        R                  S:  a  WR                  R                  S/:X  d   eUS	S
/:X  d   eg 7f)Nc                  #     S7v    U R                  S5        [        S5      e! [          a   nU R                  [        U5      5        e S nAff = f! U R                  S5        [        S5      e= f7f)Nr   finallyr   )BaseExceptionrJ   r   r   )eventses     r(   r   2test_as_safe_channel_genexit_finally.<locals>.agen  sf     	%G
 MM)$V$$  	MM$q'"	 MM)$V$$s0   A3& A3
AAAA A00A3z^agen$r   z
^iterator$r   iteratorr   z}Encountered exception during cleanup of generator object, as well as exception in the contextmanager body - unable to unwrap.zGeneratorExit()r   )r   	list[str]r;   r   )
r   r   RaisesGroup	RaisesExcr   r   sysversion_inforC   	__notes__)r   r   gr   r5   s        r(   $test_as_safe_channel_genexit_finallyr     s     % % F			84,7
 
<<9$ ,aAvv
++  ,9  <<<<<	
 
 
 7"ww  O%
 
 	
 

 '3333s   ADC%B&C)B,B0B

1B4BC
BBCBCB6	%B(&B6	2C9	D
CADc            	       #    [         SS j5       n SnU " 5        IS h  vN nU  S h  vN nU " 5        IS h  vN nSnU  S h  vN nX64X4:X  d   eUS-  nM   N= N4 N& N
 S S S 5      IS h  vN    O! , IS h  vN  (       d  f       O= fUS-  nMs  
 S S S 5      IS h  vN    g ! , IS h  vN  (       d  f       g = f7f)Nc                :   #    [        S5       H  n U 7v   M
     g 7f)Nr   )r3   )r5   s    r(   r   .test_as_safe_channel_nested_loop.<locals>.agen  s     qAG s   r   r   r   r   )r   ii
recv_chan1r5   r   jjr6   s          r(    test_as_safe_channel_nested_loopr     s       
Bvv! 	!vv( !6bX---!GB 	y vvvvv
 !GB " vvvvvs   CACB+BABB+A 
B+A7A$A"A$
A7CB B+"A$$A7%B+0A31B+7B=B >B
B+C$B'%C+C1B42C>Cc                 0  #    [         SS j5       n [        R                  " [        5         U " 5        IS h  vN nU  S h  vN nM   N N
 S S S 5      IS h  vN    O! , IS h  vN  (       d  f       O= f[        S5      e! , (       d  f       g = f7f)Nc                   #    S 7v   [         R                  " 5        n U R                  5         S 7v   S S S 5        g ! , (       d  f       g = f7frH   )r   r   r   )cscopes    r(   r   ;test_as_safe_channel_doesnt_leak_cancellation.<locals>.agen-  s-     6MMO  s   A<	A
A
Azshould be reachabler   )r   r   r   r   )r   r   _s      r(   -test_as_safe_channel_doesnt_leak_cancellationr   ,  sm       
~	&66Y$ a 9 66666 233	 
'	&sx   )BBA	BA AA
AA 	BAA BAB A7	&A)'A7	3B
BBc                 :  #    [         SS j5       n [        R                  " [        R                  " [        SS9SS9   U " 5        IS h  vN n[        S[	        S5      /5      e N! , IS h  vN  (       d  f       O= f S S S 5        g ! , (       d  f       g = f7f)Nc                    #    [        S5      e7f)Nznot entered)NotImplementedErrorr   r   r(   r   Btest_as_safe_channel_dont_unwrap_user_exceptiongroup.<locals>.agen<  s     !-00r   barr   foor   )r   r   r   r   r   r   )r   r   s     r(   4test_as_safe_channel_dont_unwrap_user_exceptiongroupr   ;  sn       
		F,,ZuEU	S66Q E):(;<< 6666 
T	S	SsL   ;BB
	A$
B
A&$B
&A=	,A/-A=	9B
	B

BBc                   ^#    [         R                  " 5       m[        SU4S jj5       n         SS jnU " 5        IS h  vN n[         R                  " 5        IS h  vN nUR	                  XS5      I S h  vN   UR	                  XS5      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   g  N Nk NS N; N! , IS h  vN  (       d  f       N2= f N)! , IS h  vN  (       d  f       g = f7f)Nc                V   >#    T R                  5       I S h  vN   S7v   S7v   g  N7f)Nr   r   )wait)events   r(   r   4test_as_safe_channel_multiple_receiver.<locals>.agenI  s$     jjl 	s   )')c                l   #    UR                  5         U R                  5       I S h  vN U:X  d   eg  N7frH   )startedr!   )r   rC   task_statuss      r(   handle_value<test_as_safe_channel_multiple_receiver.<locals>.handle_valueO  s0     
 	&&((E111(s   $424r   r   r   )r   ztrio.abc.ReceiveChannel[int]rC   r   r  ztrio.TaskStatusr;   r<   )r   Eventr   r=   startrQ   )r   r  r   rB   r   s       @r(   &test_as_safe_channel_multiple_receiverr	  F  s     JJLE 
2/22 %2 
	2 vv$$&&'--;;;--;;;IIK '& vv&;; '&&& vvvs   ?D
C
D
C0 C!C0$C:C;CCC)C04C5C09D
C.D
C0CCC0C+	CC+	'C0.D
0D6C97DD
c            	       #    [         SS j5       n / n[        R                  " 5        n[        R                  " [        R
                  5         U " U5       IS h  vN nU  S h  vN nUR                  5          [        R                  R                  5       I S h  vN   MB   NH N? N
! [        R
                   a    UR                  S5        e f = f
 S S S 5      IS h  vN    O! , IS h  vN  (       d  f       O= fS S S 5        O! , (       d  f       O= fS S S 5        O! , (       d  f       O= fUSS/:X  d   eg 7f)Nc               l  #     S 7v    [         R                  R                  5       I S h  vN   g  N! [         R                   a    U R	                  S5        e f = f!  [         R                  R                  5       I S h  vN    f ! [         R                   a    U R	                  S5        e f = f= f7f)Nagen cancel)r   r   r   	CancelledrJ   )r   s    r(   r   /test_as_safe_channel_multi_cancel.<locals>.agen_  s     		mm..000>> m,mm..000>> m,sZ   B4A !3 13 B43 'AB4B1!B BBB1'B..B11B4zbody cancelr  )r   r   r;   r   )
r   r   r   r   r   r  r   r   r   rJ   )r   r   r   r   r   s        r(   !test_as_safe_channel_multi_cancelr  ^  s     
 
 F				r]]4>>*F||y( !IIK"mm66888	 $ 9>> m4	  ) $||||| +** 
		 m]3333s   &D?%D#D	B#
D	C&!C%B%&C)C&;!B)B'B)!C&#D	%C'B))'CC&D	C" D	&C=,C/-C=9D	 	D#	
D	D#	D?#
D1-D?c                    #    [         SS j5       n U " 5        IS h  vN nU  S h  vN n  S S S 5      IS h  vN   g  N! N
 N N! , IS h  vN  (       d  f       g = f7f)Nc                6  #     [         R                  " 5        IS h  vN   S 7v   S S S 5      IS h  vN   g  N N! , IS h  vN  (       d  f       g = f! [         a6  n [        R                  " [
        5      R                  U 5      (       d   ee S n A ff = f7frH   )r   r=   r   r   r   GeneratorExitmatches)r   s    r(   r   :test_as_safe_channel_genexit_exception_group.<locals>.agen{  sd     	((** +***** 	%%m4<<Q????	so   BA 8A <A :A BA A AAAA BA 
B 1BBBr   r   )r   r   r   s      r(   ,test_as_safe_channel_genexit_exception_groupr  z  sJ       vv 	! vv	q vvvs`   A >A AAA AAA AA  AAA AAAA c            	       #    [         SS j5       n [        R                  " [        5         U " 5        IS h  vN n[        R
                  " 5        IS h  vN   UR                  5       I S h  vN   [        e N@ N$ N! , IS h  vN  (       d  f       O= fS S S 5      IS h  vN    O! , IS h  vN  (       d  f       O= fS S S 5        g ! , (       d  f       g = f7f)Nc                   #    S 7v   g 7frH   r   r   r   r(   r   Ctest_as_safe_channel_does_not_suppress_nested_genexit.<locals>.agen  s     r   r   )r   r   r   r  r   r=   r!   )r   r   s     r(   5test_as_safe_channel_does_not_suppress_nested_genexitr    s       
		M	*66Q 1 1 3 3))+  3 !4 3 3666666 
+	*	*s   )CCA8CB*A:
B*A>-A<
.
A>8C:B*<A>>BBBB*C#B&$C*C	0B31C	=C	C
CCc                 >  ^#    SS jm[         SU4S jj5       n [        R                  " [        5         U " 5        IS h  vN nU  S h  vN n  S S S 5      IS h  vN   S S S 5        g  N) N 
 N N! , IS h  vN  (       d  f       N(= f! , (       d  f       g = f7f)Nc                    #     [         R                  " 5       I S h  vN   g  N! [         R                   a    [        S ef = f7frH   )r   r   r  r   r   r   r(   wait_then_raise<test_as_safe_channel_genexit_filter.<locals>.wait_then_raise  s6     	'$$&&&~~ 	'$&	's%   A$ "$ A$ A  Ac                   >#    [         R                  " 5        IS h  vN n U R                  T5        S 7v   S S S 5      IS h  vN   g  N+ N! , IS h  vN  (       d  f       g = f7frH   )r   r=   r>   )rB   r  s    r(   r   1test_as_safe_channel_genexit_filter.<locals>.agen  s<     $$&&'/ '&&&&&sC   A'A	A'AA'AA'A'A$AA$ A'r   r   )r   r   r   r   r   r   r   r  s      @r(   #test_as_safe_channel_genexit_filterr!    sr     '  
 
		J	'66Q a 6 
(	'1 666 
(	's   1BB A*BA2A.A,
A.A2BA0B!	B*B,A..A20B2B		8A;9B		B
BBc                 `  ^#    SS jm[         SU4S jj5       n [        R                  " [        5         U " [        5       IS h  vN nU  S h  vN n  S S S 5      IS h  vN   S S S 5        [        R                  " [
        [        5         U " [
        5       IS h  vN nU  S h  vN n  S S S 5      IS h  vN   S S S 5        g  N Ny
 Nx Nl! , IS h  vN  (       d  f       N= f! , (       d  f       N= f N\ NS
 NR NF! , IS h  vN  (       d  f       N[= f! , (       d  f       g = f7f)Nc                   #     [         R                  " 5       I S h  vN   g  N! [         R                   a    U S ef = f7frH   )r   r   r  )exs    r(   r  Itest_as_safe_channel_swallowing_extra_exceptions.<locals>.wait_then_raise  s6     	$$&&&~~ 	$	s    ?$ "$ ?$ <?c                  >#    [         R                  " 5        IS h  vN nUR                  TU 5        UR                  T[        5        S 7v   S S S 5      IS h  vN   g  NB N! , IS h  vN  (       d  f       g = f7frH   )r   r=   r>   r  )r$  rB   r  s     r(   r   >test_as_safe_channel_swallowing_extra_exceptions.<locals>.agen  sN     $$&&'3> '&&&&&sD   A>A A>.A$A>A"A>"A>$A;*A-+A;7A>)r$  re   r;   r<   )r$  re   r;   r   )r   r   r   r   r  r   r   s      @r(   0test_as_safe_channel_swallowing_extra_exceptionsr(    s        
		N	+&&! a '& 
,
 
		J	7
##q a $# 
8	7	 '1 '&&& 
,	+ $1 $### 
8	7s  1D.C*CC*	CCC

CCC*!C"C*&'D.DC;D"D%C?)C=
*C?-D/D:D;D?	D.C*
CCC*C'	CC'	#C**
C84D.;D=C??DDD		D
D	D
D+'D.c                   ^#    [         SS j5       n U " 5        IS h  vN m[        R                  " 5        IS h  vN nSU4S jjnUR                  U5        [        R
                  " [        R                  5         T  S h  vN nM   Nm NQ N

 S S S 5        O! , (       d  f       O= fS S S 5      IS h  vN    O! , 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)Nc                   #     S 7v   M  7frH   r   r   r   r(   r   :test_as_safe_channel_close_between_iteration.<locals>.agen  s      s   	c                    >#    [         R                  R                  5       I S h  vN   T R                  5       I S h  vN   g  N N7frH   )r   r   r   r#   chans   r(   close_channelCtest_as_safe_channel_close_between_iteration.<locals>.close_channel  s3     --**,,,++- -s   "AAAAAAr   r   )r   r   r=   r>   r   r   r$   )r   rB   r/  r   r.  s       @r(   ,test_as_safe_channel_close_between_iterationr1    s       vvt0022g	  	=)]]4334 a 24 544  322222vvvvvvs   DBDC*BC*>B>=B BBBBDC*BB	B>
B)%B>,C*7B:8C*>C	CC	C*D#C&$D*D0C31D=Dc                   #    [         SS j5       n U " 5        IS h  vN nUR                  5       I S h  vN   [        R                  " [        R
                  5         UR                  5       I S h  vN   S S S 5        S S S 5      IS h  vN   g  Nr N\ N!! , (       d  f       N%= f N! , IS h  vN  (       d  f       g = f7f)Nc                    #    [        S5      e7f)Nzshould be unreachabler   r   r   r(   r   9test_as_safe_channel_close_before_iteration.<locals>.agen  s     455r   r   )r   r#   r   r   r   r$   r!   )r   r.  s     r(   +test_as_safe_channel_close_before_iterationr5    sz       vvkkm]]4334,,.   5 vv  54 vvvs~   CBCB(B(B(B1B2B6B(>C	B&
CB(B
B#	B(&C(B?.B1/B?;Cc                   ^#    [         SU4S jj5       n U " 5        IS h  vN m[        R                  " [        R                  5         T  S h  vN nM   N6 N
 S S S 5        O! , (       d  f       O= f[        R
                  R                  5       I S h  vN    S S S 5      IS h  vN    g ! , IS h  vN  (       d  f       g = f7f)Nc                Z   >#    S 7v   T R                  5       I S h  vN    S 7v   M   N7frH   )r#   r-  s   r(   r   9test_as_safe_channel_close_during_iteration.<locals>.agen  s(     kkm  	s   +)+r   )r   r   r   r   r$   testingr
   )r   r   r.  s     @r(   +test_as_safe_channel_close_during_iterationr:    s       vv]]4334 a 4 544 ll11333 vvvvvs   C	AC	%B/	A%AA
AA%C	AA%	B/%
A3	/(B/BB/C	(B+)C	/C5B86CC	r   )r.   ztrio.abc.Clockr;   r<   )r.   ztrio.testing.MockClockr;   r<   )2
__future__r   r   typingr   r   r   r   r   r   r9  r	   r
   r   exceptiongroupr   collections.abcr   r)   r0   rE   rS   ri   rp   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r  r  r  r!  r(  r1  r5  r:  r   r   r(   <module>r?     s    " 
     C C @g-.(V%&*+.7t7t6)**	"/5d'(T&(&+*+	+")4>"4=048 &2$	!4r   