summaryrefslogtreecommitdiff
path: root/src/apscheduler/datastores
diff options
context:
space:
mode:
authorAlex Grönholm <alex.gronholm@nextday.fi>2021-09-08 21:48:33 +0300
committerAlex Grönholm <alex.gronholm@nextday.fi>2021-09-08 21:48:33 +0300
commit114e041fa434a36f27c80130b6c0667da5497047 (patch)
tree7fd2361a824ac06955aeb233240464043ca61844 /src/apscheduler/datastores
parent075fce4105699c7adb4abc5f22de62dfc83b7e2b (diff)
downloadapscheduler-114e041fa434a36f27c80130b6c0667da5497047.tar.gz
Rearranged the data stores
Diffstat (limited to 'src/apscheduler/datastores')
-rw-r--r--src/apscheduler/datastores/async_/__init__.py0
-rw-r--r--src/apscheduler/datastores/async_adapter.py (renamed from src/apscheduler/datastores/async_/sync_adapter.py)12
-rw-r--r--src/apscheduler/datastores/async_sqlalchemy.py (renamed from src/apscheduler/datastores/async_/sqlalchemy.py)51
-rw-r--r--src/apscheduler/datastores/memory.py (renamed from src/apscheduler/datastores/sync/memory.py)14
-rw-r--r--src/apscheduler/datastores/mongodb.py (renamed from src/apscheduler/datastores/sync/mongodb.py)18
-rw-r--r--src/apscheduler/datastores/sqlalchemy.py (renamed from src/apscheduler/datastores/sync/sqlalchemy.py)18
-rw-r--r--src/apscheduler/datastores/sync/__init__.py0
7 files changed, 46 insertions, 67 deletions
diff --git a/src/apscheduler/datastores/async_/__init__.py b/src/apscheduler/datastores/async_/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/src/apscheduler/datastores/async_/__init__.py
+++ /dev/null
diff --git a/src/apscheduler/datastores/async_/sync_adapter.py b/src/apscheduler/datastores/async_adapter.py
index 5e9e3f3..89f268a 100644
--- a/src/apscheduler/datastores/async_/sync_adapter.py
+++ b/src/apscheduler/datastores/async_adapter.py
@@ -9,12 +9,12 @@ import attr
from anyio import to_thread
from anyio.from_thread import BlockingPortal
-from ... import events
-from ...abc import AsyncDataStore, DataStore
-from ...enums import ConflictPolicy
-from ...events import Event, SubscriptionToken
-from ...structures import Job, JobResult, Schedule, Task
-from ...util import reentrant
+from .. import events
+from ..abc import AsyncDataStore, DataStore
+from ..enums import ConflictPolicy
+from ..events import Event, SubscriptionToken
+from ..structures import Job, JobResult, Schedule, Task
+from ..util import reentrant
@reentrant
diff --git a/src/apscheduler/datastores/async_/sqlalchemy.py b/src/apscheduler/datastores/async_sqlalchemy.py
index a897556..fad2cd3 100644
--- a/src/apscheduler/datastores/async_/sqlalchemy.py
+++ b/src/apscheduler/datastores/async_sqlalchemy.py
@@ -14,27 +14,28 @@ import sniffio
from anyio import TASK_STATUS_IGNORED, create_task_group, sleep
from attr import asdict
from sqlalchemy import (
- JSON, TIMESTAMP, Column, Enum, Integer, LargeBinary, MetaData, Table, TypeDecorator, Unicode,
- and_, bindparam, func, or_, select)
-from sqlalchemy.engine import URL, Dialect, Result
+ JSON, TIMESTAMP, Column, Enum, Integer, LargeBinary, MetaData, Table, Unicode, and_, bindparam,
+ func, or_, select)
+from sqlalchemy.engine import URL, Result
from sqlalchemy.exc import CompileError, IntegrityError
from sqlalchemy.ext.asyncio import AsyncConnection, create_async_engine
from sqlalchemy.ext.asyncio.engine import AsyncEngine
from sqlalchemy.sql.ddl import DropTable
from sqlalchemy.sql.elements import BindParameter, literal
-from ... import events as events_module
-from ...abc import AsyncDataStore, Job, Schedule, Serializer
-from ...enums import CoalescePolicy, ConflictPolicy, JobOutcome
-from ...events import (
+from .. import events as events_module
+from ..abc import AsyncDataStore, Job, Schedule, Serializer
+from ..enums import CoalescePolicy, ConflictPolicy, JobOutcome
+from ..events import (
AsyncEventHub, DataStoreEvent, Event, JobAdded, JobDeserializationFailed, ScheduleAdded,
ScheduleDeserializationFailed, ScheduleRemoved, ScheduleUpdated, SubscriptionToken, TaskAdded,
TaskRemoved, TaskUpdated)
-from ...exceptions import ConflictingIdError, SerializationError, TaskLookupError
-from ...marshalling import callable_to_ref
-from ...serializers.pickle import PickleSerializer
-from ...structures import JobResult, Task
-from ...util import reentrant
+from ..exceptions import ConflictingIdError, SerializationError, TaskLookupError
+from ..marshalling import callable_to_ref
+from ..serializers.pickle import PickleSerializer
+from ..structures import JobResult, Task
+from ..util import reentrant
+from .sqlalchemy import EmulatedTimestampTZ, EmulatedUUID
def default_json_handler(obj: Any) -> Any:
@@ -60,31 +61,9 @@ def json_object_hook(obj: dict[str, Any]) -> Any:
return obj
-class EmulatedUUID(TypeDecorator):
- impl = Unicode(32)
- cache_ok = True
-
- def process_bind_param(self, value, dialect: Dialect) -> Any:
- return value.hex
-
- def process_result_value(self, value: Any, dialect: Dialect):
- return UUID(value) if value else None
-
-
-class EmulatedTimestampTZ(TypeDecorator):
- impl = Unicode(32)
- cache_ok = True
-
- def process_bind_param(self, value, dialect: Dialect) -> Any:
- return value.isoformat() if value is not None else None
-
- def process_result_value(self, value: Any, dialect: Dialect):
- return datetime.fromisoformat(value) if value is not None else None
-
-
@reentrant
@attr.define(eq=False)
-class SQLAlchemyDataStore(AsyncDataStore):
+class AsyncSQLAlchemyDataStore(AsyncDataStore):
engine: AsyncEngine
schema: Optional[str] = attr.field(default=None, kw_only=True)
serializer: Serializer = attr.field(factory=PickleSerializer, kw_only=True)
@@ -121,7 +100,7 @@ class SQLAlchemyDataStore(AsyncDataStore):
self.notify_channel = None
@classmethod
- def from_url(cls, url: str | URL, **options) -> 'SQLAlchemyDataStore':
+ def from_url(cls, url: str | URL, **options) -> AsyncSQLAlchemyDataStore:
engine = create_async_engine(url, future=True)
return cls(engine, **options)
diff --git a/src/apscheduler/datastores/sync/memory.py b/src/apscheduler/datastores/memory.py
index 17ab70c..df4e0c2 100644
--- a/src/apscheduler/datastores/sync/memory.py
+++ b/src/apscheduler/datastores/memory.py
@@ -9,15 +9,15 @@ from uuid import UUID
import attr
-from ... import events
-from ...abc import DataStore, Job, Schedule
-from ...enums import ConflictPolicy
-from ...events import (
+from .. import events
+from ..abc import DataStore, Job, Schedule
+from ..enums import ConflictPolicy
+from ..events import (
EventHub, JobAdded, ScheduleAdded, ScheduleRemoved, ScheduleUpdated, SubscriptionToken,
TaskAdded, TaskRemoved, TaskUpdated)
-from ...exceptions import ConflictingIdError, TaskLookupError
-from ...structures import JobResult, Task
-from ...util import reentrant
+from ..exceptions import ConflictingIdError, TaskLookupError
+from ..structures import JobResult, Task
+from ..util import reentrant
max_datetime = datetime(MAXYEAR, 12, 31, 23, 59, 59, 999999, tzinfo=timezone.utc)
diff --git a/src/apscheduler/datastores/sync/mongodb.py b/src/apscheduler/datastores/mongodb.py
index 1b87929..749381e 100644
--- a/src/apscheduler/datastores/sync/mongodb.py
+++ b/src/apscheduler/datastores/mongodb.py
@@ -14,17 +14,17 @@ from pymongo import ASCENDING, DeleteOne, MongoClient, UpdateOne
from pymongo.collection import Collection
from pymongo.errors import DuplicateKeyError
-from ... import events
-from ...abc import DataStore, Job, Schedule, Serializer
-from ...enums import ConflictPolicy
-from ...events import (
+from .. import events
+from ..abc import DataStore, Job, Schedule, Serializer
+from ..enums import ConflictPolicy
+from ..events import (
DataStoreEvent, EventHub, JobAdded, ScheduleAdded, ScheduleRemoved, ScheduleUpdated,
SubscriptionToken, TaskAdded, TaskRemoved, TaskUpdated)
-from ...exceptions import (
+from ..exceptions import (
ConflictingIdError, DeserializationError, SerializationError, TaskLookupError)
-from ...serializers.pickle import PickleSerializer
-from ...structures import JobResult, Task
-from ...util import reentrant
+from ..serializers.pickle import PickleSerializer
+from ..structures import JobResult, Task
+from ..util import reentrant
@reentrant
@@ -58,7 +58,7 @@ class MongoDBDataStore(DataStore):
self._jobs_results: Collection = database['job_results']
@classmethod
- def from_url(cls, uri: str, **options) -> 'MongoDBDataStore':
+ def from_url(cls, uri: str, **options) -> MongoDBDataStore:
client = MongoClient(uri)
return cls(client, **options)
diff --git a/src/apscheduler/datastores/sync/sqlalchemy.py b/src/apscheduler/datastores/sqlalchemy.py
index 2a170db..11db258 100644
--- a/src/apscheduler/datastores/sync/sqlalchemy.py
+++ b/src/apscheduler/datastores/sqlalchemy.py
@@ -16,17 +16,17 @@ from sqlalchemy.future import Engine, create_engine
from sqlalchemy.sql.ddl import DropTable
from sqlalchemy.sql.elements import BindParameter, literal
-from ...abc import DataStore, Job, Schedule, Serializer
-from ...enums import CoalescePolicy, ConflictPolicy, JobOutcome
-from ...events import (
+from ..abc import DataStore, Job, Schedule, Serializer
+from ..enums import CoalescePolicy, ConflictPolicy, JobOutcome
+from ..events import (
Event, EventHub, JobAdded, JobDeserializationFailed, ScheduleAdded,
ScheduleDeserializationFailed, ScheduleRemoved, ScheduleUpdated, SubscriptionToken, TaskAdded,
TaskRemoved, TaskUpdated)
-from ...exceptions import ConflictingIdError, SerializationError, TaskLookupError
-from ...marshalling import callable_to_ref
-from ...serializers.pickle import PickleSerializer
-from ...structures import JobResult, Task
-from ...util import reentrant
+from ..exceptions import ConflictingIdError, SerializationError, TaskLookupError
+from ..marshalling import callable_to_ref
+from ..serializers.pickle import PickleSerializer
+from ..structures import JobResult, Task
+from ..util import reentrant
class EmulatedUUID(TypeDecorator):
@@ -85,7 +85,7 @@ class SQLAlchemyDataStore(DataStore):
self._supports_update_returning = True
@classmethod
- def from_url(cls, url: str | URL, **options) -> 'SQLAlchemyDataStore':
+ def from_url(cls, url: str | URL, **options) -> SQLAlchemyDataStore:
engine = create_engine(url)
return cls(engine, **options)
diff --git a/src/apscheduler/datastores/sync/__init__.py b/src/apscheduler/datastores/sync/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/src/apscheduler/datastores/sync/__init__.py
+++ /dev/null