a
    xd>                     @   sR  d dl Z d dlmZ d dlmZ d dlZd dlmZmZmZm	Z	 d dl
ZG dd dZdd Zd	d
 Zdd Zedd Zd&ddZdd ZG dd dZe Zzd dl mZmZ W nV ey
   d dlZeddZG dd dejZe Zdd ZeefddZY n0 G dd dZe ej!dr6ej!j"e d d! Z#d"d# Z$d$d% Z%dS )'    N)wraps)	coroutine)getcoroutinestateCORO_CREATEDCORO_CLOSEDCORO_SUSPENDEDc                   @   s   e Zd Zdd ZdS )YieldWrapperc                 C   s
   || _ d S Npayload)selfr    r   M/var/www/html/Ranjet/env/lib/python3.9/site-packages/async_generator/_impl.py__init__   s    zYieldWrapper.__init__N__name__
__module____qualname__r   r   r   r   r   r      s   r   c                 C   s   t | S r	   )r   valuer   r   r   _wrap   s    r   c                 C   s
   t | tS r	   )
isinstancer   Zboxr   r   r   _is_wrapped   s    r   c                 C   s   | j S r	   r
   r   r   r   r   _unwrap   s    r   c                 c   s
   t | V S r	   )r   r   r   r   r   _yield_a   s    r   c                    s   t | I d H S r	   )r   r   r   r   r   yield_i   s    r   c           	         s  dd }t | | }t|dr*|I d H }zt ||I d H }W n. typ } z||}W Y d }~nd }~0 0 zt|I d H }W n ty } z:z
|j}W n ty   Y n0 | I d H  |W Y d }~qrd }~0  t	y } zt
 }z
|j}W n ty   |Y n\0 z|| I d H }W nF tyj } z,||}W Y d }~W Y d }~qW Y d }~n
d }~0 0 W Y d }~qrd }~0 0 z4|d u rt ||I d H }n||I d H }W qr ty } z"||}W Y d }~qW Y d }~qrd }~0 0 qr|S )Nc                 S   s   | j r| j d S d S d S )Nr   )args)er   r   r   unpack_StopAsyncIterationy   s    
z.yield_from_.<locals>.unpack_StopAsyncIteration	__await__)type	__aiter__hasattr	__anext__StopAsyncIterationr   GeneratorExitacloseAttributeErrorBaseExceptionsysexc_infoathrowasend)	Zdelegater   Z_iZ_y_e_rZ_s_m_xr   r   r   yield_from_m   sH    

 


D
&r2   c                   @   s>   e Zd Zdd Zdd Zdd Zdd Zdd
dZdd Zd	S )	ANextIterc                 G   s   || _ || _|| _d S r	   )_it	_first_fn_first_args)r   itfirst_fn
first_argsr   r   r   r      s    zANextIter.__init__c                 C   s   | S r	   r   r   r   r   r   r       s    zANextIter.__await__c                 C   sF   | j d ur4| j }| j}d  | _ | _| j|g|R  S | | jjS d S r	   )r5   r6   _invoker4   __next__)r   r8   r9   r   r   r   r<      s    
zANextIter.__next__c                 C   s   |  | jj|S r	   )r;   r4   sendr   r   r   r   r   r=      s    zANextIter.sendNc                 C   s   |  | jj|||S r	   )r;   r4   throwr   r!   r   	tracebackr   r   r   r?      s    zANextIter.throwc              
   G   s   z|| }W nZ t y: } zt|jW Y d }~n6d }~0  tyf } ztd|W Y d }~n
d }~0 0 t|r~t t|n|S d S )Nz(async_generator raise StopAsyncIteration)StopIterationr%   r   RuntimeErrorr   r   )r   fnr   resultr   r   r   r   r;      s    zANextIter._invoke)NN)	r   r   r   r   r    r<   r=   r?   r;   r   r   r   r   r3      s   	
r3   )get_asyncgen_hooksset_asyncgen_hooksasyncgen_hooks	firstiter	finalizerc                   @   s   e Zd Zdd ZdS )_hooks_storagec                 C   s   d | _ d | _d S r	   rI   r:   r   r   r   r      s    z_hooks_storage.__init__Nr   r   r   r   r   rL      s   rL   c                   C   s   t tjtjdS )NrI   )rH   _hooksrJ   rK   r   r   r   r   rF      s    rF   c                 C   sl   | t ur4| d u st| r | t_ntdt| j|t urh|d u sLt|rT|t_ntdt|jd S )Nz#callable firstiter expected, got {}z#callable finalizer expected, got {})	UNSPECIFIEDcallablerM   rJ   	TypeErrorformatr!   r   rK   rI   r   r   r   rG      s     rG   c                   @   s   e Zd Ze Zdd Zejdk r*dd Zndd Ze	dd Z
e	d	d
 Zdd Zdd ZdddZdd Zdd Zdd ZdS )AsyncGeneratorc                 C   s,   || _ | | _d| _d | _d| _d| _d S )NF)
