
     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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rd dlZej        d&d            Zej        d'd            Zej        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S ).    )annotationsN)TYPE_CHECKING)mock)sentinel)_core_file_io)_FILE_ASYNC_METHODS_FILE_SYNC_ATTRSAsyncIOWrappertmp_pathpathlib.Pathreturnstrc                0    t          j        | dz            S )Ntest)osfspath)r   s    [/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/trio/_tests/test_file_io.pypathr      s    9X&'''    	mock.Mockc                 @    t          j        t          j                  S )N)spec_set)r   MockioStringIO r   r   wrappedr      s    9bk****r   r   AsyncIOWrapper[mock.Mock]c                *    t          j        |           S N)trio	wrap_filer   s    r   
async_filer%      s    >'"""r   Nonec                     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   r&   c                    d S r!   r   selfs    r   closez,test_wrap_non_iobase.<locals>.FakeFile.close+       Dr   c                    d S r!   r   r1   s    r   writez,test_wrap_non_iobase.<locals>.FakeFile.write.   r4   r   Nr   r&   )__name__
__module____qualname__r3   r6   r   r   r   FakeFiler/   *   s<        	 	 	 		 	 	 	 	 	r   r;   )

isinstancer   IOBaser"   r#   r   r6   r)   r*   r+   )r;   r   r%   s      r   test_wrap_non_iobaser>   )   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@   =   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>I   s>      QQ4DCLL<P<Pts:&<P<P<P<PQQr   c              3  \   K   | ]&}|t                    v|t                    v V  'd S r!   rC   rE   s     r   rH   z+test_dir_matches_wrapped.<locals>.<genexpr>K   sG        $(TW5M5MJ5M5M5M5M r   )r
   unionr	   allany)r%   r   attrss   `` r   test_dir_matches_wrappedrN   C   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   r&   c                    d S r!   r   r1   s    r   unsupported_attrzAtest_unsupported_not_forwarded.<locals>.FakeFile.unsupported_attrR   r4   r   Nr7   )r8   r9   r:   rS   r   r   r   r;   rQ   Q   s(        	 	 	 	 	 	r   r;   rS   )
r   	RawIOBaser"   r#   hasattrr   r)   r*   AttributeErrorrS   )r;   r%   s     r   test_unsupported_not_forwardedrW   P   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 )rZ   r   rF   fnames     r   
<listcomp>z/test_type_stubs_match_lists.<locals>.<listcomp>~   s    BBBU BBBr   c                    g | ]}|d fS )r[   r   r^   s     r   r`   z/test_type_stubs_match_lists.<locals>.<listcomp>   s    ???U%???r   )r   __spec__loaderr<   	importlibabcSourceLoaderr   r   
get_sourcer)   failstrip
startswithrematchgroupappendr	   r
   sort)rc   sourcelinefoundrl   kindexpecteds          r   test_type_stubs_match_listsru   ^   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
   rD   getattrr%   r   	attr_names      r   test_sync_attrs_forwardedrz      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
   rD   r)   r*   rV   rw   rx   s      r   test_sync_attrs_match_wrapperr|      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	   rD   rw   )r%   	meth_names     r   !test_async_methods_generated_oncer      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   r8   r:   __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	   rD   rw   r   argumentr   assert_called_once_with
reset_mock)r%   r   r~   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	   rD   r)   r*   rV   rw   )r%   r   r~   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_filer<   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   r<   r   closedr   s     r   test_open_context_managerr      s     ^D#........       !!^,,,,,8                           8OOOOOs   !A
A"%A"c                    K   t          j        t          j        d                    } t	          | j                  }| j                            d           d | 2              d {V }||k    sJ d S )Nztest
foo
barr   c                "   K   g | 3 d {V }|
6 S r!   r   )rF   rq   s     r   r`   z#test_async_iter.<locals>.<listcomp>   s.      00000000Td0000s   )r"   r#   r   r   listr   seek)r%   rt   results      r   test_async_iterr      s      ,< = =>>JJ&''HA00Z000000000FXr   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*   	Cancelledr6   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#   detachr<   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%)r   r   r   r   )r   r   )r   r   r   r   r7   )r%   r   r   r   r   r&   )r%   r   r   r&   )r   r   r   r&   )r   r   r   r&   )*
__future__r   rd   r   r   rk   typingr   unittestr   unittest.mockr   r)   r"   r   r   trio._file_ior	   r
   r   pathlibfixturer   r   r%   r,   r>   r@   rN   rW   ru   rz   r|   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s   " " " " " "     				 				 				                   " " " " " "                   O O O O O O O O O O NNN ( ( ( ( + + + + # # # #   
# # # #() ) ) )
 
 
 
$ $ $ $% % % %PM M M M( ( ( (P P P P9 9 9 9   (( ( ( (            ' ' ' ' ' 'r   