o
    'h
                     @  s   U d Z ddlmZ ddlZddlZddlZddlZddlZddlmZ ddl	m
Z
mZmZ ddlZeedZe Zded< ed	Zejd
krNejZejZnejjZejjZd&ddZd'ddZ	d(d)ddZd(d*ddZd+ddZd,d"d#Zd-d$d%ZdS ).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)      returnthreading.Lockc                  C  s   t  } trt|  | S )zpRepresents a lock that is tracked upon instantiation using a WeakSet and
    reset by pymongo upon forking.
    )	threadingLock_HAS_REGISTER_AT_FORKr   addlock r   H/var/www/html/olx_land/venv/lib/python3.10/site-packages/pymongo/lock.py_create_lock.   s   
r   r   c                   C  s   t  S )zRepresents an asyncio.Lock.)r   r   r   r   r   _async_create_lock8   s   r   r   condition_classOptional[Any]threading.Conditionc                 C  s   |r|| S t | S )z!Represents a threading.Condition.)r   	Conditionr   r   r   r   r   _create_condition=   s   
r   r   c                 C  s   |r|| S t | S )z Represents an asyncio.Condition.)r   r   r   r   r   _async_create_conditionF   s   r   Nonec                  C  s   t D ]
} |  r|   qd S N)r   lockedreleaser   r   r   r   _release_locksM   s
   r#   	conditiontimeoutOptional[float]boolc                   s0   zt |  |I d H W S  tjy   Y dS w )NF)r   waitasyncioTimeoutErrorr$   r%   r   r   r   _async_cond_waitT   s   r,   c                 C  s
   |  |S r    )r(   r+   r   r   r   
_cond_wait[   s   
r-   )r   r   )r   r   r    )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   )r$   r   r%   r&   r   r'   )r$   r   r%   r&   r   r'   ) __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   r   <module>   s4   




	

