From fdf1a537605be579d28759415a3a5905c466a7a3 Mon Sep 17 00:00:00 2001 From: Malthe Borch Date: Wed, 4 May 2022 20:41:34 +0000 Subject: [PATCH] Add support for timezone as string in cron interval timetable (#23279) --- airflow/timetables/interval.py | 5 ++++- tests/timetables/test_interval_timetable.py | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/airflow/timetables/interval.py b/airflow/timetables/interval.py index fd29a2aac0310..5ed9cd21d2571 100644 --- a/airflow/timetables/interval.py +++ b/airflow/timetables/interval.py @@ -127,8 +127,11 @@ class CronDataIntervalTimetable(_DataIntervalTimetable): Don't pass ``@once`` in here; use ``OnceTimetable`` instead. """ - def __init__(self, cron: str, timezone: Timezone) -> None: + def __init__(self, cron: str, timezone: Union[str, Timezone]) -> None: self._expression = cron_presets.get(cron, cron) + + if isinstance(timezone, str): + timezone = Timezone(timezone) self._timezone = timezone descriptor = ExpressionDescriptor( diff --git a/tests/timetables/test_interval_timetable.py b/tests/timetables/test_interval_timetable.py index fe09e0c58969a..53e5ec352d5e5 100644 --- a/tests/timetables/test_interval_timetable.py +++ b/tests/timetables/test_interval_timetable.py @@ -153,3 +153,8 @@ def test_validate_failure(timetable: Timetable, error_message: str) -> None: with pytest.raises(AirflowTimetableInvalid) as ctx: timetable.validate() assert str(ctx.value) == error_message + + +def test_cron_interval_timezone_from_string(): + timetable = CronDataIntervalTimetable("@hourly", "UTC") + assert timetable.serialize()['timezone'] == 'UTC'