
    +g$                       S SK Jr  S SKrS SKrS SKrS SKrS SKJr  S SKJ	r	  S SK
Jr  S SKrS SKrS SKJrJr  S SKJrJrJr  \(       a  S SKr\R*                  SS j5       r\R*                  SS	 j5       r\R*                  SS
 j5       rSS jrSS jr      S S jr      S S jrSS jrSS jr      S S jr      S S jr S!S jr!S!S jr"      S S jr#      S S jr$S"S jr%S"S jr&SS jr'S"S jr(S#S jr)g)$    )annotationsN)TYPE_CHECKING)mock)sentinel)_core_file_io)_FILE_ASYNC_METHODS_FILE_SYNC_ATTRSAsyncIOWrapperc                4    [         R                  " U S-  5      $ )Ntest)osfspath)tmp_paths    `/Users/Alptekin/Desktop/izin_takip/venv/lib/python3.13/site-packages/trio/_tests/test_file_io.pypathr      s    99X&''    c                 F    [         R                  " [        R                  S9$ )N)spec_set)r   MockioStringIO r   r   wrappedr      s    99bkk**r   c                .    [         R                  " U 5      $ N)trio	wrap_filer   s    r   
async_filer       s    >>'""r   c                     [         R                  " [        5         [        R                  " S5        S S S 5        g ! , (       d  f       g = f)N )pytestraises	TypeErrorr   r   r   r   r   test_wrap_invalidr&   $   s&    	y	!r 
"	!	!s	   ;
A	c                 d    " S S5      n U " 5       n[        U[        R                  5      (       a   e[        R                  " U5      n[        U[
        5      (       d   eU ?[        R                  " [        5         [        R                  " U " 5       5        S S S 5        g ! , (       d  f       g = f)Nc                  (    \ rS rSrSS jrSS jrSrg)&test_wrap_non_iobase.<locals>.FakeFile*   c                    g r   r   selfs    r   close,test_wrap_non_iobase.<locals>.FakeFile.close+       r   c                    g r   r   r,   s    r   write,test_wrap_non_iobase.<locals>.FakeFile.write.   r0   r   r   NreturnNone)__name__
__module____qualname____firstlineno__r.   r2   __static_attributes__r   r   r   FakeFiler)   *   s    		r   r<   )

isinstancer   IOBaser   r   r   r2   r#   r$   r%   )r<   r   r    s      r   test_wrap_non_iobaser?   )   sx      jG'299----(Jj.1111	y	!xz" 
"	!	!s   <B!!
B/c                &    U R                   UL d   eg r   r   )r    r   s     r   test_wrapped_propertyrA   =   s     (((r   c                   ^ ^ [         R                  " [        5      n[        U U4S jU 5       5      (       d   e[	        U U4S jU 5       5      (       a   eg )Nc              3  `   >#    U  H#  o[        T5      ;   d  M  U[        T5      ;   v   M%     g 7fr   dir.0attrr    r   s     r   	<genexpr>+test_dir_matches_wrapped.<locals>.<genexpr>K   s&     Q54CL<P&ts:&5   ..c              3  `   >#    U  H#  o[        T5      ;  d  M  U[        T5      ;   v   M%     g 7fr   rD   rF   s     r   rI   rJ   M   s)      ,1DW5MJErK   )r
   unionr	   allany)r    r   attrss   `` r   test_dir_matches_wrappedrQ   D   sX     ""#67E Q5QQQQQ ,1     r   c                 &    " S S[         R                  5      n [        R                  " U " 5       5      n[	        UR
                  S5      (       d   e[        R                  " [        5         UR                    S S S 5        g ! , (       d  f       g = f)Nc                      \ rS rSrSS jrSrg)0test_unsupported_not_forwarded.<locals>.FakeFileS   c                    g r   r   r,   s    r   unsupported_attrAtest_unsupported_not_forwarded.<locals>.FakeFile.unsupported_attrT   r0   r   r   Nr4   )r7   r8   r9   r:   rW   r;   r   r   r   r<   rT   S   s    	r   r<   rW   )
r   	RawIOBaser   r   hasattrr   r#   r$   AttributeErrorrW   )r<   r    s     r   test_unsupported_not_forwardedr\   R   s_    2<<  
+J:%%'9::::	~	&## 
'	&	&s   ,B
Bc                 x   [         R                  c   e[         R                  R                  n [        U [        R
                  R                  5      (       d   e[        R                  " U R                  S5      5      nU H  nSU;   d  M    O   [        R                  " S5        U H  nSU;   d  M    O   [        R                  " S5        / nU H  nUR                  5       (       a  UR                  S5      (       d    OX[        R                  " SU5      nUc  ML  UR!                  S	5      b  S
OSnUR#                  UR!                  S5      U45        M     [$         Vs/ s H  ofS
4PM     nnU[&         Vs/ s H  ofS4PM     sn-  nUR)                  5         UR)                  5         X7:X  d   egs  snf s  snf )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__loaderr=   	importlibabcSourceLoaderr   r   
get_sourcer#   failstrip
startswithrematchgroupappendr	   r
   sort)rc   sourcelinefoundrl   kindfnameexpecteds           r   test_type_stubs_match_listsrv   `   sy    (((%%Ffimm889999[[**?;<F !T)  	/0%  	,- $&E::<< 8 8=tD#kk!n87fDLL%++a.$/0  /BB.AU .AHB.>?.>U.>??H	JJLMMO C?s    F28F7c                r    [          H-  nU[        U 5      ;  a  M  [        X5      [        X5      L a  M-   e   g r   )r
   rE   getattrr    r   	attr_names      r   test_sync_attrs_forwardedr{      s5     &	C
O+z-1LLLL	 &r   c                >   [          Hp  nU[        U 5      ;   a  M  [        R                  " [        5         [        X5        S S S 5        [        R                  " [        5         [        X5        S S S 5        Mr     g ! , (       d  f       NA= f! , (       d  f       M  = fr   )r
   rE   r#   r$   r[   rx   ry   s      r   test_sync_attrs_match_wrapperr}      sf     &	J']]>*J* + ]]>*G' +* & +* +*   A<#B<
B
	
B	c                r    [          H-  nU[        U 5      ;  a  M  [        X5      [        X5      L a  M-   e   g r   )r	   rE   rx   )r    	meth_names     r   !test_async_methods_generated_oncer      s3    (	C
O+z-1OOOO	 )r   c                    U R                   R                  S:X  d   eU R                   R                  S:X  d   eU R                   R                  c   eSU R                   R                  ;   d   eg )NreadzAsyncIOWrapper.readzio.StringIO.read)r   r7   r9   __doc__)r    s    r   test_async_methods_signaturer      sa    ??##v---??''+@@@@??""...!8!8888r   c                ^  #    [          H  nU[        U 5      ;  a  M  [        X5      n[        X5      nU" [        R                  [        R
                  S9I S h  vN nUR                  [        R                  [        R
                  S9  XT" 5       :X  d   eUR                  5         M     g  NQ7f)N)keyword)r	   rE   rx   r   argumentr   assert_called_once_with
reset_mock)r    r   r   methwrapped_methvalues         r   test_async_methods_wrapr      s      )	C
O+z-w28,,h6F6FGG,,$$ 	- 	
 &&& ) Hs   AB-B+AB-c                >   [          Hp  nU[        U 5      ;   a  M  [        R                  " [        5         [        X5        S S S 5        [        R                  " [        5         [        X5        S S S 5        Mr     g ! , (       d  f       NA= f! , (       d  f       M  = fr   )r	   rE   r#   r$   r[   rx   )r    r   r   s      r    test_async_methods_match_wrapperr      sf     )	J']]>*J* + ]]>*G' +* ) +* +*r~   c                   #    [         R                  " U S5      I S h  vN n[        U[        5      (       d   eUR	                  5       I S h  vN   g  N4 N7fNw)r   	open_filer=   r   acloser   fs     r   	test_openr      sD     nnT3''Aa((((
((*	 	( s!   AA.AAAAc                6  #    [         R                  " U S5      I S h  vN  IS h  vN n[        U[        5      (       d   eUR                  (       a   eS S S 5      IS h  vN   WR                  (       d   eg  N[ NT N! , IS h  vN  (       d  f       N1= f7fr   )r   r   r=   r   closedr   s     r   test_open_context_managerr      s`     ^^D#....!!^,,,,88| /. 88O8	 /...sT   BA9BA;B+A?B A=!B;B=B?BBBBc                   #    [         R                  " [        R                  " S5      5      n [	        U R
                  5      nU R
                  R                  S5        U  Vs/ s S h  vN o"PM   N
 Os  snf nnX1:X  d   eg 7f)Nztest
foo
barr   )r   r   r   r   listr   seek)r    ru   rq   results       r   test_async_iterr      sf     ,< =>JJ&&'HA%/00Td00F0s6   AB!A3#A1'A/
(A1+A3/A11A32Bc                T  #    [         R                  " 5        n[        R                  " U S5      I S h  vN nUR	                  5         [
        R                  " [         R                  5         UR                  S5      I S h  vN   S S S 5        [
        R                  " [         R                  5         UR                  5       I S h  vN   S S S 5        S S S 5        WR                  (       d   eg  N No! , (       d  f       Ns= f N=! , (       d  f       NA= f! , (       d  f       NJ= f7f)Nr   a)r   CancelScoper   r   cancelr#   r$   	Cancelledr2   r   r   )r   cscoper   s      r   test_aclose_cancelledr      s     				..s++]]5??+''#, , ]]5??+((* , 
 88O8 ,  ,+  ,+ 
	s   D(DC/8D,C3C1C3,D2DDDDD(/D1C33
D	=DD
D	D
D%!D(c                ^  #    U S-  nUR                  5         [        USSS9 n[        R                  " U5      n[        R
                  " U5      nUR                  5       I S h  vN n[        U[        5      (       d   eUR                  UL d   e S S S 5        g  N6! , (       d  f       g = f7f)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&&& 
0	/
 - 
0	/s/   !B-A B#B$,B	B-B
B*&B-)r   pathlib.Pathr5   str)r5   	mock.Mock)r   r   r5   AsyncIOWrapper[mock.Mock]r4   )r    r   r   r   r5   r6   )r    r   r5   r6   )r   r   r5   r6   )r   r   r5   r6   )*
__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?   rA   rQ   r\   rv   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      sq   "  	 	 	    "     O O ( ( + + # #
#()))) 
)) 
$%PM)MM 
M()(( 
(P9) 
,()(( 
('r   