a
    x{Jh|
  ã                   @   sj   d Z ddlmZ ddlmZ ddlmZ G dd„ dƒZG dd„ deƒZG d	d
„ d
eƒZ	G dd„ de	ƒZ
dS )zVarious base classes.é    )Ú	coroutine)Ú	Coroutine)Úget_running_loopc                       s@   e Zd Zdd„ Zedd„ ƒZdd„ Z‡ fdd„Zd	d
„ Z‡  Z	S )Ú	AsyncBasec                 C   s   || _ || _|| _d S ©N)Ú_fileZ	_executorÚ	_ref_loop)ÚselfÚfileÚloopÚexecutor© r   ú?/var/www/shaz/venv/lib/python3.9/site-packages/aiofiles/base.pyÚ__init__   s    zAsyncBase.__init__c                 C   s   | j p
tƒ S r   )r   r   ©r	   r   r   r   Ú_loop   s    zAsyncBase._loopc                 C   s   | S )zWe are our own iterator.r   r   r   r   r   Ú	__aiter__   s    zAsyncBase.__aiter__c                    s   t ƒ  ¡ d t| jƒ S )Nz
 wrapping )ÚsuperÚ__repr__Úreprr   r   ©Ú	__class__r   r   r      s    zAsyncBase.__repr__c                 Ã   s   |   ¡ I dH }|r|S t‚dS )zSimulate normal file iteration.N)ÚreadlineÚStopAsyncIteration)r	   Úliner   r   r   Ú	__anext__   s    zAsyncBase.__anext__)
Ú__name__Ú
__module__Ú__qualname__r   Úpropertyr   r   r   r   Ú__classcell__r   r   r   r   r      s   
r   c                       s6   e Zd Z‡ fdd„Zedd„ ƒZejdd„ ƒZ‡  ZS )ÚAsyncIndirectBasec                    s    || _ || _tƒ  d ||¡ d S r   )Ú	_indirectÚ_namer   r   )r	   Únamer   r   Zindirectr   r   r   r   "   s    zAsyncIndirectBase.__init__c                 C   s   |   ¡ S r   )r"   r   r   r   r   r   '   s    zAsyncIndirectBase._filec                 C   s   d S r   r   )r	   Úvr   r   r   r   +   s    )r   r   r   r   r   r   Úsetterr    r   r   r   r   r!   !   s
   
r!   c                   @   sŠ   e Zd ZdZdd„ Zdd„ Zddd„Zd	d
„ Zedd„ ƒZ	edd„ ƒZ
edd„ ƒZdd„ Zedd„ ƒZdd„ Zdd„ Zdd„ Zdd„ ZdS )Ú_ContextManager©Ú_coroÚ_objc                 C   s   || _ d | _d S r   r(   )r	   Úcoror   r   r   r   3   s    z_ContextManager.__init__c                 C   s   | j  |¡S r   )r)   Úsend)r	   Úvaluer   r   r   r,   7   s    z_ContextManager.sendNc                 C   s>   |d u r| j  |¡S |d u r*| j  ||¡S | j  |||¡S d S r   )r)   Úthrow)r	   ÚtypÚvalÚtbr   r   r   r.   :   s
    z_ContextManager.throwc                 C   s
   | j  ¡ S r   )r)   Úcloser   r   r   r   r2   B   s    z_ContextManager.closec                 C   s   | j jS r   )r)   Úgi_framer   r   r   r   r3   E   s    z_ContextManager.gi_framec                 C   s   | j jS r   )r)   Ú
gi_runningr   r   r   r   r4   I   s    z_ContextManager.gi_runningc                 C   s   | j jS r   )r)   Úgi_coder   r   r   r   r5   M   s    z_ContextManager.gi_codec                 C   s
   |   d ¡S r   )r,   r   r   r   r   Ú__next__Q   s    z_ContextManager.__next__c                 c   s   | j E d H }|S r   ©r)   ©r	   Úrespr   r   r   Ú__iter__T   s    z_ContextManager.__iter__c                 c   s   | j E d H }|S r   r7   r8   r   r   r   Ú	__await__Y   s    z_ContextManager.__await__c                 Ã   s   | j I d H }|S r   r7   r8   r   r   r   r   ]   s    z_ContextManager.__anext__c                 Ã   s   | j I d H | _| jS r   r(   r   r   r   r   Ú
__aenter__a   s    z_ContextManager.__aenter__c                 Ã   s   | j  ¡  d | _ d S r   )r*   r2   )r	   Úexc_typeÚexcr1   r   r   r   Ú	__aexit__e   s    
z_ContextManager.__aexit__)NN)r   r   r   Ú	__slots__r   r,   r.   r2   r   r3   r4   r5   r6   r   r:   r;   r   r<   r?   r   r   r   r   r'   0   s$   




r'   c                   @   s   e Zd ZdZdd„ ZdS )ÚAiofilesContextManagerz/An adjusted async context manager for aiofiles.c                 Ã   s*   t ƒ  d | jjj|||¡I d H  d | _d S r   )r   Zrun_in_executorr*   r   Ú__exit__)r	   r=   Úexc_valÚexc_tbr   r   r   r?   m   s    ÿ
z AiofilesContextManager.__aexit__N)r   r   r   Ú__doc__r?   r   r   r   r   rA   j   s   rA   N)rE   Útypesr   Úcollections.abcr   Úasyncior   r   r!   r'   rA   r   r   r   r   Ú<module>   s   :