o
    ¹­§iv  ã                   @   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   úD/home/app/Keep/.python/lib/python3.10/site-packages/backoff/_sync.pyÚ_call_handlers
   s   û

ÿr   c                   s,   t  ˆ¡‡ ‡‡‡‡‡‡‡‡‡	f
dd„ƒ}
|
S )Nc                     s(  t ˆƒ}t ˆƒ}d}tj ¡ }tˆˆ	ƒ}	 |d7 }t tj ¡ | ¡}ˆ| |||dœ}ˆ| i |¤Ž}	ˆ|	ƒr…||k}
|d uoA||k}|
sF|rUtˆfi |¤d|	i¤Ž 	 |	S z
t||	ˆ ||ƒ}W n tyq   tˆfi |¤Ž Y |	S w tˆfi |¤|	|dœ¤Ž t	 
|¡ qtˆfi |¤d|	i¤Ž 	 |	S )Nr   Té   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   sR   

ûÿð
ÿó
ÿ
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                     s\  t ˆƒ}t ˆƒ}d}tj ¡ }tˆ
ˆƒ}	 |d7 }t tj ¡ | ¡}ˆ	| |||dœ}z	ˆ	| i |¤Ž}	W nn ˆ y¢ }
 zb||k}|d uoG||k}ˆ|
ƒsP|sP|rftˆfi |¤d|
i¤Ž ˆr_‚ W Y d }
~
d S z
t||
ˆ||ƒ}W n ty…   tˆfi |¤d|
i¤Ž |
‚w tˆfi |¤||
dœ¤Ž t	 
|¡ W Y d }
~
nd }
~
ww tˆfi |¤Ž |	S q)Nr   Tr   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   sV   

ûÿ
ÿþ
ÿ€ëÚ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