
     nh>L                    `   d dl mZ d dlZd dlmZmZ d dlZd dlZd dlmZm	Z	m
Z
 ddlmZmZmZmZ ej        dk     rd dlmZ erd d	lmZ d(dZd)dZd(dZd(dZd(dZd(dZd(dZd(dZd(dZd(dZd(dZd(dZ d(dZ!d(dZ"d(dZ#d(dZ$d(dZ%d*d Z&d(d!Z'd(d"Z(d(d#Z)d(d$Z*d(d%Z+d(d&Z,d(d'Z-dS )+    )annotationsN)TYPE_CHECKINGUnion)EndOfChannelas_safe_channelopen_memory_channel   )MatcherRaisesGroupassert_checkpointswait_all_tasks_blocked)      )ExceptionGroup)AsyncGeneratorreturnNonec                 	  K   t          j        t                    5  t          d           d d d            n# 1 swxY w Y   t          j        t          d          5  t          d           d d d            n# 1 swxY w Y   t          t
          t          t          d f                  d          \  } }t          |            t          |           | 	                    d           t                      5  |                     d           d {V  d d d            n# 1 swxY w Y   t          j        t          j                  5  | 	                    d            d d d            n# 1 swxY w Y   t                      5  |                                 d {V dk    sJ 	 d d d            n# 1 swxY w Y   |                                dk    sJ t          j        t          j                  5  |                                 d d d            n# 1 swxY w Y   | 	                    d           |                                  d {V  t          j        t          j                  5  |                     d           d {V  d d d            n# 1 swxY w Y   t          j        t          j                  5  | 	                    d           d d d            n# 1 swxY w Y   t          j        t          j                  5  |                                  d d d            n# 1 swxY w Y   |                                  d {V  |                                dk    sJ t          j        t&                    5  |                                 d {V  d d d            n# 1 swxY w Y   |                                 d {V  t          j        t          j                  5  |                                 d {V  d d d            n# 1 swxY w Y   t          j        t          j                  5  |                                 d d d            n# 1 swxY w Y   |                                 d {V  d S )	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     l/var/www/html/mycamper/aliexpress-site/backend/venv/lib/python3.11/site-packages/trio/_tests/test_channel.pytest_channelr-      s     	y	!	! ! !C   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !	z)J	K	K	K    B                              uS#t^45a88DAqGGGGGGMM!			  ffQii              	t	'	'  	d               
		 & &YY[[      A%%%%%& & & & & & & & & & & & & & &""""	t	'	'  	               MM&
((**	t/	0	0 ! !ffZ         ! ! ! ! ! ! ! ! ! ! ! ! ! ! !	t/	0	0 " "	j!!!" " " " " " " " " " " " " " "	t/	0	0  				              
((**''''	|	$	$  iikk              
((**	t/	0	0  iikk              	t/	0	0  	              
((**s   8<<A::A>A>6DD"%D"E))E-0E-!F00F47F43HHH,JJJ=KK#&K#L))L-0L-N((N,/N,+PPP;QQ #Q autojump_clocktrio.abc.Clockc                  K   t          t                   d          \  }}t          j        d          5 }|                                 d {V  d d d            n# 1 swxY w Y   |j        sJ |                    d           d {V  d S )Nr   
   zTest for PR #553)r   r   r#   move_on_afterr%   cancelled_caughtr"   )r.   r*   r+   timeout_scopes       r,   test_553r5   ?   s      s#A&&DAq		B		 =iikk              ))))
&&#
$
$$$$$$$$$$s   AA"Ac                 *  K   dd} t          t                   d          \  }}t          j                    4 d {V }|4 d {V  t	          d	          D ]+}|                    | |                                |           ,	 d d d           d {V  n# 1 d {V swxY w Y   d
 |2              d {V }|                                 |t          t	          d                    k    sJ 	 d d d           d {V  d S # 1 d {V swxY w Y   d S )Nsend_channeltrio.MemorySendChannel[int]ir   r   r   c                   K   | 4 d {V  t          d|z  d|dz   z            D ]}|                     |           d {V  	 d d d           d {V  d S # 1 d {V swxY w Y   d S )Nr   r   )ranger"   )r7   r9   js      r,   producerz1test_channel_multiple_producers.<locals>.producerH   s      	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+1q5!q1u+.. + +"''**********+	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   8A
A!$A!r   r1   c                "   K   g | 3 d {V }|
6 S N ).0values     r,   
<listcomp>z3test_channel_multiple_producers.<locals>.<listcomp>V   s.      88888888uu8888      )r7   r8   r9   r   r   r   )	r   r   r#   open_nurseryr;   
start_soonr)   sortlist)r=   r7   receive_channelnurseryr9   gots         r,   test_channel_multiple_producersrM   G   so     + + + + %8$<Q$?$?!L/ "" 
& 
& 
& 
& 
& 
& 
&g   	F 	F 	F 	F 	F 	F 	F 	F2YY F F""8\-?-?-A-A1EEEEF	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 98888888888


d599oo%%%%%
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
&s6   	D<BD
B	D"B	#AD
DDc                   K   t                      g dfd} t          j                    4 d {V }t          j        t                   d          \  }}|4 d {V  t          d	          D ]}|                    | ||           t                       d {V  t          d
          D ]}|                    |           d {V  	 d d d           d {V  n# 1 d {V swxY w Y   d d d           d {V  n# 1 d {V swxY w Y   t          t          d	                    k    sJ t                    d
k    sJ t                    t          t          d
                    k    sJ d S )NrJ   trio.MemoryReceiveChannel[int]r9   r   r   r   c                v   K   | 2 3 d {V }                     |                               |           26 d S r?   )addappend)rJ   r9   rB   receivedsuccessful_receiverss      r,   consumerz1test_channel_multiple_consumers.<locals>.consumer`   sa      * 	# 	# 	# 	# 	# 	# 	#% $$Q'''OOE"""" +??s   8r      r1   )rJ   rO   r9   r   r   r   )
