o
    if                     @   s   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m	Z	 d dlm
Z
 d dlmZ edZejd	ejd
ejej f dZG dd deZdS )    N)sleep)AttemptManager)BaseRetrying)	DoAttempt)DoSleep)RetryCallStateWrappedFnReturnT	WrappedFn.)boundc                       s   e Zd ZU ejegejej f ed< e	fdejegejej f dejddf fddZ
dedejdejdefd	d
Zdejeddf fddZdddZdefddZdedef fddZ  ZS )AsyncRetryingr   kwargsreturnNc                    s   t  jdi | || _d S )N )super__init__r   )selfr   r   	__class__r   J/var/www/html/corbot_env/lib/python3.10/site-packages/tenacity/_asyncio.pyr   $   s   
zAsyncRetrying.__init__fnargsc                    s   |    t| |||d}	 | j|d}t|tr<z||i |I d H }W n ty5   |t  Y nw |	| nt|t
rN|  | |I d H  n|S q)N)retry_objectr   r   r   Tretry_state)beginr   iter
isinstancer   BaseExceptionset_exceptionsysexc_info
set_resultr   prepare_for_next_attemptr   )r   r   r   r   r   doresultr   r   r   __call__(   s"   

zAsyncRetrying.__call__c                 C   s   t d)Nz$AsyncRetrying object is not iterable)	TypeErrorr   r   r   r   __iter__=   s   zAsyncRetrying.__iter__c                 C   s   |    t| d di d| _| S )Nr   )r   r   r   )r   r   _retry_stater'   r   r   r   	__aiter__@   s   zAsyncRetrying.__aiter__c                    s`   	 | j | jd}|d u rtt|trt| jdS t|tr-| j  | |I d H  ntq)NTr   )	r   r)   StopAsyncIterationr   r   r   r   r"   r   )r   r#   r   r   r   	__anext__E   s   


zAsyncRetrying.__anext__c                    sJ   t    t dtjdtjdtjf fdd} j|_ j|_|S )Nr   r   r   c                     s    | i |I d H S )Nr   )r   r   r   r   r   async_wrappedV   s   z*AsyncRetrying.wraps.<locals>.async_wrapped)r   wraps	functoolstAnyretry
retry_with)r   r   r.   r   r-   r   r/   R   s   "zAsyncRetrying.wraps)r   r   )__name__
__module____qualname__r1   Callablefloat	Awaitabler2   __annotations__r   r   r	   r   r%   	Generatorr   r(   r*   r,   r/   __classcell__r   r   r   r   r   !   s    
 4

r   )r0   r   typingr1   asyncior   tenacityr   r   r   r   r   TypeVarr   r8   r:   r2   r	   r   r   r   r   r   <module>   s   
 