diff options
author | Alex Grönholm <alex.gronholm@nextday.fi> | 2021-09-08 21:48:33 +0300 |
---|---|---|
committer | Alex Grönholm <alex.gronholm@nextday.fi> | 2021-09-08 21:48:33 +0300 |
commit | 114e041fa434a36f27c80130b6c0667da5497047 (patch) | |
tree | 7fd2361a824ac06955aeb233240464043ca61844 /src/apscheduler/datastores | |
parent | 075fce4105699c7adb4abc5f22de62dfc83b7e2b (diff) | |
download | apscheduler-114e041fa434a36f27c80130b6c0667da5497047.tar.gz |
Rearranged the data stores
Diffstat (limited to 'src/apscheduler/datastores')
-rw-r--r-- | src/apscheduler/datastores/async_/__init__.py | 0 | ||||
-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__.py | 0 |
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 |