setr#   rF   r   r   r;   rG   r   r"   len)rU   rK   r7   rJ   r9   rS   rT   s        @@r,   test_channel_multiple_consumersrY   \   s     55H# # # # # # #
  "" + + + + + + +g(,(@(Ea(H(H%o 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+1XX A A""8_a@@@@(*********2YY + +"''**********+		+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	++ + + + + + + + + + + + + + + + + + + + + + + + + + +  3uQxx==0000x==Bx==Cb		NN******s6   +D A+CD
C(	(D+C(	,D
DDc                   K   dd} t          d          d          \  }}t          j                    4 d {V }|                    | |t          j                   t                       d {V  |                                 d {V  d d d           d {V  n# 1 d {V swxY w Y   t          j        t          j                  5  |	                    d            d d d            n# 1 swxY w Y   t          j        t          j                  5  |
                    d            d {V  d d d            n# 1 swxY w Y   t          j        t                    5  |                                 d d d            n# 1 swxY w Y   t          j        t                    5  |                                 d {V  d d d            n# 1 swxY w Y   t          d          d          \  }}t          j                    4 d {V }|                    | |t          j                   t                       d {V  |                                 d {V  d d d           d {V  n# 1 d {V swxY w Y   t          j        t          j                  5  |	                    d            d d d            n# 1 swxY w Y   t          j        t          j                  5  |
                    d            d {V  d d d            n# 1 swxY w Y   dd}t          t                   d          \  }}t          j                    4 d {V }|                    ||           t                       d {V  |                                 d {V  d d d           d {V  n# 1 d {V swxY w Y   t          j        t          j                  5  |                                 d d d            n# 1 swxY w Y   t          j        t          j                  5  |                                 d {V  d d d            d S # 1 swxY w Y   d S )Nr*   trio.MemorySendChannel[None]expecttype[BaseException]r   r   c                   K   t          j        |          5  |                     d            d {V  d d d            d S # 1 swxY w Y   d S r?   r   r   r"   r*   r\   s     r,   
send_blockz%test_close_basics.<locals>.send_blockt          ]6"" 	 	&&,,	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   A  AAr   r+   rO   c                   K   t          j        t          j                  5  |                                  d {V  d d d            d S # 1 swxY w Y   d S r?   r   r   r#   r(   r%   r+   s    r,   receive_blockz(test_close_basics.<locals>.receive_block         ]4344 	 	))++	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   A		AAr*   r[   r\   r]   r   r   )r+   rO   r   r   )r   r#   rF   rG   r(   r   r'   r   r   r!   r"   r   r&   r%   BrokenResourceErrorr   )ra   r*   r+   rK   rg   _s2r2s          r,   test_close_basicsrn   s   s         t$Q''DAq ""       g:q$*BCCC$&&&&&&&&&hhjj                           
t/	0	0  	d              	t/	0	0  ffTll               
|	$	$  	              	|	$	$  iikk               t$Q''DAq ""       g:q$*BCCC$&&&&&&&&&hhjj                           
t/	0	0  	d              	t/	0	0  ffTll                  "#&q))GC ""       g="---$&&&&&&&&&iikk                           
t/	0	0  
              	t/	0	0  jjll                 s   AB
B$'B$	C++C/2C/D<<E E  FFF%GGGAI**
I47I4J;;J?J?$LLLAN((
N25N2O88O<?O<!Q		QQc                 ~  K   dd} t          d          d          \  }}t          j                    4 d {V }|                    | |t          j                   t                       d {V  |                                 d d d           d {V  n# 1 d {V swxY w Y   t          j        t          j                  5  |	                    d            d d d            n# 1 swxY w Y   t          j        t          j                  5  |
                    d            d {V  d d d            n# 1 swxY w Y   t          j        t                    5  |                                 d d d            n# 1 swxY w Y   t          j        t                    5  |                                 d {V  d d d            n# 1 swxY w Y   t          d          d          \  }}t          j                    4 d {V }|                    | |t          j                   t                       d {V  |                                 d d d           d {V  n# 1 d {V swxY w Y   t          j        t          j                  5  |	                    d            d d d            n# 1 swxY w Y   t          j        t          j                  5  |
                    d            d {V  d d d            n# 1 swxY w Y   dd}t          d          d          \  }}t          j                    4 d {V }|                    ||           t                       d {V  |                                 d d d           d {V  n# 1 d {V swxY w Y   t          j        t          j                  5  |                                 d d d            n# 1 swxY w Y   t          j        t          j                  5  |                                 d {V  d d d            d S # 1 swxY w Y   d S )Nr*   r[   r\   r]   r   r   c                   K   t          j        |          5  |                     d            d {V  d d d            d S # 1 swxY w Y   d S r?   r_   r`   s     r,   ra   z#test_close_sync.<locals>.send_block   rb   rc   r   r+   trio.MemoryReceiveChannel[None]c                   K   t          j        t          j                  5  |                                  d {V  d d d            d S # 1 swxY w Y   d S r?   re   rf   s    r,   rg   z&test_close_sync.<locals>.receive_block   rh   ri   rj   )r+   rq   r   r   )r   r#   rF   rG   r(   r   closer   r   r!   r"   r   r&   r%   rk   )ra   r*   r+   rK   rg   s        r,   test_close_syncrt      s         t$Q''DAq ""       g:q$*BCCC$&&&&&&&&&				                           
t/	0	0  	d              	t/	0	0  ffTll               
|	$	$  	              	|	$	$  iikk               t$Q''DAq ""       g:q$*BCCC$&&&&&&&&&				                           
t/	0	0  	d              	t/	0	0  ffTll                  t$Q''DAq ""       g=!,,,$&&&&&&&&&				                           
t/	0	0  	              	t/	0	0  iikk                 s   A
B
B!BC%%C),C)D66D:=D:E;;E?E?GG
G
A
I
I(+I(J//J36J3L  LL ?N
NN O!!O%(O%
P22P69P6c                 <  K   t          d          d          \  } }|                                }|                                }|                     d            |                                 d {V  |5  	 d d d            n# 1 swxY w Y   t	          j        t          j                  5  |                                 d d d            n# 1 swxY w Y   t	          j        t          j                  5  |                                 d d d            n# 1 swxY w Y   |                     d            |                                 d {V  t	          j        t          j                  5  |                     d            d d d            d S # 1 swxY w Y   d S )Nr1   )	r   r)   r!   r'   r   r   r#   r(   rk   )r*   r+   rm   r3s       r,   $test_receive_channel_clone_and_closerw      ss     t$R((DAq	
B	
BMM$
((**	                 
t/	0	0  				               
t/	0	0  



               MM$
))++ 
t/	0	0  	d                 sH   4BB	B+CCC5DDD.FFFc                   K   t          t                   d          \  }                                 dfd}dfd}t          j                    4 d {V }|                    |           |                    |           t                       d {V                                   d {V  |                                  d {V dk    sJ 	 d d d           d {V  d S # 1 d {V swxY w Y   d S )Nr   r   r   c                    K   t          j        t          j                  5                       d           d {V  d d d            d S # 1 swxY w Y   d S )Nnope)r   r   r#   r(   r"   )s1s   r,   send_will_closez9test_close_multiple_send_handles.<locals>.send_will_close  s      ]4344 	" 	"''&//!!!!!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   AAAc                 B   K                         d           d {V  d S Nok)r"   )s2s   r,   send_will_succeedz;test_close_multiple_send_handles.<locals>.send_will_succeed  s/      ggdmm    r   r   r   )	r   r   r)   r#   rF   rG   r   r'   r%   )r+   r|   r   rK   r{   r   s       @@r,    test_close_multiple_send_handlesr     s       $Q''EB	B" " " " " "       "" ) ) ) ) ) ) )g?+++,---$&&&&&&&&&iikkYY[[      D((((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   A9C((
C25C2c                   K   t          t                   d          \  }                                 dfd}dfd}t          j                    4 d {V }|                    |           |                    |           t                       d {V                                   d {V  |                     d           d {V  d d d           d {V  d S # 1 d {V swxY w Y   d S )Nr   r   r   c                    K   t          j        t          j                  5                                    d {V  d d d            d S # 1 swxY w Y   d S r?   re   )r1s   r,   receive_will_closez?test_close_multiple_receive_handles.<locals>.receive_will_close  s      ]4344 	 	**,,	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A

AAc                 L   K                                      d {V dk    sJ d S r~   r%   )rm   s   r,   receive_will_succeedzAtest_close_multiple_receive_handles.<locals>.receive_will_succeed!  s8      ZZ\\!!!!!!T))))))r   r   r   )	r   r   r)   r#   rF   rG   r   r'   r"   )r*   r   r   rK   r   rm   s       @@r,   #test_close_multiple_receive_handlesr     s       $Q''EAr	B     * * * * * *  ""       g-.../000$&&&&&&&&&iikkffTll                             s   A4C""
C,/C,c                 J  K   t          t                   t          d                    \  } }| 5  t          d          D ]}|                     |           	 d d d            n# 1 swxY w Y   d |2              d {V }|t          t          d                    k    sJ d S )Ninfr1   c                "   K   g | 3 d {V }|
6 S r?   r@   )rA   r9   s     r,   rC   z%test_inf_capacity.<locals>.<listcomp>4  s.      
$
$
$
$
$
$
$
$q1
$
$
$
$rD   )r   r   floatr;   r!   rI   )r"   r%   r9   rL   s       r,   test_inf_capacityr   ,  s      ',U5\\::MD' 
    r 	  	 AQ	                               %
