
    i$Q                    B   d dl mZ d dlZd dlmZ d dlZddlmZmZm	Z
 ddlmZ ddlmZmZ ddlmZ dd	l dd
lmZ ddlmZ erd dlmZ d dlmZ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.y)$    )annotationsN)TYPE_CHECKING   )_coresleepsocket)can_bind_ipv6)StapledStreamaclose_forcefully)SocketListener)*)_assert_raises)_UnboundedByteQueue)Nursery)ReceiveStream
SendStreamc                   K   g dfd} dfd}t        j                         4 d {   }|j                  |        |j                  |       |j                  |       d d d       d {    g dfd}t        j                         4 d {   }|j                  |       |j                  j	                          d d d       d {    dgk(  sJ y 7 7 o# 1 d {  7  sw Y   xY w7 a7 (# 1 d {  7  sw Y   8xY ww)Nc                    K   t        d      D ]  } t        j                          d {      j                  d       y 7 w)N
   zbusy bee exhausted)ranger   
checkpointappend)_records    T/var/www/html/BatchJob/venv/lib/python3.12/site-packages/trio/_tests/test_testing.pybusy_beez-test_wait_all_tasks_blocked.<locals>.busy_bee   s>     r 	%A""$$$	%*+ %s   &AAAc                 X   K   t                d {     j                  d       y 7 w)Nzquiet at last!wait_all_tasks_blockedr   r   s   r   waiting_for_bee_to_leavez=test_wait_all_tasks_blocked.<locals>.waiting_for_bee_to_leave   s%     $&&&&' 	'   *(*c                    K   	 t                d {    y 7 # t        j                  $ r  j                  d       Y y w xY ww)Nok)r   r   	Cancelledr   r    s   r   cancelled_while_waitingz<test_wait_all_tasks_blocked.<locals>.cancelled_while_waiting*   s6     	 (*** 	 MM$	 s0   A  A $AA AAr$   returnNone)r   open_nursery
start_sooncancel_scopecancel)r   r!   nurseryr&   r   s       @r   test_wait_all_tasks_blockedr/      s     F,
( !!# 5 5w8$34345 5 F  !!# & &w23##%& & dV#5 5 5 5 5& & & & &s   'DCD4C"D-C.$DC4D,C8DC6DDC1%C(&C1-D6D8D
>D?D
Dc                `  K   g dfd}t        j                         4 d {   }|j                  |       t                d {    dgk(  sJ | j	                  d       t                d {    ddgk(  sJ d d d       d {    y 7 l7 K7 "7 # 1 d {  7  sw Y   y xY ww)Nc                 |   K    j                  d       t        d       d {     j                  d       y 7 w)Ntt start   tt finishedr   r   r    s   r   timeout_taskz?test_wait_all_tasks_blocked_with_timeouts.<locals>.timeout_task9   s/     j!Ahm$ 	s    <:<r2   r   r4   r'   )r   r*   r+   r   jump)
mock_clockr6   r.   r   s      @r   )test_wait_all_tasks_blocked_with_timeoutsr9   6   s     F%
 !!# 5 5w<($&&&*%%%$&&&*m44445 5 5& 	'5 5 5 5sh   !B.BB.BB*B2B3B B.BB.BBB.B+B" B+'B.c                   K   g dfd} dfd}dfd}dfd}t        j                         4 d {   }|j                  |        |j                  |       |j                  |       |j                  |       |j                  |       d d d       d {    g dk(  sJ y 7 s7 # 1 d {  7  sw Y    xY ww)Nc                    K    j                  d       t        d       d {    t        d       d {    t        d       d {     j                  d       y 7 <7 +7 w)Nblink startg{Gz?	blink endr5   r    s   r   blinkz7test_wait_all_tasks_blocked_with_cushion.<locals>.blinkJ   sS     m$DkDkDkk" 	s1    A&A A&A"A&	A$
A&"A&$A&c                 X   K   t                d {     j                  d       y 7 w)Nwait_no_cushion endr   r    s   r   wait_no_cushionzAtest_wait_all_tasks_blocked_with_cushion.<locals>.wait_no_cushionQ   s%     $&&&+, 	'r"   c                 Z   K   t        d       d {     j                  d       y 7 w)Ng{Gz?wait_small_cushion endr   r    s   r   wait_small_cushionzDtest_wait_all_tasks_blocked_with_cushion.<locals>.wait_small_cushionU   s'     $T***./ 	+   +)+c                 Z   K   t        d       d {     j                  d       y 7 w)NgQ?wait_big_cushion endr   r    s   r   wait_big_cushionzBtest_wait_all_tasks_blocked_with_cushion.<locals>.wait_big_cushionY   s'     $T***,- 	+rE   )r<   r@   r=   rC   rC   rG   r'   )r   r*   r+   )r>   rA   rD   rH   r.   r   s        @r   (test_wait_all_tasks_blocked_with_cushionrI   G   s     F#-0. !!# - -w5!?+-.-.+,- -     - - - - -sE   3CB*CAB.CB,C,C.C 4B75C <Cc                  K   t               5  t        j                          d {    d d d        t        j                  t
              5  t               5  	 d d d        d d d        t        j                  t        j                  fD ]Q  }t        |       t        j                  t
              5  t               5   |        d {    d d d        d d d        S t               5  t        j                          d {    t        j                          d {    d d d        y 7 # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w7 # 1 sw Y   xY w# 1 sw Y   xY w7 k7 Q# 1 sw Y   y xY wwN)	assert_checkpointsr   r   pytestraisesAssertionErrorcheckpoint_if_cancelledcancel_shielded_checkpointprintrecwarnpartial_yields     r   test_assert_checkpointsrV   q   sJ    		 !   ! 
~	& ! 		 	%%(( & 	m]]>* 	&#% &#o%%&	& 	&& 
	 1++---..0001 1' 	!! !	 	  && &	& 	& 	.01 1s   E:D+D(D+!E:ED8E AE:/E:EE
E
EE:&E.>E*?E.E,E.	E:(D++D50E:8E	=EE	E:EEEE'	#E:*E.,E..E73E:c                Z  K   t               5  	 d d d        t        j                  t              5  t               5  t	        j
                          d {    d d d        d d d        t        j                  t        j                  fD ]Q  }t        |       t        j                  t              5  t               5   |        d {    d d d        d d d        S t        j                  t              5  t               5  t	        j                          d {    t	        j                          d {    d d d        d d d        y # 1 sw Y   =xY w7 # 1 sw Y   xY w# 1 sw Y   	xY w7 # 1 sw Y   xY w# 1 sw Y   xY w7 v7 \# 1 sw Y   [xY w# 1 sw Y   y xY wwrK   )	assert_no_checkpointsrM   rN   rO   r   r   rP   rQ   rR   rS   s     r   test_assert_no_checkpointsrY      sk    		   
~	& %"$ 	%""$$$	%% 	%%(( & 	m]]>* 	&&( &#o%%&	& 	&& 
~	& 5"$ 	5//11122444	55 5) 
 %	% 	%% % && &	& 	& 24	5 	55 5s   F+E
!F+E'EEEE' AF+/F:E6E4
E6
F#F+5F FFF4F5F9F	F+
EF+EE$	E''E1,F+4E66E?;FF	F+FFF	FF($F+c                 *  K   g dfddfd} dfd}t               }t        j                         4 d {   }|j                  | |       |j                  ||        |d      4 d {    t	                d {    d d d       d {    g dk(  sJ d d d       d {    t               } |d      4 d {    	 d d d       d {    t        j                  t              5   |d      4 d {    	 d d d       d {    d d d        y 7 7 7 7 # 1 d {  7  sw Y   xY w7 # 1 d {  7  sw Y   xY w7 7 # 1 d {  7  sw Y   xY w7 k7 \# 1 d {  7  sw Y   lxY w# 1 sw Y   y xY ww)	Nc                >    t        |        j                  |        y rK   )rR   r   )valr   s    r   tztest_Sequencer.<locals>.t   s    c
c    c                  K    | d      4 d {     d       d d d       d {     | d      4 d {     d       d d d       d {     | d      4 d {     d       d d d       d {    y 7 o7 Y# 1 d {  7  sw Y   ixY w7 _7 I# 1 d {  7  sw Y   YxY w7 O7 9# 1 d {  7  sw Y   y xY ww)N   f1r`      rb   rc      rb   re    seqr]   s    r   rb   ztest_Sequencer.<locals>.f1   s     q6 	 	iL	 	q6 	 	iL	 	q6 	 	iL	 	 			 	 	 	 		 	 	 	 		 	 	 	 	s   CB C	BCBCBC	BCBC"B2#C&	B6/C:B4;CCB
BBCCB/#B&$B/+C4C6C<B?=CCc                  K    | d      4 d {     d       d d d       d {     | d      4 d {     d       d d d       d {    y 7 F7 0# 1 d {  7  sw Y   @xY w7 67  # 1 d {  7  sw Y   y xY ww)Nr   f2r   r   rl   r   rg   rh   s    r   rl   ztest_Sequencer.<locals>.f2   s     q6 	 	iL	 	q6 	 	iL	 	 		 	 	 	 		 	 	 	 	s   B	AB		AB	AB	A0B		A4B	A2B	B	A-!A$"A-)B	2B	4B:A=;BB	r3   )rk   ra   rm   rd   rf   r   )r\   objectr(   r)   )ri   	Sequencerr(   r)   )ro   r   r*   r+   r   rM   rN   RuntimeError)rb   rl   ri   r.   r   r]   s       @@r   test_Sequencerrq      s    F +C!!# Q Qw2s#2s#q6 	+ 	+(***	+ 	+PPPPQ Q +C1v   	|	$ q6 	 		 	 Q	+*	+ 	+ 	+ 	+Q Q Q Q    	 	 	 	 	 s@  7FD!F1E 0D#1E 4D)D%D)E D'E  F+D>,FEF
EFEF5FE.FE2FE0F
F#E %D)'E )D;	/D20D;	7E >F EE	EFFE+E" E+'F.F0F2F	8E;9F	 FFFc                 d  K   g t               dfd} t        j                         4 d {   }|j                  | d       |j                  | d        d      4 d {    	 d d d       d {    d d d       d {    ddgk(  sJ t	        j
                  t              5   d      4 d {    	 d d d       d {    d d d        y 7 7 u7 f# 1 d {  7  sw Y   vxY w7 m# 1 d {  7  sw Y   }xY w7 P7 A# 1 d {  7  sw Y   QxY w# 1 sw Y   y xY ww)	Nc                J  K   t        j                         5 }| dk(  r|j                          	  |       4 d {    	 d d d       d {    d d d        y 7 7 # 1 d {  7  sw Y   xY w# t        $ r j	                  d|  d       Y Bw xY w# 1 sw Y   y xY ww)Nr`   zseq(z) RuntimeError)r   CancelScoper-   rp   r   )iscoper   ri   s     r   childz$test_Sequencer_cancel.<locals>.child   s       	8EAv8q6   		8 	8     8QC~678	8 	8s~   B#BA3AA3AA3AA3	B#A3A3A0	$A'%A0	,A33BBBBB B#r`   r   r   zseq(1) RuntimeErrorzseq(2) RuntimeErrorrc   )ru   intr(   r)   )ro   r   r*   r+   rM   rN   rp   )rw   r.   r   ri   s     @@r   test_Sequencer_cancelry      s*    F
+C8 !!#  w5!$5!$q6 	 		 	  +-BCCCC 
|	$ q6 	 		 	 	 	 	 	 	   	 	 	 	 	 s   ,D0CD01C6%C&C6)C+C66C7C6;D0C4&D0-D$:D;D$>D D$DD$
D0C6C6C1	%C(&C1	-C64D06D<C?=DD0D$D$D!	DD!	D$$D-)D0c                    t        j                  t              5  t        t              5  	 d d d        d d d        t        j                  t
              5  t        t              5  ddz    d d d        d d d        t        t              5  t        # 1 sw Y   fxY w# 1 sw Y   jxY w# 1 sw Y   ?xY w# 1 sw Y   CxY w# 1 sw Y   y xY w)Nfoor`   )rM   rN   rO   r   rp   	TypeErrorrg   r^   r   test__assert_raisesr}      s    	~	& L) 		 
y	! L) 	AI	 
	% 	 	 
	 	  sQ   BBBB5%B)+B5
