Skip to content

Commit 871f164

Browse files
committed
EA attribute specifying whether copy=False is ignored
1 parent 1bf16a2 commit 871f164

File tree

5 files changed

+4
-45
lines changed

5 files changed

+4
-45
lines changed

pandas/tests/extension/base/missing.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,11 +129,11 @@ def test_fillna_readonly(self, data_missing):
129129
data = data_missing.copy()
130130
data._readonly = True
131131

132-
expected = data_missing.fillna(fill_value, copy=True)
133-
134132
# by default fillna(copy=True), then this works fine
135133
res_copy = data.fillna(fill_value, copy=True)
136-
tm.assert_extension_array_equal(res_copy, expected)
134+
tm.assert_extension_array_equal(
135+
res_copy, data_missing.fillna(fill_value, copy=True)
136+
)
137137
tm.assert_extension_array_equal(data, data_missing)
138138

139139
if self._supports_fillna_copy_false:
@@ -142,6 +142,7 @@ def test_fillna_readonly(self, data_missing):
142142
data.fillna(fill_value, copy=False)
143143
tm.assert_extension_array_equal(data, data_missing)
144144
else:
145+
# EAs that do not respect the copy keyword, copy=False is ignored
145146
res_no_copy = data.fillna(fill_value, copy=False)
146147
tm.assert_extension_array_equal(res_no_copy, res_copy)
147148
tm.assert_extension_array_equal(data, data_missing)

pandas/tests/extension/decimal/test_decimal.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,10 +171,6 @@ def test_fillna_limit_series(self, data_missing):
171171
):
172172
super().test_fillna_limit_series(data_missing)
173173

174-
@pytest.mark.xfail(reason="copy keyword is missing")
175-
def test_fillna_readonly(self, data_missing):
176-
super().test_fillna_readonly(data_missing)
177-
178174
def test_series_repr(self, data):
179175
# Overriding this base test to explicitly test that
180176
# the custom _formatter is used

pandas/tests/extension/test_arrow.py

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -687,21 +687,6 @@ def test_fillna_no_op_returns_copy(self, data):
687687
assert result is not data
688688
tm.assert_extension_array_equal(result, data)
689689

690-
def test_fillna_readonly(self, data_missing):
691-
data = data_missing.copy()
692-
data._readonly = True
693-
694-
# by default fillna(copy=True), then this works fine
695-
result = data.fillna(data_missing[1])
696-
assert result[0] == data_missing[1]
697-
tm.assert_extension_array_equal(data, data_missing)
698-
699-
# fillna(copy=False) is generally not honored by Arrow-backed array,
700-
# but always returns new data -> same result as above
701-
result = data.fillna(data_missing[1])
702-
assert result[0] == data_missing[1]
703-
tm.assert_extension_array_equal(data, data_missing)
704-
705690
@pytest.mark.xfail(
706691
reason="GH 45419: pyarrow.ChunkedArray does not support views", run=False
707692
)

pandas/tests/extension/test_interval.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,6 @@ def test_fillna_limit_series(self, data_missing):
100100
def test_fillna_length_mismatch(self, data_missing):
101101
super().test_fillna_length_mismatch(data_missing)
102102

103-
@pytest.mark.xfail(reason="copy=False is not Implemented")
104-
def test_fillna_readonly(self, data_missing):
105-
super().test_fillna_readonly(data_missing)
106-
107103
@pytest.mark.filterwarnings(
108104
"ignore:invalid value encountered in cast:RuntimeWarning"
109105
)

pandas/tests/extension/test_string.py

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -169,25 +169,6 @@ def test_fillna_no_op_returns_copy(self, data):
169169
assert result is not data
170170
tm.assert_extension_array_equal(result, data)
171171

172-
def test_fillna_readonly(self, data_missing):
173-
data = data_missing.copy()
174-
data._readonly = True
175-
176-
# by default fillna(copy=True), then this works fine
177-
result = data.fillna(data_missing[1])
178-
assert result[0] == data_missing[1]
179-
tm.assert_extension_array_equal(data, data_missing)
180-
181-
# fillna(copy=False) is generally not honored by Arrow-backed array,
182-
# but always returns new data -> same result as above
183-
if data.dtype.storage == "pyarrow":
184-
result = data.fillna(data_missing[1])
185-
assert result[0] == data_missing[1]
186-
else:
187-
with pytest.raises(ValueError, match="Cannot modify read-only array"):
188-
data.fillna(data_missing[1], copy=False)
189-
tm.assert_extension_array_equal(data, data_missing)
190-
191172
def _get_expected_exception(
192173
self, op_name: str, obj, other
193174
) -> type[Exception] | tuple[type[Exception], ...] | None:

0 commit comments

Comments
 (0)