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/utils | |
parent | Adding upstream version 3.0.0~a1. (diff) | |
download | pendulum-upstream.tar.xz pendulum-upstream.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/utils')
-rw-r--r-- | src/pendulum/utils/__init__.py | 0 | ||||
-rw-r--r-- | src/pendulum/utils/_compat.py | 15 | ||||
-rw-r--r-- | src/pendulum/utils/_zoneinfo.py | 80 |
3 files changed, 95 insertions, 0 deletions
diff --git a/src/pendulum/utils/__init__.py b/src/pendulum/utils/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/pendulum/utils/__init__.py diff --git a/src/pendulum/utils/_compat.py b/src/pendulum/utils/_compat.py new file mode 100644 index 0000000..e4dfedf --- /dev/null +++ b/src/pendulum/utils/_compat.py @@ -0,0 +1,15 @@ +from __future__ import annotations + +import sys + +from pendulum.utils import _zoneinfo as zoneinfo + + +PYPY = hasattr(sys, "pypy_version_info") + +if sys.version_info < (3, 9): + import importlib_resources as resources +else: + from importlib import resources + +__all__ = ["resources", "zoneinfo"] diff --git a/src/pendulum/utils/_zoneinfo.py b/src/pendulum/utils/_zoneinfo.py new file mode 100644 index 0000000..e9f0251 --- /dev/null +++ b/src/pendulum/utils/_zoneinfo.py @@ -0,0 +1,80 @@ +from __future__ import annotations + +import sys + +from typing import TYPE_CHECKING + + +if sys.version_info < (3, 9): + # Works around https://github.com/pganssle/zoneinfo/issues/125 + from backports.zoneinfo import TZPATH + from backports.zoneinfo import InvalidTZPathWarning + from backports.zoneinfo import ZoneInfoNotFoundError + from backports.zoneinfo import available_timezones + from backports.zoneinfo import reset_tzpath + + if TYPE_CHECKING: + from collections.abc import Iterable + from datetime import datetime + from datetime import timedelta + from datetime import tzinfo + from typing import Any + from typing import Protocol + + from typing_extensions import Self + + class _IOBytes(Protocol): + def read(self, __size: int) -> bytes: + ... + + def seek(self, __size: int, __whence: int = ...) -> Any: + ... + + class ZoneInfo(tzinfo): + @property + def key(self) -> str: + ... + + def __init__(self, key: str) -> None: + ... + + @classmethod + def no_cache(cls, key: str) -> Self: + ... + + @classmethod + def from_file(cls, __fobj: _IOBytes, key: str | None = ...) -> Self: + ... + + @classmethod + def clear_cache(cls, *, only_keys: Iterable[str] | None = ...) -> None: + ... + + def tzname(self, __dt: datetime | None) -> str | None: + ... + + def utcoffset(self, __dt: datetime | None) -> timedelta | None: + ... + + def dst(self, __dt: datetime | None) -> timedelta | None: + ... + + else: + from backports.zoneinfo import ZoneInfo + +else: + from zoneinfo import TZPATH + from zoneinfo import InvalidTZPathWarning + from zoneinfo import ZoneInfo + from zoneinfo import ZoneInfoNotFoundError + from zoneinfo import available_timezones + from zoneinfo import reset_tzpath + +__all__ = [ + "ZoneInfo", + "reset_tzpath", + "available_timezones", + "TZPATH", + "ZoneInfoNotFoundError", + "InvalidTZPathWarning", +] |