
    &g
                       % 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Jr  SSK	J
r
JrJr  SSKr\" \S5      r\R"                  " 5       rS\S'   \" S	5      r\R*                  S
:  a  \R,                  r\R.                  rO,\R0                  R,                  r\R0                  R.                  rSS jrSS jr S     SS jjrSSS jjrSS jrSS jrSS jrg)z@Internal helpers for lock and condition coordination primitives.    )annotationsN)wait_for)AnyOptionalTypeVarregister_at_forkzweakref.WeakSet[threading.Lock]_forkable_locks_T)      c                 p    [         R                  " 5       n [        (       a  [        R	                  U 5        U $ )zhRepresents a lock that is tracked upon instantiation using a WeakSet and
reset by pymongo upon forking.
)	threadingLock_HAS_REGISTER_AT_FORKr	   addlocks    QC:\Suresh\moveshuttle\MDcreated\moveengine\venv\Lib\site-packages\pymongo/lock.py_create_lockr   .   s)     >>DD!K    c                     [        5       $ )zRepresents an asyncio.Lock.)r    r   r   _async_create_lockr   8   s	    6Mr   c                L    U(       a  U" U 5      $ [         R                  " U 5      $ )z!Represents a threading.Condition.)r   	Conditionr   condition_classs     r   _create_conditionr   =   s#     t$$t$$r   c                6    U(       a  U" U 5      $ [        U 5      $ )z Represents an asyncio.Condition.)r   r   s     r   _async_create_conditionr    F   s    t$$T?r   c                 l    [          H*  n U R                  5       (       d  M  U R                  5         M,     g N)r	   lockedreleaser   s    r   _release_locksr%   M   s     ;;==LLN  r   c                   #     [        U R                  5       U5      I S h  vN $  N! [        R                   a     gf = f7f)NF)r   waitasyncioTimeoutError	conditiontimeouts     r   _async_cond_waitr-   T   s;     inn.8888 s,   A( &( A( ?A?Ac                $    U R                  U5      $ r"   )r'   r*   s     r   
_cond_waitr/   [   s    >>'""r   )returnthreading.Lock)r0   r   r"   )r   r1   r   Optional[Any]r0   threading.Condition)r   r   r   r2   r0   r   )r0   None)r+   r   r,   Optional[float]r0   bool)r+   r3   r,   r5   r0   r6   ) __doc__
__future__r   r(   ossysr   weakrefr   typingr   r   r   pymongo._asyncio_lockpymongohasattrr   WeakSetr	   __annotations__r
   version_infor   r   _asyncio_lockr   r   r   r    r%   r-   r/   r   r   r   <module>rD      s    G "  	 
    ) ) $67  4;??3D0 DT] w<<D!!I  %%D%%//I <@%
%+8%%#r   