Ë
    _§1h$  ã                  óÖ  — 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    úV/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/trio/_tests/test_file_io.pyÚpathr      s   € ä�9‰9�X Ñ&Ó'Ð'ó    c                 óJ   — t        j                  t        j                  ¬«      S )N)Úspec_set)r   ÚMockÚioÚStringIO© r   r   Úwrappedr      s   € ä�9‰9œbŸk™kÔ*Ð*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:   )   s{   € ÷ñ ñ ‹j€GÜ˜'¤2§9¡9Ô-Ð-Ð-ä—‘ Ó(€JÜ�j¤.Ô1Ð1Ð1àˆä	�‰”yÓ	!ñ #Ü�‰‘x“zÔ"÷#÷ #ñ #ú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%   øè ø€ ÒQ¨4¸DÄCÈÃLÒ<Pˆt”s˜:“Ô&Ñ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   sP   ù€ ô ×"Ñ"Ô#6Ó7€Eô ÔQ°5Ô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 «       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   se   € ô”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   `   s}  € ô ×ÑÐ(Ð(Ð(Ü×Ñ×%Ñ%€FÜ�fœiŸm™m×8Ñ8Ô9Ð9Ð9Ü�[‰[˜×*Ñ*¨?Ó;Ó<€Fð ò 1ˆØ! TÒ)Ùð1ô 	�‰Ð/Ô0àò .ˆØ Ò%Ùð.ô 	�‰Ð,Ô-ð $&€EØò 1ˆØ�:‰:Œ< §¡°Ô 8ÙÜ—‘Ð=¸tÓDˆØÑØ#Ÿk™k¨!›nÐ8‘7¸fˆDØ�L‰L˜%Ÿ+™+ a›.¨$Ð/Õ0ð1ô /BÖB U�˜Ò ÐB€HÐBØÔ.>Ö? U�%˜’Ò?Ñ?€Hà	‡J�J„LØ‡M�M„OØ�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Ñ+Øä�z 9Ó-´¸À)Ó1LÒLÐ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 	Ô*÷	+ô �]‰]œ>Ó*ñ 	(Ü�G˜YÔ'÷	(ð 	(ñ(÷	+ð 	+ú÷	(ð 	(úó   ±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Ñ+Øä�z 9Ó-´¸ÀYÓ1OÒOÐ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}   «   sa   € à�?‰?×#Ñ# 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Ñ+Øä�z 9Ó-ˆÜ˜w¨	Ó2ˆáœ8×,Ñ,´h×6FÑ6FÔ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 	Ô*÷	+ô �]‰]œ>Ó*ñ 	(Ü�G˜YÔ'÷	(ð 	(ñ(÷	+ð 	+ú÷	(ð 	(ú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�   Ù   sC   è ø€ Ü�n‰n˜T 3Ó'×'€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“   á   sw   è ø€ Ü—^‘^ D¨#Ó.×.÷ ð °!Ü˜!œ^Ô,Ð,Ð,Ø—8’8Ðˆ|÷÷ ð �8Š8€O‰8ð	 /øð øð ø÷ ÷ ñ ü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Ô0˜TŠdÐ0øÑ0ùÒ0€FÐ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Ÿ?™?Ó+ñ 	Ø—(‘(“*×Ð÷	÷ð �8Š8€O‰8ð ,øð ø÷	ð 	úð ø÷	ð 	ú÷ð ü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Ø‡N�NÔä	ˆh˜T¨QÔ	/ð '°3Ü×$Ñ$ SÓ)ˆä—^‘^ HÓ-ˆ
à#×*Ñ*Ó,×,ˆä˜(¤NÔ3Ð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   