summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Pitcher <bradpitcher@gmail.com>2014-04-30 16:48:12 -0700
committerBrad Pitcher <bradpitcher@gmail.com>2014-05-01 08:12:39 -0700
commit49d8cb816f163ab5239ec9552c5d60cd0e386557 (patch)
treeeb9d77d2109dd17b1a4ea4f5dec4b1fd7ba45126
parentfbd277ff2ef96343fa4bb41e5fff6c37af674951 (diff)
downloadtablib-49d8cb816f163ab5239ec9552c5d60cd0e386557.tar.gz
allow csv fields to have multiple lines
-rw-r--r--tablib/formats/_csv.py4
-rwxr-xr-xtest_tablib.py16
2 files changed, 18 insertions, 2 deletions
diff --git a/tablib/formats/_csv.py b/tablib/formats/_csv.py
index c5d3202..7597395 100644
--- a/tablib/formats/_csv.py
+++ b/tablib/formats/_csv.py
@@ -35,9 +35,9 @@ def import_set(dset, in_stream, headers=True):
dset.wipe()
if is_py3:
- rows = csv.reader(in_stream.splitlines())
+ rows = csv.reader(StringIO(in_stream))
else:
- rows = csv.reader(in_stream.splitlines(), encoding=DEFAULT_ENCODING)
+ rows = csv.reader(StringIO(in_stream), encoding=DEFAULT_ENCODING)
for i, row in enumerate(rows):
if (i == 0) and (headers):
diff --git a/test_tablib.py b/test_tablib.py
index 4364d7b..78d1045 100755
--- a/test_tablib.py
+++ b/test_tablib.py
@@ -421,6 +421,22 @@ class TablibTestCase(unittest.TestCase):
self.assertEqual(_csv, data.csv)
+ def test_csv_import_set_with_newlines(self):
+ """Generate and import CSV set serialization when row values have
+ newlines."""
+ data.append(('Markdown\n=======',
+ 'A cool language\n\nwith paragraphs'))
+ data.append(('reStructedText\n==============',
+ 'Another cool language\n\nwith paragraphs'))
+ data.headers = ('title', 'body')
+
+ _csv = data.csv
+
+ data.csv = _csv
+
+ self.assertEqual(_csv, data.csv)
+
+
def test_tsv_import_set(self):
"""Generate and import TSV set serialization."""
data.append(self.john)