diff --git a/stubs/pytz/@tests/stubtest_allowlist.txt b/stubs/pytz/@tests/stubtest_allowlist.txt deleted file mode 100644 index c6fbfed5b..000000000 --- a/stubs/pytz/@tests/stubtest_allowlist.txt +++ /dev/null @@ -1,4 +0,0 @@ -pytz.BaseTzInfo.localize -pytz.BaseTzInfo.normalize -pytz.BaseTzInfo.zone -pytz.FixedOffset diff --git a/stubs/pytz/pytz/__init__.pyi b/stubs/pytz/pytz/__init__.pyi index 294c90ee5..4838e7614 100644 --- a/stubs/pytz/pytz/__init__.pyi +++ b/stubs/pytz/pytz/__init__.pyi @@ -1,36 +1,37 @@ import datetime -from typing import Mapping +from typing import ClassVar, Mapping -class BaseTzInfo(datetime.tzinfo): - zone: str = ... +from .exceptions import ( + AmbiguousTimeError as AmbiguousTimeError, + InvalidTimeError as InvalidTimeError, + NonExistentTimeError as NonExistentTimeError, + UnknownTimeZoneError as UnknownTimeZoneError, +) +from .tzinfo import BaseTzInfo as BaseTzInfo, DstTzInfo, StaticTzInfo + +# Actually named UTC and then masked with a singleton with the same name +class _UTCclass(BaseTzInfo): def localize(self, dt: datetime.datetime, is_dst: bool | None = ...) -> datetime.datetime: ... def normalize(self, dt: datetime.datetime) -> datetime.datetime: ... - -class _UTCclass(BaseTzInfo): def tzname(self, dt: datetime.datetime | None) -> str: ... def utcoffset(self, dt: datetime.datetime | None) -> datetime.timedelta: ... def dst(self, dt: datetime.datetime | None) -> datetime.timedelta: ... -class _StaticTzInfo(BaseTzInfo): - def tzname(self, dt: datetime.datetime | None, is_dst: bool | None = ...) -> str: ... - def utcoffset(self, dt: datetime.datetime | None, is_dst: bool | None = ...) -> datetime.timedelta: ... - def dst(self, dt: datetime.datetime | None, is_dst: bool | None = ...) -> datetime.timedelta: ... - -class _DstTzInfo(BaseTzInfo): - def tzname(self, dt: datetime.datetime | None, is_dst: bool | None = ...) -> str: ... - def utcoffset(self, dt: datetime.datetime | None, is_dst: bool | None = ...) -> datetime.timedelta | None: ... - def dst(self, dt: datetime.datetime | None, is_dst: bool | None = ...) -> datetime.timedelta | None: ... - -class UnknownTimeZoneError(KeyError): ... -class InvalidTimeError(Exception): ... -class AmbiguousTimeError(InvalidTimeError): ... -class NonExistentTimeError(InvalidTimeError): ... - utc: _UTCclass UTC: _UTCclass -def timezone(zone: str) -> _UTCclass | _StaticTzInfo | _DstTzInfo: ... -def FixedOffset(offset: int) -> _UTCclass | datetime.tzinfo: ... +def timezone(zone: str) -> _UTCclass | StaticTzInfo | DstTzInfo: ... + +class _FixedOffset(datetime.tzinfo): + zone: ClassVar[None] + def __init__(self, minutes: int) -> None: ... + def utcoffset(self, dt: object) -> datetime.timedelta | None: ... + def dst(self, dt: object) -> datetime.timedelta: ... + def tzname(self, dt: object) -> None: ... + def localize(self, dt: datetime.datetime, is_dst: bool = ...) -> datetime.datetime: ... + def normalize(self, dt: datetime.datetime, is_dst: bool = ...) -> datetime.datetime: ... + +def FixedOffset(offset: int, _tzinfos: dict[int, _FixedOffset] = ...) -> _UTCclass | _FixedOffset: ... all_timezones: list[str] all_timezones_set: set[str] diff --git a/stubs/pytz/pytz/exceptions.pyi b/stubs/pytz/pytz/exceptions.pyi new file mode 100644 index 000000000..1880e442a --- /dev/null +++ b/stubs/pytz/pytz/exceptions.pyi @@ -0,0 +1,7 @@ +__all__ = ["UnknownTimeZoneError", "InvalidTimeError", "AmbiguousTimeError", "NonExistentTimeError"] + +class Error(Exception): ... +class UnknownTimeZoneError(KeyError, Error): ... +class InvalidTimeError(Error): ... +class AmbiguousTimeError(InvalidTimeError): ... +class NonExistentTimeError(InvalidTimeError): ... diff --git a/stubs/pytz/pytz/tzinfo.pyi b/stubs/pytz/pytz/tzinfo.pyi new file mode 100644 index 000000000..b02f560a1 --- /dev/null +++ b/stubs/pytz/pytz/tzinfo.pyi @@ -0,0 +1,22 @@ +import datetime +from typing import Any + +class BaseTzInfo(datetime.tzinfo): + zone: str | None # Actually None but should be set on concrete subclasses + +class StaticTzInfo(BaseTzInfo): + def fromutc(self, dt: datetime.datetime) -> datetime.datetime: ... + def localize(self, dt: datetime.datetime, is_dst: bool = ...) -> datetime.datetime: ... + def normalize(self, dt: datetime.datetime, is_dst: bool = ...) -> datetime.datetime: ... + def tzname(self, dt: datetime.datetime | None, is_dst: bool | None = ...) -> str: ... + def utcoffset(self, dt: datetime.datetime | None, is_dst: bool | None = ...) -> datetime.timedelta: ... + def dst(self, dt: datetime.datetime | None, is_dst: bool | None = ...) -> datetime.timedelta: ... + +class DstTzInfo(BaseTzInfo): + def __init__(self, _inf: Any = ..., _tzinfos: Any = ...) -> None: ... + def fromutc(self, dt: datetime.datetime) -> datetime.datetime: ... + def localize(self, dt: datetime.datetime, is_dst: bool | None = ...) -> datetime.datetime: ... + def normalize(self, dt: datetime.datetime) -> datetime.datetime: ... + def tzname(self, dt: datetime.datetime | None, is_dst: bool | None = ...) -> str: ... + def utcoffset(self, dt: datetime.datetime | None, is_dst: bool | None = ...) -> datetime.timedelta | None: ... + def dst(self, dt: datetime.datetime | None, is_dst: bool | None = ...) -> datetime.timedelta | None: ...