
    g+                     ~    d dl Z d dlZd dlZd dlZd dlZdZd Zd Z G d de      Z	 G d de      Z
 G d	 d
e      Zy)    Ni?c                       fd}|S )Nc                     t        |       S N)
isinstance)	exceptionretryable_typess    E/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/retrying.py_retry_if_exception_these_typeszD_retry_if_exception_of_type.<locals>._retry_if_exception_these_types   s    )_55     )r   r
   s   ` r	   _retry_if_exception_of_typer      s    6 +*r   c                  j     t               dk(  rt         d         rd } | d         S  fd}|S )z
    Decorator function that instantiates the Retrying object
    @param *dargs: positional arguments passed to Retrying object
    @param **dkw: keyword arguments passed to the Retrying object
       r   c                 B     t        j                          fd       }|S )Nc                  @     t               j                  g| i |S r   Retryingcall)argskwfs     r	   	wrapped_fz-retry.<locals>.wrap_simple.<locals>.wrapped_f+   s     &xzq646266r   sixwraps)r   r   s   ` r	   wrap_simplezretry.<locals>.wrap_simple*   s%    YYq\7 7 r   c                 H     t        j                          fd       }|S )Nc                  B     t        i j                  g| i |S r   r   )r   r   dargsdkwr   s     r	   r   z&retry.<locals>.wrap.<locals>.wrapped_f6   s*    3x.#.33ACCCCr   r   )r   r   r   r    s   ` r	   wrapzretry.<locals>.wrap5   s'    YYq\D D r   )lencallable)r   r    r   r!   s   ``  r	   retryr$   !   s=     5zQ8E!H-	 58$$	 r   c                       e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZd Zd Zed        Zd Zd Z	d Z
d	 Zed
        Zed        Zd Zd Zy)r   Nc                    |dn|| _         |dn|| _        |dn|| _        |dn|| _        |dn|| _        |dn|| _        |	dn|	| _        |dn|| _        |t        n|| _	        |
t        n|
| _
        |dn|| _        || _        || _        g |j                  | j                         |j                  | j                          ||| _        n|fd| _        nt%        | |      | _        d g|j                  | j&                         ||j                  | j(                         ||	j                  | j*                         ||j                  | j,                         ||| _        n|fd| _        nt%        | |      | _        || j0                  | _        n"t5        |t6              rt9        |      }|| _        || j:                  | _        || _        y || _        || _        y )	N   d     r   r   c                 2     t         fdD              S )Nc              3   0   K   | ]  } |        y wr   r   .0r   attemptsdelays     r	   	<genexpr>z6Retrying.__init__.<locals>.<lambda>.<locals>.<genexpr>         4'((E"4   )any)r.   r/   
stop_funcss   ``r	   <lambda>z#Retrying.__init__.<locals>.<lambda>        4,64 1 r   c                       y)Nr   r   )r   kwargss     r	   r5   z#Retrying.__init__.<locals>.<lambda>   s    r   c                 2     t         fdD              S )Nc              3   0   K   | ]  } |        y wr   r   r,   s     r	   r0   z6Retrying.__init__.<locals>.<lambda>.<locals>.<genexpr>   r1   r2   )max)r.   r/   
wait_funcss   ``r	   r5   z#Retrying.__init__.<locals>.<lambda>   r6   r   ) _stop_max_attempt_number_stop_max_delay_wait_fixed_wait_random_min_wait_random_max_wait_incrementing_start_wait_incrementing_increment_wait_exponential_multiplierMAX_WAIT_wait_exponential_max_wait_incrementing_max_wait_jitter_max_before_attempts_after_attemptsappendstop_after_attemptstop_after_delaystopgetattrfixed_sleeprandom_sleepincrementing_sleepexponential_sleepwaitalways_reject_retry_on_exceptionr   tupler   never_reject_retry_on_result_wrap_exception)selfrN   rT   stop_max_attempt_numberstop_max_delay
wait_fixedwait_random_minwait_random_maxwait_incrementing_startwait_incrementing_incrementwait_incrementing_maxwait_exponential_multiplierwait_exponential_maxretry_on_exceptionretry_on_resultwrap_exception	stop_func	wait_funcwait_jitter_maxbefore_attemptsafter_attemptsr4   r<   s                        @@r	   __init__zRetrying.__init__@   s]   2 )0A6M 	% '5&<s.#-#54:%4%</(7(?_(0A6M 	% /6C<W 	) -4A:U 	) -4H:N 	" .5H;P 	# &5%</ /- 
".d556%d334 !DI\DI
  d+DI 00
