Skip to content

Commit 35a6524

Browse files
Improve import dependency parameterization
1 parent 9ed6b4d commit 35a6524

File tree

1 file changed

+18
-31
lines changed

1 file changed

+18
-31
lines changed

pandas/tests/io/excel/test_writers.py

+18-31
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,17 @@ def set_engine(engine, ext):
4848
set_option(option_name, prev_engine) # Roll back option change
4949

5050

51-
@td.skip_if_no("xlrd")
52-
@td.skip_if_no("odf")
53-
@pytest.mark.parametrize("ext", [".xls", ".xlsx", ".xlsm", ".ods"])
51+
@pytest.mark.parametrize(
52+
"ext",
53+
[
54+
pytest.param(".xlsx", marks=[td.skip_if_no("openpyxl"), td.skip_if_no("xlrd")]),
55+
pytest.param(".xlsm", marks=[td.skip_if_no("openpyxl"), td.skip_if_no("xlrd")]),
56+
pytest.param(".xls", marks=[td.skip_if_no("xlwt"), td.skip_if_no("xlrd")]),
57+
pytest.param(".xlsx", marks=[td.skip_if_no("xlsxwriter"), td.skip_if_no("xlrd")]),
58+
pytest.param(".ods", marks=td.skip_if_no("odf")),
59+
],
60+
)
5461
class TestRoundTrip:
55-
@td.skip_if_no("xlwt")
56-
@td.skip_if_no("openpyxl")
5762
@pytest.mark.parametrize(
5863
"header,expected",
5964
[(None, DataFrame([np.nan] * 4)), (0, DataFrame({"Unnamed: 0": [np.nan] * 3}))],
@@ -69,8 +74,6 @@ def test_read_one_empty_col_no_header(self, ext, header, expected):
6974

7075
tm.assert_frame_equal(result, expected)
7176

72-
@td.skip_if_no("xlwt")
73-
@td.skip_if_no("openpyxl")
7477
@pytest.mark.parametrize(
7578
"header,expected",
7679
[(None, DataFrame([0] + [np.nan] * 4)), (0, DataFrame([np.nan] * 4))],
@@ -85,8 +88,6 @@ def test_read_one_empty_col_with_header(self, ext, header, expected):
8588

8689
tm.assert_frame_equal(result, expected)
8790

88-
@td.skip_if_no("openpyxl")
89-
@td.skip_if_no("xlwt")
9091
def test_set_column_names_in_parameter(self, ext):
9192
# GH 12870 : pass down column names associated with
9293
# keyword argument names
@@ -110,8 +111,6 @@ def test_set_column_names_in_parameter(self, ext):
110111
tm.assert_frame_equal(xlsdf_no_head, refdf)
111112
tm.assert_frame_equal(xlsdf_with_head, refdf)
112113

113-
@td.skip_if_no("xlwt")
114-
@td.skip_if_no("openpyxl")
115114
def test_creating_and_reading_multiple_sheets(self, ext):
116115
# see gh-9450
117116
#
@@ -136,7 +135,6 @@ def tdf(col_sheet_name):
136135
for s in sheets:
137136
tm.assert_frame_equal(dfs[s], dfs_returned[s])
138137

139-
@td.skip_if_no("xlsxwriter")
140138
def test_read_excel_multiindex_empty_level(self, ext):
141139
# see gh-12453
142140
with tm.ensure_clean(ext) as path:
@@ -184,7 +182,6 @@ def test_read_excel_multiindex_empty_level(self, ext):
184182
actual = pd.read_excel(path, header=[0, 1], index_col=0)
185183
tm.assert_frame_equal(actual, expected)
186184

187-
@td.skip_if_no("xlsxwriter")
188185
@pytest.mark.parametrize("c_idx_names", [True, False])
189186
@pytest.mark.parametrize("r_idx_names", [True, False])
190187
@pytest.mark.parametrize("c_idx_levels", [1, 3])
@@ -234,8 +231,6 @@ def test_excel_multindex_roundtrip(
234231
)
235232
tm.assert_frame_equal(df, act, check_names=check_names)
236233

237-
@td.skip_if_no("xlwt")
238-
@td.skip_if_no("openpyxl")
239234
def test_read_excel_parse_dates(self, ext):
240235
# see gh-11544, gh-12051
241236
df = DataFrame(
@@ -290,14 +285,13 @@ def test_multiindex_interval_datetimes(self, ext):
290285
tm.assert_frame_equal(result, expected)
291286

292287

293-
@td.skip_if_no("xlrd")
294288
@pytest.mark.parametrize(
295289
"engine,ext",
296290
[
297-
pytest.param("openpyxl", ".xlsx", marks=td.skip_if_no("openpyxl")),
298-
pytest.param("openpyxl", ".xlsm", marks=td.skip_if_no("openpyxl")),
299-
pytest.param("xlwt", ".xls", marks=td.skip_if_no("xlwt")),
300-
pytest.param("xlsxwriter", ".xlsx", marks=td.skip_if_no("xlsxwriter")),
291+
pytest.param("openpyxl", ".xlsx", marks=[td.skip_if_no("openpyxl"), td.skip_if_no("xlrd")]),
292+
pytest.param("openpyxl", ".xlsm", marks=[td.skip_if_no("openpyxl"), td.skip_if_no("xlrd")]),
293+
pytest.param("xlwt", ".xls", marks=[td.skip_if_no("xlwt"), td.skip_if_no("xlrd")]),
294+
pytest.param("xlsxwriter", ".xlsx", marks=[td.skip_if_no("xlsxwriter"), td.skip_if_no("xlrd")]),
301295
pytest.param("odf", ".ods", marks=td.skip_if_no("odf")),
302296
],
303297
)
@@ -322,8 +316,6 @@ def test_excel_sheet_size(self, path):
322316
col_df.to_excel(path)
323317

324318
def test_excel_sheet_by_name_raise(self, path, engine):
325-
import xlrd
326-
327319
gt = DataFrame(np.random.randn(10, 2))
328320
gt.to_excel(path)
329321

@@ -337,6 +329,7 @@ def test_excel_sheet_by_name_raise(self, path, engine):
337329
with pytest.raises(ValueError, match=msg):
338330
pd.read_excel(xl, "0")
339331
else:
332+
import xlrd
340333
msg = "No sheet named <'0'>"
341334
with pytest.raises(xlrd.XLRDError, match=msg):
342335
pd.read_excel(xl, "0")
@@ -1173,9 +1166,7 @@ def test_bytes_io(self, engine):
11731166
writer.save()
11741167

11751168
bio.seek(0)
1176-
if engine != "odf":
1177-
engine = None
1178-
reread_df = pd.read_excel(bio, engine=engine, index_col=0)
1169+
reread_df = pd.read_excel(bio, index_col=0)
11791170
tm.assert_frame_equal(df, reread_df)
11801171

11811172
def test_write_lists_dict(self, path):
@@ -1219,19 +1210,15 @@ def test_path_path_lib(self, engine, ext):
12191210
df = tm.makeDataFrame()
12201211
writer = partial(df.to_excel, engine=engine)
12211212

1222-
if engine != "odf":
1223-
engine = None
1224-
reader = partial(pd.read_excel, engine=engine, index_col=0)
1213+
reader = partial(pd.read_excel, index_col=0)
12251214
result = tm.round_trip_pathlib(writer, reader, path=f"foo{ext}")
12261215
tm.assert_frame_equal(result, df)
12271216

12281217
def test_path_local_path(self, engine, ext):
12291218
df = tm.makeDataFrame()
12301219
writer = partial(df.to_excel, engine=engine)
12311220

1232-
if engine != "odf":
1233-
engine = None
1234-
reader = partial(pd.read_excel, engine=engine, index_col=0)
1221+
reader = partial(pd.read_excel, index_col=0)
12351222
result = tm.round_trip_localpath(writer, reader, path=f"foo{ext}")
12361223
tm.assert_frame_equal(result, df)
12371224

0 commit comments

Comments
 (0)