Ë
    Ü_Ëið  ã                  óF  — 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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& ddl'm(Z( ddl)m*Z* ddlm+Z+ ddlm,Z, ddlm-Z- ddlm.Z. ddlm/Z/ ddlm0Z0 eZ1	 dd„Z2y)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   )Ú
uri_parser)Úchange_stream)Úclient_session)Ú
collection)Úcommand_cursor)Údatabasec                óØ   — t        | t        t        t        d«      f«      st	        dt        | «      › �«      ‚| 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.

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

    :raises: :py:class:`ValueError`: When `seconds` is negative.

    See `Limit Server Execution Time <https://www.mongodb.com/docs/languages/python/pymongo-driver/current/connect/connection-options/csot/#overview>`_ 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    úS/var/www/pod-logistic/pod-api/venv/lib/python3.12/site-packages/pymongo/__init__.pyr    r    z   sf   € ôd �g¤¤U¬D°«JÐ7Ô8ÜÐHÌÈgËÈÐXÓYÐYÙ�7˜Q’;ÜÐ5Ó6Ð6ØÐÜ˜“.ˆÜ× Ñ  Ó)Ð)ó    N)r6   zOptional[float]ÚreturnzContextManager[None])3Ú__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)   r*   r+   r,   r-   r   r    © r8   r7   ú<module>rI      s®   ðñ !Ý "ç +ò€ð< €	Ø Ø€
Ø à€ðð
 €	ðð 
€ðð €ð	õ ß KÑ KÝ >ß XÑ XÝ %÷÷ ñ õ 4Ý 9Ý 8Ý .õ Ý !Ý "Ý Ý "Ý ð €Ø !ô8*r8   