diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2023-12-17 14:32:20 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2023-12-17 14:32:20 +0000 |
commit | db51f7f103bbbd6c91c8f47d75b3482ef8939691 (patch) | |
tree | ab59b1147bd0cd39f31a48073cff236ede4ec1df /src/pendulum/tz/__init__.py | |
parent | Adding upstream version 3.0.0~a1. (diff) | |
download | pendulum-db51f7f103bbbd6c91c8f47d75b3482ef8939691.tar.xz pendulum-db51f7f103bbbd6c91c8f47d75b3482ef8939691.zip |
Adding upstream version 3.0.0.upstream/3.0.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/pendulum/tz/__init__.py')
-rw-r--r-- | src/pendulum/tz/__init__.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/pendulum/tz/__init__.py b/src/pendulum/tz/__init__.py new file mode 100644 index 0000000..36c2c69 --- /dev/null +++ b/src/pendulum/tz/__init__.py @@ -0,0 +1,64 @@ +from __future__ import annotations + +from pathlib import Path +from typing import cast + +from pendulum.tz.local_timezone import get_local_timezone +from pendulum.tz.local_timezone import set_local_timezone +from pendulum.tz.local_timezone import test_local_timezone +from pendulum.tz.timezone import UTC +from pendulum.tz.timezone import FixedTimezone +from pendulum.tz.timezone import Timezone +from pendulum.utils._compat import resources + + +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 + + +def fixed_timezone(offset: int) -> FixedTimezone: + """ + Return a Timezone instance given its offset in seconds. + """ + if offset in _tz_cache: + return _tz_cache[offset] + + tz = FixedTimezone(offset) + _tz_cache[offset] = tz + + return tz + + +def local_timezone() -> Timezone | FixedTimezone: + """ + Return the local timezone. + """ + return get_local_timezone() + + +__all__ = [ + "UTC", + "Timezone", + "FixedTimezone", + "set_local_timezone", + "get_local_timezone", + "test_local_timezone", + "fixed_timezone", + "local_timezone", + "timezones", +] |