Skip to content

Commit 4dbbdde

Browse files
authored
Merge pull request #5117 from janezd/fix-xls-tests
Fix tests for xls reader
2 parents d04e3cd + c1551b9 commit 4dbbdde

File tree

6 files changed

+30
-30
lines changed

6 files changed

+30
-30
lines changed

Orange/data/io.py

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -270,27 +270,6 @@ def read(self):
270270
raise IOError("Couldn't load spreadsheet from " + self.filename)
271271
return table
272272

273-
@classmethod
274-
def write_file(cls, filename, data):
275-
vars = list(chain((ContinuousVariable('_w'),) if data.has_weights() else (),
276-
data.domain.attributes,
277-
data.domain.class_vars,
278-
data.domain.metas))
279-
formatters = [cls.formatter(v) for v in vars]
280-
zipped_list_data = zip(data.W if data.W.ndim > 1 else data.W[:, np.newaxis],
281-
data.X,
282-
data.Y if data.Y.ndim > 1 else data.Y[:, np.newaxis],
283-
data.metas)
284-
headers = cls.header_names(data)
285-
workbook = xlsxwriter.Workbook(filename)
286-
sheet = workbook.add_worksheet()
287-
for c, header in enumerate(headers):
288-
sheet.write(0, c, header)
289-
for i, row in enumerate(zipped_list_data, 1):
290-
for j, (fmt, v) in enumerate(zip(formatters, flatten(row))):
291-
sheet.write(i, j, fmt(v))
292-
workbook.close()
293-
294273

295274
class ExcelReader(_BaseExcelReader):
296275
"""Reader for .xlsx files"""
@@ -332,6 +311,27 @@ def _get_active_sheet(self) -> openpyxl.worksheet.worksheet.Worksheet:
332311
else:
333312
return self.workbook.active
334313

314+
@classmethod
315+
def write_file(cls, filename, data):
316+
vars = list(chain((ContinuousVariable('_w'),) if data.has_weights() else (),
317+
data.domain.attributes,
318+
data.domain.class_vars,
319+
data.domain.metas))
320+
formatters = [cls.formatter(v) for v in vars]
321+
zipped_list_data = zip(data.W if data.W.ndim > 1 else data.W[:, np.newaxis],
322+
data.X,
323+
data.Y if data.Y.ndim > 1 else data.Y[:, np.newaxis],
324+
data.metas)
325+
headers = cls.header_names(data)
326+
workbook = xlsxwriter.Workbook(filename)
327+
sheet = workbook.add_worksheet()
328+
for c, header in enumerate(headers):
329+
sheet.write(0, c, header)
330+
for i, row in enumerate(zipped_list_data, 1):
331+
for j, (fmt, v) in enumerate(zip(formatters, flatten(row))):
332+
sheet.write(i, j, fmt(v))
333+
workbook.close()
334+
335335

336336
class XlsReader(_BaseExcelReader):
337337
"""Reader for .xls files"""

Orange/tests/test_xlsx_reader.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ def get_dataset(name):
1616

1717

1818
def get_xlsx_reader(name: str) -> io.ExcelReader:
19-
return io.ExcelReader(get_dataset(name))
19+
return io.ExcelReader(get_dataset(name + ".xlsx"))
2020

2121

2222
def get_xls_reader(name: str) -> io.XlsReader:
23-
return io.XlsReader(get_dataset(name))
23+
return io.XlsReader(get_dataset(name + ".xls"))
2424

2525

2626
def read_file(reader: Callable, name: str) -> Table:
@@ -37,7 +37,7 @@ def wrapper(self):
3737

3838
class TestExcelReader(unittest.TestCase):
3939
def test_read_round_floats(self):
40-
table = read_file(get_xlsx_reader, "round_floats.xlsx")
40+
table = read_file(get_xlsx_reader, "round_floats")
4141
domain = table.domain
4242
self.assertIsNone(domain.class_var)
4343
self.assertEqual(len(domain.metas), 0)
@@ -50,7 +50,7 @@ def test_read_round_floats(self):
5050
class TestExcelHeader0(unittest.TestCase):
5151
@test_xlsx_xls
5252
def test_read(self, reader: Callable[[str], io.FileFormat]):
53-
table = read_file(reader, "header_0.xlsx")
53+
table = read_file(reader, "header_0")
5454
domain = table.domain
5555
self.assertIsNone(domain.class_var)
5656
self.assertEqual(len(domain.metas), 0)
@@ -68,13 +68,13 @@ def test_read(self, reader: Callable[[str], io.FileFormat]):
6868
class TextExcelSheets(unittest.TestCase):
6969
@test_xlsx_xls
7070
def test_sheets(self, reader: Callable[[str], io.FileFormat]):
71-
reader = reader("header_0_sheet.xlsx")
71+
reader = reader("header_0_sheet")
7272
self.assertSequenceEqual(reader.sheets,
7373
["Sheet1", "my_sheet", "Sheet3"])
7474

7575
@test_xlsx_xls
7676
def test_named_sheet(self, reader: Callable[[str], io.FileFormat]):
77-
reader = reader("header_0_sheet.xlsx")
77+
reader = reader("header_0_sheet")
7878
reader.select_sheet("my_sheet")
7979
table = reader.read()
8080
self.assertEqual(len(table.domain.attributes), 4)
@@ -96,7 +96,7 @@ def test_named_sheet_table_xls(self):
9696
class TestExcelHeader1(unittest.TestCase):
9797
@test_xlsx_xls
9898
def test_no_flags(self, reader: Callable[[str], io.FileFormat]):
99-
table = read_file(reader, "header_1_no_flags.xlsx")
99+
table = read_file(reader, "header_1_no_flags")
100100
domain = table.domain
101101
self.assertEqual(len(domain.metas), 0)
102102
self.assertEqual(len(domain.attributes), 4)
@@ -115,7 +115,7 @@ def test_no_flags(self, reader: Callable[[str], io.FileFormat]):
115115

116116
@test_xlsx_xls
117117
def test_flags(self, reader: Callable[[str], io.FileFormat]):
118-
table = read_file(reader, "header_1_flags.xlsx")
118+
table = read_file(reader, "header_1_flags")
119119
domain = table.domain
120120

121121
self.assertEqual(len(domain.attributes), 1)
@@ -146,7 +146,7 @@ def test_flags(self, reader: Callable[[str], io.FileFormat]):
146146
class TestExcelHeader3(unittest.TestCase):
147147
@test_xlsx_xls
148148
def test_read(self, reader: Callable[[str], io.FileFormat]):
149-
table = read_file(reader, "header_3.xlsx")
149+
table = read_file(reader, "header_3")
150150
domain = table.domain
151151

152152
self.assertEqual(len(domain.attributes), 2)
25 KB
Binary file not shown.
27 KB
Binary file not shown.
25.5 KB
Binary file not shown.
27.5 KB
Binary file not shown.

0 commit comments

Comments
 (0)