
    #)fg'                    F   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j"                  dk(  Zej&                  j)                  e d	
      Zerej,                  dk(  sJ erddlmZ n! ej2                  e      5  ddlmZ ddd       ddZ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j,                  jM                  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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     X/var/www/html/flask-app/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,   E   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>.senderS   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*   )receivedr2   r%   s    r   readerz#test_pipes_combined.<locals>.readerW   sb     $&&&$"3"3D"99::H  5    	' :s%   AA%AA
A	AAreturnNone)r   r   open_nursery
start_soonaclose)r3   r7   nr2   r%   r   s      @@@r   test_pipes_combinedr?   O   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_errorsrG   g   s     	y	!  779DAqHHQK{ $ $a]]:-OP 	$..###	$$ $ $ 
$#	$ 	$$ $ $ $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$rA   )r   r   r   rC   rD   OSErrorr   r&   valueerrnoEBADF)r   r   f1f2excinfos        r   test_delrQ   r   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)NrI   rA   )
r   r   rC   rD   rJ   r   r&   rK   rL   rM   )r   r   rP   s      r   test_async_withrT      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   %#%r8   )r   r   r=   r   r   dup2r&   r   r   r;   r<   r
   )r   r   old_r_fdr2_fdw2_fdrZ   nurseryrY   s          @r   "test_misdirected_aclose_regressionr`      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)NrW   )rC   rD   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                 f   K    | i | d {    j                          d {    y 7 7 wr/   r=   )argskwargsorig_wait_readabler   s     r   patched_wait_readablezFtest_close_at_bad_time_for_receive_some.<locals>.patched_wait_readable   2      $1&111hhj 	2   1-1/11wait_readabler   r8   )
r   _runTheIOManagerrn   setattrr   r;   r<   r
   r$   )monkeypatchrd   rk   r   r_   rj   r   s        @@r   'test_close_at_bad_time_for_receive_somers      s8    % 00>> 

//BWXDAq # #! # #%%' 	# 	#79:(*****T"""		# 	## # # # # # #	#*"		# 	# 	# 	## # # # # # # #s  A*E'.D/E'<D=E' EDED;$D
%D;(D$D
D$ D 
!D$%D;0D"1D;5E D9EE'EE'E'ED;D$ D$"D;$D6*D-+D62D;9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)rC   rD   r   rc   r$   )r   s   r   rd   zGtest_close_at_bad_time_for_send_all.<locals>.expect_closedresourceerror   sH     ]]5445 	)**Z(((	) 	)(	) 	)re   c                 f   K    | i | d {    j                          d {    y 7 7 wr/   rg   )rh   ri   orig_wait_writabler   s     r   patched_wait_writablezBtest_close_at_bad_time_for_send_all.<locals>.patched_wait_writable   rl   rm   wait_writablei'  r8   )
r   ro   rp   ry   rq   r    r;   r<   r
   r*   )rr   rd   rx   r   r_   received_datarw   r   s         @@r   #test_close_at_bad_time_for_send_allr{      sY    ) 00>> 

//BWX"$$DAq < <! < <%%' 	< 	<79:(*** #$.."77M&'nnU&; ;  	< 	<< < < < < %< <	<* 8 ;	< 	< 	< 	<< < < < < < < <s   A*F.D4/F<D6=F E2D8E2E$D:
%E(ED<
E D>
!E;E 
<EEEEE2EE2#F.E0/F6F8E2:E<E>E EEE
EEEE2E-	!E$"E-	)E20F2F8E;9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   rW   )r   r   openO_DIRECTORYr[   r   rC   rD   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r/   )r	   r   r     rX   r   test_pipe_fullyr     s     
y*;
<<<s   " ")r9   ztuple[FdStream, FdStream]r8   )rr   zpytest.MonkeyPatchr9   r:   ))
__future__r   rL   r   r   systypingr   rC    r   _core._tests.tutilr   r   testingr	   r
   namer   markskipif
pytestmarkplatform_unix_pipesr   rD   ImportErrorr   r    r(   r,   r?   rG   rQ   rT   r`   rs   r{   
startswithr   r   r   rX   r   <module>r      s$   "  	  
     M B
7[[E	,?
CLLF2 2&	{	# +*+$40$.."#L###	#<$<V LLI&D  	& = =E+ +s   DD 