_zoneinfo.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. from __future__ import annotations
  2. import sys
  3. from typing import TYPE_CHECKING
  4. if sys.version_info < (3, 9):
  5. # Works around https://github.com/pganssle/zoneinfo/issues/125
  6. from backports.zoneinfo import TZPATH
  7. from backports.zoneinfo import InvalidTZPathWarning
  8. from backports.zoneinfo import ZoneInfoNotFoundError
  9. from backports.zoneinfo import available_timezones
  10. from backports.zoneinfo import reset_tzpath
  11. if TYPE_CHECKING:
  12. from collections.abc import Iterable
  13. from datetime import datetime
  14. from datetime import timedelta
  15. from datetime import tzinfo
  16. from typing import Any
  17. from typing import Protocol
  18. from typing_extensions import Self
  19. class _IOBytes(Protocol):
  20. def read(self, __size: int) -> bytes:
  21. ...
  22. def seek(self, __size: int, __whence: int = ...) -> Any:
  23. ...
  24. class ZoneInfo(tzinfo):
  25. @property
  26. def key(self) -> str:
  27. ...
  28. def __init__(self, key: str) -> None:
  29. ...
  30. @classmethod
  31. def no_cache(cls, key: str) -> Self:
  32. ...
  33. @classmethod
  34. def from_file(cls, __fobj: _IOBytes, key: str | None = ...) -> Self:
  35. ...
  36. @classmethod
  37. def clear_cache(cls, *, only_keys: Iterable[str] | None = ...) -> None:
  38. ...
  39. def tzname(self, __dt: datetime | None) -> str | None:
  40. ...
  41. def utcoffset(self, __dt: datetime | None) -> timedelta | None:
  42. ...
  43. def dst(self, __dt: datetime | None) -> timedelta | None:
  44. ...
  45. else:
  46. from backports.zoneinfo import ZoneInfo
  47. else:
  48. from zoneinfo import TZPATH
  49. from zoneinfo import InvalidTZPathWarning
  50. from zoneinfo import ZoneInfo
  51. from zoneinfo import ZoneInfoNotFoundError
  52. from zoneinfo import available_timezones
  53. from zoneinfo import reset_tzpath
  54. __all__ = [
  55. "ZoneInfo",
  56. "reset_tzpath",
  57. "available_timezones",
  58. "TZPATH",
  59. "ZoneInfoNotFoundError",
  60. "InvalidTZPathWarning",
  61. ]