
    i1                    v   S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
JrJrJrJr  SSKJr  SSKJr  SSKJr  SSKJr  S	r\" S
\S\4   S9rSS jrSrSr\\4       SS jjr " S S5      r        SS jr\R>                  S:  a  \R@                  r \RB                  r!gSS jr SS jr!g)z2Miscellaneous pieces that need to be synchronized.    )annotationsN)AnyCallableTypeVarcast)_csot)MAX_ADAPTIVE_RETRIES)OperationFailure)_REAUTHENTICATION_REQUIRED_CODEFF.)boundc                f   ^  [         R                  " T 5      SU 4S jj5       n[        [        U5      $ )Nc                   >#    UR                  SS5      nSSKJn  SSKJn   T" U 0 UD6I S h  vN $  N! [
         a  nU(       a  e UR                  [        :X  at  S nU  H5  n[        Xs5      (       a  Un  O"[        Xt5      (       d  M)  UR                  n  O   U(       a  UR                  SS9I S h  vN    Oe T" U 0 UD6I S h  vN  s S nA$ e S nAff = f7f)N	no_reauthFr   )AsyncConnection)_BulkWriteContextT)reauthenticate)poppymongo.asynchronous.poolr   pymongo.messager   r
   coder   
isinstanceconnauthenticate)	argskwargsr   r   r   excr   argfuncs	           S/home/ubuntu/wiki/venv/lib/python3.13/site-packages/pymongo/asynchronous/helpers.pyinner_handle_reauth.<locals>.inner.   s     JJ{E2	=5	t.v.... 	xx:: C!#77"!#99"xx   ++4+@@@!4262222)	sa   C5 35 C5 
CAC)C1B42CCC	C
CCCC)r   r   r   r   returnr   )	functoolswrapsr   r   )r   r!   s   ` r    _handle_reauthr&   -   s,    __T : 5>    g?
   c                V    [         R                   " 5       nU[        USU -  -  U5      -  $ )N   )randommin)attemptinitial_delay	max_delayjitters       r    _backoffr1   S   s*     ]]_FCG4i@@@r'   c                  J    \ rS rSrSr\\\4     SS jjrS	S jr	S
S jr
Srg)_RetryPolicyZ   z>A retry limiter that performs exponential backoff with jitter.c                (    Xl         X l        X0l        g Nattemptsbackoff_initialbackoff_max)selfr8   r9   r:   s       r    __init___RetryPolicy.__init__]   s     !.&r'   c                ^    [        [        SUS-
  5      U R                  U R                  5      $ )z2Return the backoff duration for the given attempt.r      )r1   maxr9   r:   )r;   r-   s     r    backoff_RetryPolicy.backoffg   s(    Aw{+T-A-A4CSCSTTr'   c                   #    XR                   :  a  g[        R                  " 5       (       a0  [        R                  " 5       U-   [        R
                  " 5       :  a  gg7f)z[Return if we have retry attempts remaining and the next backoff would not exceed a timeout.FT)r8   r   get_timeouttime	monotonicget_deadline)r;   r-   delays      r    should_retry_RetryPolicy.should_retryk   sD     ]]"~~%'%*<*<*>>s   AAr7   N)r8   intr9   floatr:   rL   )r-   rK   r#   rL   )r-   rK   rH   rL   r#   bool)__name__
__module____qualname____firstlineno____doc__r	   _BACKOFF_INITIAL_BACKOFF_MAXr<   rA   rI   __static_attributes__ r'   r    r3   r3   Z   s<    H -!1)	'' ' 	'U	r'   r3   c                   #    [         (       d0  [        R                  " 5       nUR                  " X40 UD6I S h  vN $ [        R                  " X40 UD6$  N7fr6   )_IS_SYNCasyncioget_running_loopgetaddrinfosocket)hostportr   loops       r    _getaddrinfor`   w   sN      8'')%%d;F;;;!!$777 <s   7AAA)   r(   c                >   #    U R                  5       I Sh  vN $  N7f)iCompatibility function until we drop 3.9 support: https://docs.python.org/3/library/functions.html#anext.N)	__anext__clss    r    anextrg      s     ]]_$$$s   c                "    U R                  5       $ )rc   )	__aiter__re   s    r    aiterrj      s    }}r'   )r   r   r#   r   )r-   rK   r.   rL   r/   rL   r#   rL   )r]   r   r^   r   r   r   r#   zlist[tuple[socket.AddressFamily, socket.SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes]]])rf   r   r#   r   )"rR   
__future__r   rY   builtinsr$   r+   r\   sysrE   typingr   r   r   r   pymongor   pymongo.commonr	   pymongo.errorsr
   pymongo.helpers_sharedr   rX   r   r&   rS   rT   r1   r3   r`   version_inforg   rj   rV   r'   r    <module>rt      s    9 "      
    / C CxS)*D   *:lAA!&AFKA
A :8
88$'88$ wNNENNE%r'   