Skip to content

Commit aed4df1

Browse files
authored
CoW: Warn for transform inplace modification (pandas-dev#56381)
1 parent 5e0df27 commit aed4df1

File tree

3 files changed

+7
-4
lines changed

3 files changed

+7
-4
lines changed

pandas/core/frame.py

-1
Original file line numberDiff line numberDiff line change
@@ -4895,7 +4895,6 @@ def eval(self, expr: str, *, inplace: bool = False, **kwargs) -> Any | None:
48954895

48964896
inplace = validate_bool_kwarg(inplace, "inplace")
48974897
kwargs["level"] = kwargs.pop("level", 0) + 1
4898-
# TODO(CoW) those index/column resolvers create unnecessary refs to `self`
48994898
index_resolvers = self._get_index_resolvers()
49004899
column_resolvers = self._get_cleaned_column_resolvers()
49014900
resolvers = column_resolvers, index_resolvers

pandas/core/series.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -4740,7 +4740,11 @@ def transform(
47404740
) -> DataFrame | Series:
47414741
# Validate axis argument
47424742
self._get_axis_number(axis)
4743-
ser = self.copy(deep=False) if using_copy_on_write() else self
4743+
ser = (
4744+
self.copy(deep=False)
4745+
if using_copy_on_write() or warn_copy_on_write()
4746+
else self
4747+
)
47444748
result = SeriesApply(ser, func=func, args=args, kwargs=kwargs).transform()
47454749
return result
47464750

pandas/tests/copy_view/test_methods.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1938,8 +1938,8 @@ def func(ser):
19381938
ser.iloc[0] = 100
19391939
return ser
19401940

1941-
# TODO(CoW-warn) should warn?
1942-
ser.transform(func)
1941+
with tm.assert_cow_warning(warn_copy_on_write):
1942+
ser.transform(func)
19431943
if using_copy_on_write:
19441944
tm.assert_series_equal(ser, ser_orig)
19451945

0 commit comments

Comments
 (0)