
    ,h$                       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)y)$    )annotationsN)TYPE_CHECKING)mock)sentinel)_core_file_io)_FILE_ASYNC_METHODS_FILE_SYNC_ATTRSAsyncIOWrapperc                2    t        j                  | dz        S )Ntest)osfspath)tmp_paths    Z/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/trio/_tests/test_file_io.pypathr      s    99X&''    c                 J    t        j                  t        j                        S )N)spec_set)r   MockioStringIO r   r   wrappedr      s    99bkk**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        y # 1 sw Y   y xY w)N )pytestraises	TypeErrorr   r   r   r   r   test_wrap_invalidr&   $   s/    	y	! r  s	   9Ac                 @    G d d      }  |        }t        |t        j                        rJ t        j                  |      }t        |t
              sJ | `t        j                  t              5  t        j                   |               d d d        y # 1 sw Y   y xY w)Nc                      e Zd ZddZddZy)&test_wrap_non_iobase.<locals>.FakeFilec                     y r   r   selfs    r   closez,test_wrap_non_iobase.<locals>.FakeFile.close+       r   c                     y r   r   r+   s    r   writez,test_wrap_non_iobase.<locals>.FakeFile.write.   r.   r   NreturnNone)__name__
__module____qualname__r-   r0   r   r   r   FakeFiler)   *   s    		r   r7   )

isinstancer   IOBaser   r   r   r0   r#   r$   r%   )r7   r   r    s      r   test_wrap_non_iobaser:   )   su      jG'299--(Jj.11	y	! #xz"# # #s   0BBc                $    | j                   |u sJ y 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 y )Nc              3  T   K   | ]  }|t              v s|t              v  ! y wr   dir.0attrr    r   s     r   	<genexpr>z+test_dir_matches_wrapped.<locals>.<genexpr>K   s%     Q4DCL<Pts:&Q   ((c              3  T   K   | ]  }|t              vs|t              v  ! y wr   r?   rA   s     r   rD   z+test_dir_matches_wrapped.<locals>.<genexpr>M   s*      $(TW5MJrE   )r
   unionr	   allany)r    r   attrss   `` r   test_dir_matches_wrappedrK   D   sH     ""#67E Q5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        y # 1 sw Y   y xY w)Nc                      e Zd ZddZy)0test_unsupported_not_forwarded.<locals>.FakeFilec                     y r   r   r+   s    r   unsupported_attrzAtest_unsupported_not_forwarded.<locals>.FakeFile.unsupported_attrT   r.   r   Nr1   )r4   r5   r6   rP   r   r   r   r7   rN   S   s    	r   r7   rP   )
r   	RawIOBaser   r   hasattrr   r#   r$   AttributeErrorrP   )r7   r    s     r   test_unsupported_not_forwardedrT   R   sb    2<<  
+J:%%'9::	~	& $##$ $ $s   %A;;Bc                 .   t         j                  J t         j                  j                  } t        | t        j
                  j                        sJ t        j                  | j                  d            }|D ]  }d|v s n t        j                  d       |D ]  }d|v s n t        j                  d       g }|D ]u  }|j                         r|j                  d      s nRt        j                  d|      }|?|j!                  d	      d
nd}|j#                  |j!                  d      |f       w t$        D cg c]  }|d
f }}|t&        D cg c]  }|df c}z  }|j)                          |j)                          ||k(  sJ yc c}w c c}w )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   )r   __spec__loaderr8   	importlibabcSourceLoaderr   r   
get_sourcer#   failstrip
startswithrematchgroupappendr	   r
   sort)r[   sourcelinefoundrd   kindfnameexpecteds           r   test_type_stubs_match_listsrn   `   sw    ((%%Ffimm8899[[**?;<F  1!T)1 	/0 .%. 	,- $&E 1::< 8=tD#kk!n87fDLL%++a.$/01 /BBU BHB.>?U%??H	JJLMMOH C?s   ?FFc                j    t         D ]*  }|t        |       vrt        | |      t        ||      u r*J  y r   )r
   r@   getattrr    r   	attr_names      r   test_sync_attrs_forwardedrs      s=     & M	C
O+z9-)1LLL	Mr   c                   t         D ]l  }|t        |       v rt        j                  t              5  t        | |       d d d        t        j                  t              5  t        ||       d d d        n y # 1 sw Y   :xY w# 1 sw Y   xY wr   )r
   r@   r#   r$   rS   rp   rq   s      r   test_sync_attrs_match_wrapperru      s     & (	J']]>* 	+J	*	+ ]]>* 	(GY'	( 	((	+ 	+	( 	(   A7B7B 	B	c                j    t         D ]*  }|t        |       vrt        | |      t        | |      u r*J  y r   )r	   r@   rp   )r    	meth_names     r   !test_async_methods_generated_oncery      s;    ( P	C
