@@ -14,6 +14,7 @@ from typing import (
1414
1515from dateutil .relativedelta import weekday as WeekdayClass
1616import numpy as np
17+ from pandas import Timestamp
1718from pandas .core .indexes .datetimes import DatetimeIndex
1819from typing_extensions import Self
1920
@@ -22,7 +23,7 @@ from pandas._typing import npt
2223
2324from pandas .tseries .holiday import AbstractHolidayCalendar
2425
25- _DatetimeT = TypeVar ("_DatetimeT" , bound = date )
26+ _DatetimeT = TypeVar ("_DatetimeT" , bound = datetime )
2627_TimedeltaT = TypeVar ("_TimedeltaT" , bound = timedelta )
2728
2829prefix_mapping : dict [str , type ]
@@ -42,26 +43,32 @@ class BaseOffset:
4243 @overload
4344 def __add__ (self , other : npt .NDArray [np .object_ ]) -> npt .NDArray [np .object_ ]: ...
4445 @overload
45- def __add__ (self , other : BaseOffset ) -> Self : ...
46+ def __add__ (self , other : _DatetimeT ) -> _DatetimeT : ... # type: ignore[overload-overlap] # pyright: ignore[reportOverlappingOverload]
47+ @overload
48+ def __add__ (self , other : date ) -> Timestamp : ...
4649 @overload
47- def __add__ (self , other : _DatetimeT ) -> _DatetimeT : ...
50+ def __add__ (self , other : BaseOffset ) -> Self : ...
4851 @overload
4952 def __add__ (self , other : _TimedeltaT ) -> _TimedeltaT : ...
5053 @overload
5154 def __radd__ (self , other : npt .NDArray [np .object_ ]) -> npt .NDArray [np .object_ ]: ...
5255 @overload
53- def __radd__ (self , other : BaseOffset ) -> Self : ...
56+ def __radd__ (self , other : _DatetimeT ) -> _DatetimeT : ... # type: ignore[overload-overlap] # pyright: ignore[reportOverlappingOverload]
5457 @overload
55- def __radd__ (self , other : _DatetimeT ) -> _DatetimeT : ...
58+ def __radd__ (self , other : date ) -> Timestamp : ...
59+ @overload
60+ def __radd__ (self , other : BaseOffset ) -> Self : ...
5661 @overload
5762 def __radd__ (self , other : _TimedeltaT ) -> _TimedeltaT : ...
5863 def __sub__ (self , other : BaseOffset ) -> Self : ...
5964 @overload
6065 def __rsub__ (self , other : npt .NDArray [np .object_ ]) -> npt .NDArray [np .object_ ]: ...
6166 @overload
62- def __rsub__ (self , other : BaseOffset ) -> Self : ...
67+ def __rsub__ (self , other : _DatetimeT ) -> _DatetimeT : ... # type: ignore[overload-overlap] # pyright: ignore[reportOverlappingOverload]
6368 @overload
64- def __rsub__ (self , other : _DatetimeT ) -> _DatetimeT : ...
69+ def __rsub__ (self , other : date ) -> Timestamp : ...
70+ @overload
71+ def __rsub__ (self , other : BaseOffset ) -> Self : ...
6572 @overload
6673 def __rsub__ (self , other : _TimedeltaT ) -> _TimedeltaT : ...
6774 def __call__ (self , other ): ...
0 commit comments