$G
$
$
$
$
$
$
$
$
$C$uRyy//!!!!!!s   (A$$A(+A(c                 n  K   t          d          d          \  } }|                                 |                                k    sJ |                                 }|j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ |                     d            |                                 j        dk    sJ | 	                                }|                                 j        dk    sJ | 
                                 d {V  |                                j        dk    sJ |	                                }|                                j        dk    sJ |
                                 d {V  |                                j        dk    sJ t          j                    4 d {V }|                    d            |                                 j        dk    sJ |                    |j        d            |                    |j        d            t                       d {V  |                                 j        dk    sJ |j                                         d d d           d {V  n# 1 d {V swxY w Y   |                                 j        dk    sJ 	 	 |                                 # t          j        $ r Y nw xY wt          j                    4 d {V }|                    |j                   t                       d {V  |                                 j        dk    sJ |j                                         d d d           d {V  n# 1 d {V swxY w Y   |                                 j        dk    sJ d S )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#   rF   rG   r"   r   cancel_scopecancelr&   r$   r%   )r*   r+   statsr   rm   rK   s         r,   test_statisticsr   8  s     t$Q''DAq<<>>Q\\^^++++LLNNE$)))) A%%%%#q((((&!++++#q((((&!++++MM$<<>>-2222	
B<<>>,1111
((**==??-2222	
B==??0A5555
))++==??0A5555 "" & & & & & & &g
t||~~1Q666627D)))27D)))$&&&&&&&&&||~~0A5555##%%%& & & & & & & & & & & & & & & & & & & & & & & & & & & <<>>,1111		?     "" & & & & & & &g19%%%$&&&&&&&&&||~~3q8888##%%%	& & & & & & & & & & & & & & & & & & & & & & & & & & &
 <<>>/1444444s8   B7J
