mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-08 13:04:46 +08:00
make Python 2 and 3 dateutil stubs identical (#1735)
So that they can be merged into 2and3. This PR also adds a few missing elements to parser.pyi and corrects some mistakes in the Python 3 stub. Refer to https://github.com/dateutil/dateutil/tree/master/dateutil
This commit is contained in:
committed by
Matthias Kramm
parent
84d0cbf776
commit
8e75701eda
36
third_party/2/dateutil/parser.pyi
vendored
36
third_party/2/dateutil/parser.pyi
vendored
@@ -1,8 +1,9 @@
|
||||
from typing import List, Tuple, Optional, Callable, Union, IO, Any, Dict
|
||||
from typing import List, Tuple, Optional, Callable, Union, IO, Any, Dict, Mapping, Text
|
||||
from datetime import datetime, tzinfo
|
||||
|
||||
__all__ = ... # type: List[str]
|
||||
_FileOrStr = Union[bytes, Text, IO[str], IO[Any]]
|
||||
|
||||
__all__ = ... # type: List[str]
|
||||
|
||||
class parserinfo(object):
|
||||
JUMP = ... # type: List[str]
|
||||
@@ -15,25 +16,30 @@ class parserinfo(object):
|
||||
TZOFFSET = ... # type: Dict[str, int]
|
||||
|
||||
def __init__(self, dayfirst: bool=..., yearfirst: bool=...) -> None: ...
|
||||
def jump(self, name: unicode) -> bool: ...
|
||||
def weekday(self, name: unicode) -> Union[int, None]: ...
|
||||
def month(self, name: unicode) -> Union[int, None]: ...
|
||||
def hms(self, name: unicode) -> Union[int, None]: ...
|
||||
def ampm(self, name: unicode) -> Union[int, None]: ...
|
||||
def pertain(self, name: unicode) -> bool: ...
|
||||
def utczone(self, name: unicode) -> bool: ...
|
||||
def tzoffset(self, name: unicode) -> Union[int, None]: ...
|
||||
def jump(self, name: Text) -> bool: ...
|
||||
def weekday(self, name: Text) -> Optional[int]: ...
|
||||
def month(self, name: Text) -> Optional[int]: ...
|
||||
def hms(self, name: Text) -> Optional[int]: ...
|
||||
def ampm(self, name: Text) -> Optional[int]: ...
|
||||
def pertain(self, name: Text) -> bool: ...
|
||||
def utczone(self, name: Text) -> bool: ...
|
||||
def tzoffset(self, name: Text) -> Optional[int]: ...
|
||||
def convertyear(self, year: int) -> int: ...
|
||||
def validate(self, res: datetime) -> bool: ...
|
||||
|
||||
class parser(object):
|
||||
def __init__(self, info: Optional[parserinfo] = ...) -> None: ...
|
||||
def parse(self, timestr: Union[str, unicode, IO[unicode]],
|
||||
def parse(self, timestr: _FileOrStr,
|
||||
default: Optional[datetime] = ...,
|
||||
ignoretz: bool = ..., tzinfos: Optional[Dict[Union[str, unicode], tzinfo]] = ...,
|
||||
ignoretz: bool = ..., tzinfos: Optional[Mapping[Text, tzinfo]] = ...,
|
||||
**kwargs: Any) -> datetime: ...
|
||||
|
||||
DEFAULTPARSER = ... # type: parser
|
||||
def parse(timestr: Union[str, unicode, IO[unicode]],
|
||||
parserinfo: Optional[parserinfo] = ...,
|
||||
**kwargs: Any) -> datetime: ...
|
||||
def parse(timestr: _FileOrStr, parserinfo: Optional[parserinfo] = ..., **kwargs: Any) -> datetime: ...
|
||||
class _tzparser: ...
|
||||
|
||||
DEFAULTTZPARSER = ... # type: _tzparser
|
||||
|
||||
class InvalidDatetimeError(ValueError): ...
|
||||
class InvalidDateError(InvalidDatetimeError): ...
|
||||
class InvalidTimeError(InvalidDatetimeError): ...
|
||||
|
||||
20
third_party/2/dateutil/relativedelta.pyi
vendored
20
third_party/2/dateutil/relativedelta.pyi
vendored
@@ -45,15 +45,13 @@ class relativedelta(object):
|
||||
hour: Optional[int]=..., minute: Optional[int]=...,
|
||||
second: Optional[int]=...,
|
||||
microsecond: Optional[int]=...) -> None: ...
|
||||
|
||||
@property
|
||||
def weeks(self) -> int: ...
|
||||
|
||||
@weeks.setter
|
||||
def weeks(self, value: int) -> None: ...
|
||||
|
||||
def normalized(self: _SelfT) -> _SelfT: ...
|
||||
|
||||
# TODO: use Union when mypy will handle it properly in overloaded operator
|
||||
# methods (#2129, #1442, #1264 in mypy)
|
||||
@overload
|
||||
def __add__(self: _SelfT, other: relativedelta) -> _SelfT: ...
|
||||
@overload
|
||||
@@ -61,31 +59,25 @@ class relativedelta(object):
|
||||
@overload
|
||||
def __add__(self, other: _DateT) -> _DateT: ...
|
||||
@overload
|
||||
def __radd__(self: _SelfT, other: relativedelta) -> _SelfT: ...
|
||||
@overload
|
||||
def __radd__(self: _SelfT, other: timedelta) -> _SelfT: ...
|
||||
@overload
|
||||
def __radd__(self, other: _DateT) -> _DateT: ...
|
||||
@overload
|
||||
def __rsub__(self: _SelfT, other: relativedelta) -> _SelfT: ...
|
||||
@overload
|
||||
def __rsub__(self: _SelfT, other: timedelta) -> _SelfT: ...
|
||||
@overload
|
||||
def __rsub__(self, other: _DateT) -> _DateT: ...
|
||||
def __sub__(self: _SelfT, other: relativedelta) -> _SelfT: ...
|
||||
|
||||
def __neg__(self: _SelfT) -> _SelfT: ...
|
||||
|
||||
def __bool__(self) -> bool: ...
|
||||
|
||||
def __nonzero__(self) -> bool: ...
|
||||
|
||||
def __mul__(self: _SelfT, other: SupportsFloat) -> _SelfT: ...
|
||||
|
||||
def __rmul__(self: _SelfT, other: SupportsFloat) -> _SelfT: ...
|
||||
|
||||
def __eq__(self, other) -> bool: ...
|
||||
|
||||
def __ne__(self, other: object) -> bool: ...
|
||||
|
||||
def __div__(self: _SelfT, other: SupportsFloat) -> _SelfT: ...
|
||||
|
||||
def __truediv__(self: _SelfT, other: SupportsFloat) -> _SelfT: ...
|
||||
|
||||
def __repr__(self) -> str: ...
|
||||
|
||||
2
third_party/2/dateutil/tz/_common.pyi
vendored
2
third_party/2/dateutil/tz/_common.pyi
vendored
@@ -2,7 +2,7 @@ from typing import Any, Optional
|
||||
from datetime import datetime, tzinfo, timedelta
|
||||
|
||||
def tzname_in_python2(namefunc): ...
|
||||
def enfold(dt, fold: int = ...): ...
|
||||
def enfold(dt: datetime, fold: int = ...): ...
|
||||
|
||||
class _DatetimeWithFold(datetime):
|
||||
@property
|
||||
|
||||
14
third_party/2/dateutil/tz/tz.pyi
vendored
14
third_party/2/dateutil/tz/tz.pyi
vendored
@@ -1,9 +1,11 @@
|
||||
from typing import Any, IO, List, Optional, Tuple, Union
|
||||
from typing import Any, Optional, Union, IO, Text, Tuple, List
|
||||
import datetime
|
||||
from ._common import tzname_in_python2 as tzname_in_python2, _tzinfo as _tzinfo
|
||||
from ._common import tzrangebase as tzrangebase, enfold as enfold
|
||||
from ..relativedelta import relativedelta
|
||||
|
||||
_FileObj = Union[str, Text, IO[str], IO[Text]]
|
||||
|
||||
ZERO = ... # type: datetime.timedelta
|
||||
EPOCH = ... # type: datetime.datetime
|
||||
EPOCHORDINAL = ... # type: int
|
||||
@@ -47,7 +49,7 @@ class _ttinfo:
|
||||
def __ne__(self, other): ...
|
||||
|
||||
class tzfile(_tzinfo):
|
||||
def __init__(self, fileobj: Union[unicode, str, IO[str], IO[unicode]], filename: Union[str, unicode, None] = ...) -> None: ...
|
||||
def __init__(self, fileobj: _FileObj, filename: Optional[Text] = ...) -> None: ...
|
||||
def is_ambiguous(self, dt: Optional[datetime.datetime], idx: Optional[int] = ...) -> bool: ...
|
||||
def utcoffset(self, dt: Optional[datetime.datetime]) -> Optional[datetime.timedelta]: ...
|
||||
def dst(self, dt: Optional[datetime.datetime]) -> Optional[datetime.timedelta]: ...
|
||||
@@ -60,22 +62,22 @@ class tzfile(_tzinfo):
|
||||
|
||||
class tzrange(tzrangebase):
|
||||
hasdst = ... # type: bool
|
||||
def __init__(self, stdabbr: Union[str, unicode], stdoffset: Union[int, datetime.timedelta, None] = ..., dstabbr: Union[str, unicode, None] = ..., dstoffset: Union[int, datetime.timedelta, None] = ..., start: Optional[relativedelta] = ..., end: Optional[relativedelta] = ...) -> None: ...
|
||||
def __init__(self, stdabbr: Text, stdoffset: Union[int, datetime.timedelta, None] = ..., dstabbr: Optional[Text] = ..., dstoffset: Union[int, datetime.timedelta, None] = ..., start: Optional[relativedelta] = ..., end: Optional[relativedelta] = ...) -> None: ...
|
||||
def transitions(self, year: int) -> Tuple[datetime.datetime, datetime.datetime]: ...
|
||||
def __eq__(self, other): ...
|
||||
|
||||
class tzstr(tzrange):
|
||||
hasdst = ... # type: bool
|
||||
def __init__(self, s, posix_offset: bool = ...) -> None: ...
|
||||
def __init__(self, s: Union[bytes, _FileObj], posix_offset: bool = ...) -> None: ...
|
||||
|
||||
class tzical:
|
||||
def __init__(self, fileobj: Union[unicode, str, IO[str], IO[unicode]]) -> None: ...
|
||||
def __init__(self, fileobj: _FileObj) -> None: ...
|
||||
def keys(self): ...
|
||||
def get(self, tzid: Optional[Any] = ...): ...
|
||||
|
||||
TZFILES = ... # type: List[str]
|
||||
TZPATHS = ... # type: List[str]
|
||||
|
||||
def gettz(name: Union[str, unicode, None] = ...) -> Optional[datetime.tzinfo]: ...
|
||||
def gettz(name: Optional[Text] = ...) -> Optional[datetime.tzinfo]: ...
|
||||
def datetime_exists(dt: datetime.datetime, tz: Optional[datetime.tzinfo] = ...) -> bool: ...
|
||||
def datetime_ambiguous(dt: datetime.datetime, tz: Optional[datetime.tzinfo] = ...) -> bool: ...
|
||||
|
||||
61
third_party/3/dateutil/parser.pyi
vendored
61
third_party/3/dateutil/parser.pyi
vendored
@@ -1,52 +1,45 @@
|
||||
from typing import List, Tuple, Optional, Callable, Union, IO, Any, Dict
|
||||
from datetime import datetime
|
||||
from typing import List, Tuple, Optional, Callable, Union, IO, Any, Dict, Mapping, Text
|
||||
from datetime import datetime, tzinfo
|
||||
|
||||
_FileOrStr = Union[bytes, Text, IO[str], IO[Any]]
|
||||
|
||||
__all__ = ... # type: List[str]
|
||||
|
||||
|
||||
class parserinfo:
|
||||
class parserinfo(object):
|
||||
JUMP = ... # type: List[str]
|
||||
WEEKDAYS = ... # type: List[Tuple[str, str]]
|
||||
MONTHS = ... # type: List[Tuple[str, str]]
|
||||
HMS = ... # type: List[Tuple[str, str, str]]
|
||||
AMPM = ... # type: List[Tuple[str, str, str]]
|
||||
AMPM = ... # type: List[Tuple[str, str]]
|
||||
UTCZONE = ... # type: List[str]
|
||||
PERTAIN = ... # type: List[str]
|
||||
TZOFFSET = ... # type: Dict[str, int]
|
||||
|
||||
def __init__(self, dayfirst: bool=..., yearfirst: bool=...) -> None: ...
|
||||
def jump(self, name: str) -> bool: ...
|
||||
def weekday(self, name: str) -> str: ...
|
||||
def month(self, name: str) -> str: ...
|
||||
def hms(self, name: str) -> str: ...
|
||||
def ampm(self, name: str) -> str: ...
|
||||
def pertain(self, name: str) -> bool: ...
|
||||
def utczone(self, name: str) -> bool: ...
|
||||
def tzoffset(self, name: str) -> int: ...
|
||||
def jump(self, name: Text) -> bool: ...
|
||||
def weekday(self, name: Text) -> Optional[int]: ...
|
||||
def month(self, name: Text) -> Optional[int]: ...
|
||||
def hms(self, name: Text) -> Optional[int]: ...
|
||||
def ampm(self, name: Text) -> Optional[int]: ...
|
||||
def pertain(self, name: Text) -> bool: ...
|
||||
def utczone(self, name: Text) -> bool: ...
|
||||
def tzoffset(self, name: Text) -> Optional[int]: ...
|
||||
def convertyear(self, year: int) -> int: ...
|
||||
def validate(self, year: datetime) -> bool: ...
|
||||
def validate(self, res: datetime) -> bool: ...
|
||||
|
||||
|
||||
class parser:
|
||||
def __init__(self, info: parserinfo=...) -> None: ...
|
||||
|
||||
def parse(
|
||||
self,
|
||||
timestr: Union[str, bytes, IO[Any]],
|
||||
default: Optional[datetime],
|
||||
ignoretz: bool=...,
|
||||
tzinfos: Any =...,
|
||||
) -> datetime: ...
|
||||
class parser(object):
|
||||
def __init__(self, info: Optional[parserinfo] = ...) -> None: ...
|
||||
def parse(self, timestr: _FileOrStr,
|
||||
default: Optional[datetime] = ...,
|
||||
ignoretz: bool = ..., tzinfos: Optional[Mapping[Text, tzinfo]] = ...,
|
||||
**kwargs: Any) -> datetime: ...
|
||||
|
||||
DEFAULTPARSER = ... # type: parser
|
||||
|
||||
|
||||
def parse(timestr: Union[str, bytes, IO[Any]], parserinfo: parserinfo=..., **kwargs) -> datetime:
|
||||
...
|
||||
|
||||
|
||||
class _tzparser:
|
||||
...
|
||||
|
||||
def parse(timestr: _FileOrStr, parserinfo: Optional[parserinfo] = ..., **kwargs: Any) -> datetime: ...
|
||||
class _tzparser: ...
|
||||
|
||||
DEFAULTTZPARSER = ... # type: _tzparser
|
||||
|
||||
class InvalidDatetimeError(ValueError): ...
|
||||
class InvalidDateError(InvalidDatetimeError): ...
|
||||
class InvalidTimeError(InvalidDatetimeError): ...
|
||||
|
||||
73
third_party/3/dateutil/relativedelta.pyi
vendored
73
third_party/3/dateutil/relativedelta.pyi
vendored
@@ -1,10 +1,13 @@
|
||||
from typing import Optional, overload, Union, List
|
||||
from typing import overload, Any, List, Optional, SupportsFloat, TypeVar, Union
|
||||
from datetime import date, datetime, timedelta
|
||||
|
||||
__all__ = ... # type: List[str]
|
||||
|
||||
_SelfT = TypeVar('_SelfT', bound=relativedelta)
|
||||
_DateT = TypeVar('_DateT', date, datetime)
|
||||
|
||||
class weekday:
|
||||
|
||||
class weekday(object):
|
||||
def __init__(self, weekday: int, n: Optional[int]=...) -> None: ...
|
||||
|
||||
def __call__(self, n: int) -> 'weekday': ...
|
||||
@@ -25,7 +28,7 @@ SA = ... # type: weekday
|
||||
SU = ... # type: weekday
|
||||
|
||||
|
||||
class relativedelta:
|
||||
class relativedelta(object):
|
||||
def __init__(self,
|
||||
dt1: Optional[date]=...,
|
||||
dt2: Optional[date]=...,
|
||||
@@ -42,71 +45,39 @@ class relativedelta:
|
||||
hour: Optional[int]=..., minute: Optional[int]=...,
|
||||
second: Optional[int]=...,
|
||||
microsecond: Optional[int]=...) -> None: ...
|
||||
|
||||
@property
|
||||
def weeks(self) -> int: ...
|
||||
|
||||
@weeks.setter
|
||||
def weeks(self, value: int) -> None: ...
|
||||
|
||||
def normalized(self) -> 'relativedelta': ...
|
||||
|
||||
def normalized(self: _SelfT) -> _SelfT: ...
|
||||
# TODO: use Union when mypy will handle it properly in overloaded operator
|
||||
# methods (#2129, #1442, #1264 in mypy)
|
||||
@overload
|
||||
def __add__(self, other: 'relativedelta') -> 'relativedelta': ...
|
||||
|
||||
def __add__(self: _SelfT, other: relativedelta) -> _SelfT: ...
|
||||
@overload
|
||||
def __add__(self, other: timedelta) -> 'relativedelta': ...
|
||||
|
||||
def __add__(self: _SelfT, other: timedelta) -> _SelfT: ...
|
||||
@overload
|
||||
def __add__(self, other: date) -> date: ...
|
||||
|
||||
def __add__(self, other: _DateT) -> _DateT: ...
|
||||
@overload
|
||||
def __add__(self, other: datetime) -> datetime: ...
|
||||
|
||||
def __radd__(self: _SelfT, other: relativedelta) -> _SelfT: ...
|
||||
@overload
|
||||
def __radd__(self, other: 'relativedelta') -> 'relativedelta': ...
|
||||
|
||||
def __radd__(self: _SelfT, other: timedelta) -> _SelfT: ...
|
||||
@overload
|
||||
def __radd__(self, other: timedelta) -> 'relativedelta': ...
|
||||
|
||||
def __radd__(self, other: _DateT) -> _DateT: ...
|
||||
@overload
|
||||
def __radd__(self, other: date) -> date: ...
|
||||
|
||||
def __rsub__(self: _SelfT, other: relativedelta) -> _SelfT: ...
|
||||
@overload
|
||||
def __radd__(self, other: datetime) -> datetime: ...
|
||||
|
||||
def __rsub__(self: _SelfT, other: timedelta) -> _SelfT: ...
|
||||
@overload
|
||||
def __rsub__(self, other: 'relativedelta') -> 'relativedelta': ...
|
||||
|
||||
@overload
|
||||
def __rsub__(self, other: timedelta) -> 'relativedelta': ...
|
||||
|
||||
@overload
|
||||
def __rsub__(self, other: date) -> date: ...
|
||||
|
||||
@overload
|
||||
def __rsub__(self, other: datetime) -> datetime: ...
|
||||
|
||||
def __sub__(self, other: 'relativedelta') -> 'relativedelta': ...
|
||||
|
||||
def __neg__(self) -> 'relativedelta': ...
|
||||
|
||||
def __rsub__(self, other: _DateT) -> _DateT: ...
|
||||
def __sub__(self: _SelfT, other: relativedelta) -> _SelfT: ...
|
||||
def __neg__(self: _SelfT) -> _SelfT: ...
|
||||
def __bool__(self) -> bool: ...
|
||||
|
||||
def __nonzero__(self) -> bool: ...
|
||||
|
||||
def __mul__(self, other: float) -> 'relativedelta': ...
|
||||
|
||||
def __rmul__(self, other: float) -> 'relativedelta': ...
|
||||
|
||||
def __mul__(self: _SelfT, other: SupportsFloat) -> _SelfT: ...
|
||||
def __rmul__(self: _SelfT, other: SupportsFloat) -> _SelfT: ...
|
||||
def __eq__(self, other) -> bool: ...
|
||||
|
||||
def __ne__(self, other: object) -> bool: ...
|
||||
|
||||
def __div__(self, other: float) -> 'relativedelta': ...
|
||||
|
||||
def __truediv__(self, other: float) -> 'relativedelta': ...
|
||||
|
||||
def __div__(self: _SelfT, other: SupportsFloat) -> _SelfT: ...
|
||||
def __truediv__(self: _SelfT, other: SupportsFloat) -> _SelfT: ...
|
||||
def __repr__(self) -> str: ...
|
||||
|
||||
2
third_party/3/dateutil/tz/__init__.pyi
vendored
2
third_party/3/dateutil/tz/__init__.pyi
vendored
@@ -8,5 +8,5 @@ from .tz import (
|
||||
tzical as tzical,
|
||||
gettz as gettz,
|
||||
datetime_exists as datetime_exists,
|
||||
datetime_ambiguous as datetime_ambiguous
|
||||
datetime_ambiguous as datetime_ambiguous,
|
||||
)
|
||||
|
||||
14
third_party/3/dateutil/tz/tz.pyi
vendored
14
third_party/3/dateutil/tz/tz.pyi
vendored
@@ -1,9 +1,11 @@
|
||||
from typing import Any, Optional, Union, IO, Tuple, List
|
||||
from typing import Any, Optional, Union, IO, Text, Tuple, List
|
||||
import datetime
|
||||
from ._common import tzname_in_python2 as tzname_in_python2, _tzinfo as _tzinfo
|
||||
from ._common import tzrangebase as tzrangebase, enfold as enfold
|
||||
from ..relativedelta import relativedelta
|
||||
|
||||
_FileObj = Union[str, Text, IO[str], IO[Text]]
|
||||
|
||||
ZERO = ... # type: datetime.timedelta
|
||||
EPOCH = ... # type: datetime.datetime
|
||||
EPOCHORDINAL = ... # type: int
|
||||
@@ -47,7 +49,7 @@ class _ttinfo:
|
||||
def __ne__(self, other): ...
|
||||
|
||||
class tzfile(_tzinfo):
|
||||
def __init__(self, fileobj: Union[str, IO[str]], filename: Optional[str] = ...) -> None: ...
|
||||
def __init__(self, fileobj: _FileObj, filename: Optional[Text] = ...) -> None: ...
|
||||
def is_ambiguous(self, dt: Optional[datetime.datetime], idx: Optional[int] = ...) -> bool: ...
|
||||
def utcoffset(self, dt: Optional[datetime.datetime]) -> Optional[datetime.timedelta]: ...
|
||||
def dst(self, dt: Optional[datetime.datetime]) -> Optional[datetime.timedelta]: ...
|
||||
@@ -60,22 +62,22 @@ class tzfile(_tzinfo):
|
||||
|
||||
class tzrange(tzrangebase):
|
||||
hasdst = ... # type: bool
|
||||
def __init__(self, stdabbr: str, stdoffset: Union[int, datetime.timedelta, None] = ..., dstabbr: Optional[str] = ..., dstoffset: Union[int, datetime.timedelta, None] = ..., start: Optional[relativedelta] = ..., end: Optional[relativedelta] = ...) -> None: ...
|
||||
def __init__(self, stdabbr: Text, stdoffset: Union[int, datetime.timedelta, None] = ..., dstabbr: Optional[Text] = ..., dstoffset: Union[int, datetime.timedelta, None] = ..., start: Optional[relativedelta] = ..., end: Optional[relativedelta] = ...) -> None: ...
|
||||
def transitions(self, year: int) -> Tuple[datetime.datetime, datetime.datetime]: ...
|
||||
def __eq__(self, other): ...
|
||||
|
||||
class tzstr(tzrange):
|
||||
hasdst = ... # type: bool
|
||||
def __init__(self, s: Union[bytes, str, IO[str]], posix_offset: bool = ...) -> None: ...
|
||||
def __init__(self, s: Union[bytes, _FileObj], posix_offset: bool = ...) -> None: ...
|
||||
|
||||
class tzical:
|
||||
def __init__(self, fileobj: Union[str, IO[str]]) -> None: ...
|
||||
def __init__(self, fileobj: _FileObj) -> None: ...
|
||||
def keys(self): ...
|
||||
def get(self, tzid: Optional[Any] = ...): ...
|
||||
|
||||
TZFILES = ... # type: List[str]
|
||||
TZPATHS = ... # type: List[str]
|
||||
|
||||
def gettz(name: Optional[str] = ...) -> Optional[datetime.tzinfo]: ...
|
||||
def gettz(name: Optional[Text] = ...) -> Optional[datetime.tzinfo]: ...
|
||||
def datetime_exists(dt: datetime.datetime, tz: Optional[datetime.tzinfo] = ...) -> bool: ...
|
||||
def datetime_ambiguous(dt: datetime.datetime, tz: Optional[datetime.tzinfo] = ...) -> bool: ...
|
||||
|
||||
Reference in New Issue
Block a user