
    g                     n    d Z ddlmZ ddlmZ ddlmZ  G d d      Z G d de      Z G d	 d
ee      Z	y)zVarious base classes.    )	Awaitable)AbstractAsyncContextManager)get_running_loopc                   @     e Zd Zd Zed        Zd Z fdZd Z xZ	S )	AsyncBasec                 .    || _         || _        || _        y N)_file	_executor	_ref_loop)selffileloopexecutors       B/var/www/openai/venv/lib/python3.12/site-packages/aiofiles/base.py__init__zAsyncBase.__init__   s    
!    c                 2    | j                   xs
 t               S r	   )r   r   r   s    r   _loopzAsyncBase._loop   s    ~~3!1!33r   c                     | S )zWe are our own iterator. r   s    r   	__aiter__zAsyncBase.__aiter__   s    r   c                 R    t         |          dz   t        | j                        z   S )Nz
 wrapping )super__repr__reprr
   )r   	__class__s    r   r   zAsyncBase.__repr__   s$    w!L04

3CCCr   c                 R   K   | j                          d{   }|r|S t        7 w)zSimulate normal file iteration.N)readlineStopAsyncIteration)r   lines     r   	__anext__zAsyncBase.__anext__   s'     ]]_$K$$	 %s   '%')
__name__
__module____qualname__r   propertyr   r   r   r#   __classcell__r   s   @r   r   r      s,    
 4 4D%r   r   c                   R     e Zd Z fdZed        Zej                  d        Z xZS )AsyncIndirectBasec                 D    || _         || _        t        |   d ||       y r	   )	_indirect_namer   r   )r   namer   r   indirectr   s        r   r   zAsyncIndirectBase.__init__"   s"    !
tX.r   c                 "    | j                         S r	   )r-   r   s    r   r
   zAsyncIndirectBase._file'   s    ~~r   c                      y r	   r   )r   vs     r   r
   zAsyncIndirectBase._file+   s    r   )r$   r%   r&   r   r'   r
   setterr(   r)   s   @r   r+   r+   !   s4    /
     \\ r   r+   c                   ,    e Zd ZdZdZd Zd Zd Zd Zy)AiofilesContextManagerz/An adjusted async context manager for aiofiles._coro_objc                      || _         d | _        y r	   r7   )r   coros     r   r   zAiofilesContextManager.__init__5   s    
	r   c              #      K   | j                   '| j                  j                         E d {   | _         | j                   S 7 wr	   )r9   r8   	__await__r   s    r   r=   z AiofilesContextManager.__await__9   s6     99#'::#7#7#99DIyy :s   *AAAc                 "   K   |  d {   S 7 wr	   r   r   s    r   
__aenter__z!AiofilesContextManager.__aenter__>   s     zzs   c                    K   t               j                  d | j                  j                  j                  |||       d {    d | _        y 7 wr	   )r   run_in_executorr9   r
   __exit__)r   exc_typeexc_valexc_tbs       r   	__aexit__z AiofilesContextManager.__aexit__A   sH      00$))//**Hgv
 	
 	
 		
s   ?AAAN)	r$   r%   r&   __doc__	__slots__r   r=   r?   rF   r   r   r   r6   r6   0   s    9!I
r   r6   N)
rG   collections.abcr   
contextlibr   asyncior   r   r+   r6   r   r   r   <module>rL      s6     % 2 $% %4	 Y(C r   