From 1f279b51032d7a2a068850b49b06e85412e56131 Mon Sep 17 00:00:00 2001 From: Brock Date: Sat, 5 Aug 2023 13:23:16 -0700 Subject: [PATCH 1/2] REF: move misplaced test --- pandas/tests/extension/base/getitem.py | 20 -------------------- pandas/tests/extension/test_common.py | 23 +++++++++++++++++++++++ 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/pandas/tests/extension/base/getitem.py b/pandas/tests/extension/base/getitem.py index faa38a7c03447..a7c05c886a3ea 100644 --- a/pandas/tests/extension/base/getitem.py +++ b/pandas/tests/extension/base/getitem.py @@ -468,23 +468,3 @@ def test_item(self, data): with pytest.raises(ValueError, match=msg): s.item() - - def test_ellipsis_index(self): - # GH42430 1D slices over extension types turn into N-dimensional slices over - # ExtensionArrays - class CapturingStringArray(pd.arrays.StringArray): - """Extend StringArray to capture arguments to __getitem__""" - - def __getitem__(self, item): - self.last_item_arg = item - return super().__getitem__(item) - - df = pd.DataFrame( - {"col1": CapturingStringArray(np.array(["hello", "world"], dtype=object))} - ) - _ = df.iloc[:1] - - # String comparison because there's no native way to compare slices. - # Before the fix for GH42430, last_item_arg would get set to the 2D slice - # (Ellipsis, slice(None, 1, None)) - tm.assert_equal(str(df["col1"].array.last_item_arg), "slice(None, 1, None)") diff --git a/pandas/tests/extension/test_common.py b/pandas/tests/extension/test_common.py index a3c0b328da075..3d8523f344d46 100644 --- a/pandas/tests/extension/test_common.py +++ b/pandas/tests/extension/test_common.py @@ -78,3 +78,26 @@ def test_astype_no_copy(): def test_is_extension_array_dtype(dtype): assert isinstance(dtype, dtypes.ExtensionDtype) assert is_extension_array_dtype(dtype) + + +class CapturingStringArray(pd.arrays.StringArray): + """Extend StringArray to capture arguments to __getitem__""" + + def __getitem__(self, item): + self.last_item_arg = item + return super().__getitem__(item) + + +def test_ellipsis_index(): + # GH#42430 1D slices over extension types turn into N-dimensional slices + # over ExtensionArrays + df = pd.DataFrame( + {"col1": CapturingStringArray(np.array(["hello", "world"], dtype=object))} + ) + _ = df.iloc[:1] + + # String comparison because there's no native way to compare slices. + # Before the fix for GH#42430, last_item_arg would get set to the 2D slice + # (Ellipsis, slice(None, 1, None)) + out = df["col1"].array.last_item_arg + assert str(out) == "slice(None, 1, None)" From 16c6bf535f2cf1c2530e24b1b8385e62cecbc65c Mon Sep 17 00:00:00 2001 From: Brock Date: Sun, 6 Aug 2023 10:18:08 -0700 Subject: [PATCH 2/2] REF: move misplaced test --- pandas/tests/extension/base/groupby.py | 24 ------------------ .../tests/groupby/aggregate/test_aggregate.py | 25 +++++++++++++++++++ 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/pandas/tests/extension/base/groupby.py b/pandas/tests/extension/base/groupby.py index 882855f59f28d..3e89bd104d747 100644 --- a/pandas/tests/extension/base/groupby.py +++ b/pandas/tests/extension/base/groupby.py @@ -67,30 +67,6 @@ def test_groupby_agg_extension(self, data_for_grouping): result = df.groupby("A").first() tm.assert_frame_equal(result, expected) - def test_groupby_agg_extension_timedelta_cumsum_with_named_aggregation(self): - # GH#41720 - expected = pd.DataFrame( - { - "td": { - 0: pd.Timedelta("0 days 01:00:00"), - 1: pd.Timedelta("0 days 01:15:00"), - 2: pd.Timedelta("0 days 01:15:00"), - } - } - ) - df = pd.DataFrame( - { - "td": pd.Series( - ["0 days 01:00:00", "0 days 00:15:00", "0 days 01:15:00"], - dtype="timedelta64[ns]", - ), - "grps": ["a", "a", "b"], - } - ) - gb = df.groupby("grps") - result = gb.agg(td=("td", "cumsum")) - tm.assert_frame_equal(result, expected) - def test_groupby_extension_no_sort(self, data_for_grouping): df = pd.DataFrame({"A": [1, 1, 2, 2, 3, 3, 1, 4], "B": data_for_grouping}) diff --git a/pandas/tests/groupby/aggregate/test_aggregate.py b/pandas/tests/groupby/aggregate/test_aggregate.py index bac9705277f2a..cdfa80c8c7cb5 100644 --- a/pandas/tests/groupby/aggregate/test_aggregate.py +++ b/pandas/tests/groupby/aggregate/test_aggregate.py @@ -1606,3 +1606,28 @@ def test_agg_with_as_index_false_with_list(): columns=MultiIndex.from_tuples([("a1", ""), ("a2", ""), ("b", "sum")]), ) tm.assert_frame_equal(result, expected) + + +def test_groupby_agg_extension_timedelta_cumsum_with_named_aggregation(): + # GH#41720 + expected = DataFrame( + { + "td": { + 0: pd.Timedelta("0 days 01:00:00"), + 1: pd.Timedelta("0 days 01:15:00"), + 2: pd.Timedelta("0 days 01:15:00"), + } + } + ) + df = DataFrame( + { + "td": Series( + ["0 days 01:00:00", "0 days 00:15:00", "0 days 01:15:00"], + dtype="timedelta64[ns]", + ), + "grps": ["a", "a", "b"], + } + ) + gb = df.groupby("grps") + result = gb.agg(td=("td", "cumsum")) + tm.assert_frame_equal(result, expected)