diff options
author | Alex Grönholm <alex.gronholm@nextday.fi> | 2022-08-09 00:01:46 +0300 |
---|---|---|
committer | Alex Grönholm <alex.gronholm@nextday.fi> | 2022-08-09 00:02:05 +0300 |
commit | 93b219bf31a2638722c21f4ce44fe7c1d735ca45 (patch) | |
tree | 9c402c1399e767e38d4f6fb23554cecd1ec35154 | |
parent | ea0ed61cf3bfd24a2e0b9441e090a7be975dea98 (diff) | |
download | apscheduler-93b219bf31a2638722c21f4ce44fe7c1d735ca45.tar.gz |
Added get_schedules() methods to the scheduler classes
-rw-r--r-- | src/apscheduler/schedulers/async_.py | 9 | ||||
-rw-r--r-- | src/apscheduler/schedulers/sync.py | 10 | ||||
-rw-r--r-- | tests/test_schedulers.py | 34 |
3 files changed, 53 insertions, 0 deletions
diff --git a/src/apscheduler/schedulers/async_.py b/src/apscheduler/schedulers/async_.py index bc99567..6c60bdd 100644 --- a/src/apscheduler/schedulers/async_.py +++ b/src/apscheduler/schedulers/async_.py @@ -177,6 +177,15 @@ class AsyncScheduler: else: raise ScheduleLookupError(id) + async def get_schedules(self) -> list[Schedule]: + """ + Retrieve all schedules from the data store. + + :return: a list of schedules, in an unspecified order + + """ + return await self.data_store.get_schedules() + async def remove_schedule(self, id: str) -> None: """ Remove the given schedule from the data store. diff --git a/src/apscheduler/schedulers/sync.py b/src/apscheduler/schedulers/sync.py index e64d43c..aea7047 100644 --- a/src/apscheduler/schedulers/sync.py +++ b/src/apscheduler/schedulers/sync.py @@ -207,6 +207,16 @@ class Scheduler: else: raise ScheduleLookupError(id) + def get_schedules(self) -> list[Schedule]: + """ + Retrieve all schedules from the data store. + + :return: a list of schedules, in an unspecified order + + """ + self._ensure_services_ready() + return self.data_store.get_schedules() + def remove_schedule(self, id: str) -> None: """ Remove the given schedule from the data store. diff --git a/tests/test_schedulers.py b/tests/test_schedulers.py index 7bf0ef0..32f28dc 100644 --- a/tests/test_schedulers.py +++ b/tests/test_schedulers.py @@ -113,6 +113,24 @@ class TestAsyncScheduler: schedule = await scheduler.get_schedule("dummyid") assert isinstance(schedule, Schedule) + async def test_add_get_schedules(self) -> None: + async with AsyncScheduler(start_worker=False) as scheduler: + assert await scheduler.get_schedules() == [] + + schedule1_id = await scheduler.add_schedule( + dummy_async_job, DateTrigger(datetime.now() + timedelta(1)) + ) + await scheduler.add_schedule( + dummy_async_job, + DateTrigger(datetime.now() + timedelta(1)), + id="dummyid", + ) + + schedules = await scheduler.get_schedules() + assert all(isinstance(schedule, Schedule) for schedule in schedules) + assert any(schedule.id == schedule1_id for schedule in schedules) + assert any(schedule.id == "dummyid" for schedule in schedules) + @pytest.mark.parametrize( "max_jitter, expected_upper_bound", [pytest.param(2, 2, id="within"), pytest.param(4, 2.999999, id="exceed")], @@ -291,6 +309,22 @@ class TestSyncScheduler: schedule = scheduler.get_schedule("dummyid") assert isinstance(schedule, Schedule) + def test_add_get_schedules(self) -> None: + with Scheduler(start_worker=False) as scheduler: + assert scheduler.get_schedules() == [] + + schedule1_id = scheduler.add_schedule( + dummy_sync_job, DateTrigger(datetime.now() + timedelta(1)) + ) + scheduler.add_schedule( + dummy_sync_job, DateTrigger(datetime.now() + timedelta(1)), id="dummyid" + ) + + schedules = scheduler.get_schedules() + assert all(isinstance(schedule, Schedule) for schedule in schedules) + assert any(schedule.id == schedule1_id for schedule in schedules) + assert any(schedule.id == "dummyid" for schedule in schedules) + @pytest.mark.parametrize( "max_jitter, expected_upper_bound", [pytest.param(2, 2, id="within"), pytest.param(4, 2.999999, id="exceed")], |