B |=_k@sTddlZddlZddlZddlmZddlmZmZmZddZddZ dd Z dS) N) timedelta)_init_wait_gen _maybe_call _next_waitc Ks4|||||d}||x|D] }||q WdS)N)targetargskwargstrieselapsed)update) Zhdlrsrrrr r extradetailshdlrre/private/var/folders/15/dcwkybx97hl11pqmmxvmf6cw4nnlkb/T/pip-unpacked-wheel-1sitx69i/backoff/_sync.py_call_handlers s  rc s,t f dd} | S)Nc st}t}d}tj}t }x|d7}ttj|}||||f}||} | r||k} |dk o|||k} | s| rtf|d| iPyt|||} Wn$tk rtf|PYnXtf|| | dt | q*q*tf|d| iPq*W| S)Nrvalue)rwait) rdatetimenowrr total_secondsrr StopIterationtimesleep) rr max_tries_ max_time_r startrr r retmax_tries_exceededmax_time_exceededseconds) jittermax_time max_tries on_backoff on_giveup on_success predicaterwait_genwait_gen_kwargsrrretrys:      zretry_predicate..retry) functoolswraps) rr)r(r$r#r"r'r%r&r*r+r) r"r#r$r%r&r'r(rr)r*rretry_predicates(*r.c s.t f dd} | S)Nc s4t}t}d}tj}t }x|d7}ttj|}||||f}y||} Wnk r} z||k} |dk o||k} | s| s| rtf|yt|||} Wn&tk rtf|| YnXtf|d| it | Wdd} ~ XYq,Xtf|| Sq,WdS)Nrrr) rrrrrrrrrrr)rrrrr rrr r rerr r!) exceptiongiveupr"r#r$r%r&r'rr)r*rrr+Ns6   zretry_exception..retry)r,r-) rr)r0r$r#r"r1r'r%r&r*r+r) r0r1r"r#r$r%r&r'rr)r*rretry_exceptionIs*'r2) rr,rrZbackoff._commonrrrrr.r2rrrrs  2