7
7
import numpy as np
8
8
import pytest
9
9
10
- from pandas ._config import using_string_dtype
11
-
12
10
from pandas ._libs .parsers import STR_NA_VALUES
13
11
14
12
from pandas import (
@@ -260,7 +258,6 @@ def test_na_value_dict_multi_index(all_parsers, index_col, expected):
260
258
tm .assert_frame_equal (result , expected )
261
259
262
260
263
- @pytest .mark .xfail (using_string_dtype (), reason = "TODO(infer_string)" , strict = False )
264
261
@pytest .mark .parametrize (
265
262
"kwargs,expected" ,
266
263
[
@@ -306,7 +303,9 @@ def test_na_value_dict_multi_index(all_parsers, index_col, expected):
306
303
),
307
304
],
308
305
)
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
+ ):
310
309
data = """\
311
310
A,B,C
312
311
a,1,one
@@ -324,8 +323,9 @@ def test_na_values_keep_default(all_parsers, kwargs, expected, request):
324
323
with pytest .raises (ValueError , match = msg ):
325
324
parser .read_csv (StringIO (data ), ** kwargs )
326
325
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 )
329
329
330
330
result = parser .read_csv (StringIO (data ), ** kwargs )
331
331
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
435
435
tm .assert_frame_equal (result , expected )
436
436
437
437
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
440
438
@pytest .mark .parametrize (
441
439
"na_filter,row_data" ,
442
440
[
443
441
(True , [[1 , "A" ], [np .nan , np .nan ], [3 , "C" ]]),
444
442
(False , [["1" , "A" ], ["nan" , "B" ], ["3" , "C" ]]),
445
443
],
446
444
)
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 )
448
454
data = """\
449
455
A,B
450
456
1,A
451
457
nan,B
452
458
3,C
453
459
"""
454
- parser = all_parsers
455
460
result = parser .read_csv (StringIO (data ), na_values = ["B" ], na_filter = na_filter )
456
461
457
462
expected = DataFrame (row_data , columns = ["A" , "B" ])
0 commit comments