
    i/                         d dl Z d dlZd dlZd dlZd dlZd dlmZ dZd Zd Z	da
daddZ G d d	e      Z G d
 de      Z G d de      Zy)    Nwrapsi?c                       fd}|S )Nc                     t        |       S N)
isinstance)	exceptionretryable_typess    B/var/www/stems/demucs_env/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                 .     t                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   r   )r   r   s   ` r   wrap_simplezretry.<locals>.wrap_simple)   s!    1X7 7 r   c                 4     t                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_f5   s*    3x.#.33ACCCCr   r   )r   r   r   r   s   ` r   wrapzretry.<locals>.wrap4   s#    1XD D r   )lencallable)r   r   r   r    s   ``  r   retryr#       s=     5zQ8E!H-	 58$$	 r   Fc                     | dv rat         t        j                  t              a | :t        s4dat         j                  t        j                                dt         _        t         S | S )N)TNTF)_default_loggerlogging	getLogger__name___configured_null_logger
addHandlerNullHandler	propagate)loggers    r   _pick_loggerr.   @   sZ    
 "%//9O>"9&*#&&w':':'<=(-O%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|| _        || _        || _        t        |      | _        g |j!                  | j"                         |j!                  | j$                         ||| _        n|fd| _        nt)        | |      | _        d g|j!                  | j*                         ||j!                  | j,                         ||	j!                  | j.                         ||j!                  | j0                         ||| _        n|fd| _        nt)        | |      | _        || j4                  | _        n(t9        |t:        t<        f      rt?        |      }|| _        || 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)r8   r9   
stop_funcss   ``r   <lambda>z#Retrying.__init__.<locals>.<lambda>        4,64 1 r   c                       y)Nr   r   )r   kwargss     r   r?   z#Retrying.__init__.<locals>.<lambda>   s    r   c                 2     t         fdD              S )Nc              3   0   K   | ]  } |        y wr   r   r6   s     r   r:   z6Retrying.__init__.<locals>.<lambda>.<locals>.<genexpr>   r;   r<   )max)r8   r9   
wait_funcss   ``r   r?   z#Retrying.__init__.<locals>.<lambda>   r@   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_attemptsr.   _loggerappendstop_after_attemptstop_after_delaystopgetattrfixed_sleeprandom_sleepincrementing_sleepexponential_sleepwaitalways_reject_retry_on_exceptionr   tuple	Exceptionr   never_reject_retry_on_result_wrap_exception)selfrY   r_   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_attemptsr-   r>   rF   s                         @@r   __init__zRetrying.__init__S   sn   4 )0A6M 	% '5&<s.#-#54:%4%</(7(?_(0A6M 	% /6C<W 	) -4A:U 	) -4H:N 	" .5H;P 	# &5%</ /-#F+ 
".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$
 ,ui.@A%@AS%T"'9D$ "$($5$5D!  . %4D!-r   c                      || j                   k\  S )z;Stop after the previous attempt >= stop_max_attempt_number.)rG   rg   previous_attempt_numberdelay_since_first_attempt_mss      r   rW   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.)rH   r|   s      r   rX   zRetrying.stop_after_delay   s    +t/C/CCCr   c                      y)z#Don't sleep at all before retrying.r   r   )r}   r~   s     r   no_sleepzRetrying.no_sleep   s     r   c                     | j                   S )z0Sleep a fixed amount of time between each retry.)rI   r|   s      r   r[   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randintrJ   rK   r|   s      r   r\   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   )rL   rM   rQ   )rg   r}   r~   results       r   r]   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   )rN   rP   )rg   r}   r~   expr   s        r   r^   zRetrying.exponential_sleep   sG    ((22S8D...//FA:Fr   c                      y)NFr   r   s    r   rd   zRetrying.never_reject   s    r   c                      y)NTr   r   s    r   r`   zRetrying.always_reject   s    r   c                     d}|j                   r#|| j                  |j                  d         z  }|S || j                  |j                        z  }|S )NFr   )has_exceptionra   valuere   )rg   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                  j                  |       | 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   }	| j                  j+                  d|	dz  dd	       t        j,                  |	dz         |dz  }# t
        $ r% t        j                         }t	        ||d      }Y w xY w)
Nr3   r   TFr   zRetrying in g     @@z.2fz	 seconds.)introundtimerS   Attemptrc   sysexc_infor   getrf   rU   warningrT   rY   r   
RetryErrorr_   rR   r   rE   infosleep)rg   fnr   rB   
start_timeattempt_numberr   tbr~   r   jitters              r   r   zRetrying.call	  s   tyy{T123
$$%%n5<!"d"5f"5~uM
 %%g.{{4#7#788LL  )##$$^4+.uTYY[45G/H+IJ+V(yy)EF++0E0E!++-'$W--		.2NO((#]]_t/D/DDF!C6N2E!!L0DI"NO

56>*aNA   <\\^!"nd;<s   G *G10G1)NNNNNNNNNNNNNNFNNNNNN)r(   
__module____qualname__rz   rW   rX   staticmethodr   r[   r\   r]   r^   rd   r`   r   r   r   r   r   r   r   R   s      $ $$("$(!-w.r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   )rg   r   r   r   s       r   rz   zAttempt.__init__6  s    
,*r   c                     | j                   r.|rt        |       | j                  \  }}}|j                  |      | 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   with_traceback)rg   rt   exc_typeexcr   s        r   r   zAttempt.get;  sF      &&$(JJ!#r((,,::r   c           	          | j                   rAd| j                   ddj                  t        j                  | j
                  d                S d| j                   d| j
                   S )Nz
Attempts: z	, Error:
 r   z	, Value: )r   r   join	traceback	format_tbr   rg   s    r   __repr__zAttempt.__repr__J  se     3 34JrwwyGZGZ[_[e[efg[hGi?j>kll 3 34Idjj\JJr   N)F)r(   r   r   __doc__rz   r   r   r   r   r   r   r   /  s    +
K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)rg   r   s     r   rz   zRetryError.__init__V  s
    (r   c                 "    d| j                    dS )NzRetryError[]r   r   s    r   __str__zRetryError.__str__Y  s    T../q11r   N)r(   r   r   r   rz   r   r   r   r   r   r   Q  s    )2r   r   r   )r&   r   r   r   r   	functoolsr   rO   r   r#   r%   r)   r.   objectr   r   rc   r   r   r   r   <module>r      sf      
    +:  $Z v Z zKf KD	2 	2r   