done
This commit is contained in:
@ -0,0 +1,39 @@
|
||||
from io import StringIO
|
||||
|
||||
import numpy as np
|
||||
import pytest
|
||||
|
||||
import pandas as pd
|
||||
import pandas._testing as tm
|
||||
from pandas.core.arrays import ExtensionArray
|
||||
|
||||
|
||||
class BaseParsingTests:
|
||||
@pytest.mark.parametrize("engine", ["c", "python"])
|
||||
def test_EA_types(self, engine, data, request):
|
||||
if isinstance(data.dtype, pd.CategoricalDtype):
|
||||
# in parsers.pyx _convert_with_dtype there is special-casing for
|
||||
# Categorical that pre-empts _from_sequence_of_strings
|
||||
pass
|
||||
elif isinstance(data.dtype, pd.core.dtypes.dtypes.NumpyEADtype):
|
||||
# These get unwrapped internally so are treated as numpy dtypes
|
||||
# in the parsers.pyx code
|
||||
pass
|
||||
elif (
|
||||
type(data)._from_sequence_of_strings.__func__
|
||||
is ExtensionArray._from_sequence_of_strings.__func__
|
||||
):
|
||||
# i.e. the EA hasn't overridden _from_sequence_of_strings
|
||||
mark = pytest.mark.xfail(
|
||||
reason="_from_sequence_of_strings not implemented",
|
||||
raises=NotImplementedError,
|
||||
)
|
||||
request.node.add_marker(mark)
|
||||
|
||||
df = pd.DataFrame({"with_dtype": pd.Series(data, dtype=str(data.dtype))})
|
||||
csv_output = df.to_csv(index=False, na_rep=np.nan)
|
||||
result = pd.read_csv(
|
||||
StringIO(csv_output), dtype={"with_dtype": str(data.dtype)}, engine=engine
|
||||
)
|
||||
expected = df
|
||||
tm.assert_frame_equal(result, expected)
|
Reference in New Issue
Block a user