mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-22 20:01:29 +08:00
Use specific types in dateutil.relativedelta stubs
Improve operator methods for dateutil.relativedelta stubs: * `__add__` operator method could return other types than `relativedelta` (`datetime.date` or `datetime.datetime`) * use specific types of operators args instead of Any * mypy currently does not handle `Union` in op methods (see python/mypy#2129, python/mypy#1442, python/mypy#1264 for details), so I've overloaded it directly
This commit is contained in:
committed by
Łukasz Langa
parent
8a8680371a
commit
43f18bc830
46
third_party/3/dateutil/relativedelta.pyi
vendored
46
third_party/3/dateutil/relativedelta.pyi
vendored
@@ -1,4 +1,4 @@
|
||||
from typing import Any, Optional, Union
|
||||
from typing import Optional, overload, Union
|
||||
from datetime import date, datetime, timedelta
|
||||
|
||||
__all__ = ... # type: List[str]
|
||||
@@ -51,17 +51,43 @@ class relativedelta(object):
|
||||
|
||||
def normalized(self) -> 'relativedelta': ...
|
||||
|
||||
def __add__(
|
||||
self,
|
||||
other: Union['relativedelta', timedelta, date, datetime]) -> 'relativedelta': ...
|
||||
# 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 __radd__(
|
||||
self,
|
||||
other: Any) -> 'relativedelta': ...
|
||||
@overload
|
||||
def __add__(self, other: timedelta) -> 'relativedelta': ...
|
||||
|
||||
def __rsub__(
|
||||
self,
|
||||
other: Any) -> 'relativedelta': ...
|
||||
@overload
|
||||
def __add__(self, other: date) -> date: ...
|
||||
|
||||
@overload
|
||||
def __add__(self, other: datetime) -> datetime: ...
|
||||
|
||||
@overload
|
||||
def __radd__(self, other: 'relativedelta') -> 'relativedelta': ...
|
||||
|
||||
@overload
|
||||
def __radd__(self, other: timedelta) -> 'relativedelta': ...
|
||||
|
||||
@overload
|
||||
def __radd__(self, other: date) -> date: ...
|
||||
|
||||
@overload
|
||||
def __radd__(self, other: datetime) -> datetime: ...
|
||||
|
||||
@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': ...
|
||||
|
||||
|
||||
Reference in New Issue
Block a user