
    dhK                     l    d dl Z d dlZd dlmZ d dlmZ  ed       G d d             Z G d d	      Zy)
    N)	dataclass)normalvariateT)frozenc                   >    e Zd ZU eed<   eed<   eed<   eed<   ddZy)BackoffConfig	min_delay	max_delayfactorjitterNc                     | j                   | j                  k  rt        d      | j                  dk  rt        d      y )Nz.`max_delay` should be greater than `min_delay`   z!`factor` should be greater than 1)r	   r   
ValueErrorr
   selfs    O/var/www/netwell/bot/venv/lib/python3.12/site-packages/aiogram/utils/backoff.py__post_init__zBackoffConfig.__post_init__   s;    >>T^^+MNN;;!@AA     returnN)__name__
__module____qualname__float__annotations__r    r   r   r   r      s    MMBr   r   c                       e Zd ZdeddfdZddZedefd       Zedefd       Z	edefd       Z
edefd	       Zedefd
       Zedefd       Zedefd       ZddZddZdedefdZdefdZddZdefdZy)Backoffconfigr   Nc                 P    || _         |j                  | _        d| _        d| _        y Ng        r   )r   r   _next_delay_current_delay_counter)r   r   s     r   __init__zBackoff.__init__   s&    !++!r   c                     | S Nr   r   s    r   __iter__zBackoff.__iter__   s    r   c                 .    | j                   j                  S r&   )r   r   r   s    r   r   zBackoff.min_delay       {{$$$r   c                 .    | j                   j                  S r&   )r   r	   r   s    r   r	   zBackoff.max_delay#   r)   r   c                 .    | j                   j                  S r&   )r   r
   r   s    r   r
   zBackoff.factor'       {{!!!r   c                 .    | j                   j                  S r&   )r   r   r   s    r   r   zBackoff.jitter+   r,   r   c                     | j                   S r&   )r!   r   s    r   
next_delayzBackoff.next_delay/   s    r   c                     | j                   S r&   )r"   r   s    r   current_delayzBackoff.current_delay3   s    """r   c                     | j                   S r&   )r#   r   s    r   counterzBackoff.counter7   s    }}r   c                 @    t        j                  t        |              y r&   )timesleepnextr   s    r   r6   zBackoff.sleep;   s    

4:r   c                 \   K   t        j                  t        |              d {    y 7 wr&   )asyncior6   r7   r   s    r   asleepzBackoff.asleep>   s     mmDJ'''s   ",*,valuec                 p    t        t        || j                  z  | j                        | j                        S r&   )r   minr
   r	   r   )r   r;   s     r   _calculate_nextzBackoff._calculate_nextA   s'    S!4dnnEt{{SSr   c                     | j                   | _        | j                  | j                         | _         | xj                  dz  c_        | j                  S )Nr   )r!   r"   r>   r#   r   s    r   __next__zBackoff.__next__D   sC    "..//0@0@A"""r   c                 B    d| _         d| _        | j                  | _        y r    )r"   r#   r   r!   r   s    r   resetzBackoff.resetJ   s    !>>r   c                 V    d| j                    d| j                   d| j                   dS )NzBackoff(tryings=z, current_delay=z, next_delay=))r#   r"   r!   r   s    r   __str__zBackoff.__str__O   s9    t}}o-=d>Q>Q=R S**+1.	
r   )r   r   r   )r   r   r   r   r$   r'   propertyr   r   r	   r
   r   r/   r1   intr3   r6   r:   r>   r@   rB   strrE   r   r   r   r   r      s   }   %5 % % %5 % % " " " " " "  E     #u # #   (TU Tu T#% #*

 
r   r   )r9   r5   dataclassesr   randomr   r   r   r   r   r   <module>rK      s<      !   $
B 
B 
B>
 >
r   