
    Eg                     L   d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dlm	Z	 d dl
mZ d dlZd dlZd dlmZmZ d dlmZmZmZ ej        dej        defd	            Zej        de	j        fd
            Zej        de	j        dee	j                 fd            Zd dZd dZdee	j                 de	j        ddfdZdee	j                 de	j        ddfdZd dZd dZ dee	j                 de	j        ddfdZ!dee	j                 de	j        ddfdZ"dee	j                 ddfdZ#dee	j                 ddfdZ$dee	j                 de	j        ddfdZ%dee	j                 de	j        ddfdZ&dej        ddfdZ'dej        ddfdZ(d dZ)dej        ddfdZ*dej        ddfdZ+dS )!    N)ListTuple)mock)sentinel)_core_file_io)_FILE_ASYNC_METHODS_FILE_SYNC_ATTRSAsyncIOWrappertmp_pathreturnc                 0    t          j        | dz            S )Ntest)osfspath)r   s    M/var/www/sysmax/venv/lib/python3.11/site-packages/trio/_tests/test_file_io.pypathr      s    9X&'''    c                  @    t          j        t          j                  S )N)spec_set)r   MockioStringIO r   r   wrappedr      s    9bk****r   r   c                 *    t          j        |           S N)trio	wrap_filer   s    r   
