Skip to content

Commit b193ac5

Browse files
Revert "REF: remove unnecessary na_value fixture" (#54930)
1 parent 48899c3 commit b193ac5

File tree

9 files changed

+59
-65
lines changed

9 files changed

+59
-65
lines changed

pandas/tests/extension/base/constructors.py

+2-4
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@ def test_series_constructor(self, data):
3535
if hasattr(result._mgr, "blocks"):
3636
assert isinstance(result2._mgr.blocks[0], EABackedBlock)
3737

38-
def test_series_constructor_no_data_with_index(self, dtype):
39-
na_value = dtype.na_value
38+
def test_series_constructor_no_data_with_index(self, dtype, na_value):
4039
result = pd.Series(index=[1, 2, 3], dtype=dtype)
4140
expected = pd.Series([na_value] * 3, index=[1, 2, 3], dtype=dtype)
4241
tm.assert_series_equal(result, expected)
@@ -46,8 +45,7 @@ def test_series_constructor_no_data_with_index(self, dtype):
4645
expected = pd.Series([], index=pd.Index([], dtype="object"), dtype=dtype)
4746
tm.assert_series_equal(result, expected)
4847

49-
def test_series_constructor_scalar_na_with_index(self, dtype):
50-
na_value = dtype.na_value
48+
def test_series_constructor_scalar_na_with_index(self, dtype, na_value):
5149
result = pd.Series(na_value, index=[1, 2, 3], dtype=dtype)
5250
expected = pd.Series([na_value] * 3, index=[1, 2, 3], dtype=dtype)
5351
tm.assert_series_equal(result, expected)

pandas/tests/extension/base/getitem.py

+5-10
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,7 @@ def test_getitem_invalid(self, data):
148148
with pytest.raises(IndexError, match=msg):
149149
data[-ub - 1]
150150

151-
def test_getitem_scalar_na(self, data_missing, na_cmp):
152-
na_value = data_missing.dtype.na_value
151+
def test_getitem_scalar_na(self, data_missing, na_cmp, na_value):
153152
result = data_missing[0]
154153
assert na_cmp(result, na_value)
155154

@@ -349,8 +348,7 @@ def test_take_sequence(self, data):
349348
assert result.iloc[1] == data[1]
350349
assert result.iloc[2] == data[3]
351350

352-
def test_take(self, data, na_cmp):
353-
na_value = data.dtype.na_value
351+
def test_take(self, data, na_value, na_cmp):
354352
result = data.take([0, -1])
355353
assert result.dtype == data.dtype
356354
assert result[0] == data[0]
@@ -363,8 +361,7 @@ def test_take(self, data, na_cmp):
363361
with pytest.raises(IndexError, match="out of bounds"):
364362
data.take([len(data) + 1])
365363

366-
def test_take_empty(self, data, na_cmp):
367-
na_value = data.dtype.na_value
364+
def test_take_empty(self, data, na_value, na_cmp):
368365
empty = data[:0]
369366

370367
result = empty.take([-1], allow_fill=True)
@@ -396,8 +393,7 @@ def test_take_non_na_fill_value(self, data_missing):
396393
expected = arr.take([1, 1])
397394
tm.assert_extension_array_equal(result, expected)
398395

399-
def test_take_pandas_style_negative_raises(self, data):
400-
na_value = data.dtype.na_value
396+
def test_take_pandas_style_negative_raises(self, data, na_value):
401397
with pytest.raises(ValueError, match=""):
402398
data.take([0, -2], fill_value=na_value, allow_fill=True)
403399

@@ -417,8 +413,7 @@ def test_take_series(self, data):
417413
)
418414
tm.assert_series_equal(result, expected)
419415

420-
def test_reindex(self, data):
421-
na_value = data.dtype.na_value
416+
def test_reindex(self, data, na_value):
422417
s = pd.Series(data)
423418
result = s.reindex([0, 1, 3])
424419
expected = pd.Series(data.take([0, 1, 3]), index=[0, 1, 3])

pandas/tests/extension/base/methods.py

+4-7
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ def test_argsort_missing(self, data_missing_for_sorting):
121121
expected = pd.Series(np.array([1, -1, 0], dtype=np.intp))
122122
tm.assert_series_equal(result, expected)
123123

124-
def test_argmin_argmax(self, data_for_sorting, data_missing_for_sorting):
124+
def test_argmin_argmax(self, data_for_sorting, data_missing_for_sorting, na_value):
125125
# GH 24382
126126
is_bool = data_for_sorting.dtype._is_boolean
127127

@@ -154,10 +154,9 @@ def test_argmin_argmax_empty_array(self, method, data):
154154
getattr(data[:0], method)()
155155

