a
    (ñ»j=  ã                   @  sÞ  U d dl mZ d dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
mZmZmZmZmZmZmZ d dlZddlmZ ddlmZ e
rºd d	lmZmZmZmZmZmZ d d
lmZ ddl m!Z! h d£Z"de#d< h d£Z$de#d< edƒZ%eddd�Z&edƒZ'eddd�Z(eddd�Z)ede*e+dd�Z,ede*e+dd�Z-e
�r|d dlm.Z.m/Z/ G dd„ de/ƒZ0G dd„ de/ƒZ1G d d!„ d!e/ƒZ2G d"d#„ d#e/ƒZ3G d$d%„ d%e/ƒZ4G d&d'„ d'e/e( ƒZ5G d(d)„ d)e/ƒZ6G d*d+„ d+e/ƒZ7G d,d-„ d-e/ƒZ8G d.d/„ d/e/ƒZ9G d0d1„ d1e/ƒZ:G d2d3„ d3e/ƒZ;G d4d5„ d5e/ƒZ<G d6d7„ d7e/ƒZ=G d8d9„ d9e/ƒZ>G d:d;„ d;e/e, ƒZ?G d<d=„ d=e/ƒZ@G d>d?„ d?e/ƒZAG d@dA„ dAe/e, ƒZBG dBdC„ dCe/ƒZCG dDdE„ dEe/e, ƒZDG dFdG„ dGe/ƒZEG dHdI„ dIe/ƒZFG dJdK„ dKe/e, ƒZGG dLdM„ dMe/e ƒZHG dNdO„ dOe/ƒZIG dPdQ„ dQe/ƒZJG dRdS„ dSe/ƒZKG dTdU„ dUe/e) ƒZLG dVdW„ dWe/e) ƒZMG dXdY„ dYe/e, ƒZNG dZd[„ d[e/e( ƒZOG d\d]„ d]e/ƒZPG d^d_„ d_eee& ƒZQed`eRf ZSee*eRgeRf ZTed‡dcdddedfdfdfdgdhdidjœ	dkdl„ƒZUedˆdcdmdndodododgdhdpdjœ	dqdl„ƒZUed‰dcdrdsdodododgdhdtdjœ	dudl„ƒZUedŠdcdvdsdodododgdhdwdjœ	dxdl„ƒZUed‹dcdydsdodododgdhdzdjœ	d{dl„ƒZUedŒdcdmdedodododgdhd|djœ	d}dl„ƒZUed�dcd~dedfdfdfdgdhddjœ	d€dl„ƒZUdŽdcd~dedfdfdfdgdhd�djœ	d‚dl„ZUddƒd„œd…d†„ZVdS )�é    )ÚannotationsN)ÚCallableÚIterable)Úpartial)	ÚIOÚTYPE_CHECKINGÚAnyÚAnyStrÚBinaryIOÚGenericÚTypeVarÚUnionÚoverloadé   )Úasync_wraps)ÚAsyncResource)ÚOpenBinaryModeÚOpenBinaryModeReadingÚOpenBinaryModeUpdatingÚOpenBinaryModeWritingÚOpenTextModeÚStrOrBytesPath)ÚLiteral)ÚCapacityLimiter>   ÚisattyÚnameÚbufferÚencodingÚseekableÚwritableÚclosefdÚclosedÚnewlinesÚrawÚmodeÚline_bufferingÚ	getbufferÚgetvalueÚreadableÚfilenoÚerrorszset[str]Ú_FILE_SYNC_ATTRS>   ÚseekÚreadlineÚreadallÚreadintoÚflushÚwriteÚtruncateÚread1ÚpeekÚ
writelinesÚ	readinto1Ú	readlinesÚtellÚreadÚ_FILE_ASYNC_METHODSÚFileTÚFileT_coT)Ú	covariantÚTÚT_coÚT_contra)ÚcontravariantÚ	AnyStr_coÚAnyStr_contra)ÚBufferÚProtocolc                   @  s   e Zd Zeddœdd„ƒZdS )Ú
_HasClosedÚbool©Úreturnc                 C  s   d S ©N© ©ÚselfrK   rK   ú3E:\soccer\ml_env\Lib\site-packages\trio/_file_io.pyr!   i   s    z_HasClosed.closedN)Ú__name__Ú
__module__Ú__qualname__Úpropertyr!   rK   rK   rK   rN   rF   h   s   rF   c                   @  s   e Zd Zeddœdd„ƒZdS )Ú_HasEncodingÚstrrH   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r   m   s    z_HasEncoding.encodingN)rO   rP   rQ   rR   r   rK   rK   rK   rN   rS   l   s   rS   c                   @  s   e Zd Zeddœdd„ƒZdS )Ú
_HasErrorsú
str | NonerH   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r*   q   s    z_HasErrors.errorsN)rO   rP   rQ   rR   r*   rK   rK   rK   rN   rU   p   s   rU   c                   @  s   e Zd Zddœdd„ZdS )Ú
_HasFileNoÚintrH   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r)   u   ó    z_HasFileNo.filenoN)rO   rP   rQ   r)   rK   rK   rK   rN   rW   t   s   rW   c                   @  s   e Zd Zddœdd„ZdS )Ú
_HasIsATTYrG   rH   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r   x   rY   z_HasIsATTY.isattyN)rO   rP   rQ   r   rK   rK   rK   rN   rZ   w   s   rZ   c                   @  s   e Zd Zeddœdd„ƒZdS )Ú_HasNewlinesr?   rH   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r"   |   s    z_HasNewlines.newlinesN)rO   rP   rQ   rR   r"   rK   rK   rK   rN   r[   z   s   r[   c                   @  s   e Zd Zddœdd„ZdS )Ú_HasReadablerG   rH   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r(   €   rY   z_HasReadable.readableN)rO   rP   rQ   r(   rK   rK   rK   rN   r\      s   r\   c                   @  s   e Zd Zddœdd„ZdS )Ú_HasSeekablerG   rH   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r   ƒ   rY   z_HasSeekable.seekableN)rO   rP   rQ   r   rK   rK   rK   rN   r]   ‚   s   r]   c                   @  s   e Zd Zddœdd„ZdS )Ú_HasWritablerG   rH   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r   †   rY   z_HasWritable.writableN)rO   rP   rQ   r   rK   rK   rK   rN   r^   …   s   r^   c                   @  s   e Zd Zeddœdd„ƒZdS )Ú
_HasBufferr
   rH   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r   ‰   s    z_HasBuffer.bufferN)rO   rP   rQ   rR   r   rK   rK   rK   rN   r_   ˆ   s   r_   c                   @  s   e Zd Zeddœdd„ƒZdS )Ú_HasRawúio.RawIOBaserH   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r#   �   s    z_HasRaw.rawN)rO   rP   rQ   rR   r#   rK   rK   rK   rN   r`   Œ   s   r`   c                   @  s   e Zd Zeddœdd„ƒZdS )Ú_HasLineBufferingrG   rH   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r%   ‘   s    z _HasLineBuffering.line_bufferingN)rO   rP   rQ   rR   r%   rK   rK   rK   rN   rb   �   s   rb   c                   @  s   e Zd Zeddœdd„ƒZdS )Ú_HasCloseFDrG   rH   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r    •   s    z_HasCloseFD.closefdN)rO   rP   rQ   rR   r    rK   rK   rK   rN   rc   ”   s   rc   c                   @  s   e Zd Zeddœdd„ƒZdS )Ú_HasNamerT   rH   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r   ™   s    z_HasName.nameN)rO   rP   rQ   rR   r   rK   rK   rK   rN   rd   ˜   s   rd   c                   @  s   e Zd Zeddœdd„ƒZdS )Ú_HasModerT   rH   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r$   �   s    z_HasMode.modeN)rO   rP   rQ   rR   r$   rK   rK   rK   rN   re   œ   s   re   c                   @  s   e Zd Zddœdd„ZdS )Ú_CanGetValuerB   rH   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r'   ¡   rY   z_CanGetValue.getvalueN)rO   rP   rQ   r'   rK   rK   rK   rN   rf       s   rf   c                   @  s   e Zd Zddœdd„ZdS )Ú_CanGetBufferÚ
