Skip to content

Commit b070774

Browse files
Backport PR #56952: DEPR: Make FutureWarning into DeprecationWarning … (#56964)
* Backport PR #56952: DEPR: Make FutureWarning into DeprecationWarning for groupby.apply * Update test_groupby.py * fix finally? --------- Co-authored-by: Richard Shadrach <[email protected]>
1 parent dfd0aed commit b070774

21 files changed

+167
-158
lines changed

pandas/core/groupby/groupby.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1831,7 +1831,7 @@ def f(g):
18311831
message=_apply_groupings_depr.format(
18321832
type(self).__name__, "apply"
18331833
),
1834-
category=FutureWarning,
1834+
category=DeprecationWarning,
18351835
stacklevel=find_stack_level(),
18361836
)
18371837
except TypeError:

pandas/core/resample.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2906,7 +2906,7 @@ def _apply(
29062906
new_message = _apply_groupings_depr.format("DataFrameGroupBy", "resample")
29072907
with rewrite_warning(
29082908
target_message=target_message,
2909-
target_category=FutureWarning,
2909+
target_category=DeprecationWarning,
29102910
new_message=new_message,
29112911
):
29122912
result = grouped.apply(how, *args, include_groups=include_groups, **kwargs)

pandas/tests/extension/base/groupby.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -114,13 +114,13 @@ def test_groupby_extension_transform(self, data_for_grouping):
114114
def test_groupby_extension_apply(self, data_for_grouping, groupby_apply_op):
115115
df = pd.DataFrame({"A": [1, 1, 2, 2, 3, 3, 1, 4], "B": data_for_grouping})
116116
msg = "DataFrameGroupBy.apply operated on the grouping columns"
117-
with tm.assert_produces_warning(FutureWarning, match=msg):
118-
df.groupby("B", group_keys=False).apply(groupby_apply_op)
119-
df.groupby("B", group_keys=False).A.apply(groupby_apply_op)
117+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
118+
df.groupby("B", group_keys=False, observed=False).apply(groupby_apply_op)
119+
df.groupby("B", group_keys=False, observed=False).A.apply(groupby_apply_op)
120120
msg = "DataFrameGroupBy.apply operated on the grouping columns"
121-
with tm.assert_produces_warning(FutureWarning, match=msg):
122-
df.groupby("A", group_keys=False).apply(groupby_apply_op)
123-
df.groupby("A", group_keys=False).B.apply(groupby_apply_op)
121+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
122+
df.groupby("A", group_keys=False, observed=False).apply(groupby_apply_op)
123+
df.groupby("A", group_keys=False, observed=False).B.apply(groupby_apply_op)
124124

125125
def test_groupby_apply_identity(self, data_for_grouping):
126126
df = pd.DataFrame({"A": [1, 1, 2, 2, 3, 3, 1, 4], "B": data_for_grouping})

pandas/tests/frame/test_stack_unstack.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1825,7 +1825,7 @@ def test_unstack_bug(self, future_stack):
18251825
)
18261826

18271827
msg = "DataFrameGroupBy.apply operated on the grouping columns"
1828-
with tm.assert_produces_warning(FutureWarning, match=msg):
1828+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
18291829
result = df.groupby(["state", "exp", "barcode", "v"]).apply(len)
18301830

18311831
unstacked = result.unstack()

pandas/tests/groupby/aggregate/test_other.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -502,15 +502,15 @@ def test_agg_timezone_round_trip():
502502

503503
# GH#27110 applying iloc should return a DataFrame
504504
msg = "DataFrameGroupBy.apply operated on the grouping columns"
505-
with tm.assert_produces_warning(FutureWarning, match=msg):
505+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
506506
assert ts == grouped.apply(lambda x: x.iloc[0]).iloc[0, 1]
507507

508508
ts = df["B"].iloc[2]
509509
assert ts == grouped.last()["B"].iloc[0]
510510

511511
# GH#27110 applying iloc should return a DataFrame
512512
msg = "DataFrameGroupBy.apply operated on the grouping columns"
513-
with tm.assert_produces_warning(FutureWarning, match=msg):
513+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
514514
assert ts == grouped.apply(lambda x: x.iloc[-1]).iloc[0, 1]
515515

516516

