diff options
author | Alex Grönholm <alex.gronholm@nextday.fi> | 2022-01-02 12:58:41 +0200 |
---|---|---|
committer | Alex Grönholm <alex.gronholm@nextday.fi> | 2022-01-02 12:58:41 +0200 |
commit | 101fc102e2f28190aa0fc405167b9c74a22d6c70 (patch) | |
tree | b603baa37c8b7ee6199fc4b48790731824880117 | |
parent | 6ae2c5bd5d44ca0d1e6aea1d4f4c3dc55b5efb8a (diff) | |
download | apscheduler-101fc102e2f28190aa0fc405167b9c74a22d6c70.tar.gz |
Fixed compatibility with pymongo 4
-rw-r--r-- | setup.cfg | 4 | ||||
-rw-r--r-- | src/apscheduler/datastores/mongodb.py | 10 |
2 files changed, 10 insertions, 4 deletions
@@ -35,7 +35,7 @@ where = src [options.extras_require] asyncpg = asyncpg >= 0.20 cbor = cbor2 >= 5.0 -mongodb = pymongo >= 3.12 +mongodb = pymongo >= 4 mqtt = paho-mqtt >= 1.5 redis = redis >= 4.0 sqlalchemy = sqlalchemy >= 1.4.22 @@ -46,7 +46,7 @@ test = freezegun paho-mqtt >= 1.5 psycopg2 - pymongo >= 3.12 + pymongo >= 4 pymysql[rsa] pytest >= 5.0 pytest-cov diff --git a/src/apscheduler/datastores/mongodb.py b/src/apscheduler/datastores/mongodb.py index 9ece95f..b8c4db5 100644 --- a/src/apscheduler/datastores/mongodb.py +++ b/src/apscheduler/datastores/mongodb.py @@ -12,7 +12,7 @@ import attrs import pymongo import tenacity from attrs.validators import instance_of -from bson import CodecOptions +from bson import CodecOptions, UuidRepresentation from bson.codec_options import TypeEncoder, TypeRegistry from pymongo import ASCENDING, DeleteOne, MongoClient, UpdateOne from pymongo.collection import Collection @@ -45,6 +45,11 @@ class CustomEncoder(TypeEncoder): return self._encoder(value) +def ensure_uuid_presentation(client: MongoClient) -> None: + # if client. + pass + + @reentrant @attrs.define(eq=False) class MongoDBDataStore(DataStore): @@ -77,7 +82,8 @@ class MongoDBDataStore(DataStore): CustomEncoder(CoalescePolicy, operator.attrgetter('name')), CustomEncoder(JobOutcome, operator.attrgetter('name')) ]) - codec_options = CodecOptions(tz_aware=True, type_registry=type_registry) + codec_options = CodecOptions(tz_aware=True, type_registry=type_registry, + uuid_representation=UuidRepresentation.STANDARD) database = self.client.get_database(self.database, codec_options=codec_options) self._tasks: Collection = database['tasks'] self._schedules: Collection = database['schedules'] |