memoryviewrH   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r&   ¤   rY   z_CanGetBuffer.getbufferN)rO   rP   rQ   r&   rK   rK   rK   rN   rg   £   s   rg   c                   @  s   e Zd Zddœdd„ZdS )Ú	_CanFlushÚNonerH   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r0   §   rY   z_CanFlush.flushN)rO   rP   rQ   r0   rK   rK   rK   rN   ri   ¦   s   ri   c                   @  s   e Zd Zddddœdd„ZdS )	Ú_CanRead.ú
int | NonerB   ©ÚsizerI   c                C  s   d S rJ   rK   ©rM   rn   rK   rK   rN   r9   ª   rY   z_CanRead.readN).)rO   rP   rQ   r9   rK   rK   rK   rN   rk   ©   s   rk   c                   @  s   e Zd Zddddœdd„ZdS )	Ú	_CanRead1.rl   Úbytesrm   c                C  s   d S rJ   rK   ro   rK   rK   rN   r3   ­   rY   z_CanRead1.read1N).)rO   rP   rQ   r3   rK   rK   rK   rN   rp   ¬   s   rp   c                   @  s   e Zd Zddœdd„ZdS )Ú_CanReadAllrB   rH   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r.   °   rY   z_CanReadAll.readallN)rO   rP   rQ   r.   rK   rK   rK   rN   rr   ¯   s   rr   c                   @  s   e Zd Zdddœdd„ZdS )Ú_CanReadIntorD   rl   )ÚbufrI   c                C  s   d S rJ   rK   ©rM   rt   rK   rK   rN   r/   ³   rY   z_CanReadInto.readintoN)rO   rP   rQ   r/   rK   rK   rK   rN   rs   ²   s   rs   c                   @  s   e Zd Zdddœdd„ZdS )Ú_CanReadInto1rD   rX   )r   rI   c                C  s   d S rJ   rK   ©rM   r   rK   rK   rN   r6   ¶   rY   z_CanReadInto1.readinto1N)rO   rP   rQ   r6   rK   rK   rK   rN   rv   µ   s   rv   c                   @  s   e Zd Zddddœdd„ZdS )	Ú_CanReadLine.rX   rB   rm   c                C  s   d S rJ   rK   ro   rK   rK   rN   r-   ¹   rY   z_CanReadLine.readlineN).)rO   rP   rQ   r-   rK   rK   rK   rN   rx   ¸   s   rx   c                   @  s   e Zd Zddddœdd„ZdS )	Ú_CanReadLines.rX   úlist[AnyStr])ÚhintrI   c                C  s   d S rJ   rK   )rM   r{   rK   rK   rN   r7   ¼   rY   z_CanReadLines.readlinesN).)rO   rP   rQ   r7   rK   rK   rK   rN   ry   »   s   ry   c                   @  s    e Zd Zdddddœdd„ZdS )Ú_CanSeekr   rX   )ÚtargetÚwhencerI   c                C  s   d S rJ   rK   ©rM   r}   r~   rK   rK   rN   r,   ¿   rY   z_CanSeek.seekN)r   )rO   rP   rQ   r,   rK   rK   rK   rN   r|   ¾   s   r|   c                   @  s   e Zd Zddœdd„ZdS )Ú_CanTellrX   rH   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r8   Â   rY   z_CanTell.tellN)rO   rP   rQ   r8   rK   rK   rK   rN   r€   Á   s   r€   c                   @  s   e Zd Zddddœdd„ZdS )	Ú_CanTruncate.rl   rX   rm   c                C  s   d S rJ   rK   ro   rK   rK   rN   r2   Å   rY   z_CanTruncate.truncateN).)rO   rP   rQ   r2   rK   rK   rK   rN   r�   Ä   s   r�   c                   @  s   e Zd Zdddœdd„ZdS )Ú	_CanWriter@   rX   )ÚdatarI   c                C  s   d S rJ   rK   ©rM   rƒ   rK   rK   rN   r1   È   rY   z_CanWrite.writeN)rO   rP   rQ   r1   rK   rK   rK   rN   r‚   Ç   s   r‚   c                   @  s   e Zd Zdddœdd„ZdS )Ú_CanWriteLineszIterable[T_contra]rj   )ÚlinesrI   c                C  s   d S rJ   rK   ©rM   r†   rK   rK   rN   r5   Ì   rY   z_CanWriteLines.writelinesN)rO   rP   rQ   r5   rK   rK   rK   rN   r…   Ê   s   r…   c                   @  s   e Zd Zddddœdd„ZdS )	Ú_CanPeekr   rX   rB   rm   c                C  s   d S rJ   rK   ro   rK   rK   rN   r4   Ï   rY   z_CanPeek.peekN)r   )rO   rP   rQ   r4   rK   rK   rK   rN   rˆ   Î   s   rˆ   c                   @  s   e Zd Zddœdd„ZdS )Ú
_CanDetachr?   rH   c                 C  s   d S rJ   rK   rL   rK   rK   rN   ÚdetachÓ   rY   z_CanDetach.detachN)rO   rP   rQ   rŠ   rK   rK   rK   rN   r‰   Ñ   s   r‰   c                   @  s   e Zd Zddœdd„ZdS )Ú	_CanCloserj   rH   c                 C  s   d S rJ   rK   rL   rK   rK   rN   ÚcloseÖ   rY   z_CanClose.closeN)rO   rP   rQ   rŒ   rK   rK   rK   rN   r‹   Õ   s   r‹   c                      sÚ  e Zd ZdZdddœdd„Zeddœdd	„ƒZesBd
ddœdd„Zddœ‡ fdd„Z	ddœdd„Z
dddœdd„Zdddœdd„Zdddœdd „Ze�rÒed!d"dœd#d$„ƒZed%d
dœd&d'„ƒZed(d)dœd*d+„ƒZed,d-dœd.d/„ƒZed0d1dœd2d3„ƒZed4d5dœd6d7„ƒZed8d9dœd:d;„ƒZed<d"dœd=d>„ƒZed?d
dœd@dA„ƒZedBd
dœdCdD„ƒZdEd9dœdFdG„ZdHd"dœdIdJ„ZdKd"dœdLdM„ZdNd"dœdOdP„ZdQd"dœdRdS„ZdTddœdUdV„ZdWdXdœdYdZ„Zd[ddœd\d]„Zd’d_d`ddaœdbdc„Z d“ddd`dedaœdfdg„Z!dhddœdidj„Z"dkdld`dmœdndo„Z#d”dd9ddaœdpdq„Z$drdsdœdtdu„Z%d•dwd9d9d9dxœdydz„Z&d{d9dœd|d}„Z'd–dd`d9daœd€d�„Z(d‚d-d9dƒœd„d…„Z)d†d‡ddˆœd‰dŠ„Z*d‹dld9dŒœd�dŽ„Z+d—d�d9ddaœd�d‘„Z,‡  Z-S )˜ÚAsyncIOWrapperaE  A generic :class:`~io.IOBase` wrapper that implements the :term:`asynchronous
    file object` interface. Wrapped methods that could block are executed in
    :meth:`trio.to_thread.run_sync`.

    All properties and methods defined in :mod:`~io` are exposed by this
    wrapper, if they exist in the wrapped file object.
    r<   rj   ©ÚfilerI   c                 C  s
   || _ d S rJ   ©Ú_wrapped)rM   r�   rK   rK   rN   Ú__init__ä   s    zAsyncIOWrapper.__init__rH   c                 C  s   | j S )z.object: A reference to the wrapped file objectr�   rL   rK   rK   rN   Úwrappedç   s    zAsyncIOWrapper.wrappedrT   Úobject)r   rI   c                   sl   |t v rt| j|ƒS |tv r`t| j|ƒ‰ t| j| jj|ƒddddœ‡ fdd„ƒ}t| ||ƒ |S t|ƒ‚d S )NzCallable[..., T]z,object | str | bool | CapacityLimiter | Noner>   )ÚargsÚkwargsrI   c                  Ÿ  s(   t ˆ g| ¢R i |¤Ž}tj |¡I d H S rJ   )r   ÚtrioÚ	to_threadÚrun_sync)r•   r–   Úfunc©ÚmethrK   rN   Úwrapperõ   s    z+AsyncIOWrapper.__getattr__.<locals>.wrapper)r+   Úgetattrr‘   r:   r   Ú	__class__ÚsetattrÚAttributeError)rM   r   r�   rK   r›   rN   Ú__getattr__ï   s    zAsyncIOWrapper.__getattr__zIterable[str]c                   sB   t tƒ  ¡ ƒ}| ‡ fdd„tD ƒ¡ | ‡ fdd„tD ƒ¡ |S )Nc                 3  s   | ]}t ˆ j|ƒr|V  qd S rJ   ©Úhasattrr“   ©Ú.0ÚarL   rK   rN   Ú	<genexpr>  rY   z)AsyncIOWrapper.__dir__.<locals>.<genexpr>c                 3  s   | ]}t ˆ j|ƒr|V  qd S rJ   r£   r¥   rL   rK   rN   r¨     rY   )ÚsetÚsuperÚ__dir__Úupdater+   r:   )rM   Úattrs©rŸ   rL   rN   r«     s    zAsyncIOWrapper.__dir__zAsyncIOWrapper[FileT_co]c                 C  s   | S rJ   rK   rL   rK   rK   rN   Ú	__aiter__	  s    zAsyncIOWrapper.__aiter__z$AsyncIOWrapper[_CanReadLine[AnyStr]]r	   )rM   rI   c                 Ã  s   |   ¡ I d H }|r|S t‚d S rJ   )r-   ÚStopAsyncIteration)rM   ÚlinerK   rK   rN   Ú	__anext__  s    zAsyncIOWrapper.__anext__zAsyncIOWrapper[_CanDetach[T]]zAsyncIOWrapper[T]c                 Ã  s   t j | jj¡I dH }t|ƒS )z�Like :meth:`io.BufferedIOBase.detach`, but async.

        This also re-wraps the result in a new :term:`asynchronous file object`
        wrapper.

        N)r—   r˜   r™   r‘   rŠ   Ú	wrap_file)rM   r#   rK   rK   rN   rŠ     s    zAsyncIOWrapper.detachzAsyncIOWrapper[_CanClose]c                 Ã  sV   t jdd��& t j | jj¡I dH  W d  ƒ n1 s80    Y  t j ¡ I dH  dS )zÇLike :meth:`io.IOBase.close`, but async.

        This is also shielded from cancellation; if a cancellation scope is
        cancelled, the wrapped file object will still be safely closed.

        T)ÚshieldN)r—   ZCancelScoper˜   r™   r‘   rŒ   ZlowlevelZcheckpoint_if_cancelledrL   rK   rK   rN   Úaclose  s    	4zAsyncIOWrapper.aclosezAsyncIOWrapper[_HasClosed]rG   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r!   /  s    zAsyncIOWrapper.closedzAsyncIOWrapper[_HasEncoding]c                 C  s   d S rJ   rK   rL   rK   rK   rN   r   1  s    zAsyncIOWrapper.encodingzAsyncIOWrapper[_HasErrors]rV   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r*   3  s    zAsyncIOWrapper.errorszAsyncIOWrapper[_HasNewlines[T]]r>   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r"   5  s    zAsyncIOWrapper.newlineszAsyncIOWrapper[_HasBuffer]r
   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r   7  s    zAsyncIOWrapper.bufferzAsyncIOWrapper[_HasRaw]ra   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r#   9  s    zAsyncIOWrapper.rawz!AsyncIOWrapper[_HasLineBuffering]rX   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r%   ;  s    zAsyncIOWrapper.line_bufferingzAsyncIOWrapper[_HasCloseFD]c                 C  s   d S rJ   rK   rL   rK   rK   rN   r    =  s    zAsyncIOWrapper.closefdzAsyncIOWrapper[_HasName]c                 C  s   d S rJ   rK   rL   rK   rK   rN   r   ?  s    zAsyncIOWrapper.namezAsyncIOWrapper[_HasMode]c                 C  s   d S rJ   rK   rL   rK   rK   rN   r$   A  s    zAsyncIOWrapper.modezAsyncIOWrapper[_HasFileNo]c                 C  s   d S rJ   rK   rL   rK   rK   rN   r)   D  rY   zAsyncIOWrapper.filenozAsyncIOWrapper[_HasIsATTY]c                 C  s   d S rJ   rK   rL   rK   rK   rN   r   E  rY   zAsyncIOWrapper.isattyzAsyncIOWrapper[_HasReadable]c                 C  s   d S rJ   rK   rL   rK   rK   rN   r(   F  rY   zAsyncIOWrapper.readablezAsyncIOWrapper[_HasSeekable]c                 C  s   d S rJ   rK   rL   rK   rK   rN   r   G  rY   zAsyncIOWrapper.seekablezAsyncIOWrapper[_HasWritable]c                 C  s   d S rJ   rK   rL   rK   rK   rN   r   H  rY   zAsyncIOWrapper.writablez$AsyncIOWrapper[_CanGetValue[AnyStr]]c                 C  s   d S rJ   rK   rL   rK   rK   rN   r'   I  rY   zAsyncIOWrapper.getvaluezAsyncIOWrapper[_CanGetBuffer]rh   c                 C  s   d S rJ   rK   rL   rK   rK   rN   r&   J  rY   zAsyncIOWrapper.getbufferzAsyncIOWrapper[_CanFlush]c                 Ã  s   d S rJ   rK   rL   rK   rK   rN   r0   K  rY   zAsyncIOWrapper.flushéÿÿÿÿz AsyncIOWrapper[_CanRead[AnyStr]]rl   )rM   rn   rI   c                Ã  s   d S rJ   rK   ro   rK   rK   rN   r9   L  rY   zAsyncIOWrapper.readzAsyncIOWrapper[_CanRead1]rq   c                Ã  s   d S rJ   rK   ro   rK   rK   rN   r3   M  rY   zAsyncIOWrapper.read1z#AsyncIOWrapper[_CanReadAll[AnyStr]]c                 Ã  s   d S rJ   rK   rL   rK   rK   rN   r.   N  rY   zAsyncIOWrapper.readallzAsyncIOWrapper[_CanReadInto]rD   )rM   rt   rI   c                Ã  s   d S rJ   rK   ru   rK   rK   rN   r/   O  rY   zAsyncIOWrapper.readintoc                Ã  s   d S rJ   rK   ro   rK   rK   rN   r-   P  rY   zAsyncIOWrapper.readlinez%AsyncIOWrapper[_CanReadLines[AnyStr]]rz   c                 Ã  s   d S rJ   rK   rL   rK   rK   rN   r7   Q  rY   zAsyncIOWrapper.readlinesr   zAsyncIOWrapper[_CanSeek])rM   r}   r~   rI   c                Ã  s   d S rJ   rK   r   rK   rK   rN   r,   R  rY   zAsyncIOWrapper.seekzAsyncIOWrapper[_CanTell]c                 Ã  s   d S rJ   rK   rL   rK   rK   rN   r8   S  rY   zAsyncIOWrapper.tellNzAsyncIOWrapper[_CanTruncate]c                Ã  s   d S rJ   rK   ro   rK   rK   rN   r2   T  rY   zAsyncIOWrapper.truncatezAsyncIOWrapper[_CanWrite[T]])rM   rƒ   rI   c                Ã  s   d S rJ   rK   r„   rK   rK   rN   r1   U  rY   zAsyncIOWrapper.writez!AsyncIOWrapper[_CanWriteLines[T]]zIterable[T])rM   r†   rI   c                Ã  s   d S rJ   rK   r‡   rK   rK   rN   r5   V  rY   zAsyncIOWrapper.writelineszAsyncIOWrapper[_CanReadInto1])rM   r   rI   c                Ã  s   d S rJ   rK   rw   rK   rK   rN   r6   W  rY   zAsyncIOWrapper.readinto1z AsyncIOWrapper[_CanPeek[AnyStr]]c                Ã  s   d S rJ   rK   ro   rK   rK   rN   r4   X  rY   zAsyncIOWrapper.peek)r¶   )r¶   )r¶   )r   )N)r   ).rO   rP   rQ   Ú__doc__r’   rR   r“   r   r¢   r«   r¯   r²   rŠ   rµ   r!   r   r*   r"   r   r#   r%   r    r   r$   r)   r   r(   r   r   r'   r&   r0   r9   r3   r.   r/   r-   r7   r,   r8   r2   r1   r5   r6   r4   Ú__classcell__rK   rK   r®   rN   r�   Û   sj   r�   r   Úrr¶   Ú	_OpenFiler   rX   rV   rG   z_Opener | Nonez AsyncIOWrapper[io.TextIOWrapper])	r�   r$   Ú	bufferingr   r*   Únewliner    ÚopenerrI   c                 Ã  s   d S rJ   rK   ©r�   r$   r»   r   r*   r¼   r    r½   rK   rK   rN   Ú	open_file`  s    