J!$J!K K0/K0A'N
NNc                   K   t          t          t          d f                  d          \  } }|                     d           |                                dk    sJ |                     d           |                                dk    sJ d d	fd}t          j                    4 d {V }|                    ||           t                       d {V  |                     d           t          j
        t
          j                  5  |                                 d d d            n# 1 swxY w Y   d d d           d {V  n# 1 d {V swxY w Y   dk    sJ t          t          t          d f                  d          \  } }|                     d           t          j
        t
          j                  5  |                     d            d d d            n# 1 swxY w Y   t          j                    4 d {V }|                    | j        d           t                       d {V  |                                dk    sJ t          j
        t
          j                  5  |                     d           d d d            n# 1 swxY w Y   |                                 d {V dk    sJ 	 d d d           d {V  d S # 1 d {V swxY w Y   d S )
Nr   r	   r+   %trio.MemoryReceiveChannel[int | None]r   r   c                @   K   |                                   d {V d S r?   r   )r+   results    r,   
do_receivez)test_channel_fairness.<locals>.do_receivex  s*      yy{{""""""r   r   )r+   r   r   r   )r   r   r   r!   r&   r#   rF   rG   r   r   r   r$   r"   r%   )r*   r+   r   rK   r   s       @r,   test_channel_fairnessr   j  s      uS$Y/033DAqMM!""""MM!""""
 F# # # # # #  ""       g:q)))$&&&&&&&&&	a]4?++ 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 		                           Q;;;;
 uS$Y/033DAqMM!	t	'	'  	d               "" ( ( ( ( ( ( (g161%%%$&&&&&&&&&!!Q&&&&]4?++ 	 	MM!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	iikk!!!!!!a'''''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   -AE	D, E	,D0	0E	3D0	4E		
EE?G!!G%(G%A(K-JKJ	KJ	#K
KKc                 B  K   t          t                   d          \  } }t          j        t          j                  5  |                                 d d d            n# 1 swxY w Y   t          j        t          j                  5  |                     d           d d d            n# 1 swxY w Y   d
d	}t	          j                    4 d {V }|	                    || d           t                      5  |                                 d {V dk    sJ 	 d d d            n# 1 swxY w Y   d d d           d {V  n# 1 d {V swxY w Y   t          j        t          j                  5  |                                 d d d            d S # 1 swxY w Y   d S )Nr   r   r*   r8   vr   r   r   c                   K   t                      5  |                     |           d {V  d d d            d S # 1 swxY w Y   d S r?   )r   r"   )r*   r   s     r,   do_sendz test_unbuffered.<locals>.do_send  s      !! 	 	&&))OOOOOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   :>>)r*   r8   r   r   r   r   )r   r   r   r   r#   r$   r&   r!   rF   rG   r   r%   )r*   r+   r   rK   s       r,   test_unbufferedr     s     s#A&&DAq	t	'	'  	              	t	'	'  	a                   "" * * * * * * *g7Aq)))!! 	* 	*$$$$$$)))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	** * * * * * * * * * * * * * * * * * * * * * * * * * * 
t	'	'  	                 sk   AA#&A#B**B.1B.&E8!D&E&D*	*E-D*	.E
EE2FFFc                    K   t           dd            }  |             4 d {V }|2 3 d {V }|dk    sJ 6 	 d d d           d {V  d S # 1 d {V swxY w Y   d S )Nr   AsyncGenerator[int]c                   K   dW V  d S Nr   r@   r@   r   r,   agenz*test_as_safe_channel_exhaust.<locals>.agen  s      r   r   r   r   r   r   	recv_chanxs      r,   test_as_safe_channel_exhaustr     s+        _ tvv         	 	 	 	 	 	 	!66666 !y                             s   A7A
AAc                   K   t           dd            }  |             4 d {V }|                                 d {V dk    sJ |                                 d {V  t          j        t
          j                  5  |                                 d {V  d d d            n# 1 swxY w Y   d d d           d {V  d S # 1 d {V swxY w Y   d S )Nr   r   c                   K   dW V  dW V  d S )Nr   r	   r@   r@   r   r,   r   z2test_as_safe_channel_broken_resource.<locals>.agen  s       r   r   r   )r   	__anext__r'   r   r   r#   r(   r   r   s     r,   $test_as_safe_channel_broken_resourcer     s        _ tvv ( ( ( ( ( ( (((********a////           ]4344 	( 	(%%'''''''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s6   AC=B$C$B(	(C+B(	,C
CCc                   K   t          j                    5 } t          dd            } |            4 d {V  |                                  d d d           d {V  n# 1 d {V swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   AsyncGenerator[None]c                $   K   t          d          )Nz@cancel before consumption means generator should not be iteratedAssertionErrorr@   r   r,   r   z,test_as_safe_channel_cancelled.<locals>.agen  s       R  r   r   r   )r#   CancelScoper   r   )csr   s     r,   test_as_safe_channel_cancelledr     s^     				 
r		 	 	 
	 466 	 	 	 	 	 	 	 	IIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s4   "A=AA=
A)	)A=,A)	-A==BBc                 $  K   t           dd            } t          j        t          d          5   |             4 d {V }|2 3 d {V }|dk    sJ 6 	 d d d           d {V  n# 1 d {V swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   c                .   K   dW V  t          d          )Nr   oae)r   r@   r   r,   r   z*test_as_safe_channel_no_race.<locals>.agen  s      r   z^oae$r   r   r   )r   r   r   r   r   s      r,   test_as_safe_channel_no_racer     s            _  
z	2	2	2  466 	 	 	 	 	 	 	Y$       aAvvvvv %9	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 sA   B A'A	A'B'
A1	1B4A1	5BB	B	trio.testing.MockClockc                H  K   t           dd            }t          j        d          5   |            4 d {V }|2 3 d {V }|dk    sJ t          j                     d {V  )6 	 d d d           d {V  n# 1 d {V swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   c                .   K   dW V  t          d          )Nr   z;buffer size 0 means we shouldn't be asked for another valuer   r@   r   r,   r   z8test_as_safe_channel_buffer_size_too_small.<locals>.agen  s&      I
 
 	
r   rV   r   r   )r   r#   r2   sleep_forever)r.   r   r   r   s       r,   *test_as_safe_channel_buffer_size_too_smallr     s      
 
 
 _
 
	A		 + +466 	+ 	+ 	+ 	+ 	+ 	+ 	+Y$ + + + + + + +aAvvvv(********** %9	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	++ + + + + + + + + + + + + + + + + +s?   BA9A%$A9'B9
B	BB	BBBc                   K   t           dd            }  |             4 d {V }|                                 d {V dk    sJ t          j                                         d {V  d d d           d {V  d S # 1 d {V swxY w Y   d S )Nr   r   c                   K   dW V  t           r   r   r@   r   r,   r   z0test_as_safe_channel_no_interleave.<locals>.agen  s      r   r   r   )r   r   r#   lowlevel
checkpointr   s     r,   "test_as_safe_channel_no_interleaver     sB        _ tvv ) ) ) ) ) ) )((********a////m&&((((((((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   AA<<
B	Bc            	       K   t           dd            } g }t          t          t          t          d          t          t          d                    d	          5   | |          4 d {V }|2 3 d {V }|d
k    sJ t	          d          6 	 d d d           d {V  n# 1 d {V swxY w Y   d d d            n# 1 swxY w Y   |ddgk    sJ d S )Nevents	list[str]r   r   c                 K   	 dW V  n5# t           $ r(}|                     t          |                      d }~ww xY w	 |                     d           t          d          # |                     d           t          d          xY w)Nr   finallyr   )BaseExceptionrR   r    r   )r   es     r,   r   z2test_as_safe_channel_genexit_finally.<locals>.agen  s      	%GGGGG 	 	 	MM$q''"""	 
 MM)$$$V$$$ MM)$$$V$$$$$$s    
 A$ 
<#7<A$ $%B	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   r   r   r   )r   r   r
   r   r   )r   r   r   r9   s       r,   $test_as_safe_channel_genexit_finallyr     s     % % % _% F	Jh///I\222	
 	
 Q
 
 
 
, 
, 4<< 	, 	, 	, 	, 	, 	, 	,9$ , , , , , , ,aAvvvv
+++ %9	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,
, 
, 
, 
, 
, 
, 
, 
, 
, 
, 
, 
, 
, 
, 
, '3333333sB   C/B$2B8B$C$
B.	.C1B.	2CCCc                 b  K   t           dd            } d} |             4 d {V }|2 3 d {V } |             4 d {V }d}|2 3 d {V }||f||fk    sJ |dz  }6 	 d d d           d {V  n# 1 d {V swxY w Y   |dz  }`6 	 d d d           d {V  d S # 1 d {V swxY w Y   d S )Nr   r   c                8   K   t          d          D ]} | W V  d S )Nr	   )r;   )r9   s    r,   r   z.test_as_safe_channel_nested_loop.<locals>.agen  s2      q 	 	AGGGGG	 	r   r   r   r   r   )r   ii
recv_chan1r9   r   jjr<   s          r,    test_as_safe_channel_nested_loopr     s>        _ 
Btvv       ! 	 	 	 	 	 	 	!tvv       (       !q6b"X----!GBB  )y                          
 !GBB "z                             sK   BB	B A2AA2 B2
A<<B?A< 
B
B(+B(c                   K   t           dd            } t          j        t                    5   |             4 d {V }|2 3 d {V }6 	 d d d           d {V  n# 1 d {V swxY w Y   t          d          # 1 swxY w Y   d S )Nr   r   c                   K   t          j                    5 } |                                  d W V  d d d            d S # 1 swxY w Y   d S r?   )r#   r   r   )cscopes    r,   r   z;test_as_safe_channel_doesnt_leak_cancellation.<locals>.agen*  s       	6MMOOOEEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   =AAzshould be reachabler   )r   r   r   r   )r   r   _s      r,   -test_as_safe_channel_doesnt_leak_cancellationr   )  sm        _
 
~	&	& 4 4466 	 	 	 	 	 	 	Y$       a %9	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 2333	4 4 4 4 4 4 4 4 4 4s@   A=AA	AA=
A'	'A=*A'	+A==BBc                 *  K   t           dd            } t          t          t          d          d          5   |             4 d {V }t	          dt          d          g          # 1 d {V swxY w Y   	 d d d            d S # 1 swxY w Y   d S )Nr   r   c                $   K   t          d          )Nznot entered)NotImplementedErrorr@   r   r,   r   zBtest_as_safe_channel_dont_unwrap_user_exceptiongroup.<locals>.agen8  s      !-000r   barr   foor   )r   r   r
   r   r   )r   r   s     r,   4test_as_safe_channel_dont_unwrap_user_exceptiongroupr   7  sA        _ 
WZu555U	C	C	C = =466 	= 	= 	= 	= 	= 	= 	=Q E):):(;<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	== = = = = = = = = = = = = = = = = =s/   B
A))
A3	3B6A3	7BBBc                   K   t          j                    t          dfd            } dd} |             4 d {V }t          j                    4 d {V }|                    ||d           d {V  |                    ||d           d {V                                   d d d           d {V  n# 1 d {V swxY w Y   d d d           d {V  d S # 1 d {V swxY w Y   d S )Nr   r   c                T   K                                      d {V  dW V  dW V  d S )Nr   r   )wait)events   r,   r   z4test_as_safe_channel_multiple_receiver.<locals>.agenE  sA      jjllr   r   trio.abc.ReceiveChannel[int]rB   r   task_statustrio.TaskStatusr   c                r   K   |                                  |                                  d {V |k    sJ d S r?   )startedr%   )r   rB   r   s      r,   handle_valuez<test_as_safe_channel_multiple_receiver.<locals>.handle_valueK  sO      
 	&&((((((((E111111r   r   r   r   )r   r   rB   r   r   r   r   r   )r#   Eventr   rF   startrW   )r   r   r   rK   r   s       @r,   &test_as_safe_channel_multiple_receiverr   B  s/     JLLE     _
2 2 2 2 tvv       $&& 	 	 	 	 	 	 	'--i;;;;;;;;;--i;;;;;;;;;IIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                             s6   CAB9'C9
C	CC	C
C'*C'c                 L  K   t           dd            } g }t          j                    5 }t          j        t          j                  5   | |          4 d {V }|2 3 d {V }|                                 	 t          j                                         d {V  A# t          j        $ r |	                    d            w xY w6 	 d d d           d {V  n# 1 d {V swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |ddgk    sJ d S )	Nr   r   r   r   c               X  K   	 d W V  	 t           j                                         d {V  d S # t           j        $ r |                     d            w xY w# 	 t           j                                         d {V  w # t           j        $ r |                     d            w xY wxY w)Nagen cancel)r#   r   r   	CancelledrR   )r   s    r,   r   z/test_as_safe_channel_multi_cancel.<locals>.agen[  s      		EEEEm..00000000000>   m,,,m..0000000000>   m,,,s,   A $0 &AB)$B ?B) &B&&B)zbody cancelr   )r   r   r   r   )
r   r#   r   r   r   r   r   r   r   rR   )r   r   r   r   r   s        r,   !test_as_safe_channel_multi_cancelr   Z  sg     
 
 
 _
 F				 	r]4>** 	 	tF||       y(       !IIKKK"m668888888888>   m444	  )y                          	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 m]3333333s}   DC8CC#C9$BC&CC	C8
C%%C8(C%)C8,D8C<	<D?C<	 DDDr   )r.   r/   r   r   )r.   r   r   r   ).
__future__r   systypingr   r   r   r#   r   r   r   testingr
   r   r   r   version_infoexceptiongroupr   collections.abcr   r-   r5   rM   rY   rn   rt   rw   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 C C C C C C C C V V V V V V V V V V V Vg------ /......( ( ( (V% % % %& & & &*+ + + +.7 7 7 7t7 7 7 7t   6) ) ) )*   *	" 	" 	" 	"/5 /5 /5 /5d'( '( '( '(T   &   ( ( ( (&      + + + +") ) ) )4 4 4 48   "4 4 4 4= = = =   04 4 4 4 4 4r   