datetime.tzinfo is abstract (#8908)

This commit is contained in:
Nikita Sobolev
2022-10-17 02:20:31 +03:00
committed by GitHub
parent 3e828bd307
commit 9c5a588078
3 changed files with 14 additions and 3 deletions

View File

@@ -1,5 +1,6 @@
import sys
from _typeshed import Self
from abc import ABCMeta, abstractmethod
from time import struct_time
from typing import ClassVar, NamedTuple, NoReturn, SupportsAbs, TypeVar, overload
from typing_extensions import Literal, TypeAlias, final
@@ -14,9 +15,12 @@ _D = TypeVar("_D", bound=date)
MINYEAR: Literal[1]
MAXYEAR: Literal[9999]
class tzinfo:
class tzinfo(metaclass=ABCMeta):
@abstractmethod
def tzname(self, __dt: datetime | None) -> str | None: ...
@abstractmethod
def utcoffset(self, __dt: datetime | None) -> timedelta | None: ...
@abstractmethod
def dst(self, __dt: datetime | None) -> timedelta | None: ...
def fromutc(self, __dt: datetime) -> datetime: ...
@@ -29,6 +33,9 @@ class timezone(tzinfo):
min: ClassVar[timezone]
max: ClassVar[timezone]
def __init__(self, offset: timedelta, name: str = ...) -> None: ...
def tzname(self, __dt: datetime | None) -> str: ...
def utcoffset(self, __dt: datetime | None) -> timedelta: ...
def dst(self, __dt: datetime | None) -> None: ...
if sys.version_info >= (3, 11):
UTC: timezone

View File

@@ -1,6 +1,6 @@
from _typeshed import Self, StrPath
from collections.abc import Iterable, Sequence
from datetime import tzinfo
from datetime import datetime, timedelta, tzinfo
from typing import Any, Protocol
__all__ = ["ZoneInfo", "reset_tzpath", "available_timezones", "TZPATH", "ZoneInfoNotFoundError", "InvalidTZPathWarning"]
@@ -19,6 +19,9 @@ class ZoneInfo(tzinfo):
def from_file(cls: type[Self], __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: ...
# Note: Both here and in clear_cache, the types allow the use of `str` where
# a sequence of strings is required. This should be remedied if a solution

View File

@@ -1,3 +1,4 @@
import abc
from datetime import datetime, timedelta, tzinfo
from typing import ClassVar
@@ -8,7 +9,7 @@ class _DatetimeWithFold(datetime):
@property
def fold(self): ...
class _tzinfo(tzinfo):
class _tzinfo(tzinfo, metaclass=abc.ABCMeta):
def is_ambiguous(self, dt: datetime) -> bool: ...
def fromutc(self, dt: datetime) -> datetime: ...