async_filer!      s    >'"""r   c                      t          j        t                    5  t          j        d           d d d            d S # 1 swxY w Y   d S )N )pytestraises	TypeErrorr   r   r   r   r   test_wrap_invalidr'       s    	y	!	!  r                 s   <A A c                  b    G d d          }  |             }t          |t          j                  rJ t          j        |          }t          |t
                    sJ | `t          j        t                    5  t          j         |                        d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZddZddZdS )&test_wrap_non_iobase.<locals>.FakeFiler   Nc                     d S r   r   selfs    r   closez,test_wrap_non_iobase.<locals>.FakeFile.close'       Dr   c                     d S r   r   r,   s    r   writez,test_wrap_non_iobase.<locals>.FakeFile.write*   r/   r   r   N)__name__
__module____qualname__r.   r1   r   r   r   FakeFiler*   &   s<        	 	 	 		 	 	 	 	 	r   r6   )

isinstancer   IOBaser   r   r   r1   r$   r%   r&   )r6   r   r!   s      r   test_wrap_non_iobaser9   %   s           hjjG'29-----((Jj.11111	y	!	! # #xxzz"""# # # # # # # # # # # # # # # # # #s   :B$$B(+B(r!   c                     | j         |u sJ d S r   r    )r!   r   s     r   test_wrapped_propertyr;   9   s     ((((((r   c                      t          j        t                    }t           fd|D                       sJ t	           fd|D                       rJ d S )Nc              3   \   K   | ]&}|t                    v |t                    v V  'd S r   dir.0attrr!   r   s     r   	<genexpr>z+test_dir_matches_wrapped.<locals>.<genexpr>E   s>      QQ4DCLL<P<Pts:&<P<P<P<PQQr   c              3   \   K   | ]&}|t                    v|t                    v V  'd S r   r>   r@   s     r   rC   z+test_dir_matches_wrapped.<locals>.<genexpr>G   sG        $(TW5M5MJ5M5M5M5M r   )r
   unionr	   allany)r!   r   attrss   `` r   test_dir_matches_wrappedrI   ?   s     "#677E QQQQQ5QQQQQQQQ     ,1         r   c                      G d dt           j                  } t          j         |                       }t	          |j        d          sJ t          j        t                    5  |j	         d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZddZdS )0test_unsupported_not_forwarded.<locals>.FakeFiler   Nc                     d S r   r   r,   s    r   unsupported_attrzAtest_unsupported_not_forwarded.<locals>.FakeFile.unsupported_attrN   r/   r   r2   )r3   r4   r5   rN   r   r   r   r6   rL   M   s(        	 	 	 	 	 	r   r6   rN   )
r   	RawIOBaser   r   hasattrr   r$   r%   AttributeErrorrN   )r6   r!   s     r   test_unsupported_not_forwardedrR   L   s        2<    

++J:%'9:::::	~	&	& $ $##$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   %A::A>A>c                     t           j        J t           j        j        } t          | t          j        j                  sJ t          j        | 	                    d                    }|D ]}d|v r n	t          j        d           |D ]}d|v r n	t          j        d           g }|D ]}|                                r|                    d          s n[t          j        d|          }|C|                    d	          d
nd}|                    |                    d          |f           d t$          D             }|d t&          D             z  }|                                 |                                 ||k    sJ dS )z9Check the manual stubs match the list of wrapped methods.Nztrio._file_iozclass AsyncIOWrapperzNo class definition line?zif TYPE_CHECKINGzNo TYPE CHECKING line?z        z!\s*(async )?def ([a-zA-Z0-9_]+)\(   asyncsync   c                     g | ]}|d fS )rU   r   rA   fnames     r   
<listcomp>z/test_type_stubs_match_lists.<locals>.<listcomp>z   s    BBBU BBBr   c                     g | ]}|d fS )rV   r   rY   s     r   r[   z/test_type_stubs_match_lists.<locals>.<listcomp>{   s    ???U%???r   )r   __spec__loaderr7   	importlibabcSourceLoaderr   r   
get_sourcer$   failstrip
startswithrematchgroupappendr	   r
   sort)r^   sourcelinefoundrg   kindexpecteds          r   test_type_stubs_match_listsrp   Z   s    (((%Ffim899999[**?;;<<F  1 1!T))E * 	/000 . .%%E & 	,--- $&E 1 1::<< 	 8 8 	E=tDD#kk!nn877fDLL%++a..$/000 CB.ABBBH??.>????H	JJLLLMMOOOHr   c                     t           D ]6}|t          |           vrt          | |          t          ||          u sJ 7d S r   )r
   r?   getattrr!   r   	attr_names      r   test_sync_attrs_forwardedru      s]     & M M	C
OO++z9--)1L1LLLLLL	M Mr   c                 B   t           D ]}|t          |           v rt          j        t                    5  t          | |           d d d            n# 1 swxY w Y   t          j        t                    5  t          ||           d d d            n# 1 swxY w Y   d S r   )r
   r?   r$   r%   rQ   rr   rs   s      r   test_sync_attrs_match_wrapperrw      s    & ( (	J'']>** 	+ 	+J	***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ ]>** 	( 	(GY'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(( (s#   AA	A	6BB	B	c                     t           D ]6}|t          |           vrt          | |          t          | |          u sJ 7d S r   )r	   r?   rr   )r!   	meth_names     r   !test_async_methods_generated_oncerz      s[    ( P P	C
OO++z9--Y1O1OOOOOO	P Pr   c                     | j         j        dk    sJ | j         j        dk    sJ | j         j        J d| j         j        v sJ d S )NreadzAsyncIOWrapper.readzio.StringIO.read)r|   r3   r5   __doc__)r!   s    r   test_async_methods_signaturer~      s\    ?#v----?'+@@@@@?"...!8888888r   c                 n  K   t           D ]}|t          |           vrt          | |          }t          ||          } |t          j        t          j                   d {V }|                    t          j        t          j                   | |            k    sJ |                                 d S )N)keyword)r	   r?   rr   r   argumentr   assert_called_once_with
reset_mock)r!   r   ry   methwrapped_methvalues         r   test_async_methods_wrapr      s       )  	C
OO++z9--w	22d8,h6FGGGGGGGGG,,x'7 	- 	
 	
 	
 &&&& r   c                 F  K   t           D ]}|t          |           v rt          j        t                    5  t          | |           d d d            n# 1 swxY w Y   t          j        t                    5  t          ||           d d d            n# 1 swxY w Y   d S r   )r	   r?   r$   r%   rQ   rr   )r!   r   ry   s      r    test_async_methods_match_wrapperr      s"      ) ( (	J'']>** 	+ 	+J	***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ ]>** 	( 	(GY'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(( (s#   AA	A	8BB	B	r   c                    K   t          j        | d           d {V }t          |t                    sJ |                                 d {V  d S Nw)r   	open_filer7   r   acloser   fs     r   	test_openr      se      nT3''''''''Aa(((((
((**r   c                    K   t          j        | d           d {V 4 d {V }t          |t                    sJ |j        rJ 	 d d d           d {V  n# 1 d {V swxY w Y   |j        sJ d S r   )r   r   r7   r   closedr   s     r   test_open_context_managerr      s     ^D#........       !!^,,,,,8                           8OOOOOs   !A
A"%A"c                    K   t          j        t          j        d                    } t	          | j                  }g }| j                            d           | 2 3 d {V }|                    |           6 ||k    sJ d S )Nztest
foo
barr   )r   r   r   r   listr   seekri   )r!   ro   resultrl   s       r   test_async_iterr      s      ,< = =>>JJ&''HFA        dd ! Xs   A8c                   K   t          j                    5 }t          j        | d           d {V }|                                 t          j        t           j                  5  |                    d           d {V  d d d            n# 1 swxY w Y   t          j        t           j                  5  |	                                 d {V  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |j
        sJ d S )Nr   a)r   CancelScoper   r   cancelr$   r%   	Cancelledr1   r   r   )r   cscoper   s      r   test_aclose_cancelledr      s     				 .s++++++++]5?++ 	 	''#,,	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]5?++ 	 	((**	 	 	 	 	 	 	 	 	 	 	 	 	 	 	               8OOOOOsZ   AC3$B C3B	C3B	!C35CC3C 	 C3#C 	$C33C7:C7c                 \  K   | dz  }|                                  t          |dd          5 }t          j        |          }t	          j        |          }|                                 d {V }t          |t                    sJ |j	        |u sJ 	 d d d            d S # 1 swxY w Y   d S )Nfilenamerbr   )mode	buffering)
touchopenr   BufferedReaderr   r   detachr7   r   r   )r   tmp_filerawbufferedr!   detacheds         r   test_detach_rewraps_asynciobaser      s     *$HNN	hTQ	/	/	/ '3$S))^H--
#**,,,,,,,,(N333333&&&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   A%B!!B%(B%r2   ),r_   r   r   pathlibrf   typingr   r   unittestr   unittest.mockr   r$   r   r   r   trio._file_ior	   r
   r   fixturePathstrr   r   r   r!   r'   r9   r;   rI   rR   rp   ru   rw   rz   r~   r   r   r   r   r   r   r   r   r   r   <module>r      s       				 				  				               " " " " " "                   O O O O O O O O O O (7< (C ( ( ( ( + + + + + #	 #nTY&? # # # #   
# # # #()ty))48I)	) ) ) )
ty)
48I
	
 
 
 
$ $ $ $% % % %PMty)M48IM	M M M M(ty)(48I(	( ( ( (P.2K PPT P P P P9^DI-F 94 9 9 9 9ty)48I	   ((ty)(48I(	( ( ( (', 4    ', 4    	 	 	 	gl t    'GL 'T ' ' ' ' ' 'r   