r¿   r   z
Literal[0]rj   zAsyncIOWrapper[io.FileIO]c                 Ã  s   d S rJ   rK   r¾   rK   rK   rN   r¿   m  s    
r   zLiteral[-1, 1]z!AsyncIOWrapper[io.BufferedRandom]c                 Ã  s   d S rJ   rK   r¾   rK   rK   rN   r¿   z  s    
r   z!AsyncIOWrapper[io.BufferedWriter]c                 Ã  s   d S rJ   rK   r¾   rK   rK   rN   r¿   ‡  s    
r   z!AsyncIOWrapper[io.BufferedReader]c                 Ã  s   d S rJ   rK   r¾   rK   rK   rN   r¿   ”  s    
zAsyncIOWrapper[BinaryIO]c                 Ã  s   d S rJ   rK   r¾   rK   rK   rN   r¿   ¡  s    
rT   zAsyncIOWrapper[IO[Any]]c                 Ã  s   d S rJ   rK   r¾   rK   rK   rN   r¿   ®  s    
zAsyncIOWrapper[object]c           	      Ã  s,   t tj tj| |||||||¡	I dH ƒ}|S )a(  Asynchronous version of :func:`open`.

    Returns:
        An :term:`asynchronous file object`

    Example::

        async with await trio.open_file(filename) as f:
            async for line in f:
                pass

        assert f.closed

    See also:
      :func:`trio.Path.open`

    N)r³   r—   r˜   r™   ÚioÚopen)	r�   r$   r»   r   r*   r¼   r    r½   Úfile_rK   rK   rN   r¿   »  s    ÷ÿzAsyncIOWrapper[FileT]rŽ   c                   sB   dddœ‡ fdd„}|dƒr,|dƒs:|dƒs:t ˆ › d	�ƒ‚tˆ ƒS )
