Skip to content

Commit 267e451

Browse files
Improve import dependency parameterization
1 parent dfab096 commit 267e451

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}))],
@@ -71,8 +76,6 @@ def test_read_one_empty_col_no_header(self, ext, header, expected):
7176

7277
tm.assert_frame_equal(result, expected)
7378

74-
@td.skip_if_no("xlwt")
75-
@td.skip_if_no("openpyxl")
7679
@pytest.mark.parametrize(
7780
"header,expected",
7881
[(None, DataFrame([0] + [np.nan] * 4)), (0, DataFrame([np.nan] * 4))],
@@ -89,8 +92,6 @@ def test_read_one_empty_col_with_header(self, ext, header, expected):
8992

9093
tm.assert_frame_equal(result, expected)
9194

92-
@td.skip_if_no("openpyxl")
93-
@td.skip_if_no("xlwt")
9495
def test_set_column_names_in_parameter(self, ext):
9596
# GH 12870 : pass down column names associated with
9697
# keyword argument names
@@ -117,8 +118,6 @@ def test_set_column_names_in_parameter(self, ext):
117118
tm.assert_frame_equal(xlsdf_no_head, refdf)
118119
tm.assert_frame_equal(xlsdf_with_head, refdf)
119120

120-
@td.skip_if_no("xlwt")
121-
@td.skip_if_no("openpyxl")
122121
def test_creating_and_reading_multiple_sheets(self, ext):
123122
# see gh-9450
124123
#
@@ -143,7 +142,6 @@ def tdf(col_sheet_name):
143142
for s in sheets:
144143
tm.assert_frame_equal(dfs[s], dfs_returned[s])
145144

146-
@td.skip_if_no("xlsxwriter")
147145
def test_read_excel_multiindex_empty_level(self, ext):
148146
# see gh-12453
149147
with tm.ensure_clean(ext) as path:
@@ -191,7 +189,6 @@ def test_read_excel_multiindex_empty_level(self, ext):
191189
actual = pd.read_excel(path, header=[0, 1], index_col=0)
192190
tm.assert_frame_equal(actual, expected)
193191

194-
@td.skip_if_no("xlsxwriter")
195192
@pytest.mark.parametrize("c_idx_names", [True, False])
196193
@pytest.mark.parametrize("r_idx_names", [True, False])
197194
@pytest.mark.parametrize("c_idx_levels", [1, 3])
@@ -241,8 +238,6 @@ def test_excel_multindex_roundtrip(
241238
)
242239
tm.assert_frame_equal(df, act, check_names=check_names)
243240

244-
@td.skip_if_no("xlwt")
245-
@td.skip_if_no("openpyxl")
246241
def test_read_excel_parse_dates(self, ext):
247242
# see gh-11544, gh-12051
248243
df = DataFrame(
@@ -297,14 +292,13 @@ def test_multiindex_interval_datetimes(self, ext):
297292
tm.assert_frame_equal(result, expected)
298293

299294

300-
@td.skip_if_no("xlrd")
301295
@pytest.mark.parametrize(
302296
"engine,ext",
303297
[
304-
pytest.param("openpyxl", ".xlsx", marks=td.skip_if_no("openpyxl")),
305-
pytest.param("openpyxl", ".xlsm", marks=td.skip_if_no("openpyxl")),
306-
pytest.param("xlwt", ".xls", marks=td.skip_if_no("xlwt")),
307-
pytest.param("xlsxwriter", ".xlsx", marks=td.skip_if_no("xlsxwriter")),
298+
pytest.param("openpyxl", ".xlsx", marks=[td.skip_if_no("openpyxl"), td.skip_if_no("xlrd")]),
299+
pytest.param("openpyxl", ".xlsm", marks=[td.skip_if_no("openpyxl"), td.skip_if_no("xlrd")]),
300+
pytest.param("xlwt", ".xls", marks=[td.skip_if_no("xlwt"), td.skip_if_no("xlrd")]),
301+
pytest.param("xlsxwriter", ".xlsx", marks=[td.skip_if_no("xlsxwriter"), td.skip_if_no("xlrd")]),
308302
pytest.param("odf", ".ods", marks=td.skip_if_no("odf")),
309303
],
310304
)
@@ -329,8 +323,6 @@ def test_excel_sheet_size(self, path):
329323
col_df.to_excel(path)
330324

331325
def test_excel_sheet_by_name_raise(self, path, engine):
332-
import xlrd
333-
334326
gt = DataFrame(np.random.randn(10, 2))
335327
gt.to_excel(path)
336328

@@ -344,6 +336,7 @@ def test_excel_sheet_by_name_raise(self, path, engine):
344336
with pytest.raises(ValueError, match=msg):
345337
pd.read_excel(xl, "0")
346338
else:
339+
import xlrd
347340
msg = "No sheet named <'0'>"
348341
with pytest.raises(xlrd.XLRDError, match=msg):
349342
pd.read_excel(xl, sheet_name="0")
@@ -1200,9 +1193,7 @@ def test_bytes_io(self, engine):
12001193
writer.save()
12011194

12021195
bio.seek(0)
1203-
if engine != "odf":
1204-
engine = None
1205-
reread_df = pd.read_excel(bio, engine=engine, index_col=0)
1196+
reread_df = pd.read_excel(bio, index_col=0)
12061197
tm.assert_frame_equal(df, reread_df)
12071198

12081199
def test_write_lists_dict(self, path):
@@ -1254,19 +1245,15 @@ def test_path_path_lib(self, engine, ext):
12541245
df = tm.makeDataFrame()
12551246
writer = partial(df.to_excel, engine=engine)
12561247

1257-
if engine != "odf":
1258-
engine = None
1259-
reader = partial(pd.read_excel, engine=engine, index_col=0)
1248+
reader = partial(pd.read_excel, index_col=0)
12601249
result = tm.round_trip_pathlib(writer, reader, path=f"foo{ext}")
12611250
tm.assert_frame_equal(result, df)
12621251

12631252
def test_path_local_path(self, engine, ext):
12641253
df = tm.makeDataFrame()
12651254
writer = partial(df.to_excel, engine=engine)
12661255

1267-
if engine != "odf":
1268-
engine = None
1269-
reader = partial(pd.read_excel, engine=engine, index_col=0)
1256+
reader = partial(pd.read_excel, index_col=0)
12701257
result = tm.round_trip_localpath(writer, reader, path=f"foo{ext}")
12711258
tm.assert_frame_equal(result, df)
12721259

0 commit comments

Comments
 (0)