!d../&/*Ed//0 $/*6d556&26J6Vd445 !DI\DI
  d+DI %'+'9'9D$
 ,u6%@AS%T"'9D$ "$($5$5D!  . %4D!-r   c                      || j                   k\  S )z;Stop after the previous attempt >= stop_max_attempt_number.)r=   r[   previous_attempt_numberdelay_since_first_attempt_mss      r	   rL   zRetrying.stop_after_attempt   s    &$*G*GGGr   c                      || j                   k\  S )z=Stop after the time from the first attempt >= stop_max_delay.)r>   rp   s      r	   rM   zRetrying.stop_after_delay   s    +t/C/CCCr   c                      y)z#Don't sleep at all before retrying.r   r   )rq   rr   s     r	   no_sleepzRetrying.no_sleep   s     r   c                     | j                   S )z0Sleep a fixed amount of time between each retry.)r?   rp   s      r	   rP   zRetrying.fixed_sleep   s    r   c                 V    t        j                  | j                  | j                        S )zISleep a random amount of time between wait_random_min and wait_random_max)randomrandintr@   rA   rp   s      r	   rQ   zRetrying.random_sleep   s    ~~d33T5J5JKKr   c                     | j                   | j                  |dz
  z  z   }|| j                  kD  r| j                  }|dk  rd}|S )z
        Sleep an incremental amount of time after each attempt, starting at
        wait_incrementing_start and incrementing by wait_incrementing_increment
        r   r   )rB   rC   rG   )r[   rq   rr   results       r	   rR   zRetrying.incrementing_sleep   sT    
 ..--1H11LM
 D///00FA:Fr   c                 r    d|z  }| j                   |z  }|| j                  kD  r| j                  }|dk  rd}|S )N   r   )rD   rF   )r[   rq   rr   expr{   s        r	   rS   zRetrying.exponential_sleep   sG    ((22S8D...//FA:Fr   c                      y)NFr   r{   s    r	   rX   zRetrying.never_reject   s    r   c                      y)NTr   r   s    r	   rU   zRetrying.always_reject   s    r   c                     d}|j                   r#|| j                  |j                  d         z  }|S || j                  |j                        z  }|S )NFr   )has_exceptionrV   valuerY   )r[   attemptrejects      r	   should_rejectzRetrying.should_reject   sU      d..w}}Q/?@@F  d++GMM::Fr   c                 \   t        t        t        j                         dz              }d}	 | j                  r| j                  |       	 t	         ||i ||d      }| j                  |      s|j                  | j                        S | j                  r| j                  |       t        t        t        j                         dz              |z
  }| j                  ||      r3| j                  s|j                  r|j                         t        |      | j                  ||      }	| j                  r0t!        j                          | j                  z  }
|	t#        d|
      z   }	t        j$                  |	dz         |dz  }X#  t        j                         }t	        ||d      }Y MxY w)Nr)   r   TFr   g     @@)introundtimerI   Attemptsysexc_infor   getrZ   rJ   rN   r   
RetryErrorrT   rH   rx   r;   sleep)r[   fnr   r8   
start_timeattempt_numberr   tbrr   r   jitters              r	   r   zRetrying.call   sj   tyy{T123
$$%%n5<!"d"5f"5~uM
 %%g.{{4#7#788##$$^4+.uTYY[45G/H+IJ+V(yy)EF++0E0E!++-'$W--		.2NO((#]]_t/D/DDF!C6N2E

56>*aN= <\\^!"nd;s   F #F+)NNNNNNNNNNNNNNFNNNNN)__name__
__module____qualname__rn   rL   rM   staticmethodru   rP   rQ   rR   rS   rX   rU   r   r   r   r   r	   r   r   ?   s      $ $$("$(!+t.lHD   L    ! r   r   c                   $    e Zd ZdZd ZddZd Zy)r   z
    An Attempt encapsulates a call to a target function that may end as a
    normal return value from the function or an Exception depending on what
    occurred during the execution.
    c                 .    || _         || _        || _        y r   )r   r   r   )r[   r   r   r   s       r	   rn   zAttempt.__init__  s    
,*r   c                     | j                   rL|rt        |       t        j                  | j                  d   | j                  d   | j                  d          y| j                  S )z
        Return the return value of this Attempt instance or raise an Exception.
        If wrap_exception is true, this Attempt is wrapped inside of a
        RetryError before being raised.
        r   r   r}   N)r   r   r   reraiser   )r[   rh   s     r	   r   zAttempt.get#  sM      &&DJJqM4::a=$**Q-H::r   c           	          | j                   rKdj                  | j                  dj                  t	        j
                  | j                  d                     S dj                  | j                  | j                        S )NzAttempts: {0}, Error:
{1} r}   zAttempts: {0}, Value: {1})r   formatr   join	traceback	format_tbr   r[   s    r	   __repr__zAttempt.__repr__1  sd    /66##RWWY-@-@A-O%P  /55d6I6I4::VVr   N)F)r   r   r   __doc__rn   r   r   r   r   r	   r   r     s    +
Wr   r   c                       e Zd ZdZd Zd Zy)r   zU
    A RetryError encapsulates the last Attempt instance right before giving up.
    c                     || _         y r   )last_attempt)r[   r   s     r	   rn   zRetryError.__init__?  s
    (r   c                 8    dj                  | j                        S )NzRetryError[{0}])r   r   r   s    r	   __str__zRetryError.__str__B  s     ''(9(9::r   N)r   r   r   r   rn   r   r   r   r	   r   r   :  s    );r   r   )rx   r   r   r   r   rE   r   r$   objectr   r   	Exceptionr   r   r   r	   <module>r      sQ     
 
   +<U v U p Wf  WF	; 	;r   