a[  This wraps any file object in a wrapper that provides an asynchronous
    file object interface.

    Args:
        file: a :term:`file object`

    Returns:
        An :term:`asynchronous file object` that wraps ``file``

    Example::

        async_file = trio.wrap_file(StringIO('asdf'))

        assert await async_file.read() == 'asdf'

    rT   rG   )ÚattrrI   c                   s   t ˆ | ƒottˆ | ƒƒS rJ   )r¤   Úcallablerž   )rÃ   ©r�   rK   rN   Úhasø  s    zwrap_file.<locals>.hasrŒ   r9   r1   zI does not implement required duck-file methods: close and (read or write))Ú	TypeErrorr�   )r�   rÆ   rK   rÅ   rN   r³   æ  s    ÿr³   )r¹   r¶   NNNTN)NNNTN)r¶   NNNTN)r¶   NNNTN)r¶   NNNTN)NNNTN)r¶   NNNTN)r¹   r¶   NNNTN)WÚ
__future__r   rÀ   Úcollections.abcr   r   Ú	functoolsr   Útypingr   r   r   r	   r
   r   r   r   r   r—   Z_utilr   Úabcr   Z	_typeshedr   r   r   r   r   r   Ztyping_extensionsr   Z_syncr   r+   Ú__annotations__r:   r;   r<   r>   r?   r@   rT   rq   rB   rC   rD   rE   rF   rS   rU   rW   rZ   r[   r\   r]   r^   r_   r`   rb   rc   rd   re   rf   rg   ri   rk   rp   rr   rs   rv   rx   ry   r|   r€   r�   r‚   r…   rˆ   r‰   r‹   r�   rX   rº   Z_Openerr¿   r³   rK   rK   rK   rN   Ú<module>   sö   ,         ø"     ø"      ø"      ø"      ø"     ø"      ø"       ø +