summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Grönholm <alex.gronholm@nextday.fi>2022-01-02 12:58:41 +0200
committerAlex Grönholm <alex.gronholm@nextday.fi>2022-01-02 12:58:41 +0200
commit101fc102e2f28190aa0fc405167b9c74a22d6c70 (patch)
treeb603baa37c8b7ee6199fc4b48790731824880117
parent6ae2c5bd5d44ca0d1e6aea1d4f4c3dc55b5efb8a (diff)
downloadapscheduler-101fc102e2f28190aa0fc405167b9c74a22d6c70.tar.gz
Fixed compatibility with pymongo 4
-rw-r--r--setup.cfg4
-rw-r--r--src/apscheduler/datastores/mongodb.py10
2 files changed, 10 insertions, 4 deletions
diff --git a/setup.cfg b/setup.cfg
index f0fb314..8689679 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -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']