Use mypy-friendly conditional import for zoneinfo (#50444)

This commit is contained in:
Ruslan Sayfutdinov 2021-05-14 06:36:49 +01:00 committed by GitHub
parent aef24a807e
commit de5472403b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -5,17 +5,18 @@ import bisect
from contextlib import suppress from contextlib import suppress
import datetime as dt import datetime as dt
import re import re
from typing import Any import sys
from typing import Any, cast
try:
import zoneinfo
except ImportError:
from backports import zoneinfo
import ciso8601 import ciso8601
from homeassistant.const import MATCH_ALL 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" DATE_STR_FORMAT = "%Y-%m-%d"
UTC = dt.timezone.utc UTC = dt.timezone.utc
DEFAULT_TIME_ZONE: dt.tzinfo = 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. Async friendly.
""" """
try: 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: except zoneinfo.ZoneInfoNotFoundError:
return None return None