
     fg'                    8   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                            e d	
          Zerej        dk    sJ erddlmZ n. ej        e          5  ddlmZ ddd           n# 1 swxY w Y   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                            ej        &                    d          d
          d"d            Z'ed"d             Z(dS )$    )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)FdStreamreturntuple[FdStream, FdStream]c                 n   K   t          j                    \  } }t          |          t          |           fS )zMakes a new pair of pipes.)ospiper   )rws     ^/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/trio/_tests/test_unix_pipes.py	make_piper      s,      WYYFQA;;##    c                    K   t                       d {V \  } }	 	 t          t          dd          }t          j        |                                 d|z  dz             D# t          $ r Y nw xY w| |fS )NTPIPE_BUFi       xr   )r   getattrselectr   writefilenoBlockingIOError)sr   buf_sizes      r   make_clogged_piper#   !   s      DAq	6  vz488HHQXXZZ1!4555#	6$    a4Ks   AA   
A-,A-Nonec                 r  K   t          j                    \  } }t          |          4 d {V }|                                |k    sJ |                    d           d {V  t          j        | d          dk    sJ t          j        |            d d d           d {V  d S # 1 d {V swxY w Y   d S Ns   123   )r   r   r   r   send_allreadclose)r   r   sends      r   test_send_piper,   ;   sA     799DAq{{       d{{}}!!!!mmF#########1&((((
                                A%B&&
B03B0c                 r  K   t          j                    \  } }t          |           4 d {V }|                                | k    sJ t          j        |d           |                    d           d {V dk    sJ t          j        |           d d d           d {V  d S # 1 d {V swxY w Y   d S r&   )r   r   r   r   r   receive_somer*   )r   r   recvs      r   test_receive_piper1   E   sE     799DAq{{       d!####
F''********v5555
                             r-   c                   K   t                       d {V \  ddfd} dfd}t          j                    4 d {V }|                    |            |                    |           d d d           d {V  n# 1 d {V swxY w Y                                    d {V                                   d {V  d S )Ni   r   r$   c                 `   K   t                    }                     |            d {V  d S N)	bytearrayr(   )bigcountr   s    r   senderz#test_pipes_combined.<locals>.senderS   s>      nnS!!!!!!!!!!!r   c                    K   t                       d {V  d} | k     r1| t                              d           d {V           z  } | k     1| k    sJ d S )Nr   i   )r
   lenr/   )receivedr7   r)   s    r   readerz#test_pipes_combined.<locals>.readerW   s      $&&&&&&&&&$"3"3D"9"9999999:::H  5      r   r   r$   )r   r   open_nursery
