def test_table_xlsx_merged_cells_fill(): source = "data/merged-cells.xlsx" dialect = dialects.ExcelDialect(fill_merged_cells=True) with Table(source, dialect=dialect, headers=False) as table: assert table.read_data() == [["data", "data"], ["data", "data"], ["data", "data"]]
def test_xlsx_parser_table(): source = io.open("data/table.xlsx", mode="rb") with Table(source, format="xlsx") as table: assert table.header == ["id", "name"] assert table.read_data() == [[1.0, "english"], [2.0, "中国人"]]
def test_table_local_xls(): with Table("data/table.xls") as table: assert table.header == ["id", "name"] assert table.read_data() == [[1, "english"], [2, "中国人"]]
def test_table_csv_text(): source = "text://id,name\n1,english\n2,中国人\n" with Table(source, format="csv") as table: assert table.header == ["id", "name"] assert table.read_data() == [["1", "english"], ["2", "中国人"]]
def test_filelike_loader_write(): source = "data/table.csv" with Table(source) as table: byte_stream = table.write(scheme="filelike", format="csv") assert (byte_stream.read( ) == b"id,name\r\n1,english\r\n2,\xe4\xb8\xad\xe5\x9b\xbd\xe4\xba\xba\r\n")
def test_table_csv_excel(): source = "header1,header2\nvalue1,value2\nvalue3,value4" with Table(source, scheme="text", format="csv") as table: assert table.header == ["header1", "header2"] assert table.read_data() == [["value1", "value2"], ["value3", "value4"]]
def test_table_csv_doublequote(): with Table("data/doublequote.csv") as table: assert len(table.header) == 17 for row in table: assert len(row) == 17
def test_ods_parser_remote(): source = BASE_URL % "data/table.ods" with Table(source) as table: assert table.header == ["id", "name"] assert table.read_data() == [[1, "english"], [2, "中国人"]]
def test_ods_parser_sheet_by_name(): dialect = OdsDialect(sheet="Лист1") with Table("data/table.ods", dialect=dialect) as table: assert table.header == ["id", "name"] assert table.read_data() == [[1, "english"], [2, "中国人"]]
def test_table_inline(): source = [["id", "name"], ["1", "english"], ["2", "中国人"]] with Table(source) as table: assert table.header == ["id", "name"] assert table.read_data() == [["1", "english"], ["2", "中国人"]]
def test_ods_parser(): with Table("data/table.ods") as table: assert table.format == "ods" assert table.header == ["id", "name"] assert table.read_data() == [[1, "english"], [2, "中国人"]]
def test_table_inline_from_iterator(): source = iter([["id", "name"], ["1", "english"], ["2", "中国人"]]) with Table(source) as table: assert table.header == ["id", "name"] assert table.read_data() == [["1", "english"], ["2", "中国人"]]
def test_table_inline_keyed_order_is_preserved(): source = [{"name": "english", "id": "1"}, {"name": "中国人", "id": "2"}] with Table(source, format="inline") as table: assert table.dialect.keyed is True assert table.header == ["name", "id"] assert table.read_data() == [["english", "1"], ["中国人", "2"]]
def test_table_inline_keyed(): source = [{"id": "1", "name": "english"}, {"id": "2", "name": "中国人"}] with Table(source, format="inline") as table: assert table.dialect.keyed is True assert table.header == ["id", "name"] assert table.read_data() == [["1", "english"], ["2", "中国人"]]
def test_table_csv_quotechar_is_empty_string(): source = 'header1,header2",header3\nvalue1,value2",value3' dialect = CsvDialect(quote_char="") with Table(source, scheme="text", format="csv", dialect=dialect) as table: table.header == ["header1", 'header2"', "header3"] table.read_data() == [["value1", 'value2"', "value3"]]
def test_ods_parser_with_boolean(): with Table("data/table-with-booleans.ods") as table: assert table.header == ["id", "boolean"] assert table.read_data() == [[1, True], [2, False]]
def test_table_csv_with_bom_with_encoding(): with Table("data/bom.csv", encoding="utf-8") as table: assert table.header == ["id", "name"] assert table.read_data() == [["1", "english"], ["2", "中国人"]]
def test_text_loader_write(): source = "data/table.csv" with Table(source) as table: text = table.write(scheme="text", format="csv") assert text == "id,name\r\n1,english\r\n2,中国人\r\n"
def test_table_csv_unix(): source = '"header1","header2"\n"value1","value2"\n"value3","value4"' with Table(source, scheme="text", format="csv") as table: assert table.header == ["header1", "header2"] assert table.read_data() == [["value1", "value2"], ["value3", "value4"]]
def test_text_loader(): source = "text://header1,header2\nvalue1,value2\nvalue3,value4" with Table(source, format="csv") as table: assert table.header == ["header1", "header2"] assert table.read_data() == [["value1", "value2"], ["value3", "value4"]]
def test_table_csv_stream(): source = open("data/table.csv", mode="rb") with Table(source, format="csv") as table: assert table.header == ["id", "name"] assert table.read_data() == [["1", "english"], ["2", "中国人"]]
def test_table_csv_escapechar(): source = "header1%,header2\nvalue1%,value2\nvalue3%,value4" dialect = CsvDialect(escape_char="%") with Table(source, scheme="text", format="csv", dialect=dialect) as table: assert table.header == ["header1,header2"] assert table.read_data() == [["value1,value2"], ["value3,value4"]]
def test_table_csv(): with Table("data/table.csv") as table: assert table.header == ["id", "name"] assert table.read_data() == [["1", "english"], ["2", "中国人"]]
def test_table_csv_quotechar(): source = "%header1,header2%\n%value1,value2%\n%value3,value4%" dialect = CsvDialect(quote_char="%") with Table(source, scheme="text", format="csv", dialect=dialect) as table: assert table.header == ["header1,header2"] assert table.read_data() == [["value1,value2"], ["value3,value4"]]
def test_filelike_loader(): with open("data/table.csv", mode="rb") as file: with Table(file, format="csv") as table: assert table.header == ["id", "name"] assert table.read_data() == [["1", "english"], ["2", "中国人"]]
def test_table_csv_detect_delimiter_tab(): source = "a1\tb1\tc1A,c1B\na2\tb2\tc2\n" with Table(source, scheme="text", format="csv", headers=False) as table: assert table.read_data() == [["a1", "b1", "c1A,c1B"], ["a2", "b2", "c2"]]
def test_xlsx_parser_preserve_formatting_number_multicode(): source = "data/number-format-multicode.xlsx" dialect = ExcelDialect(preserve_formatting=True) query = Query(skip_fields=["<blank>"]) with Table(source, dialect=dialect, query=query) as table: assert table.read_data() == [["4.5"], ["-9.032"], ["15.8"]]
def test_table_csv_detect_delimiter_pipe(): source = "a1|b1\na2|b2\n" with Table(source, scheme="text", format="csv", headers=False) as table: assert table.read_data() == [["a1", "b1"], ["a2", "b2"]]
def test_table_remote_xls(): with Table(BASE_URL % "data/table.xls") as table: assert table.header == ["id", "name"] assert table.read_data() == [[1, "english"], [2, "中国人"]]
def test_table_xlsx_merged_cells(): source = "data/merged-cells.xlsx" with Table(source, headers=False) as table: assert table.read_data() == [["data", None]]