Ë
    ùmxiü  ã                   ó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Z	  G d„ d«      Z	 G d	„ d
e	«      Z
 G d„ de	«      Zy)é    N)Ú
exceptionsé   g      ð?gš™™™™™¹?g       @c                   óL   — e Zd ZdZeeeefd„Ze	d„ «       Z
e	d„ «       Zd„ Zd„ Zy)Ú_BaseExponentialBackoffaø  An exponential backoff iterator base class.

    Args:
        total_attempts Optional[int]:
            The maximum amount of retries that should happen.
            The default value is 3 attempts.
        initial_wait_seconds Optional[int]:
            The amount of time to sleep in the first backoff. This parameter
            should be in seconds.
            The default value is 1 second.
        randomization_factor Optional[float]:
            The amount of jitter that should be in each backoff. For example,
            a value of 0.1 will introduce a jitter range of 10% to the
            current backoff period.
            The default value is 0.1.
        multiplier Optional[float]:
            The backoff multipler. This adjusts how much each backoff will
            increase. For example a value of 2.0 leads to a 200% backoff
            on each attempt. If the initial_wait is 1.0 it would look like
            this sequence [1.0, 2.0, 4.0, 8.0].
            The default value is 2.0.
    c                 ó¦   — |dk  rt        j                  d|› �«      ‚|| _        || _        | j                  | _        || _        || _        d| _        y )Né   z:total_attempts must be greater than or equal to 1 but was r   )r   ÚInvalidValueÚ_total_attemptsÚ_initial_wait_secondsÚ_current_wait_in_secondsÚ_randomization_factorÚ_multiplierÚ_backoff_count)ÚselfÚtotal_attemptsÚinitial_wait_secondsÚrandomization_factorÚ
multipliers        úW/home/htdocs/ttos/venv/lib/python3.12/site-packages/google/auth/_exponential_backoff.pyÚ__init__z _BaseExponentialBackoff.__init__B   sb   € ð ˜AÒÜ×)Ñ)ØLÈ^ÐL\Ð]óð ð  .ˆÔØ%9ˆÔ"à(,×(BÑ(BˆÔ%à%9ˆÔ"Ø%ˆÔØˆÕó    c                 ó   — | j                   S )z7The total amount of backoff attempts that will be made.)r
   ©r   s    r   r   z&_BaseExponentialBackoff.total_attemptsW   s   € ð ×#Ñ#Ð#r   c                 ó   — | j                   S )z;The current amount of backoff attempts that have been made.)r   r   s    r   Úbackoff_countz%_BaseExponentialBackoff.backoff_count\   s   € ð ×"Ñ"Ð"r   c                 ó4   — d| _         | j                  | _        y )Nr   )r   r   r   r   s    r   Ú_resetz_BaseExponentialBackoff._reseta   s   € ØˆÔØ(,×(BÑ(BˆÕ%r   c                 ó˜   — | j                   | j                  z  }t        j                  | j                   |z
  | j                   |z   «      }|S ©N)r   r   ÚrandomÚuniform)r   Újitter_varianceÚjitters      r   Ú_calculate_jitterz)_BaseExponentialBackoff._calculate_jittere   sI   € Ø×7Ñ7¸$×:TÑ:TÑTˆÜ—‘Ø×)Ñ)¨OÑ;Ø×)Ñ)¨OÑ;ó
ˆð
 ˆr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú_DEFAULT_RETRY_TOTAL_ATTEMPTSÚ!_DEFAULT_INITIAL_INTERVAL_SECONDSÚ_DEFAULT_RANDOMIZATION_FACTORÚ_DEFAULT_MULTIPLIERr   Úpropertyr   r   r   r$   © r   r   r   r   *   sM   „ ñð2 5Ø>Ø:Ø&ó ð* ñ$ó ð$ð ñ#ó ð#òCór   r   c                   ó.   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zˆ xZS )ÚExponentialBackoffzvAn exponential backoff iterator. This can be used in a for loop to
    perform requests with exponential backoff.
    c                 ó,   •— t        t        | �
  |i |¤Ž y r   )Úsuperr0   r   ©r   ÚargsÚkwargsÚ	__class__s      €r   r   zExponentialBackoff.__init__t   s   ø€ ÜÔ  $Ñ0°$ÐA¸&ÓAr   c                 ó&   — | j                  «        | S r   ©r   r   s    r   Ú__iter__zExponentialBackoff.__iter__w   ó   € Ø�‰ŒØˆr   c                 ó@  — | j                   | j                  k\  rt        ‚| xj                   dz  c_         | j                   dk  r| j                   S | j                  «       }t	        j
                  |«       | xj                  | j                  z  c_        | j                   S ©Nr   )r   r
   ÚStopIterationr$   ÚtimeÚsleepr   r   ©r   r#   s     r   Ú__next__zExponentialBackoff.__next__{   s„   € Ø×Ñ $×"6Ñ"6Ò6ÜÐØ×Ò˜qÑ Õà×Ñ !Ò#Ø×&Ñ&Ð&à×'Ñ'Ó)ˆä�
‰
�6Ôà×%Ò%¨×)9Ñ)9Ñ9Õ%Ø×"Ñ"Ð"r   )r%   r&   r'   r(   r   r9   rA   Ú__classcell__©r6   s   @r   r0   r0   o   s   ø„ ñôBòö#r   r0   c                   ó.   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zˆ xZS )ÚAsyncExponentialBackoffz‚An async exponential backoff iterator. This can be used in a for loop to
    perform async requests with exponential backoff.
    c                 ó,   •— t        t        | �
  |i |¤Ž y r   )r2   rE   r   r3   s      €r   r   z AsyncExponentialBackoff.__init__�   s   ø€ ÜÔ% tÑ5°tÐF¸vÓFr   c                 ó&   — | j                  «        | S r   r8   r   s    r   Ú	__aiter__z!AsyncExponentialBackoff.__aiter__“   r:   r   c              ƒ   ó\  K  — | j                   | j                  k\  rt        ‚| xj                   dz  c_         | j                   dk  r| j                   S | j                  «       }t	        j
                  |«      ƒ d {  –—†  | xj                  | j                  z  c_        | j                   S 7 Œ/­wr<   )r   r
   ÚStopAsyncIterationr$   Úasyncior?   r   r   r@   s     r   Ú	__anext__z!AsyncExponentialBackoff.__anext__—   s“   è ø€ Ø×Ñ $×"6Ñ"6Ò6Ü$Ð$Ø×Ò˜qÑ Õà×Ñ !Ò#Ø×&Ñ&Ð&à×'Ñ'Ó)ˆä�m‰m˜FÓ#×#Ð#à×%Ò%¨×)9Ñ)9Ñ9Õ%Ø×"Ñ"Ð"ð 	$ús   ‚A8B,Á:B*Á;0B,)r%   r&   r'   r(   r   rH   rL   rB   rC   s   @r   rE   rE   ‹   s   ø„ ñôGòö#r   rE   )rK   r    r>   Úgoogle.authr   r)   r*   r+   r,   r   r0   rE   r.   r   r   ú<module>rN      s_   ðó Û Û å "ð !"Ð ð %(Ð !ð !$Ð ð Ð ð÷Bñ BôJ#Ð0ô #ô8#Ð5õ #r   