Skip to content

Commit 3704ebe

Browse files
committed
fix: #718 __add__
1 parent 3dc2b24 commit 3704ebe

File tree

4 files changed

+26
-45
lines changed

4 files changed

+26
-45
lines changed

pandas-stubs/core/series.pyi

Lines changed: 19 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1620,19 +1620,16 @@ class Series(IndexOpsMixin[S1], NDFrame):
16201620
) -> Never: ...
16211621
@overload
16221622
def __add__(
1623-
self: Series[Timestamp], other: _nonseries_timedelta | Series[Timedelta]
1624-
) -> Series[Timestamp]: ...
1623+
self: Series[_T_STAMP_AND_DELTA],
1624+
other: _nonseries_timedelta | Series[Timedelta],
1625+
) -> Series[_T_STAMP_AND_DELTA]: ...
16251626
@overload
16261627
def __add__(self: Series[Timedelta], other: Period) -> PeriodSeries: ...
16271628
@overload
16281629
def __add__(
16291630
self: Series[Timedelta], other: _nonseries_timestamp | Series[Timestamp]
16301631
) -> Series[Timestamp]: ...
16311632
@overload
1632-
def __add__(
1633-
self: Series[Timedelta], other: timedelta | Timedelta | np.timedelta64
1634-
) -> Series[Timedelta]: ...
1635-
@overload
16361633
def __add__(self, other: S1 | Self) -> Self: ...
16371634
@overload
16381635
def __add__(
@@ -1656,13 +1653,7 @@ class Series(IndexOpsMixin[S1], NDFrame):
16561653
@overload
16571654
def __floordiv__(
16581655
self: Series[Timedelta],
1659-
other: (
1660-
timedelta
1661-
| Series[Timedelta]
1662-
| np.timedelta64
1663-
| TimedeltaIndex
1664-
| Sequence[timedelta]
1665-
),
1656+
other: _nonseries_timedelta | Series[Timedelta],
16661657
) -> Series[int]: ...
16671658
@overload
16681659
def __floordiv__(self, other: num | _ListLike | Series[S1]) -> Series[int]: ...
@@ -1679,17 +1670,22 @@ class Series(IndexOpsMixin[S1], NDFrame):
16791670
self, other: S1 | _ListLike | Series[S1] | datetime | timedelta | date
16801671
) -> Series[_bool]: ...
16811672
@overload
1673+
def __mul__(self: Series[_T_INT], other: _nonseries_int | Series[int]) -> Series[_T_INT]: ...
1674+
@overload
16821675
def __mul__(
1683-
self: Series[_T_INT], other: _nonseries_int | Series[int]
1684-
) -> Series[_T_INT]: ...
1676+
self: Series[_T_STAMP_AND_DELTA],
1677+
other: (
1678+
num | Sequence[num] | Series[int] | Series[float] | float | Sequence[float]
1679+
),
1680+
) -> Series[_T_STAMP_AND_DELTA]: ...
16851681
@overload
16861682
def __mul__(
1687-
self: Series[Timedelta],
1688-
other: num | Sequence[num] | Series[int] | Series[float],
1689-
) -> Series[Timedelta]: ...
1683+
self: Series[_T_STAMP_AND_DELTA],
1684+
other: _nonseries_timedelta | Series[Timedelta],
1685+
) -> Never: ...
16901686
@overload
16911687
def __mul__(
1692-
self, other: timedelta | Timedelta | Series[Timedelta] | np.timedelta64
1688+
self, other: _nonseries_timedelta | Series[Timedelta]
16931689
) -> Series[Timedelta]: ...
16941690
@overload
16951691
def __mul__(self, other: num | _ListLike | Series[S1]) -> Series[S1]: ...
@@ -1759,22 +1755,16 @@ class Series(IndexOpsMixin[S1], NDFrame):
17591755
self, other: bool | MaskType | list[int]
17601756
) -> Series[bool]: ...
17611757
@overload
1762-
def __rxor__(self, other: int | np_ndarray_anyint | Series[int]) -> Series[int]: ...
1758+
def __rxor__(self, other: _nonseries_int | Series[int]) -> Series[int]: ...
17631759
@overload
1764-
def __sub__(
1765-
self: Series[int],
1766-
other: int | np_ndarray_anyint | Series[int] | Sequence[int],
1767-
) -> Series[int]: ...
1760+
def __sub__(self: Series[_T_INT], other: _nonseries_int | Series[int]) -> Series[_T_INT]: ...
17681761
@overload
17691762
def __sub__(
17701763
self: Series[Timestamp], other: _nonseries_timedelta | Series[Timedelta]
17711764
) -> Series[Timestamp]: ...
17721765
@overload
17731766
def __sub__(
1774-
self: Series[Timedelta],
1775-
other: (
1776-
timedelta | Timedelta | Series[Timedelta] | TimedeltaIndex | np.timedelta64
1777-
),
1767+
self, other: _nonseries_timedelta | Series[Timedelta]
17781768
) -> Series[Timedelta]: ...
17791769
@overload
17801770
def __sub__(
@@ -1786,16 +1776,12 @@ class Series(IndexOpsMixin[S1], NDFrame):
17861776
def __truediv__(
17871777
self: Series[_T_STAMP_AND_DELTA],
17881778
other: float | Series[int] | Series[float] | Sequence[float],
1789-
) -> Series[Timestamp]: ...
1779+
) -> Series[_T_STAMP_AND_DELTA]: ...
17901780
@overload
17911781
def __truediv__(
17921782
self: Series[Timedelta], other: _nonseries_timedelta | Series[Timedelta]
17931783
) -> Series[float]: ...
17941784
@overload
1795-
def __truediv__(
1796-
self: Series[Timedelta], other: float | Sequence[float]
1797-
) -> Series[Timedelta]: ...
1798-
@overload
17991785
def __truediv__(self, other: num | _ListLike | Series[S1] | Path) -> Series: ...
18001786
# ignore needed for mypy as we want different results based on the arguments
18011787
@overload # type: ignore[override]

