3 ”Reô&ã@slddlZddlmZddlZddlZddlZdZdd„ZGdd„deƒZ Gdd „d eƒZ Gd d „d e ƒZ dS) éN)Úsixiÿÿÿ?csBtˆƒdkr,tˆdƒr,dd„}|ˆdƒS‡‡fdd„}|SdS)zÆ Decorator function that instantiates the Retrying object @param *dargs: positional arguments passed to Retrying object @param **dkw: keyword arguments passed to the Retrying object ércstjˆƒ‡fdd„ƒ}|S)Ncstƒjˆf|ž|ŽS)N)ÚRetryingÚcall)ÚargsÚkw)Úf©úƒ/builddir/build/BUILDROOT/alt-python36-pip-20.2.4-5.el8.x86_64/opt/alt/python36/lib/python3.6/site-packages/pip/_vendor/retrying.pyÚ wrapped_f$sz-retry..wrap_simple..wrapped_f)rÚwraps)rr r )rr Ú wrap_simple"szretry..wrap_simplecstjˆƒ‡‡‡fdd„ƒ}|S)NcstˆˆŽjˆf|ž|ŽS)N)rr)rr)ÚdargsÚdkwrr r r /sz&retry..wrap..wrapped_f)rr )rr )rr)rr Úwrap-szretry..wrapN)ÚlenÚcallable)rrr rr )rrr Úretrys  rc@sneZdZddd„Zdd„Zdd„Zd d „Zd d „Zd d„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„ZdS)rNFcs |dkr dn||_|dkrdn||_|dkr0dn||_|dkrBdn||_|dkrTdn||_|dkrfdn||_| dkrxdn| |_| dkrŠdn| |_| dkrœtn| |_ |dkr®dn||_ g‰|dk r̈j |j ƒ|dk ràˆj |j ƒ|dk rð||_n&|dk�r ‡fdd„|_n t||ƒ|_dd„g‰|dk �r6ˆj |jƒ|dk �sJ|dk �rVˆj |jƒ|dk �sj| dk �rvˆj |jƒ| dk �sŠ| dk �r–ˆj |jƒ|dk �r¨||_n&|dk�r‡fd d„|_n t||ƒ|_| dk�râ|j|_n| |_| dk�rü|j|_n| |_||_dS) Néédièrrcst‡‡fdd„ˆDƒƒS)Nc3s|]}|ˆˆƒVqdS)Nr )Ú.0r)ÚattemptsÚdelayr r ú asz6Retrying.__init__....)Úany)rr)Ú stop_funcs)rrr Úasz#Retrying.__init__..c_sdS)Nrr )rÚkwargsr r r rhscst‡‡fdd„ˆDƒƒS)Nc3s|]}|ˆˆƒVqdS)Nr )rr)rrr r rysz6Retrying.__init__....)Úmax)rr)Ú wait_funcs)rrr rys)Ú_stop_max_attempt_numberÚ_stop_max_delayÚ _wait_fixedÚ_wait_random_minÚ_wait_random_maxÚ_wait_incrementing_startÚ_wait_incrementing_incrementÚ_wait_exponential_multiplierÚMAX_WAITÚ_wait_exponential_maxÚ_wait_jitter_maxÚappendÚstop_after_attemptÚstop_after_delayÚstopÚgetattrÚ fixed_sleepÚ random_sleepÚincrementing_sleepÚexponential_sleepÚwaitÚ always_rejectÚ_retry_on_exceptionÚ never_rejectÚ_retry_on_resultÚ_wrap_exception)Úselfr.r4Ústop_max_attempt_numberÚstop_max_delayÚ wait_fixedÚwait_random_minÚwait_random_maxÚwait_incrementing_startÚwait_incrementing_incrementÚwait_exponential_multiplierÚwait_exponential_maxÚretry_on_exceptionÚretry_on_resultÚwrap_exceptionÚ stop_funcÚ wait_funcÚwait_jitter_maxr )rrr Ú__init__:sR                 zRetrying.__init__cCs ||jkS)z;Stop after the previous attempt >= stop_max_attempt_number.)r )r:Úprevious_attempt_numberÚdelay_since_first_attempt_msr r r r,�szRetrying.stop_after_attemptcCs ||jkS)z=Stop after the time from the first attempt >= stop_max_delay.)r!)r:rKrLr r r r-‘szRetrying.stop_after_delaycCsdS)z#Don't sleep at all before retrying.rr )r:rKrLr r r Úno_sleep•szRetrying.no_sleepcCs|jS)z0Sleep a fixed amount of time between each retry.)r")r:rKrLr r r r0™szRetrying.fixed_sleepcCstj|j|jƒS)zISleep a random amount of time between wait_random_min and wait_random_max)ÚrandomÚrandintr#r$)r:rKrLr r r r1�szRetrying.random_sleepcCs$|j|j|d}|dkr d}|S)z¥ Sleep an incremental amount of time after each attempt, starting at wait_incrementing_start and incrementing by wait_incrementing_increment rr)r%r&)r:rKrLÚresultr r r r2¡szRetrying.incrementing_sleepcCs2d|}|j|}||jkr"|j}|dkr.d}|S)Nér)r'r))r:rKrLÚexprPr r r r3«s  zRetrying.exponential_sleepcCsdS)NFr )r:rPr r r r7´szRetrying.never_rejectcCsdS)NTr )r:rPr r r r5·szRetrying.always_rejectcCs4d}|jr ||j|jdƒO}n||j|jƒO}|S)NFr)Ú has_exceptionr6Úvaluer8)r:ÚattemptÚrejectr r r Ú should_rejectºs zRetrying.should_rejectc Osútttjƒdƒƒ}d}xÜyt|||Ž|dƒ}Wn tjƒ}t||dƒ}YnX|j|ƒsh|j|jƒStttjƒdƒƒ|}|j ||ƒr®|j r¤|j r¤|jƒ‚qêt |ƒ‚n<|j ||ƒ} |j rÜtjƒ|j } | td| ƒ} tj| dƒ|d7}qWdS)NièrFTrg@�@)ÚintÚroundÚtimeÚAttemptÚsysÚexc_inforWÚgetr9r.rSÚ RetryErrorr4r*rNrÚsleep) r:ÚfnrrÚ start_timeÚattempt_numberrUÚtbrLr`Újitterr r r rÃs*      z Retrying.call)NNNNNNNNNNNNNFNNN)Ú__name__Ú __module__Ú __qualname__rJr,r-rMr0r1r2r3r7r5rWrr r r r r8s0 F   rc@s*eZdZdZdd„Zd dd„Zdd„Zd S) r[z¾ An Attempt encapsulates a call to a target function that may end as a normal return value from the function or an Exception depending on what occurred during the execution. cCs||_||_||_dS)N)rTrcrS)r:rTrcrSr r r rJèszAttempt.__init__FcCs@|jr6|rt|ƒ‚qs *!