
    ,h*(                    X   d dl mZ d dlZd dlZd dl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 ddlmZmZ erddlmZ ej&                  d	k(  Zej*                  j-                  e d
      Zerej0                  dk(  sJ erddlmZ n! ej6                  e      5  ddlmZ ddd       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'ej*                  j-                  ej0                  jQ                  d      d      dd       Z)edd       Z*y# 1 sw Y   xY w)     )annotationsN)TYPE_CHECKING   )_core)gc_collect_harderskip_if_fbsd_pipes_broken)check_one_way_streamwait_all_tasks_blocked)
_HasFileNoposixz
posix only)reasonunix)FdStreamc                 d   K   t        j                         \  } }t        |      t        |       fS w)zMakes a new pair of pipes.)ospiper   )rws     ]/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/trio/_tests/test_unix_pipes.py	make_piper      s(     WWYFQA;##s   .0c                    K   t                d {   \  } }	 	 t        t        dd      }t        j                  | j                         d|z  dz         <7 E# t        $ r Y | |fS w xY ww)NPIPE_BUFi       xr   )r   getattrselectr   writefilenoBlockingIOError)sr   buf_sizes      r   make_clogged_piper!   $   so     DAq  vz48HHHQXXZ1!45#  (  a4Ks2   A*AA*=A A*	A'!A*&A''A*c                 t  K   t        j                         \  } }t        |      4 d {   }|j                         |k(  sJ |j	                  d       d {    t        j
                  | d      dk(  sJ t        j                  |        d d d       d {    y 7 s7 G7 	# 1 d {  7  sw Y   y xY wwNs   123   )r   r   r   r   send_allreadclose)r   r   sends      r   test_send_piper)   >   s     779DAq{  d{{}!!mmF###1&((
  #   sV   'B8BB8*B#B4B#B8B!B8B#!B8#B5)B,*B51B8c                 t  K   t        j                         \  } }t        |       4 d {   }|j                         | k(  sJ t        j                  |d       |j                  d       d {   dk(  sJ t        j                  |       d d d       d {    y 7 s7 17 	# 1 d {  7  sw Y   y xY wwr#   )r   r   r   r   r   receive_somer'   )r   r   recvs      r   test_receive_piper-   H   s     779DAq{  d!##
F''**v55
   +   sW   'B8BB8A B#-B.B#B8B!B8B#!B8#B5)B,*B51B8c                   K   t                d {   \  ddfd} dfd}t        j                         4 d {   }|j                  |        |j                  |       d d d       d {    j	                          d {    j	                          d {    y 7 7 i7 9# 1 d {  7  sw Y   IxY w7 87 "w)Ni   c                 Z   K   t              } j                  |        d {    y 7 wN)	bytearrayr%   )bigcountr   s    r   senderz#test_pipes_combined.<locals>.senderV   s#     nnS!!!s    +)+c                    K   t                d {    d} | k  r+| t        j                  d       d {         z  } | k  r+| k(  sJ y 7 >7 w)Nr   i   )r
   lenr+   )receivedr3   r&   s    r   readerz#test_pipes_combined.<locals>.readerZ   sb     $&&&$"3"3D"99::H  5    	' :s%   AA%AA
A	AAreturnNone)r   r   open_nursery
start_soonaclose)r4   r8   nr3   r&   r   s      @@@r   test_pipes_combinedr@   R   s     !#KE4E"! !!#  q	V	V  ++-
,,.) $     su   C
B+/C
B-C
#B1*C
5B/6C
CC
%C&C
-C
/C
1C7B:8C?C
C
c                   K   t        j                  t              5  t        d        d d d        t	        j
                         \  } }t	        j                  |       t        |       4 d {   }t        j                  t        d      5  |j                  d       d {    d d d        d d d       d {    y # 1 sw Y   xY w7 ^7 +# 1 sw Y   *xY w7 !# 1 d {  7  sw Y   y xY ww)Nz ^max_bytes must be integer >= 1$matchr   )	pytestraises	TypeErrorr   r   r   r'   
ValueErrorr+   )r   r   r   s      r   test_pipe_errorsrH   j   s     	y	!  779DAqHHQK{ $ $a]]:-PQ 	$..###	$$ $ $ 
$#	$ 	$$ $ $ $s   C1B>AC1+C
,C1/CC C!C%C-C18C9C1>CC1CC	CC1C."C%#C.*C1c                 J  K   t                d {   \  } }| j                         |j                         }}~ ~t                t        j                  t
        d      5 }t        j                  |       d d d        j                  j                  t        j                  k(  sJ t        j                  t
        d      5 }t        j                  |       d d d        |j                  j                  t        j                  k(  sJ y 7 # 1 sw Y   xY w# 1 sw Y   AxY ww)NBad file descriptor$rB   )r   r   r   rD   rE   OSErrorr   r'   valueerrnoEBADF)r   r   f1f2excinfos        r   test_delrR   u   s     DAqXXZB	1	w&=	> '
==%++--	w&=	> '
==%++--- 
  sA   D#D	AD#D5AD#D3D#DD#D D#c                 ^  K   t                d {   \  } }| 4 d {    |4 d {    	 d d d       d {    d d d       d {    | j                         dk(  sJ |j                         dk(  sJ t        j                  t        d      5 }t        j                  | j                                d d d        j                  j                  t        j                  k(  sJ t        j                  t        d      5 }t        j                  |j                                d d d        |j                  j                  t        j                  k(  sJ y 7 J7 ?7 77 )# 1 d {  7  sw Y   :xY w7 2# 1 d {  7  sw Y   CxY w# 1 sw Y   xY w# 1 sw Y   zxY ww)NrJ   rB   )
r   r   rD   rE   rK   r   r'   rL   rM   rN   )r   r   rQ   s      r   test_async_withrU      sJ    DAq  !      88:88:	w&=	> '
==%++--	w&=	> '
==%++---            s   F-EF-EF-E?E E?E&E?E#E?F-
E<A	F-$F8AF-$F!(3F-F- E?#E?&E9	,E/-E9	4E?<F-?FFFF-FF-!F*&F-c                 d  K   t                d {   \  } }|j                         }| j                          d {    |j                          d {    t        j                         \  }}||k7  r+t        j
                  ||       t        j                  |       t        |      4 d {   j                         |k(  sJ dfd}t        j                         4 d {   }|j                  |       t                d {    |j                          d {    t                d {    t        j                  |       d d d       d {    d d d       d {    y 7 ^7 67 !7 7 7 q7 [7 K7 (# 1 d {  7  sw Y   8xY w7 /# 1 d {  7  sw Y   y xY ww)Nc                 N   K    j                  d       d {   dk(  sJ y 7 
w)N
       )r+   )r2s   r   
expect_eofz6test_misdirected_aclose_regression.<locals>.expect_eof   s$     ,,333,s   %#%r9   )r   r   r>   r   r   dup2r'   r   r   r<   r=   r
   )r   r   old_r_fdr2_fdw2_fdr[   nurseryrZ   s          @r   "test_misdirected_aclose_regressionra      sh    DAqxxzH ((*
((* 779LE5
x 
!  Ryy{h&&	4 %%' 	 	7z*(***
 ((*(*** HHUO	 	    	*
 *	 	 	 	   s   F0E/*F0E2F0E5AF0/E80F034F'E:(F+F
E<F"E>#F4F 5FFFFF0)F*F02F05F08F0:F<F>F FFF	
FF	FF0F-!F$"F-)F0c           	       K   dfd}t         j                  j                  j                  	 	 	 	 	 	 dfd}| j	                  t         j                  j                  d|       t                d {   \  }|4 d {    4 d {    t        j                         4 d {   }|j                  |       t                d {    |j                  d       d {    d d d       d {    d d d       d {    d d d       d {    y 7 7 7 7 w7 V7 ?7 1# 1 d {  7  sw Y   AxY w7 8# 1 d {  7  sw Y   HxY w7 ?# 1 d {  7  sw Y   y xY ww)Nc                    K   t        j                  t        j                        5   j	                  d       d {    d d d        y 7 # 1 sw Y   y xY ww)NrX   )rD   rE   r   ClosedResourceErrorr+   )r   s   r   expect_closedresourceerrorzKtest_close_at_bad_time_for_receive_some.<locals>.expect_closedresourceerror   sH     ]]5445 	%..$$$	% 	%$	% 	%,   $AAA
A	A
AAAc                h   K    | |       d {    j                          d {    y 7 7 wr0   r>   )selffdorig_wait_readabler   s     r   patched_wait_readablezFtest_close_at_bad_time_for_receive_some.<locals>.patched_wait_readable   1      !r***hhj 	+   2.2022wait_readabler   r9   ri   z_core._run.TheIOManagerrj   zint | _HasFileNor:   r;   )
r   _runTheIOManagerro   setattrr   r<   r=   r
   r%   )monkeypatchre   rl   r   r`   rk   r   s        @@r   'test_close_at_bad_time_for_receive_someru      sR    % 00>>% 
 

//BWXDAq # #! # #%%' 	# 	#79:(*****T"""		# 	## # # # # # #	#*"		# 	# 	# 	## # # # # # # #s  A0E-4D5E-DE-ED EE*D"
+E.D*D$
D*&D&
'D*+E6D(7E;ED?EE-EE-E- E"E$D*&D*(E*D<0D31D<8E?EE	E
E	EE-E*E!E*&E-c           	       K   dfd}t         j                  j                  j                  	 	 	 	 	 	 dfd}| j	                  t         j                  j                  d|       t                d {   \  }4 d {    |4 d {    t        j                         4 d {   }|j                  |       t                d {    |j                  d       d {   }|r|j                  d       d {   }|rd d d       d {    d d d       d {    d d d       d {    y 7 7 7 7 7 t7 ]7 D7 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)Nc                    K   t        j                  t        j                        5   j	                  d       d {    d d d        y 7 # 1 sw Y   y xY ww)Nsd   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)rD   rE   r   rd   r%   )r   s   r   re   zGtest_close_at_bad_time_for_send_all.<locals>.expect_closedresourceerror   sH     ]]5445 	)**Z(((	) 	)(	) 	)rf   c                h   K    | |       d {    j                          d {    y 7 7 wr0   rh   )ri   rj   orig_wait_writabler   s     r   patched_wait_writablezBtest_close_at_bad_time_for_send_all.<locals>.patched_wait_writable   rm   rn   wait_writablei'  r9   rp   )
r   rq   rr   r{   rs   r!   r<   r=   r
   r+   )rt   re   rz   r   r`   received_datary   r   s         @@r   #test_close_at_bad_time_for_send_allr}      ss    ) 00>>% 
 

//BWX"$$DAq < <! < <%%' 	< 	<79:(*** #$.."77M&'nnU&; ;  	< 	<< < < < < %< <	<* 8 ;	< 	< 	< 	<< < < < < < < <s   A0F4D:5FD<FE8D>E8E!*E 
+E!.E
E
E
&E
'E
E
E
	E!EE!E8$E%E8)F4E65F<F>E8 E!E
E
E
E!
EEEE!E8!E3	'E*(E3	/E86F8F
>F?F
Ffreebsdz7no way to make read() return a bizarro error on FreeBSDc                   K   t                d {   \  } }| 4 d {    |4 d {    t        j                  dt        j                  d      }	 t        j                  ||j                                t        j                  t        j                        5  |j                  d       d {    d d d        t        j                  |       d d d       d {    d d d       d {    y 7 7 7 7 H# 1 sw Y   GxY w# t        j                  |       w xY w7 C# 1 d {  7  sw Y   SxY w7 J# 1 d {  7  sw Y   y xY ww)N/r   rX   )r   r   openO_DIRECTORYr\   r   rD   rE   r   BrokenResourceErrorr+   r'   )r   r   dir_fds      r   !test_bizarro_OSError_from_receiver   
  s     DAq  !  bnna0	GGFAHHJ'u889 )nnR((() HHV      
 )) ) HHV       s   EC3EC5ED:C7D:&D#ADC;0C9
1C;5D=D#D:D!D:"E-D8.E5E7D:9C;;D DDD#!D:#D5	)D,*D5	1D:8E:E EEEc                 H   K   t        t        t               d {    y 7 wr0   )r	   r   r!    rY   r   test_pipe_fullyr   !  s     
y*;
<<<s   " ")r:   ztuple[FdStream, FdStream]r9   )rt   zpytest.MonkeyPatchr:   r;   )+
__future__r   rM   r   r   systypingr   rD    r   _core._tests.tutilr   r   testingr	   r
   _file_ior   namer   markskipif
pytestmarkplatform_unix_pipesr   rE   ImportErrorr   r!   r)   r-   r@   rH   rR   rU   ra   ru   r}   
startswithr   r   r   rY   r   <module>r      s+   "  	  
     M B%
7[[E	,?
CLLF2 2&	{	# +*+$40$.."#L###	#B'<\ LLI&D  	& = =Q+ +s   D  D)