156156
@pytest.mark.parametrize("method", ["argmax", "argmin"])
157-
def test_argmin_argmax_all_na(self, method, data):
157+
def test_argmin_argmax_all_na(self, method, data, na_value):
158158
# all missing with skipna=True is the same as empty
159159
err_msg = "attempt to get"
160-
na_value = data.dtype.na_value
161160
data_na = type(data)._from_sequence([na_value, na_value], dtype=data.dtype)
162161
with pytest.raises(ValueError, match=err_msg):
163162
getattr(data_na, method)()
@@ -556,8 +555,7 @@ def _test_searchsorted_bool_dtypes(self, data_for_sorting, as_series):
556555
sorter = np.array([1, 0])
557556
assert data_for_sorting.searchsorted(a, sorter=sorter) == 0
558557

559-
def test_where_series(self, data, as_frame):
560-
na_value = data.dtype.na_value
558+
def test_where_series(self, data, na_value, as_frame):
561559
assert data[0] != data[1]
562560
cls = type(data)
563561
a, b = data[:2]
@@ -684,8 +682,7 @@ def test_insert_invalid_loc(self, data):
684682
data.insert(1.5, data[0])
685683

686684
@pytest.mark.parametrize("box", [pd.array, pd.Series, pd.DataFrame])
687-
def test_equals(self, data, as_series, box):
688-
na_value = data.dtype.na_value
685+
def test_equals(self, data, na_value, as_series, box):
689686
data2 = type(data)._from_sequence([data[0]] * len(data), dtype=data.dtype)
690687
data_na = type(data)._from_sequence([na_value] * len(data), dtype=data.dtype)
691688

pandas/tests/extension/base/reshaping.py

+7-13
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,7 @@ def test_concat_mixed_dtypes(self, data):
7272
expected = pd.concat([df1["A"].astype("object"), df2["A"].astype("object")])
7373
tm.assert_series_equal(result, expected)
7474

75-
def test_concat_columns(self, data):
76-
na_value = data.dtype.na_value
75+
def test_concat_columns(self, data, na_value):
7776
df1 = pd.DataFrame({"A": data[:3]})
7877
df2 = pd.DataFrame({"B": [1, 2, 3]})
7978

@@ -97,9 +96,8 @@ def test_concat_columns(self, data):
9796
result = pd.concat([df1["A"], df2["B"]], axis=1)
9897
tm.assert_frame_equal(result, expected)
9998

100-
def test_concat_extension_arrays_copy_false(self, data):
99+
def test_concat_extension_arrays_copy_false(self, data, na_value):
101100
# GH 20756
102-
na_value = data.dtype.na_value
103101
df1 = pd.DataFrame({"A": data[:3]})
104102
df2 = pd.DataFrame({"B": data[3:7]})
105103
expected = pd.DataFrame(
@@ -124,8 +122,7 @@ def test_concat_with_reindex(self, data):
124122
)
125123
tm.assert_frame_equal(result, expected)
126124

127-
def test_align(self, data):
128-
na_value = data.dtype.na_value
125+
def test_align(self, data, na_value):
129126
a = data[:3]
130127
b = data[2:5]
131128
r1, r2 = pd.Series(a).align(pd.Series(b, index=[1, 2, 3]))
@@ -136,8 +133,7 @@ def test_align(self, data):
136133
tm.assert_series_equal(r1, e1)
137134
tm.assert_series_equal(r2, e2)
138135

139-
def test_align_frame(self, data):
140-
na_value = data.dtype.na_value
136+
def test_align_frame(self, data, na_value):
141137
a = data[:3]
142138
b = data[2:5]
143139
r1, r2 = pd.DataFrame({"A": a}).align(pd.DataFrame({"A": b}, index=[1, 2, 3]))
@@ -152,9 +148,8 @@ def test_align_frame(self, data):
152148
tm.assert_frame_equal(r1, e1)
153149
tm.assert_frame_equal(r2, e2)
154150

155-
def test_align_series_frame(self, data):
151+
def test_align_series_frame(self, data, na_value):
156152
# https://github.com/pandas-dev/pandas/issues/20576
157-
na_value = data.dtype.na_value
158153
ser = pd.Series(data, name="a")
159154
df = pd.DataFrame({"col": np.arange(len(ser) + 1)})
160155
r1, r2 = ser.align(df)
@@ -185,7 +180,7 @@ def test_set_frame_overwrite_object(self, data):
185180
df["A"] = data
186181
assert df.dtypes["A"] == data.dtype
187182

