§
    ™ä¤i¡	  ã                   óˆ   — d 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¦   «         Z G d	„ d
¦  «        ZdS )znRetryHandler interface.
You can pass an array of handlers to customize retry logics in supported API clients.
é    N)ÚOptional)Ú
RetryState)ÚHttpRequest)ÚHttpResponse)ÚRetryIntervalCalculator)ÚBackoffRetryIntervalCalculatorc                   óò   — e Zd ZU dZeed<   eed<   defdedefd„Zdddœde	d	e
d
ee         dee         def
d„Zdddœde	d	e
d
ee         dee         def
d„Zdddœde	d	e
d
ee         dee         ddf
d„ZdS )ÚRetryHandlerzvRetryHandler interface.
    You can pass an array of handlers to customize retry logics in supported API clients.
    Úmax_retry_countÚinterval_calculatoré   c                 ó"   — || _         || _        dS )zÃRetryHandler interface.

        Args:
            max_retry_count: The maximum times to do retries
            interval_calculator: Pass an interval calculator for customizing the logic
        N)r   r   )Úselfr   r   s      úW/root/projects/butler/venv/lib/python3.11/site-packages/slack_sdk/http_retry/handler.pyÚ__init__zRetryHandler.__init__   s   € ð  /ˆÔØ#6ˆÔ Ð Ð ó    N)ÚresponseÚerrorÚstateÚrequestr   r   Úreturnc                óX   — |j         | j        k    rdS |                      ||||¬¦  «        S )NF)r   r   r   r   )Úcurrent_attemptr   Ú
_can_retry©r   r   r   r   r   s        r   Ú	can_retryzRetryHandler.can_retry*   sA   € ð Ô  DÔ$8Ò8Ð8Ø5ØŠØØØØð	 ñ 
ô 
ð 	
r   c                ó   — t          ¦   «         ‚)N)ÚNotImplementedErrorr   s        r   r   zRetryHandler._can_retry;   s   € õ "Ñ#Ô#Ð#r   c                ó¢   — d|_         | j                             |j        ¦  «        }t	          j        |¦  «         |                     ¦   «          d S )NT)Únext_attempt_requestedr   Úcalculate_sleep_durationr   ÚtimeÚsleepÚincrement_current_attempt)r   r   r   r   r   Údurations         r   Úprepare_for_next_attemptz%RetryHandler.prepare_for_next_attemptE   sM   € ð (,ˆÔ$ØÔ+×DÒDÀUÔEZÑ[Ô[ˆÝŒ
8ÑÔÐØ×'Ò'Ñ)Ô)Ð)Ð)Ð)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚintÚ__annotations__r   Údefault_interval_calculatorr   r   r   r   r   Ú	ExceptionÚboolr   r   r&   © r   r   r
   r
      s“  € € € € € € ðð ð ÐÐÑØ0Ð0Ð0Ñ0ð  !Ø7Rð7ð 7àð7ð 5ð7ð 7ð 7ð 7ð& ,0Ø%)ð
ð 
ð 
ð ð
ð ð	
ð
 ˜<Ô(ð
ð ˜	Ô"ð
ð 
ð
ð 
ð 
ð 
ð, ,0Ø%)ð$ð $ð $ð ð$ð ð	$ð
 ˜<Ô(ð$ð ˜	Ô"ð$ð 
ð$ð $ð $ð $ð ,0Ø%)ð*ð *ð *ð ð*ð ð	*ð
 ˜<Ô(ð*ð ˜	Ô"ð*ð 
ð*ð *ð *ð *ð *ð *r   r
   )r*   r"   Útypingr   Úslack_sdk.http_retry.stater   Úslack_sdk.http_retry.requestr   Úslack_sdk.http_retry.responser   Ú(slack_sdk.http_retry.interval_calculatorr   Ú1slack_sdk.http_retry.builtin_interval_calculatorsr   r-   r
   r0   r   r   ú<module>r7      sÕ   ððð ð €€€Ø Ð Ð Ð Ð Ð à 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø LÐ LÐ LÐ LÐ LÐ Lðð ð ð ð ð ð =Ð<Ñ>Ô>Ð ð<*ð <*ð <*ð <*ð <*ñ <*ô <*ð <*ð <*ð <*r   