start_soonaclose)r8   r<   nr7   r)   r   s      @@@r   test_pipes_combinedrB   O   s     !######KE4E" " " " " " "! ! ! ! ! ! ! !##       q	V	V                           ++--
,,..s   +B
BBc                   K   t          j        t                    5  t          d            d d d            n# 1 swxY w Y   t	          j                    \  } }t	          j        |           t          |           4 d {V }t          j        t          d          5  |                    d           d {V  d d d            n# 1 swxY w Y   d d d           d {V  d S # 1 d {V swxY w Y   d S )Nz ^max_bytes must be integer >= 1$matchr   )	pytestraises	TypeErrorr   r   r   r*   
ValueErrorr/   )r   r   r!   s      r   test_pipe_errorsrJ   g   s     	y	!	!                 799DAqHQKKK{{ $ $ $ $ $ $ $a]:-OPPP 	$ 	$..#########	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $sB   8<<C$C:C$C
	
C$C
	C$$
C.1C.c                 4  K   t                       d {V \  } }|                                 |                                }}~ ~t                       t          j        t
          d          5 }t          j        |           d d d            n# 1 swxY w Y   |j        j	        t          j
        k    sJ t          j        t
          d          5 }t          j        |           d d d            n# 1 swxY w Y   |j        j	        t          j
        k    sJ d S )NBad file descriptor$rD   )r   r   r   rF   rG   OSErrorr   r*   valueerrnoEBADF)r   r   f1f2excinfos        r   test_delrT   r   so     DAqXXZZB	1	w&<	=	=	= 
              =%+----	w&<	=	=	= 
              =%+------s$   -BBBC11C58C5c                 &  K   t                       d {V \  } }| 4 d {V  |4 d {V  	 d d d           d {V  n# 1 d {V swxY w Y   d d d           d {V  n# 1 d {V swxY w Y   |                                 dk    sJ |                                dk    sJ t          j        t          d          5 }t          j        |                                            d d d            n# 1 swxY w Y   |j        j        t          j	        k    sJ t          j        t          d          5 }t          j        |                                           d d d            n# 1 swxY w Y   |j        j        t          j	        k    sJ d S )NrL   rD   )
r   r   rF   rG   rM   r   r*   rN   rO   rP   )r   r   rS   s      r   test_async_withrW      s     DAq        !                                                              88::88::	w&<	=	=	= 
              =%+----	w&<	=	=	= 
              =%+------sU   	A"?A"
A			A"A		A""
A,/A,'C55C9<C97'E**E.1E.c                 X  K   t                       d {V \  } }|                                }|                                  d {V  |                                 d {V  t          j                    \  }}||k    r)t          j        ||           t          j        |           t          |          4 d {V                                 |k    sJ dfd}t          j	                    4 d {V }|
                    |           t                       d {V  |                                 d {V  t                       d {V  t          j        |           d d d           d {V  n# 1 d {V swxY w Y   d d d           d {V  d S # 1 d {V swxY w Y   d S )Nr   r$   c                 N   K                         d           d {V dk    sJ d S )N
   r   )r/   )r2s   r   
expect_eofz6test_misdirected_aclose_regression.<locals>.expect_eof   s<      ,,,,,,,,333333r   r=   )r   r   r@   r   r   dup2r*   r   r   r>   r?   r
   )r   r   old_r_fdr2_fdw2_fdr\   nurseryr[   s          @r   "test_misdirected_aclose_regressionrb      s     DAqxxzzH ((**
((** 799LE5
x   
!!       Ryy{{h&&&&	4 	4 	4 	4 	4 	4 %'' 	 	 	 	 	 	 	7z***(*********
 ((**(********* HUOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                             s7   =:F7A,E5#F5
E?	?FE?	F
F#&F#monkeypatchpytest.MonkeyPatchc                  K   dfd}t           j        j        j        dfd}|                     t           j        j        d|           t                       d {V \  }|4 d {V  4 d {V  t          j                    4 d {V }|                    |           t                       d {V  |	                    d           d {V  d d d           d {V  n# 1 d {V swxY w Y   d d d           d {V  n# 1 d {V swxY w Y   d d d           d {V  d S # 1 d {V swxY w Y   d S )Nr   r$   c                    K   t          j        t          j                  5                       d           d {V  d d d            d S # 1 swxY w Y   d S )NrZ   )rF   rG   r   ClosedResourceErrorr/   )r   s   r   expect_closedresourceerrorzKtest_close_at_bad_time_for_receive_some.<locals>.expect_closedresourceerror   s      ]5455 	% 	%..$$$$$$$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%   AAAc                 \   K    | i | d {V                                    d {V  d S r4   r@   )argskwargsorig_wait_readabler   s     r   patched_wait_readablezFtest_close_at_bad_time_for_receive_some.<locals>.patched_wait_readable   U        $1&111111111hhjjr   wait_readabler   r=   )
r   _runTheIOManagerrq   setattrr   r>   r?   r
   r(   )rc   rh   ro   r!   ra   rn   r   s        @@r   'test_close_at_bad_time_for_receive_someru      s"     % % % % % % 0>       
/BWXXXDAq # # # # # # # #! # # # # # # # #%'' 	# 	# 	# 	# 	# 	# 	#79:::(***********T"""""""""		# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #s[   -	D.6D
AC'D
'
C11D
4C15D
8D.

D	D.D	D..
D8;D8c                  K   dfd}t           j        j        j        dfd}|                     t           j        j        d|           t                       d {V \  }4 d {V  |4 d {V  t          j                    4 d {V }|                    |           t                       d {V  |	                    d           d {V }|r|	                    d           d {V }|	 d d d           d {V  n# 1 d {V swxY w Y   d d d           d {V  n# 1 d {V swxY w Y   d d d           d {V  d S # 1 d {V swxY w Y   d S )Nr   r$   c                    K   t          j        t          j                  5                       d           d {V  d d d            d S # 1 swxY w Y   d S )Nsd   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)rF   rG   r   rg   r(   )r!   s   r   rh   zGtest_close_at_bad_time_for_send_all.<locals>.expect_closedresourceerror   s      ]5455 	) 	)**Z(((((((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)ri   c                 \   K    | i | d {V                                    d {V  d S r4   rk   )rl   rm   orig_wait_writabler!   s     r   patched_wait_writablezBtest_close_at_bad_time_for_send_all.<locals>.patched_wait_writable   rp   r   wait_writablei'  r=   )
r   rr   rs   r{   rt   r#   r>   r?   r
   r/   )rc   rh   rz   r   ra   received_datary   r!   s         @@r   #test_close_at_bad_time_for_send_allr}      s_     ) ) ) ) ) ) 0>       
/BWXXX"$$$$$$$$DAq < < < < < < < <! < < < < < < < <%'' 	< 	< 	< 	< 	< 	< 	<79:::(********* #$.."7"7777777M <&'nnU&;&; ; ; ; ; ; ;   < <	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < <s[   -	E6D*A$D5D*
DD*DD*E*
D4	4E7D4	8E
EEfreebsdz7no way to make read() return a bizarro error on FreeBSDc                 z  K   t                       d {V \  } }| 4 d {V  |4 d {V  t          j        dt          j        d          }	 t          j        ||                                           t          j        t          j	                  5  |
                    d           d {V  d d d            n# 1 swxY w Y   t          j        |           n# t          j        |           w xY w	 d d d           d {V  n# 1 d {V swxY w Y   d d d           d {V  d S # 1 d {V swxY w Y   d S )N/r   rZ   )r   r   openO_DIRECTORYr]   r   rF   rG   r   BrokenResourceErrorr/   r*   )r!   r   dir_fds      r   !test_bizarro_OSError_from_receiver     s      DAq        !        bna00	GFAHHJJ'''u899 ) )nnR((((((((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) HVBHV                                                        sq   	D*!DACB:.C:B>>CB>CDC00D4D*
D	D*D	D**
D47D4c                 J   K   t          t          t                     d {V  d S r4   )r	   r   r#    r   r   test_pipe_fullyr     s/      
y*;
<
<<<<<<<<<<r   )r   r   r=   )rc   rd   r   r$   ))
__future__r   rO   r   r   systypingr   rF    r   _core._tests.tutilr   r   testingr	   r
   namer   markskipif
pytestmarkplatform_unix_pipesr   rG   ImportErrorr   r#   r,   r1   rB   rJ   rT   rW   rb   ru   r}   
startswithr   r   r   r   r   <module>r      s   " " " " " "  				  



                    M M M M M M M M B B B B B B B B
7[E	,??
 2CLF2222 +&&&&&&&	{	#	# + +******+ + + + + + + + + + + + + + +$ $ $ $  4         0$ $ $ $. . . .. . . ."# # # #L# # # #<$< $< $< $<V LI&&D     	 & = = = = = =s   BB!B