
    [j                        d Z ddlmZ ddlmZmZ g dZdZ	 dZ	 dZ		 dZ
	 d	Z	 d
Z	 ddlmZ ddlmZmZmZ ddlmZ ddlmZmZ ddlmZ ddlmZ ddlmZmZmZm Z m!Z!m"Z"m#Z# ddl$m%Z% ddl&m'Z' eZ(	 ddZ)ddZ*dS )zPython driver for MongoDB.    )annotations)ContextManagerOptional)	ASCENDING
DESCENDINGGEO2D	GEOSPHEREHASHEDTEXTversion_tupleget_version_string__version__versionReturnDocumentMAX_SUPPORTED_WIRE_VERSIONMIN_SUPPORTED_WIRE_VERSION
CursorTypeMongoClient
DeleteMany	DeleteOne
IndexModel	InsertOne
ReplaceOne
UpdateMany	UpdateOneReadPreferenceWriteConcernhas_ctimeout   2d2dspherehashedtext)_csot)r   r   r   )r   )r   r   )r   )r   )r   r   r   r   r   r   r   )r   )r   returnboolc                 6    	 ddl m}  dS # t          $ r Y dS w xY w)zIs the C extension installed?r   	_cmessageTF)pymongor+   ImportErrorr*   s    T/var/www/app.qaans.com/backend/venv/lib/python3.11/site-packages/pymongo/__init__.pyr   r   n   s@    %%%%%%t   uus   
 
secondsOptional[float]ContextManager[None]c                    t          | t          t          t          d          f          st	          d          | r| dk     rt          d          | t          |           } t          j        |           S )a  **(Provisional)** Apply the given timeout for a block of operations.

    .. note:: :func:`~pymongo.timeout` is currently provisional. Backwards
       incompatible changes may occur before becoming officially supported.

    Use :func:`~pymongo.timeout` in a with-statement::

      with pymongo.timeout(5):
          client.db.coll.insert_one({})
          client.db.coll2.insert_one({})

    When the with-statement is entered, a deadline is set for the entire
    block. When that deadline is exceeded, any blocking pymongo operation
    will raise a timeout exception. For example::

      try:
          with pymongo.timeout(5):
              client.db.coll.insert_one({})
              time.sleep(5)
              # The deadline has now expired, the next operation will raise
              # a timeout exception.
              client.db.coll2.insert_one({})
      except PyMongoError as exc:
          if exc.timeout:
              print(f"block timed out: {exc!r}")
          else:
              print(f"failed with non-timeout error: {exc!r}")

    When nesting :func:`~pymongo.timeout`, the nested deadline is capped by
    the outer deadline. The deadline can only be shortened, not extended.
    When exiting the block, the previous deadline is restored::

      with pymongo.timeout(5):
          coll.find_one()  # Uses the 5 second deadline.
          with pymongo.timeout(3):
              coll.find_one() # Uses the 3 second deadline.
          coll.find_one()  # Uses the original 5 second deadline.
          with pymongo.timeout(10):
              coll.find_one()  # Still uses the original 5 second deadline.
          coll.find_one()  # Uses the original 5 second deadline.

    :Parameters:
      - `seconds`: A non-negative floating point number expressing seconds, or None.

    :Raises:
      - :py:class:`ValueError`: When `seconds` is negative.

    See :ref:`timeout-example` for more examples.

    .. versionadded:: 4.2
    Nz(timeout must be None, an int, or a floatr   ztimeout cannot be negative)
isinstanceintfloattype	TypeError
ValueErrorr&   _TimeoutContext)r/   s    r.   r   r   x   su    h gUDJJ788 DBCCC 77Q;;5666.. )))    N)r'   r(   )r/   r0   r'   r1   )+__doc__
__future__r   typingr   r   __all__r   r   r   r	   r
   r   r,   r&   pymongo._versionr   r   r   pymongo.collectionr   pymongo.commonr   r   pymongo.cursorr   pymongo.mongo_clientr   pymongo.operationsr   r   r   r   r   r   r   pymongo.read_preferencesr   pymongo.write_concernr   r   r   r    r:   r.   <module>rH      s   !   " " " " " " + + + + + + + +  : 	 
 
 	 
 	       K K K K K K K K K K - - - - - - Q Q Q Q Q Q Q Q % % % % % % , , , , , ,                  4 3 3 3 3 3 . . . . . .
 !   :* :* :* :* :* :*r:   