
    &g                        S r SSKJr  SSKJrJr  / SQrSr Sr Sr	 Sr
 S	r S
r SSKJr  SSKJrJrJr  SSKJr  SSKJrJrJr  SSKJr  SSKJrJrJr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*  \r+ SS jr,g)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AsyncMongoClient
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   )r   )r   c                    [        U [        [        [        S5      45      (       d  [	        S[        U 5       35      eU (       a  U S:  a  [        S5      eU b  [        U 5      n [        R                  " U 5      $ )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.

:param 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 float, not r   ztimeout cannot be negative)
isinstanceintfloattype	TypeError
ValueErrorr'   _TimeoutContext)secondss    UC:\Suresh\moveshuttle\MDcreated\moveengine\venv\Lib\site-packages\pymongo/__init__.pyr    r    p   si    d gUDJ788HgXYY7Q;566.  ))    N)r0   zOptional[float]returnzContextManager[None])-__doc__
__future__r   typingr   r   __all__r   r   r   r	   r
   r   pymongor'   pymongo._versionr   r   r   !pymongo.asynchronous.mongo_clientr   pymongo.commonr   r   r   pymongo.cursorr   pymongo.operationsr   r   r   r   r   r   r   pymongo.read_preferencesr   pymongo.synchronous.collectionr    pymongo.synchronous.mongo_clientr   pymongo.write_concernr   r   r     r2   r1   <module>rC      s    ! " +< 	 
 
 	 
 	  K K > X X %   4 9 8 .
 !8*r2   