2biXSSKrSSKrSSKrSSKJr \R (aSSKJr "SS\R5r\R\\RS/\R\ \ 444r "SS\5r"S S \5r"S S \5r"S S\5r"SS\5r"SS\5r"SS\5r"SS\5r"SS\5rg)N)_utils)RetryCallStatec~\rSrSrSr\R SSS\4Sj5rS Sjr SSS\ RS 4S jr S r g ) wait_basez(Abstract base class for wait strategies. retry_staterreturncgNselfrs ڋ/builddir/build/BUILDROOT/alt-python313-pip-23.3.1-3.el8.x86_64/opt/alt/python313/lib/python3.13/site-packages/pip/_vendor/tenacity/wait.py__call__wait_base.__call__s otherc[X5$r ) wait_combinerrs r__add__wait_base.__add__"s D((r)rrc4US:XaU$URU5$Nr)rrs r__radd__wait_base.__radd__%s A:K||E""rr N)rrr r)__name__ __module__ __qualname____firstlineno____doc__abcabstractmethodfloatrrtypingUnionr__static_attributes__r rrrrsN2 $4   )#k#fll;V.W#rrrcP\rSrSrSrS\R SS4SjrSSS\4S jr S r g) wait_fixed/zCWait strategy that waits a fixed amount of time between each retry.waitr Nc:[R"U5Ulgr )r to_secondsr))rr+s r__init__wait_fixed.__init__2s ++D1rrrcUR$r r)r s rrwait_fixed.__call__5s rr1 rrrr r!rtime_unit_typer.r$rr'r rrr)r)/s2M2V222t2$4rr)c0^\rSrSrSrSU4SjjrSrU=r$) wait_none9z7Wait strategy that doesn't wait at all before retrying.c$>[TU]S5 gr)superr.)r __class__s rr.wait_none.__init__<s rr )r N)rrrr r!r.r' __classcell__r:s@rr6r69sArr6cl\rSrSrSrS S\R S\R SS4SjjrSS S\4S jr S r g) wait_random@zAWait strategy that waits a random amount of time between min/max.minmaxr Ncp[R"U5Ul[R"U5Ulgr )rr-wait_random_minwait_random_max)rrArBs rr.wait_random.__init__Cs(%005%005rrrczUR[R"5URUR- --$r )rDrandomrEr s rrwait_random.__call__Gs0##v}}$:N:NQUQeQe:e'fggr)rErD)rr3r rrr?r?@sCK6F116F# UH o"TS9v M g7f)rNr ).0xrs r (wait_combine.__call__..RsG!1-s)sumrPr s `rrwait_combine.__call__QsGtGGGrrO rrrr r!rr.r$rr'r rrrrKs/-%I%$%H$4HHrrc<\rSrSrSrS\SS4SjrSSS\4S jrS r g) wait_chainUaChain two or more waiting strategies. If all strategies are exhausted, the very last strategy is used thereafter. For example:: @retry(wait=wait_chain(*[wait_fixed(1) for i in range(3)] + [wait_fixed(2) for j in range(5)] + [wait_fixed(5) for k in range(4))) def wait_chained(): print("Wait 1s for 3 attempts, 2s for 5 attempts and 5s thereafter.") rMr NcXlgr rMrQs rr.wait_chain.__init__erSrrrc[[URS5[UR55nURUS- nU"US9$)NrJrV)rArBattempt_numberlenrM)rr wait_func_no wait_funcs rrwait_chain.__call__hsB3{991=s4???ST OOL1$45 [11rrbr]r rrr_r_Us. %I%$%2$422rr_c \rSrSrSrSS\R 4S\RS\RS\RSS 4S jjrS S S\ 4S jr Sr g )wait_incrementingnzWait an incremental amount of time after each attempt. Starting at a starting value and incrementing by a value for each attempt (and restricting the upper limit to some maximum value). rdstart incrementrBr Nc[R"U5Ul[R"U5Ul[R"U5Ulgr )rr-rnrorB)rrnrorBs rr.wait_incrementing.__init__us: &&u- **95$$S)rrrcURURURS- --n[S[ X R55$NrJr)rnrorerBrA)rrresults rrwait_incrementing.__call__s:t~~1K1Ka1OPQ1c&((+,,r)rorBrn) rrrr r!rMAX_WAITr4r.r$rr'r rrrkrknsg()+.%+__ *$$*((* " " *  *-$4--rrkc \rSrSrSrS\R SS4S\R\ \ 4S\RS\R\ \ 4S \RS S 4 S jjr S SS \ 4Sjr Srg )wait_exponentialaWait strategy that applies exponential backoff. It allows for a customized multiplier and an ability to restrict the upper and lower limits to some maximum and minimum value. The intervals are fixed (i.e. there is no jitter), so this strategy is suitable for balancing retries against latency when a required resource is unavailable for an unknown duration, but *not* suitable for resolving contention between multiple processes for a shared resource. Use wait_random_exponential for the latter case. rJr multiplierrBexp_baserAr NcXl[R"U5Ul[R"U5UlX0lgr )r{rr-rArBr|)rr{rBr|rAs rr.wait_exponential.__init__s2%$$S)$$S) rrrcURURS- -nURU-n[ [ SUR 5[ X0R55$![a URs$f=frs)r|rer{ OverflowErrorrBrA)rrexprts rrwait_exponential.__call__sk --K$>$>$BCC__s*F3q$((#S%:;; 88O s+A A98A9)r|rBrAr{)rrrr r!rrvr%r&intr$r4r.rr'r rrrxrxs 01%+__-.%& !LLe, ! " " !,,sEz* !  " " !  !<$4<[TU]US9n[R"SU5$)NrVr)r9rrHuniform)rrhighr:s rr wait_random_exponential.__call__s&wK8~~a&&rr ) rrrr r!r$rr'r<r=s@rrrs!2'$4'''rrc h\rSrSrSrS\R SS4S\S\S\S\S S 4 S jjrS S S \4Sjr Sr g )wait_exponential_jitteraHWait strategy that applies exponential backoff and jitter. It allows for a customized initial wait, maximum wait and jitter. This implements the strategy described here: https://cloud.google.com/storage/docs/retry-strategy The wait time is min(initial * 2**n + random.uniform(0, jitter), maximum) where n is the retry count. rJrzinitialrBr|jitterr Nc4XlX lX0lX@lgr )rrBr|r)rrrBr|rs rr. wait_exponential_jitter.__init__s   rrrc[R"SUR5nURURS- -nUR U-U-n[S[X@R55$![ a URnN7f=f)NrrJ) rHrrr|rerrrBrA)rrrrrts rr wait_exponential_jitter.__call__sy4;;/ --K$>$>$BCC\\C'&0F1c&((+,, XXF s.A00B B )r|rrrB) rrrr r!rrvr$r.rr'r rrrrsb __        -$4--rr)r"rHr%pip._vendor.tenacityr TYPE_CHECKINGrABCrr&Callabler$r WaitBaseTr)r6r?rr_rkrxrrr rrrs" ' 3##" LLFOO5E4F UZ\_U_H`4`$aa b  h)hH9H222- -,-i-r