pandas/tests/groupby/methods/test_value_counts.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ def test_against_frame_and_seriesgroupby(
330330
)
331331
if frame:
332332
# compare against apply with DataFrame value_counts
333-
warn = FutureWarning if groupby == "column" else None
333+
warn = DeprecationWarning if groupby == "column" else None
334334
msg = "DataFrameGroupBy.apply operated on the grouping columns"
335335
with tm.assert_produces_warning(warn, match=msg):
336336
expected = gp.apply(

pandas/tests/groupby/test_apply.py

+66-66
Large diffs are not rendered by default.

pandas/tests/groupby/test_apply_mutate.py

+10-8
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ def test_group_by_copy():
1414
).set_index("name")
1515

1616
msg = "DataFrameGroupBy.apply operated on the grouping columns"
17-
with tm.assert_produces_warning(FutureWarning, match=msg):
17+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
1818
grp_by_same_value = df.groupby(["age"], group_keys=False).apply(
1919
lambda group: group
2020
)
2121
msg = "DataFrameGroupBy.apply operated on the grouping columns"
22-
with tm.assert_produces_warning(FutureWarning, match=msg):
22+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
2323
grp_by_copy = df.groupby(["age"], group_keys=False).apply(
2424
lambda group: group.copy()
2525
)
@@ -54,9 +54,9 @@ def f_no_copy(x):
5454
return x.groupby("cat2")["rank"].min()
5555

5656
msg = "DataFrameGroupBy.apply operated on the grouping columns"
57-
with tm.assert_produces_warning(FutureWarning, match=msg):
57+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
5858
grpby_copy = df.groupby("cat1").apply(f_copy)
59-
with tm.assert_produces_warning(FutureWarning, match=msg):
59+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
6060
grpby_no_copy = df.groupby("cat1").apply(f_no_copy)
6161
tm.assert_series_equal(grpby_copy, grpby_no_copy)
6262

@@ -68,14 +68,14 @@ def test_no_mutate_but_looks_like():
6868
df = pd.DataFrame({"key": [1, 1, 1, 2, 2, 2, 3, 3, 3], "value": range(9)})
6969

7070
msg = "DataFrameGroupBy.apply operated on the grouping columns"
71-
with tm.assert_produces_warning(FutureWarning, match=msg):
71+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
7272
result1 = df.groupby("key", group_keys=True).apply(lambda x: x[:].key)
73-
with tm.assert_produces_warning(FutureWarning, match=msg):
73+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
7474
result2 = df.groupby("key", group_keys=True).apply(lambda x: x.key)
7575
tm.assert_series_equal(result1, result2)
7676

7777