CB	BB&)B2	.B55B>C
c                 ~	  K   t               j                  d       j                  d       j                  d      dk(  sJ j                  d      dk(  sJ j                  d       j                         dk(  sJ t        j                  t
        j                        5  j                  d       d d d        t        j                  t
        j                        5  j                          d d d        t        j                  t              5  j                  d       d d d        j                  d	       t               5  j                  d       d {   d	k(  sJ 	 d d d        j                  d
       j                  d       t               5  j                  d       d {   dk(  sJ 	 d d d        t               5  j                          d {   dk(  sJ 	 d d d        dfd} dfd}t        j                         4 d {   }|j                  |d       |j                  | d       d d d       d {    t        j                  t
        j                        5  t        j                         4 d {   }|j                  |d       |j                  |d       d d d       d {    d d d        j                          t        j                  t
        j                        5  j                  d       d d d        j                  d      dk(  sJ j                         dk(  sJ j                  d       d {   dk(  sJ j                          d {   dk(  sJ j                          t               dfd}t        j                         4 d {   }|j                  |d       |j                  |       d d d       d {    y # 1 sw Y   ?xY w# 1 sw Y   xY w# 1 sw Y   xY w7 # 1 sw Y   xY w7 y# 1 sw Y   sxY w7 X# 1 sw Y   RxY w7 17  # 1 d {  7  sw Y   xY w7 7 # 1 d {  7  sw Y   xY w# 1 sw Y   xY w# 1 sw Y   }xY w7 A7 '7 7 # 1 d {  7  sw Y   y xY ww)N   123   456r`      1r   s   23456   789string   abc   defs   ghi   ds   efghic                X   K   t                d {    j                  |        y 7 wrK   )r   put)dataubqs    r   putterz'test__UnboundeByteQueue.<locals>.putter  s#     $&&& 	'r"   c                   K   t               5  j                          d {   | k(  sJ 	 d d d        y 7 # 1 sw Y   y xY wwrK   )rL   get)expectr   s    r   getterz'test__UnboundeByteQueue.<locals>.getter  s@     ! 	-?f,,,	- 	-"	- 	-s$   A86	8	A8AA   xyzs   asdf   ---r^   c                 V   K   t                d {     j                          y 7 wrK   )r   close)ubq2s   r   closerz'test__UnboundeByteQueue.<locals>.closer;  s!     $&&&

 	's   )')r   bytesr(   r)   )r   r   r(   r)   r'   )r   r   
get_nowaitrM   rN   r   
WouldBlockr|   rL   r   r*   r+   RaisesGroupBusyResourceErrorr   ClosedResourceError)r   r   r.   r   r   r   s       @@r   test__UnboundeByteQueuer      s    

CGGFOGGFO>>!$$$>>")))GGFO>>v%%%	u''	( r	u''	(  
y	!  GGFO		 +WWR[ F***+GGFOGGFO		 (WWQZ4'''(		 +WWY(***+- !!# + +w66*66*+ +
 
		E33	4 0%%' 	0 	07vw/vw/	0 	00 IIK	u00	1  >>"$$$>>s"""###?c!!! IIK  D !!# # #w63'6"# # #s   
 !+ +
  ( ( + ++ + + + +	0 	0 	0 	0 	00 0 
 # # # # #s  B"R=&O58+R=#P4!R=P'#R=
PP 	P*4R=P/3P,4	P/>R=P?$P<%	P?/,R=QR=%QR=Q'R=7RQ(R%Q.9RQ+R	;R=RAR=RR=:R!;AR=<R$=R= $R($R=/R&0R=5O?:R=PR=PR=PP)$R=,P//P94R=<P??Q		R=R=Q%QQ% R=(R+R.R	4Q75R	<RR	R=R	R=!R=$R=&R=(R:.R1/R:6R=c                 8  	K   t               dfd d       d {    j                  d      dk(  sJ j                         dk(  sJ t               5  j                          d {    d d d        t	        j
                  t        j                        5  j                          d d d        t	        j
                  t        j                        5  j                  d       d d d         d       d {    t               5  j                          d {   dk(  sJ 	 d d d        d	d	fd	} t        j                         4 d {   }|j                  |        |j                  |        d d d       d {    	dk(  sJ t               5  j                          d {    d d d        j                          d {   d
k(  sJ j                          d {   dk(  sJ t	        j
                  t        j                        5   d       d {    d d d        j                  J j                  J j                  J g dfd}dfd}dfd}t        |||      j                  |u sJ j                  |u sJ j                  |u sJ j!                  d       d {    j                          d {    t#               d {    j%                          g dk(  sJ y 7 7 # 1 sw Y   xY w# 1 sw Y   uxY w# 1 sw Y   ExY w7 =7 # 1 sw Y   xY w7 7 # 1 d {  7  sw Y   xY w7 # 1 sw Y   xY w7 7 7 Y# 1 sw Y   YxY w7 7 7 w)Nc                   K   t               5  j                  |        d {    d d d        y 7 # 1 sw Y   y xY wwrK   )rL   send_all)r   msss    r   do_send_allz*test_MemorySendStream.<locals>.do_send_allG  s<     ! 	%,,t$$$	% 	%$	% 	%s    ?313	?3<?r   r`   r   s   23r   r   r   c                 p   K   	   d       d {    y 7 # t         j                  $ r dz  Y y w xY ww)N   xxxr`   )r   r   )r   resource_busy_counts   r   do_send_all_count_resourcebusyz=test_MemorySendStream.<locals>.do_send_all_count_resourcebusya  s9     	%f%%%&& 	%1$	%s(   6  6 3636r   r^   r   c                 Z   K    j                         dk(  sJ j                  d       y w)Nr   send_all_hook)get_data_nowaitr   )mss2r   s   r   r   z,test_MemorySendStream.<locals>.send_all_hook~  s*     ##%///o&s   (+c                 0   K    j                  d       y w)N"wait_send_all_might_not_block_hookr   r    s   r   r   zAtest_MemorySendStream.<locals>.wait_send_all_might_not_block_hook  s     :;   c                 (     j                  d       y )N
close_hookr   r    s   r   r   z)test_MemorySendStream.<locals>.close_hook  s    l#r^   r   )r   r   r   r   r   r'   )MemorySendStreamr   rL   wait_send_all_might_not_blockrM   rN   r   r   get_datar*   r+   acloser   r   r   r   r   r   r   )
r   r.   r   r   r   r   r   r   r   r   s
        @@@@@r   test_MemorySendStreamr   D  s^    

C% f
q!T))) E)))		 2//1112 
u''	( 	u''	(  B  f
		 .\\^#v---. % !!# ; ;w9:9:; ; !###		 jjl 6)))3&&&	u00	1 "&!!!"
 $$$11999>>!!!F'
<$ *D ...226XXXX??j(((
--


,
,
...
D
!!!JJL    [ 
 	22 2     #. . ; ; ; ; ; 	   !" "@  .!s  NL9NL1L2L6+N!L%2+NL2/NL?NM%M&	M0)NMN#M NMN!M15M.6M1:NM>N2N3,NN+N,N0BNN	N N!N3N4NLL"N%L/*N2L<7	NMM
	NNM+M!M+&N.M11M;6	NNNN	NNNc                 
  K   t               dfd} j                  d        | d       d {   dk(  sJ  | d       d {   dk(  sJ j                  d        | d        d {   dk(  sJ t        j                  t        j
                        5  t	        j                         4 d {   }|j                  | d       |j                  | d       d d d       d {    d d d        j                  J j                  d       j                          j                           | d       d {   dk(  sJ  | d       d {   dk(  sJ  | d       d {   dk(  sJ t        j                  t        j                        5  j                  d	       d d d        dfd
}g dfd}t        ||      j                  |u sJ j                  |u sJ j                  d       j                  d       d {   dk(  sJ j                  d       d {   dk(  sJ j                  d       d {   dk(  sJ j                  d       d _        j                  d       d {   dk(  sJ j                  d       t               5  j                          d {    d d d        dgk(  sJ t        j                  t        j                        5  j                  d       d {    d d d        y 7 7 7 7 j7 9# 1 d {  7  sw Y   JxY w# 1 sw Y   OxY w7 7 7 # 1 sw Y   xY w7 N7 37 7 7 # 1 sw Y   xY w7 n# 1 sw Y   y xY ww)Nc                   K   t               5  j                  |        d {   cd d d        S 7 # 1 sw Y   y xY wwrK   )rL   receive_some)	max_bytesmrss    r   do_receive_somez1test_MemoryReceiveStream.<locals>.do_receive_some  s;     ! 	5)))44	5 	54	5 	5s    ?313
?3<?r   r`      ar   s   bcr   r^   r   c                 0   K    j                  d       y w)Nr   )put_data)mrs2s   r   receive_some_hookz3test_MemoryReceiveStream.<locals>.receive_some_hook  s     fr   c                 (     j                  d       y )Nclosedr   r    s   r   r   z,test_MemoryReceiveStream.<locals>.close_hook  s    hr^   s   yyys   yyyxxxr   s   zzzs   lost on closer   )r   z
int | Noner(   r   r'   )MemoryReceiveStreamr   rM   r   r   r   r*   r+   r   put_eofrN   r   r   r   rL   r   )r   r.   r   r   r   r   r   s       @@@r   test_MemoryReceiveStreamr     s8    

C5 LL ##t+++ $$---LL &&&000			E33	4 4%%' 	4 	4733	4 	44
   (((LLKKMKKM $$... $$+++ $$+++	u00	1 V F  0*=D!!%6666??j(((MM&""2&&)333""2&&&000""2&&&000MM&!D""2&&&000MM"#		 kkmhZ	u00	1 $###$ $c $$&	4 	4 	4 	4 	44 4 %$$   '&& ' 	 
 	$$ $ss  -NLNL%N-L.,NL93L4L97%L#L9'L (L9,AN>M?NM	N(M),NM'A'NMN,M-N
M"5N M%$N%M)9M':M)>3N1M7M5M7
NNNL9 L9#L6	)L,*L6	1L99M>	N	NNM	NN"N%N'M))M2.N5M77N <Nc                   K   t               } | j                          t        j                  t        j
                        5  | j                  d       d {   dk(  sJ 	 d d d        | j                          t        j                  t        j
                        5  | j                  d       d d d        t               }|j                  d       |j                          t        j                  t        j
                        5  |j                  d       d {    d d d        y 7 # 1 sw Y   xY w# 1 sw Y   xY w7 '# 1 sw Y   y xY ww)Nr   r^   r   r   )r   r   rM   rN   r   r   r   r   )r   r   s     r   test_MemoryRecvStream_closingr     s    

CIIK	u00	1 1%%b))S0001 IIK	u00	1 V  DMM&JJL	u00	1 $###$ $ *1 1
  	$$ $sr   >E D(D&	D( ;ED4-AEEE E	E&D((D1-E4D=9E EEEc                   K   t               } t               }t        | |       | j                  d       d {    t        | |       |j	                  d       d {   dk(  sJ | j                  d       d {    t        | |d      sJ |j	                  d       d {   dk(  sJ t        | |d      sJ t        | |d      sJ t        | |d      rJ |j	                  d       d {   dk(  sJ | j                          t        | |       |j	                  d       d {   dk(  sJ y 7 7 7 7 7 L7 w)	Nr   r   r   r`   )r      4s   56r^   )r   r   memory_stream_pumpr   r   r   )r   r   s     r   test_memory_stream_pumpr     s8    

C

C sC 
,,v
sC !!"%%///
,,v
c3!444!!"%%---c3!444c3!444!#sa888!!"%%...IIKsC !!"%%,,, %% & &sj   5ED6$ED8E:D:;(E#D<$AE1D>29E+E ,E8E:E<E>E Ec                 H  K   t               \  } | j                  J | j                  J | j                  J j                  J | j                  d       d {    j                  d       d {   dk(  sJ dfd}t        j                         4 d {   }|j                  |d       t                d {    | j                  d       d {    d d d       d {    t        j                         4 d {   }|j                  |d       t                d {    | j                          d {    d d d       d {    t               \  } t        j                         4 d {   }|j                  |d       t                d {    | j                          d d d       d {    t               \  } | j                  }d | _        | j                  d       d {    dd}dfd}t        j                         4 d {   }|j                  ||       |j                  |       d d d       d {    || _        | j                  d	       d {    j                  d       d {   d
k(  sJ y 7 <7 &7 7 7 7 # 1 d {  7  sw Y   xY w7 7 7 7 v# 1 d {  7  sw Y   xY w7 e7 D7 '# 1 d {  7  sw Y   8xY w7 7 7 # 1 d {  7  sw Y   xY w7 7 w)Nr   r   c                N   K   j                  d       d {   | k(  sJ y 7 
wNr   r   )expectedrs    r   receiverz1test_memory_stream_one_way_pair.<locals>.receiver  s$     ^^B''8333'   %#%r   r^   r   c                h   K   t                d {    | j                  j                          y 7 wrK   )r   r,   r-   )r.   s    r   cancel_after_idlez:test_memory_stream_one_way_pair.<locals>.cancel_after_idle.  s)     $&&&##% 	's   20 2c                    K   t        j                  t        j                        5   j	                  d       d {    d d d        y 7 # 1 sw Y   y xY wwr   )rM   rN   r   r%   r   )r   s   r   check_for_cancelz9test_memory_stream_one_way_pair.<locals>.check_for_cancel2  sJ     ]]5??+ 	% ..$$$	% 	% %	% 	%s,   $AAA
A	A
AAAr   s   456789)r   r   r(   r)   )r.   r   r(   r)   r'   )memory_stream_one_way_pairr   r   r   r   r   r   r   r*   r+   r   r   r   )sr   r.   oldr   r   r   s         @r   test_memory_stream_one_way_pairr   	  s    %'DAq??&&&//777<<###&&&
**V
##v---4 !!# ! !w8V,$&&&jj   ! ! !!#  w8S)$&&&hhj 
 &'DAq!!#  w8S)$&&&		 
 &'DAq
//CAO
**V
&% !!# - -w,g6+,- - AO
**V
##y000_ #!& ! ! ! !&   &    - - - - -
 #s  AL"JL"6J7'L"JL"" J+J"J+J%J+ L"+J(,L"K	L" K,K-KKK	L"K
)L">K#?L" K,"K&#K,7L"K)8L";L<&L""L#L"&$L	
L"LL"5L6L"L L"L"L""J+%J+(L"+J>1J42J>9	L"KK
L"K KK 	L"&K,)L",K?2K53K?:	L"L"L"	LLLL" L"c                 r  K   t               \  j                  d       d {    j                  d       d {    j                  d       d {   dk(  sJ j                  d       d {   dk(  sJ j                          d {    j                  d       d {   dk(  sJ dfd} dfd}t	        j
                         4 d {   }|j                  |       |j                  |        d d d       d {    y 7 7 7 7 7 7 o7 C7 # 1 d {  7  sw Y   y xY ww)Nr   r   r   r^   c                 l   K   t                d {     j                  d       d {    y 7 7 w)Nr   )r   r   )bs   r   senderz'test_memory_stream_pair.<locals>.senderK  s.     $&&&jj    	' s   404244c                 N   K    j                  d       d {   dk(  sJ y 7 
w)Nr   r   r   )as   r   r   z)test_memory_stream_pair.<locals>.receiverO  s$     ^^B''6111'r   r'   )memory_stream_pairr   r   send_eofr   r*   r+   )r   r   r.   r   r   s      @@r   test_memory_stream_pairr   A  s    DAq
**V

**V
##v---##v---
**,##s***!2 !!# # #w8$6"# # # #### # # # #s   "D7DD7D D7DD76D7D7DD7,D--D7DD7#D"D7D D7D7D7D7D7D7D7 D7"D4(D+)D40D7c                 t   K   dd} t        | d        d {    dd}t        |d        d {    y 7 7 w)Nc                    K   t               S wrK   )r   rg   r^   r   one_way_stream_makerzDtest_memory_streams_with_generic_tests.<locals>.one_way_stream_makerX  s     )++   c                    K   t               S wrK   )r   rg   r^   r   half_closeable_stream_makerzKtest_memory_streams_with_generic_tests.<locals>.half_closeable_stream_maker]  s      "##r   )r(   z,tuple[MemorySendStream, MemoryReceiveStream])r(   zqtuple[StapledStream[MemorySendStream, MemoryReceiveStream], StapledStream[MemorySendStream, MemoryReceiveStream]])check_one_way_streamcheck_half_closeable_stream)r   r   s     r   &test_memory_streams_with_generic_testsr   W  sB     , 3T
:::$ &&A4
HHH ; I   848688c                 t   K   dd} t        | |        d {    dd}t        ||       d {    y 7 7 w)Nc                    K   t               S wrK   )lockstep_stream_one_way_pairrg   r^   r   r   zFtest_lockstep_streams_with_generic_tests.<locals>.one_way_stream_makerg  s     +--r   c                    K   t               S wrK   )lockstep_stream_pairrg   r^   r   two_way_stream_makerzFtest_lockstep_streams_with_generic_tests.<locals>.two_way_stream_makerl  s      $%%r   )r(   z tuple[SendStream, ReceiveStream])r(   zYtuple[StapledStream[SendStream, ReceiveStream], StapledStream[SendStream, ReceiveStream]])r   check_two_way_stream)r   r   s     r   (test_lockstep_streams_with_generic_testsr   f  sE     . 35I
JJJ& 35I
JJJ K Kr   c                   K   d	d} t        j                         }|j                  d       d {    |j                  d        | t	        |             d {    t        j                         }|j                  d       d {    |j                  d        | t	        |             d {    t
        rgt        j                  t         j                        }|j                  d       d {    |j                  d        | t	        |             d {    t        t         d      rt        j                  t         j                        }t        j                         5 }| d}|j                  |       d {    |j                  d        | t	        |             d {    d d d        y y 7 7 g7 =7 7 7 7 H7  # 1 sw Y   y xY ww)
Nc           	       K   | 4 d {    t        |        d {   }|4 d {    | j                          d {   }|4 d {    |j                  d       d {    |j                  d       d {   dk(  sJ d d d       d {    d d d       d {    d d d       d {    y 7 7 7 7 }7 t7 ]7 F7 3# 1 d {  7  sw Y   CxY w7 :# 1 d {  7  sw Y   JxY w7 A# 1 d {  7  sw Y   y xY ww)N   xr`   )open_stream_to_socket_listeneracceptr   r   )listenerclient_streamserver_streams      r   checkz2test_open_stream_to_socket_listener.<locals>.checkv  s     	G 	G"@"JJM$ G G&.oo&7 7( G G'00666!.!;!;A!>>$FFFG GG G	G 	G 	GJG 7G6>G G G GG G G G	G 	G 	G 	Gs  D
B7D
C5B9
C5B;C5CB= 
C
B?
CC#C
$C<C
=	CCCCC5!C"C5&D
1C32D
9C5;C5=C?CCCCCCCCC5C0	$C'%C0	,C53D
5D;C><DD
)z	127.0.0.1r   r   )z0.0.0.0r   )family)z::r   AF_UNIXz/sock)r   r   r(   r)   )tsocketr   bindlistenr   r	   AF_INET6hasattrr  tempfileTemporaryDirectory)r   socktmpdirpaths       r   #test_open_stream_to_socket_listenerr  u  s    G >>D
))$
%%%KKO
t$
%%% >>D
))N
###KKO
t$
%%% ~~W%5%56ii	"""BN4()))w	"~~W__5 ((* 	.fXU#D))D/!!KKOt,---		. 	. #% &% $% 	#) "-		. 	.s   -GF=)GG ,GG)G0G1AG3G	4)GGAG*GG)G.G/G3G GGG	GGGGGGc                     	 	 	 	 	 	 dd} t        j                  t        d      5   t        |       t	               t	        d             d d d        y # 1 sw Y   y xY w)Nc                   K   y wrK   rg   r8   autojump_clocks     r   busy_kitchenz$test_trio_test.<locals>.busy_kitchen  s      s   z"^too many clocks spoil the broth!$)matchr   )autojump_thresholdr  )r8   rn   r  rn   r(   r)   )rM   rN   
ValueError	trio_test	MockClock)r  s    r   test_trio_testr    se      
	 
z)N	O 
	, {$:	

 
 
s   &AAr'   )r8   r  r(   r)   )rT   zpytest.WarningsRecorderr(   r)   )/
__future__r   r  typingr   rM    r   r   r   r  _core._tests.tutilr	   _highlevel_genericr
   r   _highlevel_socketr   testingtesting._check_streamsr   testing._memory_streamsr   trior   trio.abcr   r   r/   r9   rI   rV   rY   rq   ry   r}   r   r   r   r   r   r   r   r   r   r  r  rg   r^   r   <module>r#     s    "     . . . A .  3 92@5"$T145<#L<
E#PYx:$z$(-051p#,IK'.T
r^   