diff --git a/src/pendulum/tz/__init__.py b/src/pendulum/tz/__init__.py index efdcc36d..1fdc828e 100644 --- a/src/pendulum/tz/__init__.py +++ b/src/pendulum/tz/__init__.py @@ -1,8 +1,7 @@ from __future__ import annotations -from importlib import resources -from typing import TYPE_CHECKING -from typing import cast +from functools import cache +from zoneinfo import available_timezones from pendulum.tz.local_timezone import get_local_timezone from pendulum.tz.local_timezone import set_local_timezone @@ -12,27 +11,16 @@ from pendulum.tz.timezone import Timezone -if TYPE_CHECKING: - from pathlib import Path - - PRE_TRANSITION = "pre" POST_TRANSITION = "post" TRANSITION_ERROR = "error" -_timezones = None - _tz_cache: dict[int, FixedTimezone] = {} -def timezones() -> tuple[str, ...]: - global _timezones - - if _timezones is None: - with cast("Path", resources.files("tzdata").joinpath("zones")).open() as f: - _timezones = tuple(tz.strip() for tz in f.readlines()) - - return _timezones +@cache +def timezones() -> set[str]: + return available_timezones() def fixed_timezone(offset: int) -> FixedTimezone: