From de5472403b8dd641b602084bd28bf5fe510e8b87 Mon Sep 17 00:00:00 2001 From: Ruslan Sayfutdinov Date: Fri, 14 May 2021 06:36:49 +0100 Subject: [PATCH] Use mypy-friendly conditional import for zoneinfo (#50444) --- homeassistant/util/dt.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/homeassistant/util/dt.py b/homeassistant/util/dt.py index 28aebc5db47..656f77b3289 100644 --- a/homeassistant/util/dt.py +++ b/homeassistant/util/dt.py @@ -5,17 +5,18 @@ import bisect from contextlib import suppress import datetime as dt import re -from typing import Any - -try: - import zoneinfo -except ImportError: - from backports import zoneinfo +import sys +from typing import Any, cast import ciso8601 from homeassistant.const import MATCH_ALL +if sys.version_info[:2] >= (3, 9): + import zoneinfo # pylint: disable=import-error +else: + from backports import zoneinfo # pylint: disable=import-error + DATE_STR_FORMAT = "%Y-%m-%d" UTC = dt.timezone.utc DEFAULT_TIME_ZONE: dt.tzinfo = dt.timezone.utc @@ -49,7 +50,8 @@ def get_time_zone(time_zone_str: str) -> dt.tzinfo | None: Async friendly. """ try: - return zoneinfo.ZoneInfo(time_zone_str) # type: ignore + # Cast can be removed when mypy is switched to Python 3.9. + return cast(dt.tzinfo, zoneinfo.ZoneInfo(time_zone_str)) except zoneinfo.ZoneInfoNotFoundError: return None