
    ~i
                         	 d dl mZ n# e$ r dZY nw xY wd dlmZ d dlmZ erd dlmZ d dlm	Z	 d dlm
Z
  edd	
          Z e e                      Z G d d          Z e            ZdS )    )TYPE_CHECKINGF)*ExponentialWithRandomJitterBackoffStrategy)DefaultRetryCondition)RESTResponse)BackoffStrategy)RetryConditioni,  i )min_retry_delay_msmax_retry_delay_ms)retry_error_codesc                   (    e Zd ZdeefdZd Zd ZdS )Retryer   c                 0    || _         || _        || _        dS )a  
        Retryer is the retryer for the SDK.
        Args:
            :param num_max_retries: The maximum number of retries.
            :param backoff_strategy: The backoff strategy to use.
            :param retry_condition: The retry condition to use.
        N)num_max_retriesbackoff_strategyretry_condition)selfr   r   r   s       j/root/.openclaw/workspace/.venvs/ark-sdk/lib/python3.11/site-packages/volcenginesdkcore/retryer/retryer.py__init__zRetryer.__init__   s"      / 0.    c                 `    || j         k     r"| j        | j                            ||          S dS )aW  
        should_retry checks if the request should be retried.
        Args:
            :param response: The response from the request.
            :param retry_count: The number of retries.
            :param err: The error from the request.
        Returns:
            bool: True if the request should be retried, False otherwise.
        NF)r   r   should_retry)r   responseretry_counterrs       r   r   zRetryer.should_retry)   s8      ---$2F2R'44XsCCCur   c                 |    || j         k    rt          d          | j        | j                            |          S dS )z
        get_backoff_delay returns the backoff delay for the retry.
        Args:
            :param retry_count: The number of retries.
        Returns:
            float: The backoff delay.
        z!Retry count exceeds maximum limitNg        )r   
ValueErrorr   compute_delay)r   r   s     r   get_backoff_delayzRetryer.get_backoff_delay=   sF     $...@AAA ,(66{CCCsr   N)__name__
__module____qualname___DEFAULT_BACKOFF_STRATEGY_DEFAULT_RETRY_CONDITIONr   r   r    r   r   r   r      sQ         64	/ / / /$  (    r   r   N)typingr   ImportError*volcenginesdkcore.retryer.backoff_strategyr   )volcenginesdkcore.retryer.retry_conditionr   volcenginesdkcore.restr   r   r   r#   setr$   r   DEFAULT_RETRYERr%   r   r   <module>r-      s  $$$$$$$   MMM a a a a a a K K K K K K I333333JJJJJJHHHHHHFF!   
 103355III 7 7 7 7 7 7 7 7t '))s   	 