_coroutiner    r4   
ag_running
_finalizer_closed_hooks_inited)r   r   r   r   r   r   #  s    
zAsyncGenerator.__init__)         c                    s   | S r	   r   r:   r   r   r   r"   4  s    zAsyncGenerator.__aiter__c                 C   s   | S r	   r   r:   r   r   r   r"   8  s    c                 C   s   | j jS r	   )rS   cr_coder:   r   r   r   ag_code?  s    zAsyncGenerator.ag_codec                 C   s   | j jS r	   )rS   cr_framer:   r   r   r   ag_frameC  s    zAsyncGenerator.ag_framec                 C   s   |  | jjS r	   )_do_itr4   r<   r:   r   r   r   r$   P  s    zAsyncGenerator.__anext__c                 C   s   |  | jj|S r	   )r_   r4   r=   r>   r   r   r   r-   S  s    zAsyncGenerator.asendNc                 C   s   |  | jj|||S r	   )r_   r4   r?   r@   r   r   r   r,   V  s    zAsyncGenerator.athrowc                    sl   j sBd_ t \}_|d ur(| tjjdkrBjj t	jt
u rVt  fdd}| S )NTpypyc                      st   j rtdzXz*d_ tjg R  I d H W W d_ S  ty\   jj  Y n0 W d_ nd_ 0 d S )Nz!async generator already executingTF)rT   
ValueErrorr3   r4   r%   _pypy_issue2786_workarounddiscardrS   r   r   r   start_fnr   r   stepi  s    
z#AsyncGenerator._do_it.<locals>.step)rW   rF   rU   r*   implementationnamerb   addrS   r   r   r%   )r   re   r   rJ   rf   r   rd   r   r_   Y  s    zAsyncGenerator._do_itc              	      s~   t | j}|tu s| jrd S d| _|tu r8| j  d S z| tI d H  W n$ tt	fyp   | j
| j Y n
0 tdd S )NT%async_generator ignored GeneratorExit)r   rS   r   rV   r   r4   closer,   r&   r%   rb   rc   rC   )r   stater   r   r   r'   {  s    

zAsyncGenerator.aclosec              	   C   s   | j | j t| jtu r&| j  t| jtu r| js| jd urP| |  nr| 	t
}z\z|d  W n. t
tfy   Y n, ty   tdY n0 td| jjW |  n
|  0 d S )Nrj   zasync_generator {!r} awaited during finalization; install a finalization hook to support this, or wrap it in 'async with aclosing(...):')rb   rc   rS   r   r   rk   r   rV   rU   r,   r&   r=   r%   rB   rC   rQ   r\   co_name)r   Zthrowerr   r   r   __del__  s.    


zAsyncGenerator.__del__)NN)r   r   r   setrb   r   r*   version_infor"   propertyr\   r^   r$   r-   r,   r_   r'   rn   r   r   r   r   rR     s   




"rR   c                    s"   t   fdd}t||_|S )Nc                     s   t  | i |S r	   )rR   )r   kwargscoroutine_makerr   r   async_generator_maker  s    z.async_generator.<locals>.async_generator_maker)r   id_async_gen_function)rt   ru   r   rs   r   async_generator  s    
rx   c                 C   s"   t tdrt| rdS t| tS )N
isasyncgenT)r#   inspectry   r   rR   objr   r   r   ry     s    

ry   c                 C   s,   t tdrt| rdS t| ddt| kS )NisasyncgenfunctionTrw   )r#   rz   r}   getattrrv   r{   r   r   r   r}     s    

r}   )N)&r*   	functoolsr   typesr   rz   r   r   r   r   collections.abccollectionsr   r   r   r   r   r   r2   r3   objectrN   rF   rG   ImportError	threading
namedtuplerH   localrL   rM   rR   r#   abcregisterrx   ry   r}   r   r   r   r   <module>   sB   I

J- 	