188-
def test_merge(self, data):
183+
def test_merge(self, data, na_value):
189184
# GH-20743
190185
df1 = pd.DataFrame({"ext": data[:3], "int1": [1, 2, 3], "key": [0, 1, 2]})
191186
df2 = pd.DataFrame({"int2": [1, 2, 3, 4], "key": [0, 0, 1, 3]})
@@ -210,8 +205,7 @@ def test_merge(self, data):
210205
"int2": [1, 2, 3, np.nan, 4],
211206
"key": [0, 0, 1, 2, 3],
212207
"ext": data._from_sequence(
213-
[data[0], data[0], data[1], data[2], data.dtype.na_value],
214-
dtype=data.dtype,
208+
[data[0], data[0], data[1], data[2], na_value], dtype=data.dtype
215209
),
216210
}
217211
)

pandas/tests/extension/base/setitem.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -359,8 +359,7 @@ def test_setitem_with_expansion_dataframe_column(self, data, full_indexer):
359359

360360
tm.assert_frame_equal(result, expected)
361361

362-
def test_setitem_with_expansion_row(self, data):
363-
na_value = data.dtype.na_value
362+
def test_setitem_with_expansion_row(self, data, na_value):
364363
df = pd.DataFrame({"data": data[:1]})
365364

366365
df.loc[1, "data"] = data[1]

pandas/tests/extension/conftest.py

+10
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,16 @@ def na_cmp():
118118
return operator.is_
119119

120120

