
    'h>L                       S SK Jr  S SKrS SKJr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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-g)&    )annotationsN)TYPE_CHECKINGUnion)EndOfChannelas_safe_channelopen_memory_channel   )MatcherRaisesGroup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 4      " 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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! , (       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   
ValueErrorr   intstrreprsend_nowaitr   sendtrio
WouldBlockreceivereceive_nowaitacloseClosedResourceErrorcloner   )srs     a/var/www/home/psychics-availability/venv/lib/python3.13/site-packages/trio/_tests/test_channel.pytest_channelr+      s    	y	!C  
"	z)J	KB 
L uS#t^45a8DA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2OOO,R8O
RO+0O(1
O+<AR>O=,R;P<(R$P9P:P>,R*P'<,R(P99RQ4R	QQQ"R=Q#>(R&Q):Q&;Q)?,R+Q;<RRR
N,'R/
N>9RO
OR
O% R(O++
O:5R=
P	RP
P$R'
P61R9
Q	RQ
Q 	R&Q))
Q83R;
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_553r2   ?   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-      )r6   trio.MemorySendChannel[int]r7   r   returnNone)	r   r   r!   open_nurseryr5   
start_soonr'   sortlist)r9   r6   receive_channelnurseryr7   valuegots          r*   test_channel_multiple_producersrG   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)rC   r7   rE   receivedsuccessful_receiverss      r*   consumer1test_channel_multiple_consumers.<locals>.consumer`   s1     * 	#% $$Q'OOE"	#?s   7535%757r      r-   )rC   trio.MemoryReceiveChannel[int]r7   r   r=   r>   )
setr!   r?   r   r   r5   r@   r   r    len)rO   rD   r6   rC   r7   rM   rN   s        @@r*   test_channel_multiple_consumersrU   \   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rJ   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rJ   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]rZ   ztype[BaseException]r=   r>   )r)   rR   r=   r>   )r   r!   r?   r@   r&   r   r%   r   r   r   r    r   r$   r#   BrokenResourceErrorr   )r[   r(   r)   rD   rb   _s2r2s          r*   test_close_basicsrj   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rJ   rX   rY   s     r*   r[   #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rJ   r`   ra   s    r*   rb   &test_close_sync.<locals>.receive_block   rd   re   rf   )r)   ztrio.MemoryReceiveChannel[None]r=   r>   )r   r!   r?   r@   r&   r   closer   r   r   r    r   r$   r#   rg   )r[   r(   r)   rD   rb   s        r*   test_close_syncrq      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&   rg   )r(   r)   ri   r3s       r*   $test_receive_channel_clone_and_closert      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)   ry   r   rD   rx   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rJ   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#   )ri   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   rD   r   ri   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   floatr5   r   rB   )r    r#   r7   rF   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~   ri   rD   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 4      " 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 4      " 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Ni= f GNa! , IS h  vN  (       d  f       GNw= 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rJ   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)   r   rD   r   s       @r*   test_channel_fairnessr   j  s     uS$Y/03DAMM!"""MM!"""
 F#   ""g:)$&&&	a]]4??+ ,	 #" Q;;
 uS$Y/03DAMM!	t	'	d 
(  ""g1661%$&&&!Q&&&]]4??+MM! ,iik!a''' #"" #&++	 #""" 
(	'"&++! #"""s  BKIKI86I 79I80I#I8	KI5AK4J!K'J%(K+*J>J'>J>J)&J>J:
J>KJ<K I8#
I2	-I85K8J>J?JK
J"	K'J>)
J7	3J><K>KK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rJ   )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   rD   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
     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   rQ   r   r   )r   r!   r.   sleep_forever)r0   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[        [        [        [        SS9[        [        SS95      SS9   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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   )BaseExceptionrL   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$z^Encountered exception during cleanup of generator object, as well as exception in the contextmanager body - unable to unwrap.$r   iteratorzGeneratorExit()r   )r   	list[str]r=   r   )r   r   r
   r   r   )r   r   r   r7   s       r*   $test_as_safe_channel_genexit_finallyr     s     % % F	Jh/I\2	
 Q
 <<9$ ,aAvv
++  ,9  <<<<<
 
 
 '3333s   =CB)A/B)BA3A1
A3B/B)1A33B4B)?B B)B	BB	B) 	C)
B73C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	   )r5   )r7   s    r*   r   .test_as_safe_channel_nested_loop.<locals>.agen  s     qAG s   r   r   r   r   )r   ii
recv_chan1r7   r   jjr8   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                   #    [         R                  " 5        n U R                  5         S 7v   S S S 5        g ! , (       d  f       g = f7frJ   )r!   r   r   )cscopes    r*   r   ;test_as_safe_channel_doesnt_leak_cancellation.<locals>.agen*  s*     6MMO  s   A7	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 [        [        [        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>.agen8  s     !-00r   barr   foor   )r   r   r
   r   r   )r   r   s     r*   4test_as_safe_channel_dont_unwrap_user_exceptiongroupr   7  sb       
WZu5U	C66Q E):(;<< 6666 
D	C	CsI   %BA4AA4AA4A'	AA'	#A4+	B4
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>.agenE  s$     jjl 	s   )')c                l   #    UR                  5         U R                  5       I S h  vN U:X  d   eg  N7frJ   )startedr#   )r   rE   task_statuss      r*   handle_value<test_as_safe_channel_multiple_receiver.<locals>.handle_valueK  s0     
 	&&((E111(s   $424r   r   r   )r   ztrio.abc.ReceiveChannel[int]rE   r   r   ztrio.TaskStatusr=   r>   )r!   Eventr   r?   startrS   )r   r   r   rD   r   s       @r*   &test_as_safe_channel_multiple_receiverr  B  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   	CancelledrL   )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   rL   )r   r   r   r   r   s        r*   !test_as_safe_channel_multi_cancelr	  Z  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?r   )r0   ztrio.abc.Clockr=   r>   )r0   ztrio.testing.MockClockr=   r>   ).
__future__r   systypingr   r   r   r!   r   r   r   testingr
   r   r   r   version_infoexceptiongroupr   collections.abcr   r+   r2   rG   rU   rj   rq   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r   r   r*   <module>r     s    " 
 '   C C V Vg-.(V%&*+.7t7t6)**	"/5d'(T&(&+*+	+")48"4=04r   