
    Hcg                        d dl Z d dlZd dlmZ d dlmZ ej
                  rd dlmZ  G d de      Zej                  eej                  dgej                  e   f   f   Z G d d	e      Z G d
 de      Z G d de      Z G d de      Zy)    N)_utils)
retry_base)RetryCallStatec                   ~    e Zd ZdZej
                  dddefd       Z	 	 	 	 ddZ	 	 	 	 ddZ		 	 	 	 ddZ
	 	 	 	 dd	Zy
)async_retry_basez/Abstract base class for async retry strategies.retry_stater   returnc                    K   y wN selfr   s     Q/var/www/html/bid-api/venv/lib/python3.12/site-packages/tenacity/asyncio/retry.py__call__zasync_retry_base.__call__   s	     s   c                     t        | |      S r   	retry_allr   others     r   __and__zasync_retry_base.__and__!        u%%    c                     t        ||       S r   r   r   s     r   __rand__zasync_retry_base.__rand__&        %%r   c                     t        | |      S r   	retry_anyr   s     r   __or__zasync_retry_base.__or__+   r   r   c                     t        ||       S r   r   r   s     r   __ror__zasync_retry_base.__ror__0   r   r   N)r   *typing.Union[retry_base, async_retry_base]r	   r   )r   r"   r	   r   )__name__
__module____qualname____doc__abcabstractmethodboolr   r   r   r   r!   r   r   r   r   r      s    9*: t  &A&	&
&A&	&
&A&	&
&A&	&r   r   r   c                   j    e Zd ZdZdej
                  egej                  e   f   ddfdZ	dddefdZ
y)	retry_if_exceptionzARetry strategy that retries if an exception verifies a predicate.	predicater	   Nc                     || _         y r   r,   r   r,   s     r   __init__zretry_if_exception.__init__>        #r   r   r   c                    K   |j                   t        d      |j                   j                  r@|j                   j                         }|t        d      | j	                  |       d {   S y7 w)N(__call__() called before outcome was setz(outcome failed but the exception is NoneF)outcomeRuntimeErrorfailed	exceptionr,   )r   r   r7   s      r   r   zretry_if_exception.__call__C   sm     &IJJ%%#++557I "#MNN	222 3s   A)A3+A1,A3)r#   r$   r%   r&   typingCallableBaseException	Awaitabler)   r0   r   r   r   r   r+   r+   ;   sI    K#-&:J:J4:P)PQ#	#

*: 
t 
r   r+   c                   ~    e Zd ZdZdej
                  ej                  gej                  e   f   ddfdZ	dddefdZ
y)	retry_if_resultz+Retries if the result verifies a predicate.r,   r	   Nc                     || _         y r   r.   r/   s     r   r0   zretry_if_result.__init__S   r1   r   r   r   c                    K   |j                   t        d      |j                   j                  s1| j                  |j                   j	                                d {   S y7 w)Nr3   F)r4   r5   r6   r,   resultr   s     r   r   zretry_if_result.__call__X   sW     &IJJ""))(;(;(B(B(DEEE Fs   AA$A"A$)r#   r$   r%   r&   r8   r9   Anyr;   r)   r0   r   r   r   r   r=   r=   P   sM    5#&**v7G7G7M)MN#	#
*: t r   r=   c                   N    e Zd ZdZdej
                  eef   ddfdZddde	fdZ
y)	r   z1Retries if any of the retries condition is valid.retriesr	   Nc                     || _         y r   rC   r   rC   s     r   r0   zretry_any.__init__e   	    r   r   r   c                    K   d}| j                   D ].  }|xs#  t        j                  |      |       d {   }|s- |S  |S 7 w)NFrC   r   wrap_to_async_funcr   r   r@   rs       r   r   zretry_any.__call__h   sQ     AN%AV%>%>q%A+%NNF	    O   4AAAAr#   r$   r%   r&   r8   Unionr   r   r0   r)   r   r   r   r   r   r   b   s<    ;j:J.J!K PT *: t r   r   c                   N    e Zd ZdZdej
                  eef   ddfdZddde	fdZ
y)	r   z/Retries if all the retries condition are valid.rC   r	   Nc                     || _         y r   rE   rF   s     r   r0   zretry_all.__init__t   rG   r   r   r   c                    K   d}| j                   D ].  }|xr#  t        j                  |      |       d {   }|r- |S  |S 7 w)NTrI   rK   s       r   r   zretry_all.__call__w   sQ     AO&Bf&?&?&B;&O OF	   !PrM   rN   r   r   r   r   r   q   s<    9j:J.J!K PT *: t r   r   )r'   r8   tenacityr   r   TYPE_CHECKINGr   r   rO   r9   r;   r)   
RetryBaseTr+   r=   r   r   r   r   r   <module>rV      s        	'&z &8 \\foo'7&8&:J:J4:P&PQQ

) *& $    r   