+\hXdZddlmZddlmZmZmZGddZGddZd dZ y ) a Support for MongoDB Stable API. .. _versioned-api-ref: MongoDB Stable API ===================== Starting in MongoDB 5.0, applications can specify the server API version to use when creating a :class:`~pymongo.mongo_client.MongoClient`. Doing so ensures that the driver behaves in a manner compatible with that server API version, regardless of the server's actual release version. Declaring an API Version ```````````````````````` .. attention:: Stable API requires MongoDB >=5.0. To configure MongoDB Stable API, pass the ``server_api`` keyword option to :class:`~pymongo.mongo_client.MongoClient`:: >>> from pymongo.mongo_client import MongoClient >>> from pymongo.server_api import ServerApi >>> >>> # Declare API version "1" for MongoClient "client" >>> server_api = ServerApi('1') >>> client = MongoClient(server_api=server_api) The declared API version is applied to all commands run through ``client``, including those sent through the generic :meth:`~pymongo.database.Database.command` helper. .. note:: Declaring an API version on the :class:`~pymongo.mongo_client.MongoClient` **and** specifying stable API options in :meth:`~pymongo.database.Database.command` command document is not supported and will lead to undefined behaviour. To run any command without declaring a server API version or using a different API version, create a separate :class:`~pymongo.mongo_client.MongoClient` instance. Strict Mode ``````````` Configuring ``strict`` mode will cause the MongoDB server to reject all commands that are not part of the declared :attr:`ServerApi.version`. This includes command options and aggregation pipeline stages. For example:: >>> server_api = ServerApi('1', strict=True) >>> client = MongoClient(server_api=server_api) >>> client.test.command('count', 'test') Traceback (most recent call last): ... pymongo.errors.OperationFailure: Provided apiStrict:true, but the command count is not in API Version 1, full error: {'ok': 0.0, 'errmsg': 'Provided apiStrict:true, but the command count is not in API Version 1', 'code': 323, 'codeName': 'APIStrictError' Detecting API Deprecations `````````````````````````` The ``deprecationErrors`` option can be used to enable command failures when using functionality that is deprecated from the configured :attr:`ServerApi.version`. For example:: >>> server_api = ServerApi('1', deprecation_errors=True) >>> client = MongoClient(server_api=server_api) Note that at the time of this writing, no deprecated APIs exist. Classes ======= ) annotations)AnyMutableMappingOptionalceZdZdZdZy)ServerApiVersionz[An enum that defines values for :attr:`ServerApi.version`. .. versionadded:: 3.12 1N)__name__ __module__ __qualname____doc__V1U/root/niggaflix-v3/playground/venv/lib/python3.12/site-packages/pymongo/server_api.pyrr[s B!rrc\eZdZdZ d ddZed dZed dZed dZy) ServerApizMongoDB Stable API.Nc|tjk7rtd||'t|tst dt ||'t|tst dt |||_||_||_ y)aOptions to configure MongoDB Stable API. :param version: The API version string. Must be one of the values in :class:`ServerApiVersion`. :param strict: Set to ``True`` to enable API strict mode. Defaults to ``None`` which means "use the server's default". :param deprecation_errors: Set to ``True`` to enable deprecation errors. Defaults to ``None`` which means "use the server's default". .. versionadded:: 3.12 zUnknown ServerApi version: NzHWrong type for ServerApi strict, value must be an instance of bool, not zTWrong type for ServerApi deprecation_errors, value must be an instance of bool, not ) rr ValueError isinstancebool TypeErrortype_version_strict_deprecation_errors)selfversionstrictdeprecation_errorss r__init__zServerApi.__init__hs &)) ):7)DE E  j&> $V ~/   )*=OQU2V,,01C,D+EG    #5 rc|jS)zfThe API version setting. This value is sent to the server in the "apiVersion" field. )rrs rrzServerApi.versions }}rc|jS)zsThe API strict mode setting. When set, this value is sent to the server in the "apiStrict" field. )rr#s rrzServerApi.stricts ||rc|jS)zThe API deprecation errors setting. When set, this value is sent to the server in the "apiDeprecationErrors" field. )rr#s rr zServerApi.deprecation_errorss'''r)NN)rstrrOptional[bool]r r')returnr&)r(r') r r r r r!propertyrrr rrrrreseae66$26O]6>((rrc|sy|j|d<|j|j|d<|j|j|d<yy)zInternal helper which adds API versioning options to a command. :param cmd: The command. :param server_api: A :class:`ServerApi` or ``None``. N apiVersion apiStrictapiDeprecationErrors)rrr )cmd server_apis r_add_to_commandr0sX "**C $%,,K$$0&0&C&C "#1rN)r.zMutableMapping[str, Any]r/zOptional[ServerApi]r(None) r __future__rtypingrrrrrr0rrrr4s2FN#00""9(9(x Dr