ashb commented on a change in pull request #17414: URL: https://github.com/apache/airflow/pull/17414#discussion_r695823577
########## File path: airflow/models/dag.py ########## @@ -92,11 +91,34 @@ log = logging.getLogger(__name__) -ScheduleInterval = Union[str, timedelta, relativedelta] DEFAULT_VIEW_PRESETS = ['tree', 'graph', 'duration', 'gantt', 'landing_times'] ORIENTATION_PRESETS = ['LR', 'TB', 'RL', 'BT'] +ScheduleIntervalArgNotSet = type("ScheduleIntervalArgNotSet", (), {}) + DagStateChangeCallback = Callable[[Context], None] +ScheduleInterval = Union[str, timedelta, relativedelta] +ScheduleIntervalArg = Union[ScheduleInterval, None, Type[ScheduleIntervalArgNotSet]] + + +# Backward compatibility: If neither schedule_interval nor timetable is +# *provided by the user*, default to a one-day interval. +DEFAULT_SCHEDULE_INTERVAL = timedelta(days=1) + + +def create_timetable(interval: ScheduleIntervalArg, timezone: tzinfo) -> Timetable: + """Create a Timetable instance from a ``schedule_interval`` argument.""" + if interval is ScheduleIntervalArgNotSet: + return DeltaDataIntervalTimetable(DEFAULT_SCHEDULE_INTERVAL) Review comment: ```suggestion return DEFAULT_TIMETABLE ``` ########## File path: airflow/models/dag.py ########## @@ -92,11 +91,34 @@ log = logging.getLogger(__name__) -ScheduleInterval = Union[str, timedelta, relativedelta] DEFAULT_VIEW_PRESETS = ['tree', 'graph', 'duration', 'gantt', 'landing_times'] ORIENTATION_PRESETS = ['LR', 'TB', 'RL', 'BT'] +ScheduleIntervalArgNotSet = type("ScheduleIntervalArgNotSet", (), {}) + DagStateChangeCallback = Callable[[Context], None] +ScheduleInterval = Union[str, timedelta, relativedelta] +ScheduleIntervalArg = Union[ScheduleInterval, None, Type[ScheduleIntervalArgNotSet]] + + +# Backward compatibility: If neither schedule_interval nor timetable is +# *provided by the user*, default to a one-day interval. +DEFAULT_SCHEDULE_INTERVAL = timedelta(days=1) Review comment: ```suggestion DEFAULT_TIMETABLE = DeltaDataIntervalTimetable(timedelta(days=1)) ``` perhaps? ########## File path: tests/serialization/test_dag_serialization.py ########## @@ -137,6 +137,11 @@ 'label': 'custom_task', }, ], + "schedule_interval": {"__type": "timedelta", "__var": 86400.0}, + "timetable": { + "type": "airflow.timetables.interval.DeltaDataIntervalTimetable", + "value": {"delta": 86400.0}, + }, Review comment: I don't think we should have both of these in a serialized row -- shouldn't it be one xor the other? -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@airflow.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org