Skip to content

Commit 1aa5c42

Browse files
GH1246 Pr feedback
1 parent fdf2d3c commit 1aa5c42

File tree

4 files changed

+70
-13
lines changed

4 files changed

+70
-13
lines changed

pandas-stubs/core/indexes/base.pyi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -348,10 +348,10 @@ class Index(IndexOpsMixin[S1]):
348348
def __nonzero__(self) -> None: ...
349349
__bool__ = ...
350350
def union(
351-
self, other: list[HashableT] | Index, sort: bool | None = ...
351+
self, other: list[HashableT] | Self, sort: bool | None = ...
352352
) -> Index: ...
353353
def intersection(self, other: list[S1] | Self, sort: bool | None = ...) -> Self: ...
354-
def difference(self, other: list | Index, sort: bool | None = None) -> Self: ...
354+
def difference(self, other: list | Self, sort: bool | None = None) -> Self: ...
355355
def symmetric_difference(
356356
self,
357357
other: list[S1] | Self,

pandas-stubs/core/series.pyi

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1739,9 +1739,18 @@ class Series(IndexOpsMixin[S1], NDFrame):
17391739
*args: Any,
17401740
**kwargs: Any,
17411741
) -> Series[S1]: ...
1742+
@overload
1743+
def cumprod(
1744+
self: Series[_str],
1745+
axis: AxisIndex = ...,
1746+
skipna: _bool = ...,
1747+
*args: Any,
1748+
**kwargs: Any,
1749+
) -> Never: ...
1750+
@overload
17421751
def cumprod(
17431752
self,
1744-
axis: AxisIndex | None = ...,
1753+
axis: AxisIndex = ...,
17451754
skipna: _bool = ...,
17461755
*args: Any,
17471756
**kwargs: Any,
@@ -2219,6 +2228,13 @@ class TimestampSeries(Series[Timestamp]):
22192228
**kwargs: Any,
22202229
) -> Timedelta: ...
22212230
def diff(self, periods: int = ...) -> TimedeltaSeries: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride]
2231+
def cumprod(
2232+
self,
2233+
axis: AxisIndex = ...,
2234+
skipna: _bool = ...,
2235+
*args: Any,
2236+
**kwargs: Any,
2237+
) -> Never: ...
22222238

22232239
class TimedeltaSeries(Series[Timedelta]):
22242240
# ignores needed because of mypy
@@ -2326,7 +2342,7 @@ class TimedeltaSeries(Series[Timedelta]):
23262342
) -> TimedeltaSeries: ...
23272343
def cumprod(
23282344
self,
2329-
axis: AxisIndex | None = ...,
2345+
axis: AxisIndex = ...,
23302346
skipna: _bool = ...,
23312347
*args: Any,
23322348
**kwargs: Any,
@@ -2337,6 +2353,13 @@ class PeriodSeries(Series[Period]):
23372353
def dt(self) -> PeriodProperties: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride]
23382354
def __sub__(self, other: PeriodSeries) -> OffsetSeries: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride]
23392355
def diff(self, periods: int = ...) -> OffsetSeries: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride]
2356+
def cumprod(
2357+
self,
2358+
axis: AxisIndex = ...,
2359+
skipna: _bool = ...,
2360+
*args: Any,
2361+
**kwargs: Any,
2362+
) -> Never: ...
23402363

23412364
class OffsetSeries(Series[BaseOffset]):
23422365
@overload # type: ignore[override]
@@ -2345,6 +2368,13 @@ class OffsetSeries(Series[BaseOffset]):
23452368
def __radd__( # pyright: ignore[reportIncompatibleMethodOverride]
23462369
self, other: BaseOffset
23472370
) -> OffsetSeries: ...
2371+
def cumprod(
2372+
self,
2373+
axis: AxisIndex = ...,
2374+
skipna: _bool = ...,
2375+
*args: Any,
2376+
**kwargs: Any,
2377+
) -> Never: ...
23482378

23492379
class IntervalSeries(Series[Interval[_OrderableT]], Generic[_OrderableT]):
23502380
@property

tests/test_indexes.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -316,18 +316,16 @@ def test_range_index_union():
316316
),
317317
pd.Index,
318318
)
319+
320+
321+
def test_index_union_sort() -> None:
322+
"""Test sort argument in pd.Index.union GH1264."""
319323
check(
320-
assert_type(
321-
pd.RangeIndex(0, 10).union(["a", "b", "c"], sort=True),
322-
Union[pd.Index, "pd.Index[int]", pd.RangeIndex],
323-
),
324+
assert_type(pd.Index(["e", "f"]).union(["a", "b", "c"], sort=True), pd.Index),
324325
pd.Index,
325326
)
326327
check(
327-
assert_type(
328-
pd.RangeIndex(0, 10).union(["a", "b", "c"], sort=False),
329-
Union[pd.Index, "pd.Index[int]", pd.RangeIndex],
330-
),
328+
assert_type(pd.Index(["e", "f"]).union(["a", "b", "c"], sort=False), pd.Index),
331329
pd.Index,
332330
)
333331

tests/test_series.py

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3943,6 +3943,35 @@ def test_series_index_type() -> None:
39433943
t = pd.Series([1, 2], index="ab") # type: ignore[call-overload] # pyright: ignore[reportCallIssue, reportArgumentType]
39443944

39453945

3946-
def test_timedelta_index_cumsum() -> None:
3946+
def test_timedelta_index_cumprod() -> None:
3947+
dates = pd.Series(
3948+
[
3949+
pd.Timestamp("2020-01-01"),
3950+
pd.Timestamp("2020-01-15"),
3951+
pd.Timestamp("2020-02-01"),
3952+
],
3953+
dtype="datetime64[ns]",
3954+
)
3955+
as_period_series = pd.Series(pd.PeriodIndex(dates, freq="M"))
3956+
3957+
offset_series = as_period_series - as_period_series
3958+
3959+
if TYPE_CHECKING_INVALID_USAGE:
3960+
assert_type(pd.Series(["a", "b"]).cumprod(), Never)
3961+
3962+
if TYPE_CHECKING_INVALID_USAGE:
3963+
assert_type(offset_series.cumprod(), Never)
3964+
39473965
if TYPE_CHECKING_INVALID_USAGE:
39483966
assert_type(pd.Series([pd.Timedelta(0), pd.Timedelta(1)]).cumprod(), Never)
3967+
3968+
if TYPE_CHECKING_INVALID_USAGE:
3969+
assert_type(
3970+
pd.Series(
3971+
[pd.Timestamp("2024-04-29"), pd.Timestamp("2034-08-28")]
3972+
).cumprod(),
3973+
Never,
3974+
)
3975+
3976+
if TYPE_CHECKING_INVALID_USAGE:
3977+
assert_type(as_period_series.cumprod(), Never)

0 commit comments

Comments
 (0)