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:
Jelle Zijlstra
2017-11-13 07:06:34 -08:00
committed by Matthias Kramm
parent 84d0cbf776
commit 8e75701eda
8 changed files with 94 additions and 128 deletions

View File

@@ -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): ...

View File

@@ -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: ...

View File

@@ -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

View File

@@ -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: ...