
    ,h<Q                    N   d dl mZ d dlZd dlmZ d dlZd dlm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!Z0y)%    )annotationsN)TYPE_CHECKING)RaisesGroup   )_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    Z/var/www/html/Resume-Scraper/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_blockedr0      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_task;   s/     j!Ahm$ 	s    <:<r3   r   r5   r(   )r   r+   r,   r    jump)
mock_clockr7   r/   r   s      @r   )test_wait_all_tasks_blocked_with_timeoutsr:   8   s     F%
 !!# 5 5w<($&&&*%%$&&&*m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 endr6   r!   s   r   blinkz7test_wait_all_tasks_blocked_with_cushion.<locals>.blinkL   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_cushionS   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_cushionW   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_cushion[   s'     $T***,- 	+rF   )r=   rA   r>   rD   rD   rH   r(   )r   r+   r,   )r?   rB   rE   rI   r/   r   s        @r   (test_wait_all_tasks_blocked_with_cushionrJ   I   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_checkpointsrW   s   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rL   )	assert_no_checkpointsrN   rO   rP   r   r   rQ   rR   rS   rT   s     r   test_assert_no_checkpointsrZ      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 rL   )rS   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   f1ra      rc   rd      rc   rf    seqr^   s    r   rc   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   rm   r   rh   ri   s    r   rm   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	r4   )rl   rb   rn   re   rg   r   )r]   objectr)   r*   )rj   	Sequencerr)   r*   )rp   r   r+   r,   r    rN   rO   RuntimeError)rc   rm   rj   r/   r   r^   s       @@r   test_Sequencerrr      s    F +C!!# Q Qw2s#2s#q6 	+ 	+(***	+ 	+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)Nra   zseq(z) RuntimeError)r   CancelScoper.   rq   r   )iscoper   rj   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#ra   r   r   zseq(1) RuntimeErrorzseq(2) RuntimeErrorrd   )rv   intr)   r*   )rp   r   r+   r,   rN   rO   rq   )rx   r/   r   rj   s     @@r   test_Sequencer_cancelrz      s'    F
+C8 !!#  w5!$5!$q6 	 		 	  +-B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foora   )rN   rO   rP   r   rq   	TypeErrorrh   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                 j	  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        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   5x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 o# 1 sw Y   ixY w7 N# 1 sw Y   HxY w7 '7 # 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   456ra      1r   s   23456   789string   abc   defs   ghi   ds   efghic                X   K   t                d {    j                  |        y 7 wrL   )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rL   )rM   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rL   )r    close)ubq2s   r   closerz'test__UnboundeByteQueue.<locals>.closer=  s!     $&&&

 	's   )')r   bytesr)   r*   )r   r   r)   r*   r(   )r   r   
get_nowaitrN   rO   r   
WouldBlockr}   rM   r   r+   r,   r   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*+ +
 
U,,	- 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"R3&O+8+R3#O84!R3P'#R3
PP 	P*4R3P%3P"4	P%>R3P5$P2%	P5/,R3QR3%QR3QR3-Q:QQ:
%Q$/Q::Q!;Q:?;R3:RAR3RR30R1AR32R3R36$RR3%R&R3+O50R38P=R3P
R3PPR3"P%%P/*R32P55P?:	R3R3QQQR3Q:!Q:$Q7	*Q-+Q7	2Q::R?R3R	R3R3R3R3R0$R'%R0,R3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rL   )rM   send_all)r   msss    r   do_send_allz*test_MemorySendStream.<locals>.do_send_allI  s<     ! 	%,,t$$$	% 	%$	% 	%s    ?313	?3<?r   ra   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   xxxra   )r   r   )r   resource_busy_counts   r   do_send_all_count_resourcebusyz=test_MemorySendStream.<locals>.do_send_all_count_resourcebusyc  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   rM   wait_send_all_might_not_blockrN   rO   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   F  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>>!!F'
<$ *D ..226X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        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rL   )rM   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   ra      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   r   r   r   r+   r,   r   put_eofrN   rO   r   r   r   rM   r   )r   r/   r   r   r   r   r   s       @@@r   test_MemoryReceiveStreamr     s    

C5 LL ##t++ $$--LL &&&00	U,,	- 4%%' 	4 	4733	4 	44
   ((LLKKMKKM $$.. $$++ $$++	u00	1 V F  0*=D!!%666??j((MM&""2&&)33""2&&&00""2&&&00MM&!D""2&&&00MM"#		 kkmhZ	u00	1 $###$ $c $$&	4 	4 	4 	4 	44 4 %$$   '&& ' 	 
 	$$ $ss  -M9L
M9L%M9-L."M9L/)L*L/-%LL/LL/"AM94L<5M9	L?
M9M,M9MA'M9MM9"M#M9 M5M96M7$M9M/M0M43M9'M-<M+=M-
M9M9M9L/L/L,	L" L,	'L//L94	M9?M9M9M
	M9M9M9M9MM($M9+M--M62M9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   rN   rO   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   ra   )r      4s   56r_   )r   r   memory_stream_pumpr   r   r   )r   r   s     r   test_memory_stream_pumpr     s#    

C

C sC 
,,v
sC !!"%%//
,,v
c3!44!!"%%--c3!44c3!44!#sa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rL   )r    r-   r.   )r/   s    r   cancel_after_idlez:test_memory_stream_one_way_pair.<locals>.cancel_after_idle0  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   )rN   rO   r   r&   r   )r   s   r   check_for_cancelz9test_memory_stream_one_way_pair.<locals>.check_for_cancel4  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<<##&&
**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>.senderM  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>.receiverQ  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   C  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rL   )r   rh   r_   r   one_way_stream_makerzDtest_memory_streams_with_generic_tests.<locals>.one_way_stream_makerZ  s     )++   c                    K   t               S wrL   )r   rh   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   Y  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rL   )lockstep_stream_one_way_pairrh   r_   r   r   zFtest_lockstep_streams_with_generic_tests.<locals>.one_way_stream_makeri  s     +--r   c                    K   t               S wrL   )lockstep_stream_pairrh   r_   r   two_way_stream_makerzFtest_lockstep_streams_with_generic_tests.<locals>.two_way_stream_makern  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   h  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   xra   )open_stream_to_socket_listeneracceptr   r   )listenerclient_streamserver_streams      r   checkz2test_open_stream_to_socket_listener.<locals>.checkx  s     	G 	G"@"JJM$ G G&.oo&7 7( G G'00666!.!;!;A!>>$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  w  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rL   rh   r9   autojump_clocks     r   busy_kitchenz$test_trio_test.<locals>.busy_kitchen  s      s   z"^too many clocks spoil the broth!$)matchr   )autojump_thresholdr  )r9   ro   r  ro   r)   r*   )rN   rO   
ValueError	trio_test	MockClock)r  s    r   test_trio_testr    se      
	 
z)N	O 
	, {$:	

 
 
s   &AAr(   )r9   r  r)   r*   )rU   zpytest.WarningsRecorderr)   r*   )1
__future__r   r  typingr   rN   trio.testingr    r   r   r	   r  _core._tests.tutilr
   _highlevel_genericr   r   _highlevel_socketr   testingtesting._check_streamsr   testing._memory_streamsr   trior   trio.abcr   r   r0   r:   rJ   rW   rZ   rr   rz   r~   r   r   r   r   r   r   r   r   r   r  r  rh   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_   