77import numpy as np
88import pytest
99
10- from pandas ._config import using_string_dtype
11-
1210from pandas ._libs .parsers import STR_NA_VALUES
1311
1412from pandas import (
@@ -260,7 +258,6 @@ def test_na_value_dict_multi_index(all_parsers, index_col, expected):
260258 tm .assert_frame_equal (result , expected )
261259
262260
263- @pytest .mark .xfail (using_string_dtype (), reason = "TODO(infer_string)" , strict = False )
264261@pytest .mark .parametrize (
265262 "kwargs,expected" ,
266263 [
@@ -306,7 +303,9 @@ def test_na_value_dict_multi_index(all_parsers, index_col, expected):
306303 ),
307304 ],
308305)
309- def test_na_values_keep_default (all_parsers , kwargs , expected , request ):
306+ def test_na_values_keep_default (
307+ all_parsers , kwargs , expected , request , using_infer_string
308+ ):
310309 data = """\
311310 A,B,C
312311a,1,one
@@ -324,8 +323,9 @@ def test_na_values_keep_default(all_parsers, kwargs, expected, request):
324323 with pytest .raises (ValueError , match = msg ):
325324 parser .read_csv (StringIO (data ), ** kwargs )
326325 return
327- mark = pytest .mark .xfail ()
328- request .applymarker (mark )
326+ if not using_infer_string or "na_values" in kwargs :
327+ mark = pytest .mark .xfail ()
328+ request .applymarker (mark )
329329
330330 result = parser .read_csv (StringIO (data ), ** kwargs )
331331 tm .assert_frame_equal (result , expected )
@@ -435,23 +435,28 @@ def test_no_keep_default_na_dict_na_values_diff_reprs(all_parsers, col_zero_na_v
435435 tm .assert_frame_equal (result , expected )
436436
437437
438- @pytest .mark .xfail (using_string_dtype (), reason = "TODO(infer_string)" , strict = False )
439- @xfail_pyarrow # mismatched dtypes in both cases, FutureWarning in the True case
440438@pytest .mark .parametrize (
441439 "na_filter,row_data" ,
442440 [
443441 (True , [[1 , "A" ], [np .nan , np .nan ], [3 , "C" ]]),
444442 (False , [["1" , "A" ], ["nan" , "B" ], ["3" , "C" ]]),
445443 ],
446444)
447- def test_na_values_na_filter_override (all_parsers , na_filter , row_data ):
445+ def test_na_values_na_filter_override (
446+ request , all_parsers , na_filter , row_data , using_infer_string
447+ ):
448+ parser = all_parsers
449+ if parser .engine == "pyarrow" :
450+ # mismatched dtypes in both cases, FutureWarning in the True case
451+ if not (using_infer_string and na_filter ):
452+ mark = pytest .mark .xfail (reason = "pyarrow doesn't support this." )
453+ request .applymarker (mark )
448454 data = """\
449455 A,B
4504561,A
451457nan,B
4524583,C
453459"""
454- parser = all_parsers
455460 result = parser .read_csv (StringIO (data ), na_values = ["B" ], na_filter = na_filter )
456461
457462 expected = DataFrame (row_data , columns = ["A" , "B" ])
0 commit comments