78-
def test_apply_function_with_indexing():
78+
def test_apply_function_with_indexing(warn_copy_on_write):
7979
# GH: 33058
8080
df = pd.DataFrame(
8181
{"col1": ["A", "A", "A", "B", "B", "B"], "col2": [1, 2, 3, 4, 5, 6]}
@@ -86,7 +86,9 @@ def fn(x):
8686
return x.col2
8787

8888
msg = "DataFrameGroupBy.apply operated on the grouping columns"
89-
with tm.assert_produces_warning(FutureWarning, match=msg):
89+
with tm.assert_produces_warning(
90+
DeprecationWarning, match=msg, raise_on_extra_warnings=not warn_copy_on_write
91+
):
9092
result = df.groupby(["col1"], as_index=False).apply(fn)
9193
expected = pd.Series(
9294
[1, 2, 0, 4, 5, 0],

pandas/tests/groupby/test_categorical.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ def f(x):
125125
return x.drop_duplicates("person_name").iloc[0]
126126

127127
msg = "DataFrameGroupBy.apply operated on the grouping columns"
128-
with tm.assert_produces_warning(FutureWarning, match=msg):
128+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
129129
result = g.apply(f)
130130
expected = x.iloc[[0, 1]].copy()
131131
expected.index = Index([1, 2], name="person_id")
@@ -333,7 +333,7 @@ def test_apply(ordered):
333333
idx = MultiIndex.from_arrays([missing, dense], names=["missing", "dense"])
334334
expected = Series(1, index=idx)
335335
msg = "DataFrameGroupBy.apply operated on the grouping columns"
336-
with tm.assert_produces_warning(FutureWarning, match=msg):
336+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
337337
result = grouped.apply(lambda x: 1)
338338
tm.assert_series_equal(result, expected)
339339

@@ -2050,7 +2050,7 @@ def test_category_order_apply(as_index, sort, observed, method, index_kind, orde
20502050
df["a2"] = df["a"]
20512051
df = df.set_index(keys)
20522052
gb = df.groupby(keys, as_index=as_index, sort=sort, observed=observed)
2053-
warn = FutureWarning if method == "apply" and index_kind == "range" else None
2053+
warn = DeprecationWarning if method == "apply" and index_kind == "range" else None
20542054
msg = "DataFrameGroupBy.apply operated on the grouping columns"
20552055
with tm.assert_produces_warning(warn, match=msg):
20562056
op_result = getattr(gb, method)(lambda x: x.sum(numeric_only=True))

pandas/tests/groupby/test_counting.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ def test_count():
290290
for key in ["1st", "2nd", ["1st", "2nd"]]:
291291
left = df.groupby(key).count()
292292
msg = "DataFrameGroupBy.apply operated on the grouping columns"
293-
with tm.assert_produces_warning(FutureWarning, match=msg):
293+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
294294
right = df.groupby(key).apply(DataFrame.count).drop(key, axis=1)
295295
tm.assert_frame_equal(left, right)
296296

pandas/tests/groupby/test_groupby.py

+16-16
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ def max_value(group):
163163
return group.loc[group["value"].idxmax()]
164164

165165
msg = "DataFrameGroupBy.apply operated on the grouping columns"
166-
with tm.assert_produces_warning(FutureWarning, match=msg):
166+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
167167
applied = df.groupby("A").apply(max_value)
168168
result = applied.dtypes
169169
expected = df.dtypes
@@ -186,7 +186,7 @@ def f_0(grp):
186186

187187
expected = df.groupby("A").first()[["B"]]
188188
msg = "DataFrameGroupBy.apply operated on the grouping columns"
189-
with tm.assert_produces_warning(FutureWarning, match=msg):
189+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
190190
result = df.groupby("A").apply(f_0)[["B"]]
191191
tm.assert_frame_equal(result, expected)
192192

@@ -196,7 +196,7 @@ def f_1(grp):
196196
return grp.iloc[0]
197197

198198
msg = "DataFrameGroupBy.apply operated on the grouping columns"
199-
with tm.assert_produces_warning(FutureWarning, match=msg):
199+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
200200
result = df.groupby("A").apply(f_1)[["B"]]
201201
e = expected.copy()
202202
e.loc["Tiger"] = np.nan
@@ -208,7 +208,7 @@ def f_2(grp):
208208
return grp.iloc[0]
209209

210210
msg = "DataFrameGroupBy.apply operated on the grouping columns"
211-
with tm.assert_produces_warning(FutureWarning, match=msg):
211+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
212212
result = df.groupby("A").apply(f_2)[["B"]]
213213
e = expected.copy()
214214
e.loc["Pony"] = np.nan
@@ -221,7 +221,7 @@ def f_3(grp):
221221
return grp.iloc[0]
222222

223223
msg = "DataFrameGroupBy.apply operated on the grouping columns"
224-
with tm.assert_produces_warning(FutureWarning, match=msg):
224+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
225225
result = df.groupby("A").apply(f_3)[["C"]]
226226
e = df.groupby("A").first()[["C"]]
227227
e.loc["Pony"] = pd.NaT
@@ -234,7 +234,7 @@ def f_4(grp):
234234
return grp.iloc[0].loc["C"]
235235

236236
msg = "DataFrameGroupBy.apply operated on the grouping columns"
237-
with tm.assert_produces_warning(FutureWarning, match=msg):
237+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
238238
result = df.groupby("A").apply(f_4)
239239
e = df.groupby("A").first()["C"].copy()
240240
e.loc["Pony"] = np.nan
@@ -421,9 +421,9 @@ def f3(x):
421421

422422
# correct result
423423
msg = "DataFrameGroupBy.apply operated on the grouping columns"
424-
with tm.assert_produces_warning(FutureWarning, match=msg):
424+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
425425
result1 = df.groupby("a").apply(f1)
426-
with tm.assert_produces_warning(FutureWarning, match=msg):
426+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
427427
result2 = df2.groupby("a").apply(f1)
428428
tm.assert_frame_equal(result1, result2)
429429

@@ -1377,13 +1377,13 @@ def summarize_random_name(df):
13771377
return Series({"count": 1, "mean": 2, "omissions": 3}, name=df.iloc[0]["A"])
13781378

13791379
msg = "DataFrameGroupBy.apply operated on the grouping columns"
1380-
with tm.assert_produces_warning(FutureWarning, match=msg):
1380+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
13811381
metrics = df.groupby("A").apply(summarize)
13821382
assert metrics.columns.name is None
1383-
with tm.assert_produces_warning(FutureWarning, match=msg):
1383+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
13841384
metrics = df.groupby("A").apply(summarize, "metrics")
13851385
assert metrics.columns.name == "metrics"
1386-
with tm.assert_produces_warning(FutureWarning, match=msg):
1386+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
13871387
metrics = df.groupby("A").apply(summarize_random_name)
13881388
assert metrics.columns.name is None
13891389

@@ -1678,7 +1678,7 @@ def test_dont_clobber_name_column():
16781678
)
16791679

16801680
msg = "DataFrameGroupBy.apply operated on the grouping columns"
1681-
with tm.assert_produces_warning(FutureWarning, match=msg):
1681+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
16821682
result = df.groupby("key", group_keys=False).apply(lambda x: x)
16831683
tm.assert_frame_equal(result, df)
16841684

@@ -1762,7 +1762,7 @@ def freducex(x):
17621762

17631763
# make sure all these work
17641764
msg = "DataFrameGroupBy.apply operated on the grouping columns"
1765-
with tm.assert_produces_warning(FutureWarning, match=msg):
1765+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
17661766
grouped.apply(f)
17671767
grouped.aggregate(freduce)
17681768
grouped.aggregate({"C": freduce, "D": freduce})
@@ -1785,7 +1785,7 @@ def f(group):
17851785
return group.copy()
17861786

17871787
msg = "DataFrameGroupBy.apply operated on the grouping columns"
1788-
with tm.assert_produces_warning(FutureWarning, match=msg):
1788+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
17891789
df.groupby("a", sort=False, group_keys=False).apply(f)
17901790

17911791
expected_names = [0, 1, 2]
@@ -1993,7 +1993,7 @@ def test_sort(x):
19931993
tm.assert_frame_equal(x, x.sort_values(by=sort_column))
19941994

19951995
msg = "DataFrameGroupBy.apply operated on the grouping columns"
1996-
with tm.assert_produces_warning(FutureWarning, match=msg):
1996+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
19971997
g.apply(test_sort)
19981998

19991999

@@ -2180,7 +2180,7 @@ def test_empty_groupby_apply_nonunique_columns():
21802180
df.columns = [0, 1, 2, 0]
21812181
gb = df.groupby(df[1], group_keys=False)
21822182
msg = "DataFrameGroupBy.apply operated on the grouping columns"
2183-
with tm.assert_produces_warning(FutureWarning, match=msg):
2183+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
21842184
res = gb.apply(lambda x: x)
21852185
assert (res.dtypes == df.dtypes).all()
21862186

pandas/tests/groupby/test_groupby_dropna.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ def test_groupby_apply_with_dropna_for_multi_index(dropna, data, selected_data,
325325
df = pd.DataFrame(data)
326326
gb = df.groupby("groups", dropna=dropna)
327327
msg = "DataFrameGroupBy.apply operated on the grouping columns"
328-
with tm.assert_produces_warning(FutureWarning, match=msg):
328+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
329329
result = gb.apply(lambda grp: pd.DataFrame({"values": range(len(grp))}))
330330

331331
mi_tuples = tuple(zip(data["groups"], selected_data["values"]))

pandas/tests/groupby/test_groupby_subclass.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,10 @@ def func(group):
7474

7575
msg = "DataFrameGroupBy.apply operated on the grouping columns"
7676
with tm.assert_produces_warning(
77-
FutureWarning, match=msg, raise_on_extra_warnings=False
77+
DeprecationWarning,
78+
match=msg,
79+
raise_on_extra_warnings=False,
80+
check_stacklevel=False,
7881
):
7982
result = custom_df.groupby("c").apply(func)
8083
expected = tm.SubclassedSeries(["hello"] * 3, index=Index([7, 8, 9], name="c"))
@@ -123,7 +126,10 @@ def test_groupby_resample_preserves_subclass(obj):
123126
# Confirm groupby.resample() preserves dataframe type
124127
msg = "DataFrameGroupBy.resample operated on the grouping columns"
125128
with tm.assert_produces_warning(
126-
FutureWarning, match=msg, raise_on_extra_warnings=False
129+
DeprecationWarning,
130+
match=msg,
131+
raise_on_extra_warnings=False,
132+
check_stacklevel=False,
127133
):
128134
result = df.groupby("Buyer").resample("5D").sum()
129135
assert isinstance(result, obj)

pandas/tests/groupby/test_grouping.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ def test_grouper_creation_bug(self):
238238
tm.assert_frame_equal(result, expected)
239239

240240
msg = "DataFrameGroupBy.apply operated on the grouping columns"
241-
with tm.assert_produces_warning(FutureWarning, match=msg):
241+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
242242
result = g.apply(lambda x: x.sum())
243243
expected["A"] = [0, 2, 4]
244244
expected = expected.loc[:, ["A", "B"]]

pandas/tests/groupby/test_timegrouper.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -478,10 +478,10 @@ def sumfunc_series(x):
478478
return Series([x["value"].sum()], ("sum",))
479479

480480
msg = "DataFrameGroupBy.apply operated on the grouping columns"
481-
with tm.assert_produces_warning(FutureWarning, match=msg):
481+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
482482
expected = df.groupby(Grouper(key="date")).apply(sumfunc_series)
483483
msg = "DataFrameGroupBy.apply operated on the grouping columns"
484-
with tm.assert_produces_warning(FutureWarning, match=msg):
484+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
485485
result = df_dt.groupby(Grouper(freq="ME", key="date")).apply(sumfunc_series)
486486
tm.assert_frame_equal(
487487
result.reset_index(drop=True), expected.reset_index(drop=True)
@@ -499,9 +499,9 @@ def sumfunc_value(x):
499499
return x.value.sum()
500500

501501
msg = "DataFrameGroupBy.apply operated on the grouping columns"
502-
with tm.assert_produces_warning(FutureWarning, match=msg):
502+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
503503
expected = df.groupby(Grouper(key="date")).apply(sumfunc_value)
504-
with tm.assert_produces_warning(FutureWarning, match=msg):
504+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
505505
result = df_dt.groupby(Grouper(freq="ME", key="date")).apply(sumfunc_value)
506506
tm.assert_series_equal(
507507
result.reset_index(drop=True), expected.reset_index(drop=True)
@@ -929,7 +929,7 @@ def test_groupby_apply_timegrouper_with_nat_apply_squeeze(
929929

930930
# function that returns a Series
931931
msg = "DataFrameGroupBy.apply operated on the grouping columns"
932-
with tm.assert_produces_warning(FutureWarning, match=msg):
932+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
933933
res = gb.apply(lambda x: x["Quantity"] * 2)
934934

935935
dti = Index([Timestamp("2013-12-31")], dtype=df["Date"].dtype, name="Date")

pandas/tests/groupby/transform/test_transform.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -668,7 +668,7 @@ def f(group):
668668

669669
grouped = df.groupby("c")
670670
msg = "DataFrameGroupBy.apply operated on the grouping columns"
671-
with tm.assert_produces_warning(FutureWarning, match=msg):
671+
with tm.assert_produces_warning(DeprecationWarning, match=msg):
672672
result = grouped.apply(f)
673673

674674
assert result["d"].dtype == np.float64
@@ -826,7 +826,7 @@ def test_cython_transform_frame(request, op, args, targop, df_fix, gb_target):
826826
if op != "shift" or not isinstance(gb_target.get("by"), (str, list)):
827827
warn = None
828828
else:
829-
warn = FutureWarning
829+
warn = DeprecationWarning
830830
msg = "DataFrameGroupBy.apply operated on the grouping columns"
831831
with tm.assert_produces_warning(warn, match=msg):
832832
expected = gb.apply(targop)

0 commit comments

Comments
 (0)