diff --git a/pandas/core/generic.py b/pandas/core/generic.py index 95804de2a7089..2c66b0c67c3dd 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -405,6 +405,8 @@ def set_flags( Parameters ---------- + copy : bool, default False + Specify if a copy of the object should be made. allows_duplicate_labels : bool, optional Whether the returned object allows duplicate labels. diff --git a/pandas/tests/copy_view/test_methods.py b/pandas/tests/copy_view/test_methods.py index 2b3d13b982d4d..9e3d8f8076be1 100644 --- a/pandas/tests/copy_view/test_methods.py +++ b/pandas/tests/copy_view/test_methods.py @@ -500,6 +500,24 @@ def test_series_set_axis(using_copy_on_write): tm.assert_series_equal(ser, ser_orig) +def test_set_flags(using_copy_on_write): + ser = Series([1, 2, 3]) + ser_orig = ser.copy() + ser2 = ser.set_flags(allows_duplicate_labels=False) + + assert np.shares_memory(ser, ser2) + + # mutating ser triggers a copy-on-write for the column / block + ser2.iloc[0] = 0 + if using_copy_on_write: + assert not np.shares_memory(ser2, ser) + tm.assert_series_equal(ser, ser_orig) + else: + assert np.shares_memory(ser2, ser) + expected = Series([0, 2, 3]) + tm.assert_series_equal(ser, expected) + + @pytest.mark.parametrize("copy_kwargs", [{"copy": True}, {}]) @pytest.mark.parametrize("kwargs", [{"mapper": "test"}, {"index": "test"}]) def test_rename_axis(using_copy_on_write, kwargs, copy_kwargs):