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, }, }