O+z9-Y1OOO	Pr   c                    | j                   j                  dk(  sJ | j                   j                  dk(  sJ | j                   j                  J d| j                   j                  v sJ y )NreadzAsyncIOWrapper.readzio.StringIO.read)r{   r4   r6   __doc__)r    s    r   test_async_methods_signaturer}      sX    ??##v--??''+@@@??""..!8!8888r   c                d  K   t         D ]  }|t        |       vrt        | |      }t        ||      } |t        j                  t        j
                         d {   }|j                  t        j                  t        j
                         | |       k(  sJ |j                           y 7 Rw)N)keyword)r	   r@   rp   r   argumentr   assert_called_once_with
reset_mock)r    r   rx   methwrapped_methvalues         r   test_async_methods_wrapr      s      ) 	C
O+z9-w	28,,h6F6FGG,,$$ 	- 	
 && Hs   AB0B.AB0c                   t         D ]l  }|t        |       v rt        j                  t              5  t        | |       d d d        t        j                  t              5  t        ||       d d d        n y # 1 sw Y   :xY w# 1 sw Y   xY wr   )r	   r@   r#   r$   rS   rp   )r    r   rx   s      r    test_async_methods_match_wrapperr      s     ) (	J']]>* 	+J	*	+ ]]>* 	(GY'	( 	((	+ 	+	( 	(rv   c                   K   t        j                  | d       d {   }t        |t              sJ |j	                          d {    y 7 /7 wNw)r   	open_filer8   r   acloser   fs     r   	test_openr      s@     nnT3''Aa((
((*	 	( s!   AA)AAAAc                  K   t        j                  | d       d {   4 d {   }t        |t              sJ |j                  rJ d d d       d {    j                  sJ y 7 L7 E7 # 1 d {  7  sw Y   'xY wwr   )r   r   r8   r   closedr   s     r   test_open_context_managerr      sr     ^^D#..  !!^,,88  88O8	 /     sT   BA)BA+B!A/
BA-B+B-B/B5A86B=Bc                   K   t        j                  t        j                  d            } t	        | j
                        }| j
                  j                  d       | 2 cg c3 d {   }|7 6 nc c}w }}||k(  sJ y w)Nztest
foo
barr   )r   r   r   r   listr   seek)r    rm   ri   results       r   test_async_iterr      sm     ,< =>JJ&&'HA%/00Td000F0Xs6   AB A1!A/%A-
&A/)A1-A//A10B c                $  K   t        j                         5 }t        j                  | d       d {   }|j	                          t        j                  t         j                        5  |j                  d       d {    d d d        t        j                  t         j                        5  |j                          d {    d d d        d d d        j                  sJ y 7 7 i# 1 sw Y   hxY w7 3# 1 sw Y   2xY w# 1 sw Y   6xY ww)Nr   a)r   CancelScoper   r   cancelr#   r$   	Cancelledr0   r   r   )r   cscoper   s      r   test_aclose_cancelledr      s     				 ..s++]]5??+ 	''#,	 ]]5??+ 	((*	 88O8 , 	 	 	 	 s   DDC&7D)C*>C(?C*+D.C8C6C8DD&D(C**C3	/D6C88D	=DD	Dc                J  K   | dz  }|j                          t        |dd      5 }t        j                  |      }t	        j
                  |      }|j                          d {   }t        |t              sJ |j                  |u sJ 	 d d d        y 7 0# 1 sw Y   y xY ww)Nfilenamerbr   )mode	buffering)
touchopenr   BufferedReaderr   r   detachr8   r   r   )r   tmp_filerawbufferedr    detacheds         r   test_detach_rewraps_asynciobaser     s     *$HNN	hTQ	/ '3$$S)^^H-
#**,,(N333&&&' '
 -' 's.   $B#>B$B%&B	B#BB B#)r   pathlib.Pathr2   str)r2   	mock.Mock)r   r   r2   AsyncIOWrapper[mock.Mock]r1   )r    r   r   r   r2   r3   )r    r   r2   r3   )r   r   r2   r3   )r   r   r2   r3   )*
__future__r   r\   r   r   rc   typingr   unittestr   unittest.mockr   r#   r   r   r   trio._file_ior	   r
   r   pathlibfixturer   r   r    r&   r:   r<   rK   rT   rn   rs   ru   ry   r}   r   r   r   r   r   r   r   r   r   r   <module>r      sq   "  	 	 	    "     O O ( ( + + # #
#()))) 
)) 
$%PM)MM 
M()(( 
(P9) 
,()(( 
('r   