a
    !fv                     @   sT   d dl Z d dlZd dlZd dl mZ d dlmZmZmZ dd Zdd Z	dd	 Z
dS )
    N)	timedelta)_init_wait_gen_maybe_call
_next_waitc           	      K   s0   |||||d}| | | D ]}|| qd S )Ntargetargskwargstrieselapsed)update)	Zhdlrsr   r   r	   r
   r   extradetailshdlr r   N/var/www/html/python-backend/venv/lib/python3.9/site-packages/backoff/_sync.py_call_handlers
   s    
r   c                   s,   t  	f
dd}
|
S )Nc                     s0  t }t }d}tj }t	}|d7 }ttj | }| |||d}| i |}	|	r||k}
|d uo||k}|
s|rtfi |d|	i q,zt||	 ||}W n( ty   tfi | Y q,Y n0 tfi ||	|d t	
| q(q(tfi |d|	i q,q(|	S )Nr      r   value)r   waitr   datetimenowr   r   total_secondsr   r   StopIterationtimesleep)r   r	   max_tries_valuemax_time_valuer
   startr   r   r   retmax_tries_exceededmax_time_exceededseconds
jittermax_time	max_tries
on_backoff	on_giveup
on_success	predicater   wait_genwait_gen_kwargsr   r   retry   sJ    





zretry_predicate.<locals>.retry	functoolswraps)r   r,   r+   r'   r&   r%   r*   r(   r)   r-   r.   r   r$   r   retry_predicate   s     .r2   c       	            s0   t 	 	
fdd}|S )Nc                     sf  t }t }d}tj }t
}|d7 }ttj | }	| |||d}z	| i |}	W n  yJ }
 z||k}|d uo||k}|
s|s|rtfi |d|
i r W Y d }
~
d S zt||
||}W n0 ty   tfi |d|
i |
Y n0 tfi |||
d t	
| W Y d }
~
q(d }
~
0 0 tfi | |	S q(d S )Nr   r   r   	exception)r   r3   r   )r   r	   r   r   r
   r   r   r   r   r    er!   r"   r#   r3   giveupr%   r&   r'   r(   r)   r*   raise_on_giveupr   r,   r-   r   r   r.   U   sL    




 zretry_exception.<locals>.retryr/   )r   r,   r3   r'   r&   r%   r6   r*   r(   r)   r7   r-   r.   r   r5   r   retry_exceptionO   s    $.r8   )r   r0   r   r   Zbackoff._commonr   r   r   r   r2   r8   r   r   r   r   <module>   s   8