+
    4jZ                        R t ^ RIHt ^ RIt^ RIt^ RIHt ^ RIHt . ROt	^t
 ^t ]! 0 Rm4      t RtRtRt]P"                  ! 4       tR R lt ! R	 R
]P"                  4      t]! R]
]
]
]
]]]]RR7
      tRR R lltR# )a  Retry policy for index GETs, shared by the async transports.

An index GET is idempotent, and a 5xx, a 429, a 408, or a dropped connection
is usually a blip rather than the index's answer.

urllib3's default retries a connection error but retries a 413, 429, or 503
only when the response carries ``Retry-After``; httpx retries nothing. Both
transports take the policy here instead of their library's default.
)annotationsN)override)InvalidHeaderg      ?g      $@c                    V ^8  d   QhRRRR/# )   valuestrreturnfloat | None )formats   "a/home/user/pdf2html-billing-ledger-validate/.venv/lib/python3.14/site-packages/nab_index/retry.py__annotate__r   3   s     2 2 2 2    c                     \         P                  V 4      p\        T\        4      #   \        \        \        3 d     R# i ; i)zDBounded Retry-After in seconds; None when the header does not parse.N)_RETRY_AFTER_PARSERparse_retry_afterr   
ValueErrorOverflowErrormin_RETRY_AFTER_MAX_SECONDS)r   secondss   & r   _retry_after_secondsr   3   sD    %77>
 w011	 :}5  s   ' A Ac                  0    ] tR t^>tRt]R R l4       tRtR# )_BoundedRetryzCRetry that bounds the Retry-After wait and ignores a malformed one.c                    V ^8  d   QhRRRR/# )r   responsezurllib3.BaseHTTPResponser	   r
   r   )r   s   "r   r   _BoundedRetry.__annotate__B   s     F F(@ F\ Fr   c                	Z    VP                   P                  R 4      pVf   R# \        V4      # )zRetry-AfterN)headersgetr   )selfr   r   s   && r   get_retry_after_BoundedRetry.get_retry_afterA   s-      $$]3}tE*>u*EEr   r   N)__name__
__module____qualname____firstlineno____doc__r   r"   __static_attributes__r   r   r   r   r   >   s    MF Fr   r   F)
totalconnectreadstatusotherredirectstatus_forcelistbackoff_factorbackoff_jitterraise_on_statusc               $    V ^8  d   QhRRRRRR/# )r   failuresintretry_afterz
str | Noner	   floatr   )r   s   "r   r   r   X   s!     7 7 7: 7 7r   c                    Ve   \        V4      pVe   V# V ^8:  d   R# \        ^V ^,
          ,          ,          pV\        P                  ! 4       \        ,          ,           # )zCSeconds to wait after ``failures`` attempts, on urllib3's schedule.g        )r   _BACKOFF_FACTORrandom_BACKOFF_JITTER)r5   r7   r   backoffs   &&  r   
next_delayr>   X   sR    &{3N1} %qX\'::GV]]_666r   )	GET_RETRYMAX_REDIRECTSMAX_RETRIESRETRY_STATUSESr>   >     	  
                    )N)r(   
__future__r   r;   urllib3typing_extensionsr   urllib3.exceptionsr   __all__rA   r@   	frozensetrB   r:   r<   r   Retryr   r   r   r?   r>   r   r   r   <module>rV      s    #   & , C  ; WX J    mmo 2FGMM F 
	
#"" 	"7 7r   