Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/pendulum/tz/__init__.py: 69%
29 statements
« prev ^ index » next coverage.py v7.3.1, created at 2023-09-30 06:11 +0000
« prev ^ index » next coverage.py v7.3.1, created at 2023-09-30 06:11 +0000
1from __future__ import annotations
3from pathlib import Path
4from typing import cast
6from pendulum.tz.local_timezone import get_local_timezone
7from pendulum.tz.local_timezone import set_local_timezone
8from pendulum.tz.local_timezone import test_local_timezone
9from pendulum.tz.timezone import UTC
10from pendulum.tz.timezone import FixedTimezone
11from pendulum.tz.timezone import Timezone
12from pendulum.utils._compat import resources
15PRE_TRANSITION = "pre"
16POST_TRANSITION = "post"
17TRANSITION_ERROR = "error"
19_timezones = None
21_tz_cache: dict[int, FixedTimezone] = {}
24def timezones() -> tuple[str, ...]:
25 global _timezones
27 if _timezones is None:
28 with cast(Path, resources.files("tzdata").joinpath("zones")).open() as f:
29 _timezones = tuple(tz.strip() for tz in f.readlines())
31 return _timezones
34def fixed_timezone(offset: int) -> FixedTimezone:
35 """
36 Return a Timezone instance given its offset in seconds.
37 """
38 if offset in _tz_cache:
39 return _tz_cache[offset]
41 tz = FixedTimezone(offset)
42 _tz_cache[offset] = tz
44 return tz
47def local_timezone() -> Timezone | FixedTimezone:
48 """
49 Return the local timezone.
50 """
51 return get_local_timezone()
54__all__ = [
55 "UTC",
56 "Timezone",
57 "FixedTimezone",
58 "set_local_timezone",
59 "get_local_timezone",
60 "test_local_timezone",
61 "fixed_timezone",
62 "local_timezone",
63 "timezones",
64]