82 lines
1.8 KiB
Python
82 lines
1.8 KiB
Python
![]() |
import os
|
||
|
|
||
|
import pytest
|
||
|
|
||
|
from pandas import read_csv, read_table
|
||
|
|
||
|
|
||
|
class BaseParser:
|
||
|
engine = None
|
||
|
low_memory = True
|
||
|
float_precision_choices = []
|
||
|
|
||
|
def update_kwargs(self, kwargs):
|
||
|
kwargs = kwargs.copy()
|
||
|
kwargs.update(dict(engine=self.engine, low_memory=self.low_memory))
|
||
|
|
||
|
return kwargs
|
||
|
|
||
|
def read_csv(self, *args, **kwargs):
|
||
|
kwargs = self.update_kwargs(kwargs)
|
||
|
return read_csv(*args, **kwargs)
|
||
|
|
||
|
def read_table(self, *args, **kwargs):
|
||
|
kwargs = self.update_kwargs(kwargs)
|
||
|
return read_table(*args, **kwargs)
|
||
|
|
||
|
|
||
|
class CParser(BaseParser):
|
||
|
engine = "c"
|
||
|
float_precision_choices = [None, "high", "round_trip"]
|
||
|
|
||
|
|
||
|
class CParserHighMemory(CParser):
|
||
|
low_memory = False
|
||
|
|
||
|
|
||
|
class CParserLowMemory(CParser):
|
||
|
low_memory = True
|
||
|
|
||
|
|
||
|
class PythonParser(BaseParser):
|
||
|
engine = "python"
|
||
|
float_precision_choices = [None]
|
||
|
|
||
|
|
||
|
@pytest.fixture
|
||
|
def csv_dir_path(datapath):
|
||
|
return datapath("io", "parser", "data")
|
||
|
|
||
|
|
||
|
@pytest.fixture
|
||
|
def csv1(csv_dir_path):
|
||
|
return os.path.join(csv_dir_path, "test1.csv")
|
||
|
|
||
|
|
||
|
_cParserHighMemory = CParserHighMemory()
|
||
|
_cParserLowMemory = CParserLowMemory()
|
||
|
_pythonParser = PythonParser()
|
||
|
|
||
|
_py_parsers_only = [_pythonParser]
|
||
|
_c_parsers_only = [_cParserHighMemory, _cParserLowMemory]
|
||
|
_all_parsers = _c_parsers_only + _py_parsers_only
|
||
|
|
||
|
_py_parser_ids = ["python"]
|
||
|
_c_parser_ids = ["c_high", "c_low"]
|
||
|
_all_parser_ids = _c_parser_ids + _py_parser_ids
|
||
|
|
||
|
|
||
|
@pytest.fixture(params=_all_parsers, ids=_all_parser_ids)
|
||
|
def all_parsers(request):
|
||
|
return request.param
|
||
|
|
||
|
|
||
|
@pytest.fixture(params=_c_parsers_only, ids=_c_parser_ids)
|
||
|
def c_parser_only(request):
|
||
|
return request.param
|
||
|
|
||
|
|
||
|
@pytest.fixture(params=_py_parsers_only, ids=_py_parser_ids)
|
||
|
def python_parser_only(request):
|
||
|
return request.param
|