def test_table_csv_delimiter():
    source = '"header1";"header2"\n"value1";"value2"\n"value3";"value4"'
    dialect = CsvDialect(delimiter=";")
    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_excel_tab():
    source = "header1\theader2\nvalue1\tvalue2\nvalue3\tvalue4"
    dialect = CsvDialect(delimiter="\t")
    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_skipinitialspace():
    source = "header1, header2\nvalue1, value2\nvalue3, value4"
    dialect = CsvDialect(skip_initial_space=False)
    with Table(source, scheme="text", format="csv", dialect=dialect) as table:
        assert table.header == ["header1", "header2"]
        assert table.read_data() == [["value1", " value2"],
                                     ["value3", " value4"]]
Example #4
0
def test_csv_parser_quotechar_is_empty_string():
    source = b'header1,header2",header3\nvalue1,value2",value3'
    dialect = CsvDialect(quote_char="")
    with Resource(source, format="csv", dialect=dialect) as resource:
        resource.header == ["header1", 'header2"', "header3"]
        assert resource.read_rows() == [
            {"header1": "value1", 'header2"': 'value2"', "header3": "value3"},
        ]
Example #5
0
def test_csv_parser_dialect_should_not_persist_if_sniffing_fails_issue_goodtables_228():
    source1 = b"a;b;c\n#comment"
    source2 = b"a,b,c\n#comment"
    dialect = CsvDialect(delimiter=";")
    with Resource(source1, format="csv", dialect=dialect) as resource:
        assert resource.header == ["a", "b", "c"]
    with Resource(source2, format="csv") as resource:
        assert resource.header == ["a", "b", "c"]
Example #6
0
def test_csv_parser_delimiter():
    source = b'"header1";"header2"\n"value1";"value2"\n"value3";"value4"'
    dialect = CsvDialect(delimiter=";")
    with Resource(source, format="csv", dialect=dialect) as resource:
        assert resource.header == ["header1", "header2"]
        assert resource.read_rows() == [
            {"header1": "value1", "header2": "value2"},
            {"header1": "value3", "header2": "value4"},
        ]
Example #7
0
def test_csv_parser_escaping():
    dialect = CsvDialect(escape_char="\\")
    with Resource("data/escaping.csv", dialect=dialect) as resource:
        assert resource.header == ["ID", "Test"]
        assert resource.read_rows() == [
            {"ID": 1, "Test": "Test line 1"},
            {"ID": 2, "Test": 'Test " line 2'},
            {"ID": 3, "Test": 'Test " line 3'},
        ]
Example #8
0
def test_csv_parser_excel_tab():
    source = b"header1\theader2\nvalue1\tvalue2\nvalue3\tvalue4"
    dialect = CsvDialect(delimiter="\t")
    with Resource(source, format="csv", dialect=dialect) as resource:
        assert resource.header == ["header1", "header2"]
        assert resource.read_rows() == [
            {"header1": "value1", "header2": "value2"},
            {"header1": "value3", "header2": "value4"},
        ]
Example #9
0
def test_csv_parser_skipinitialspace():
    source = b"header1, header2\nvalue1, value2\nvalue3, value4"
    dialect = CsvDialect(skip_initial_space=False)
    with Resource(source, format="csv", dialect=dialect) as resource:
        assert resource.header == ["header1", "header2"]
        assert resource.read_rows() == [
            {"header1": "value1", "header2": " value2"},
            {"header1": "value3", "header2": " value4"},
        ]
Example #10
0
def test_csv_parser_quotechar():
    source = b"%header1,header2%\n%value1,value2%\n%value3,value4%"
    dialect = CsvDialect(quote_char="%")
    with Resource(source, format="csv", dialect=dialect) as resource:
        assert resource.header == ["header1,header2"]
        assert resource.read_rows() == [
            {"header1,header2": "value1,value2"},
            {"header1,header2": "value3,value4"},
        ]
Example #11
0
def test_csv_parser_escapechar():
    source = b"header1%,header2\nvalue1%,value2\nvalue3%,value4"
    dialect = CsvDialect(escape_char="%")
    with Resource(source, format="csv", dialect=dialect) as resource:
        assert resource.header == ["header1,header2"]
        assert resource.read_rows() == [
            {"header1,header2": "value1,value2"},
            {"header1,header2": "value3,value4"},
        ]
def test_table_csv_escaping():
    dialect = CsvDialect(escape_char="\\")
    with Table("data/escaping.csv", dialect=dialect) as table:
        assert table.header == ["ID", "Test"]
        assert table.read_data() == [
            ["1", "Test line 1"],
            ["2", 'Test " line 2'],
            ["3", 'Test " line 3'],
        ]
Example #13
0
def test_csv_parser_write_newline_crlf(tmpdir):
    dialect = CsvDialect(line_terminator="\r\n")
    source = Resource("data/table.csv")
    target = Resource(str(tmpdir.join("table.csv")), dialect=dialect)
    source.write(target)
    with target:
        assert target.dialect == {"lineTerminator": "\r\n"}
    with open(target.fullpath, "rb") as file:
        assert file.read().decode("utf-8") == "id,name\r\n1,english\r\n2,中国人\r\n"
def test_table_csv_dialect_should_not_persist_if_sniffing_fails_issue_goodtables_228(
):
    source1 = "a;b;c\n#comment"
    source2 = "a,b,c\n#comment"
    dialect = CsvDialect(delimiter=";")
    with Table(source1, scheme="text", format="csv", dialect=dialect) as table:
        assert table.header == ["a", "b", "c"]
    with Table(source2, scheme="text", format="csv") as table:
        assert table.header == ["a", "b", "c"]
Example #15
0
def test_describe_whitespace_cells_with_skip_initial_space_issue_7():
    source = "header1,header2\n1, \n2, \n3, \n"
    dialect = CsvDialect(skip_initial_space=True)
    resource = describe(source, scheme="text", format="csv", dialect=dialect)
    assert resource.schema == {
        "fields": [
            {"name": "header1", "type": "integer"},
            {"name": "header2", "type": "any"},
        ]
    }
def test_table_csv_write_delimiter(tmpdir):
    source = "data/table.csv"
    target = str(tmpdir.join("table.csv"))
    dialect = CsvDialect(delimiter=";")
    with Table(source) as table:
        table.write(target, dialect=dialect)
    with Table(target, dialect=dialect) as table:
        assert table.header == ["id", "name"]
        assert table.read_data() == [["1", "english"], ["2", "中国人"]]
        assert table.dialect == {"delimiter": ";"}
Example #17
0
def test_csv_parser_write_delimiter(tmpdir):
    dialect = CsvDialect(delimiter=";")
    source = Resource("data/table.csv")
    target = Resource(str(tmpdir.join("table.csv")), dialect=dialect)
    source.write(target)
    with target:
        assert target.header == ["id", "name"]
        assert target.dialect == {"delimiter": ";"}
        assert target.read_rows() == [
            {"id": 1, "name": "english"},
            {"id": 2, "name": "中国人"},
        ]
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_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_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"]]