tests/test_frame.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2805,13 +2805,7 @@ def test_indexslice_getitem():
28052805
def test_compute_values():
28062806
df = pd.DataFrame({"x": [1, 2, 3, 4]})
28072807
s: pd.Series = pd.Series([10, 20, 30, 40])
2808-
check(
2809-
assert_type(
2810-
df["x"] + s.values, pd.Series # pyright: ignore[reportAssertTypeFailure]
2811-
),
2812-
pd.Series,
2813-
np.int64,
2814-
)
2808+
check(assert_type(df["x"] + s.values, pd.Series), pd.Series, np.int64)
28152809

28162810

28172811
# https://github.com/microsoft/python-type-stubs/issues/164

tests/test_series.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1591,7 +1591,7 @@ def test_series_min_max_sub_axis() -> None:
15911591
sd = s1 / s2
15921592
check(assert_type(sa, pd.Series), pd.Series) # type: ignore[assert-type]
15931593
check(assert_type(ss, pd.Series), pd.Series) # type: ignore[assert-type]
1594-
check(assert_type(sm, pd.Series), pd.Series)
1594+
check(assert_type(sm, pd.Series), pd.Series) # type: ignore[assert-type]
15951595
check(assert_type(sd, pd.Series), pd.Series)
15961596

15971597

@@ -3885,7 +3885,7 @@ def foo(sf: pd.Series) -> None:
38853885
pass
38863886

38873887
foo(s)
3888-
check(assert_type(s + pd.Series([1]), pd.Series), pd.Series) # type: ignore [assert-type] # pyright: ignore[reportAssertTypeFailure]
3888+
check(assert_type(s + pd.Series([1]), pd.Series), pd.Series)
38893889

38903890

38913891
def test_series_items() -> None:

tests/test_timefuncs.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1474,9 +1474,10 @@ def test_timedelta64_and_arithmatic_operator() -> None:
14741474
check(assert_type((s3 + td), "pd.Series[pd.Timedelta]"), pd.Series, pd.Timedelta)
14751475
check(assert_type((s3 / td), "pd.Series[float]"), pd.Series, float)
14761476
if TYPE_CHECKING_INVALID_USAGE:
1477-
r1 = s1 * td
1478-
r2 = s1 / td # type: ignore[operator] # pyright: ignore[reportOperatorIssue]
1479-
r3 = s3 * td
1477+
s1.__mul__(td)
1478+
r1 = s1 * td # pyright: ignore[reportOperatorIssue]
1479+
r2 = s1 / td # pyright: ignore[reportOperatorIssue]
1480+
r3 = s3 * td # pyright: ignore[reportOperatorIssue]
14801481

14811482

14821483
def test_timedeltaseries_add_timestampseries() -> None:

0 commit comments

Comments
 (0)