121+
@pytest.fixture
122+
def na_value(dtype):
123+
"""
124+
The scalar missing value for this type. Default dtype.na_value.
125+
126+
TODO: can be removed in 3.x (see https://github.com/pandas-dev/pandas/pull/54930)
127+
"""
128+
return dtype.na_value
129+
130+
121131
@pytest.fixture
122132
def data_for_grouping():
123133
"""

pandas/tests/extension/json/test_json.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -97,24 +97,24 @@ def test_from_dtype(self, data):
9797
super().test_from_dtype(data)
9898

9999
@pytest.mark.xfail(reason="RecursionError, GH-33900")
100-
def test_series_constructor_no_data_with_index(self, dtype):
100+
def test_series_constructor_no_data_with_index(self, dtype, na_value):
101101
# RecursionError: maximum recursion depth exceeded in comparison
102102
rec_limit = sys.getrecursionlimit()
103103
try:
104104
# Limit to avoid stack overflow on Windows CI
105105
sys.setrecursionlimit(100)
106-
super().test_series_constructor_no_data_with_index(dtype)
106+
super().test_series_constructor_no_data_with_index(dtype, na_value)
107107
finally:
108108
sys.setrecursionlimit(rec_limit)
109109

110110
@pytest.mark.xfail(reason="RecursionError, GH-33900")
111-
def test_series_constructor_scalar_na_with_index(self, dtype):
111+
def test_series_constructor_scalar_na_with_index(self, dtype, na_value):
112112
# RecursionError: maximum recursion depth exceeded in comparison
113113
rec_limit = sys.getrecursionlimit()
114114
try:
115115
# Limit to avoid stack overflow on Windows CI
116116
sys.setrecursionlimit(100)
117-
super().test_series_constructor_scalar_na_with_index(dtype)
117+
super().test_series_constructor_scalar_na_with_index(dtype, na_value)
118118
finally:
119119
sys.setrecursionlimit(rec_limit)
120120

@@ -214,19 +214,19 @@ def test_combine_first(self, data):
214214
super().test_combine_first(data)
215215

216216
@pytest.mark.xfail(reason="broadcasting error")
217-
def test_where_series(self, data):
217+
def test_where_series(self, data, na_value):
218218
# Fails with
219219
# *** ValueError: operands could not be broadcast together
220220
# with shapes (4,) (4,) (0,)
221-
super().test_where_series(data)
221+
super().test_where_series(data, na_value)
222222

223223
@pytest.mark.xfail(reason="Can't compare dicts.")
224224
def test_searchsorted(self, data_for_sorting):
225225
super().test_searchsorted(data_for_sorting)
226226

227227
@pytest.mark.xfail(reason="Can't compare dicts.")
228-
def test_equals(self, data, as_series):
229-
super().test_equals(data, as_series)
228+
def test_equals(self, data, na_value, as_series):
229+
super().test_equals(data, na_value, as_series)
230230

231231
@pytest.mark.skip("fill-value is interpreted as a dict of values")
232232
def test_fillna_copy_frame(self, data_missing):

pandas/tests/extension/test_arrow.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -503,7 +503,9 @@ def test_reduce_series_numeric(self, data, all_numeric_reductions, skipna, reque
503503
super().test_reduce_series_numeric(data, all_numeric_reductions, skipna)
504504

505505
@pytest.mark.parametrize("skipna", [True, False])
506-
def test_reduce_series_boolean(self, data, all_boolean_reductions, skipna, request):
506+
def test_reduce_series_boolean(
507+
self, data, all_boolean_reductions, skipna, na_value, request
508+
):
507509
pa_dtype = data.dtype.pyarrow_dtype
508510
xfail_mark = pytest.mark.xfail(
509511
raises=TypeError,

pandas/tests/extension/test_sparse.py

+19-20
Original file line numberDiff line numberDiff line change
@@ -149,29 +149,29 @@ def test_concat_mixed_dtypes(self, data):
149149
def test_stack(self, data, columns, future_stack):
150150
super().test_stack(data, columns, future_stack)
151151

152-
def test_concat_columns(self, data):
152+
def test_concat_columns(self, data, na_value):
153153
self._check_unsupported(data)
154-
super().test_concat_columns(data)
154+
super().test_concat_columns(data, na_value)
155155

156-
def test_concat_extension_arrays_copy_false(self, data):
156+
def test_concat_extension_arrays_copy_false(self, data, na_value):
157157
self._check_unsupported(data)
158-
super().test_concat_extension_arrays_copy_false(data)
158+
super().test_concat_extension_arrays_copy_false(data, na_value)
159159

160-
def test_align(self, data):
160+
def test_align(self, data, na_value):
161161
self._check_unsupported(data)
162-
super().test_align(data)
162+
super().test_align(data, na_value)
163163

164-
def test_align_frame(self, data):
164+
def test_align_frame(self, data, na_value):
165165
self._check_unsupported(data)
166-
super().test_align_frame(data)
166+
super().test_align_frame(data, na_value)
167167

168-
def test_align_series_frame(self, data):
168+
def test_align_series_frame(self, data, na_value):
169169
self._check_unsupported(data)
170-
super().test_align_series_frame(data)
170+
super().test_align_series_frame(data, na_value)
171171

172-
def test_merge(self, data):
172+
def test_merge(self, data, na_value):
173173
self._check_unsupported(data)
174-
super().test_merge(data)
174+
super().test_merge(data, na_value)
175175

176176

177177
class TestGetitem(BaseSparseTests, base.BaseGetitemTests):
@@ -183,9 +183,9 @@ def test_get(self, data):
183183
assert ser.get(4) == ser.iloc[2]
184184
assert ser.get(2) == ser.iloc[1]
185185

186-
def test_reindex(self, data):
186+
def test_reindex(self, data, na_value):
187187
self._check_unsupported(data)
188-
super().test_reindex(data)
188+
super().test_reindex(data, na_value)
189189

190190

191191
class TestSetitem(BaseSparseTests, base.BaseSetitemTests):
@@ -285,7 +285,7 @@ def test_fillna_copy_series(self, data_missing, using_copy_on_write):
285285
def test_fillna_length_mismatch(self, data_missing):
286286
super().test_fillna_length_mismatch(data_missing)
287287

288-
def test_where_series(self, data):
288+
def test_where_series(self, data, na_value):
289289
assert data[0] != data[1]
290290
cls = type(data)
291291
a, b = data[:2]
@@ -296,7 +296,6 @@ def test_where_series(self, data):
296296
result = ser.where(cond)
297297

298298
new_dtype = SparseDtype("float", 0.0)
299-
na_value = data.dtype.na_value
300299
expected = pd.Series(
301300
cls._from_sequence([a, a, na_value, na_value], dtype=new_dtype)
302301
)
@@ -320,15 +319,15 @@ def test_shift_0_periods(self, data):
320319
assert result._sparse_values[0] != result._sparse_values[1]
321320

322321
@pytest.mark.parametrize("method", ["argmax", "argmin"])
323-
def test_argmin_argmax_all_na(self, method, data):
322+
def test_argmin_argmax_all_na(self, method, data, na_value):
324323
# overriding because Sparse[int64, 0] cannot handle na_value
325324
self._check_unsupported(data)
326-
super().test_argmin_argmax_all_na(method, data)
325+
super().test_argmin_argmax_all_na(method, data, na_value)
327326

328327
@pytest.mark.parametrize("box", [pd.array, pd.Series, pd.DataFrame])
329-
def test_equals(self, data, as_series, box):
328+
def test_equals(self, data, na_value, as_series, box):
330329
self._check_unsupported(data)
331-
super().test_equals(data, as_series, box)
330+
super().test_equals(data, na_value, as_series, box)
332331

333332
@pytest.mark.parametrize(
334333
"func, na_action, expected",

0 commit comments

Comments
 (0)