
    vKg2                        S SK Jr  S SKJr  S SKrS SKrS SKJrJr  SSKJ	r	J
r
  SS jrSS jrSS	 jrSS
 jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrg)    )annotations)UnionN)EndOfChannelopen_memory_channel   )assert_checkpointswait_all_tasks_blockedc                 "	  #    [         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     X/var/www/highfloat_scraper/venv/lib/python3.13/site-packages/trio/_tests/test_channel.pytest_channelr"      s    	y	!C  
"	z)I	JB 
K 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 
"	!	J	J 	 
		'	' ! 
	 
(	'   
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_553r)   8   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)N   r   )ranger   )send_channelijs      r!   producer1test_channel_multiple_producers.<locals>.producerA   sR     <1q5!q1u+."''*** /  <<*  <<<sT   A4AA4-AAAA4AA4AA4A1 A#!A1-A4r   r$      )r.   trio.MemorySendChannel[int]r/   r   returnNone)	r   r   r   open_nurseryr-   
start_soonr   sortlist)r1   r.   receive_channelnurseryr/   valuegots          r!   test_channel_multiple_producersr?   @   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)r;   r/   r=   receivedsuccessful_receiverss      r!   consumer1test_channel_multiple_consumers.<locals>.consumerY   s1     * 	#% $$Q'OOE"	#?s   7535%757r      r$   )r;   trio.MemoryReceiveChannel[int]r/   r   r5   r6   )
setr   r7   r   r   r-   r8   r	   r   len)rG   r<   r.   r;   r/   rE   rF   s        @@r!   test_channel_multiple_consumersrM   U   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rB   r   r   r   r   expects     r!   
send_block%test_close_basics.<locals>.send_blockm   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rB   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]rR   ztype[BaseException]r5   r6   )r    rJ   r5   r6   )r   r   r7   r8   r   r	   r   r   r   r   r   r   r   r   BrokenResourceErrorr   )rS   r   r    r<   rZ   s2r2s          r!   test_close_basicsrb   l   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 !%a(FB  ""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rB   rP   rQ   s     r!   rS   #test_close_sync.<locals>.send_block   rU   rV   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rB   rX   rY   s    r!   rZ   &test_close_sync.<locals>.receive_block   r\   r]   r^   )r    ztrio.MemoryReceiveChannel[None]r5   r6   )r   r   r7   r8   r   r	   closer   r   r   r   r   r   r   r_   )rS   r   r    r<   rZ   s        r!   test_close_syncri      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   r_   )r   r    ra   r3s       r!   $test_receive_channel_clone_and_closerl      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   )r`   s   r!   send_will_succeed;test_close_multiple_send_handles.<locals>.send_will_succeed  s     ggdms     ru   r5   r6   )	r   r   r   r   r7   r8   r	   r   r   )r    rq   rv   r<   rp   r`   s       @@r!    test_close_multiple_send_handlesry      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rB   rX   )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rt   r   )ra   s   r!   receive_will_succeedAtest_close_multiple_receive_handles.<locals>.receive_will_succeed  s      ZZ\!T)))!s   %#%ru   rx   )	r   r   r   r   r7   r8   r	   r   r   )r   r}   r   r<   r|   ra   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   floatr-   r   r:   )r   r   r/   r>   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   r7   r8   r   r	   cancel_scopecancelr   r   r   )r   r    statsr`   ra   r<   s         r!   test_statisticsr   1  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rB   r   )r    results    r!   
do_receive)test_channel_fairness.<locals>.do_receiveq  s     yy{""s   r,   )r    z%trio.MemoryReceiveChannel[int | None]r5   r6   )r   r   r   r   r   r   r7   r8   r	   r   r   r   r   r   )r   r    r   r<   r   s       @r!   test_channel_fairnessr   c  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rB   )r   r   )r   vs     r!   do_send test_unbuffered.<locals>.do_send  s-     !&&)OO "! "!s$   A202	A2
A A)r   r4   r   r   r5   r6   )r   r   r   r   r   r   r   r   r7   r8   r   r   )r   r    r   r<   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-rx   )r'   ztrio.abc.Clockr5   r6   )
__future__r   typingr   r   r   r   r   testingr   r	   r"   r)   r?   rM   rb   ri   rl   ry   r   r   r   r   r        r!   <module>r      s]    "    2 @(V%&*+.7t7t6)**	"/5d'(Tr   