Coverage for opt/mealie/lib/python3.12/site-packages/mealie/services/scheduler/scheduler_registry.py: 88%
41 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-11-25 15:48 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-11-25 15:48 +0000
1from collections.abc import Callable, Iterable 1a
3from mealie.core import root_logger 1a
5logger = root_logger.get_logger() 1a
8class SchedulerRegistry: 1a
9 """
10 A container class for registering and removing callbacks for the scheduler.
11 """
13 _daily: list[Callable] = [] 1a
14 _hourly: list[Callable] = [] 1a
15 _minutely: list[Callable] = [] 1a
17 @staticmethod 1a
18 def _register(name: str, callbacks: list[Callable], callback: Iterable[Callable]): 1a
19 for cb in callback: 1a
20 logger.debug(f"Registering {name} callback: {cb.__name__}") 1a
21 callbacks.append(cb) 1a
23 @staticmethod 1a
24 def register_daily(*callbacks: Callable): 1a
25 SchedulerRegistry._register("daily", SchedulerRegistry._daily, callbacks) 1a
27 @staticmethod 1a
28 def remove_daily(callback: Callable): 1a
29 logger.debug(f"Removing daily callback: {callback.__name__}")
30 SchedulerRegistry._daily.remove(callback)
32 @staticmethod 1a
33 def register_hourly(*callbacks: Callable): 1a
34 SchedulerRegistry._register("daily", SchedulerRegistry._hourly, callbacks) 1a
36 @staticmethod 1a
37 def remove_hourly(callback: Callable): 1a
38 logger.debug(f"Removing hourly callback: {callback.__name__}")
39 SchedulerRegistry._hourly.remove(callback)
41 @staticmethod 1a
42 def register_minutely(*callbacks: Callable): 1a
43 SchedulerRegistry._register("minutely", SchedulerRegistry._minutely, callbacks) 1a
45 @staticmethod 1a
46 def remove_minutely(callback: Callable): 1a
47 logger.debug(f"Removing minutely callback: {callback.__name__}")
48 SchedulerRegistry._minutely.remove(callback)
50 @staticmethod 1a
51 def print_jobs(): 1a
52 for job in SchedulerRegistry._daily: 1a
53 logger.debug(f"Daily job: {job.__name__}") 1a
55 for job in SchedulerRegistry._hourly: 1a
56 logger.debug(f"Hourly job: {job.__name__}") 1a
58 for job in SchedulerRegistry._minutely: 1a
59 logger.debug(f"Minutely job: {job.__name__}") 1a