Source code for scheduler.base.definition
"""
Basic definitions for a abstract `BaseJob` and `BaseScheduler`.
Author: Jendrik A. Potyka, Fabian A. Preiss
"""
import datetime as dt
from enum import Enum, auto
from scheduler.base.timingtype import (
_TimingCyclicList,
_TimingDailyList,
_TimingWeeklyList,
)
from scheduler.message import (
CYCLIC_TYPE_ERROR_MSG,
DAILY_TYPE_ERROR_MSG,
HOURLY_TYPE_ERROR_MSG,
MINUTELY_TYPE_ERROR_MSG,
WEEKLY_TYPE_ERROR_MSG,
)
from scheduler.trigger import (
Friday,
Monday,
Saturday,
Sunday,
Thursday,
Tuesday,
Wednesday,
)
[docs]
class JobType(Enum):
"""Indicate the `JobType` of a |BaseJob|."""
CYCLIC = auto()
MINUTELY = auto()
HOURLY = auto()
DAILY = auto()
WEEKLY = auto()
JOB_TYPE_MAPPING = {
dt.timedelta: JobType.CYCLIC,
dt.time: JobType.DAILY,
Monday: JobType.WEEKLY,
Tuesday: JobType.WEEKLY,
Wednesday: JobType.WEEKLY,
Thursday: JobType.WEEKLY,
Friday: JobType.WEEKLY,
Saturday: JobType.WEEKLY,
Sunday: JobType.WEEKLY,
}
JOB_TIMING_TYPE_MAPPING = {
JobType.CYCLIC: {
"type": _TimingCyclicList,
"err": CYCLIC_TYPE_ERROR_MSG,
},
JobType.MINUTELY: {
"type": _TimingDailyList,
"err": MINUTELY_TYPE_ERROR_MSG,
},
JobType.HOURLY: {
"type": _TimingDailyList,
"err": HOURLY_TYPE_ERROR_MSG,
},
JobType.DAILY: {
"type": _TimingDailyList,
"err": DAILY_TYPE_ERROR_MSG,
},
JobType.WEEKLY: {
"type": _TimingWeeklyList,
"err": WEEKLY_TYPE_ERROR_MSG,
},
}