Merge pull request #337 from ZuluPro/stream

Added stream to CSV
This commit is contained in:
Frost Ming
2019-06-28 09:02:43 +08:00
committed by GitHub
3 changed files with 29 additions and 3 deletions
+1
View File
@@ -29,3 +29,4 @@ junit-py27.xml
# pyenv noise
.python-version
tablib.egg-info/*
+9 -2
View File
@@ -13,8 +13,8 @@ extensions = ('csv',)
DEFAULT_DELIMITER = unicode(',')
def export_set(dataset, **kwargs):
"""Returns CSV representation of Dataset."""
def export_stream_set(dataset, **kwargs):
"""Returns CSV representation of Dataset as file-like."""
stream = StringIO()
kwargs.setdefault('delimiter', DEFAULT_DELIMITER)
@@ -24,6 +24,13 @@ def export_set(dataset, **kwargs):
for row in dataset._package(dicts=False):
_csv.writerow(row)
stream.seek(0)
return stream
def export_set(dataset, **kwargs):
"""Returns CSV representation of Dataset."""
stream = export_stream_set(dataset, **kwargs)
return stream.getvalue()
+19 -1
View File
@@ -13,7 +13,7 @@ from uuid import uuid4
import tablib
from tablib.compat import markup, unicode, is_py3
from tablib.core import Row
from tablib.formats import csv as csv_format
from tablib.formats import _csv as csv_module
class TablibTestCase(unittest.TestCase):
@@ -262,6 +262,24 @@ class TablibTestCase(unittest.TestCase):
self.assertEqual(csv, self.founders.csv)
def test_csv_stream_export(self):
"""Verify exporting dataset object as CSV from file object."""
# Build up the csv string with headers first, followed by each row
csv = ''
for col in self.headers:
csv += col + ','
csv = csv.strip(',') + '\r\n'
for founder in self.founders:
for col in founder:
csv += str(col) + ','
csv = csv.strip(',') + '\r\n'
csv_stream = csv_module.export_stream_set(self.founders)
self.assertEqual(csv, csv_stream.getvalue())
def test_tsv_export(self):
"""Verify exporting dataset object as TSV."""