diff --git a/airflow/serialization/serializers/timezone.py b/airflow/serialization/serializers/timezone.py index 5d3b940cd78f4..23901b9d444e8 100644 --- a/airflow/serialization/serializers/timezone.py +++ b/airflow/serialization/serializers/timezone.py @@ -18,6 +18,7 @@ from __future__ import annotations import datetime +import sys from typing import TYPE_CHECKING, Any, cast from airflow.utils.module_loading import qualname @@ -29,10 +30,15 @@ serializers = [ "pendulum.tz.timezone.FixedTimezone", "pendulum.tz.timezone.Timezone", - "zoneinfo.ZoneInfo", - "backports.zoneinfo.ZoneInfo", ] +PY39 = sys.version_info >= (3, 9) + +if PY39: + serializers.append("zoneinfo.ZoneInfo") +else: + serializers.append("backports.zoneinfo.ZoneInfo") + deserializers = serializers __version__ = 1 @@ -79,17 +85,11 @@ def deserialize(classname: str, version: int, data: object) -> Any: if isinstance(data, int): return fixed_timezone(data) - if classname == "zoneinfo.ZoneInfo": - from zoneinfo import ZoneInfo - - return ZoneInfo(data) - - if classname == "backports.zoneinfo.ZoneInfo": - # python version might have been upgraded, so we need to check + if "zoneinfo.ZoneInfo" in classname: try: - from backports.zoneinfo import ZoneInfo - except ImportError: from zoneinfo import ZoneInfo + except ImportError: + from backports.zoneinfo import ZoneInfo return ZoneInfo(data)