mirror of
https://github.com/kennethreitz/tablib.git
synced 2026-06-05 06:56:13 +00:00
@@ -9,6 +9,11 @@
|
||||
will remain in Tablib 1.x and will be fixed (reversed) in Tablib 2.0.0 (#453). If you
|
||||
count on the broken behavior, please update your code when you upgrade to Tablib 2.x.
|
||||
|
||||
### Improvements
|
||||
|
||||
- Tablib is now able to import CSV content where not all rows have the same
|
||||
length. Missing columns on any line receive the empty string (#226).
|
||||
|
||||
## 1.0.0 (2020-01-13)
|
||||
|
||||
### Breaking changes
|
||||
|
||||
@@ -46,6 +46,8 @@ class CSVFormat:
|
||||
if (i == 0) and (headers):
|
||||
dset.headers = row
|
||||
elif row:
|
||||
if i > 0 and len(row) < dset.width:
|
||||
row += [''] * (dset.width - len(row))
|
||||
dset.append(row)
|
||||
|
||||
@classmethod
|
||||
|
||||
@@ -804,6 +804,25 @@ class CSVTests(BaseTestCase):
|
||||
data.csv = csv_text
|
||||
self.assertEqual(data.width, 7)
|
||||
|
||||
def test_csv_import_set_ragged(self):
|
||||
"""Import CSV set when not all rows have the same length."""
|
||||
csv_text = (
|
||||
"H1,H2,H3\n"
|
||||
"A,B\n"
|
||||
"C,D,E\n"
|
||||
"\n"
|
||||
"F\n"
|
||||
)
|
||||
dataset = tablib.import_set(csv_text, format="csv")
|
||||
self.assertEqual(
|
||||
str(dataset),
|
||||
'H1|H2|H3\n'
|
||||
'--|--|--\n'
|
||||
'A |B | \n'
|
||||
'C |D |E \n'
|
||||
'F | | '
|
||||
)
|
||||
|
||||
def test_csv_export(self):
|
||||
"""Verify exporting dataset object as CSV."""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user