summaryrefslogtreecommitdiff
path: root/tablib/formats/_tsv.py
diff options
context:
space:
mode:
authorKenneth Reitz <me@kennethreitz.org>2016-02-07 07:00:55 -0500
committerKenneth Reitz <me@kennethreitz.org>2016-02-07 07:00:55 -0500
commit8debeb26aca7cc9ef427c70ee9d577eb169f9560 (patch)
tree58316fe5669e86cbea9a1044e4978ffd3b4cc308 /tablib/formats/_tsv.py
parent66d9e50984e7c66fd36fd86f2b469c2dae3636ba (diff)
parenta774789252d41522d4ec8b0e2c212aff4a33904d (diff)
downloadtablib-8debeb26aca7cc9ef427c70ee9d577eb169f9560.tar.gz
Merge branch 'develop' into import_export
# Conflicts: # tablib/core.py # tablib/formats/_csv.py # tablib/formats/_xlsx.py
Diffstat (limited to 'tablib/formats/_tsv.py')
-rw-r--r--tablib/formats/_tsv.py49
1 files changed, 10 insertions, 39 deletions
diff --git a/tablib/formats/_tsv.py b/tablib/formats/_tsv.py
index 8ef2b67..9380b3b 100644
--- a/tablib/formats/_tsv.py
+++ b/tablib/formats/_tsv.py
@@ -3,57 +3,28 @@
""" Tablib - TSV (Tab Separated Values) Support.
"""
-from tablib.compat import is_py3, csv, StringIO
-
-
+from tablib.formats._csv import (
+ export_set as export_set_wrapper,
+ import_set as import_set_wrapper,
+ detect as detect_wrapper,
+)
title = 'tsv'
extensions = ('tsv',)
DEFAULT_ENCODING = 'utf-8'
+DELIMITER = '\t'
def export_set(dataset):
- """Returns a TSV representation of Dataset."""
-
- stream = StringIO()
-
- if is_py3:
- _tsv = csv.writer(stream, delimiter='\t')
- else:
- _tsv = csv.writer(stream, encoding=DEFAULT_ENCODING, delimiter='\t')
-
- for row in dataset._package(dicts=False):
- _tsv.writerow(row)
-
- return stream.getvalue()
+ """Returns TSV representation of Dataset."""
+ return export_set_wrapper(dataset, delimiter=DELIMITER)
def import_set(dset, in_stream, headers=True):
"""Returns dataset from TSV stream."""
-
- dset.wipe()
-
- if is_py3:
- rows = csv.reader(in_stream.splitlines(), delimiter='\t')
- else:
- rows = csv.reader(in_stream.splitlines(), delimiter='\t',
- encoding=DEFAULT_ENCODING)
-
- for i, row in enumerate(rows):
- # Skip empty rows
- if not row:
- continue
-
- if (i == 0) and (headers):
- dset.headers = row
- else:
- dset.append(row)
+ return import_set_wrapper(dset, in_stream, headers=headers, delimiter=DELIMITER)
def detect(stream):
"""Returns True if given stream is valid TSV."""
- try:
- csv.Sniffer().sniff(stream, delimiters='\t')
- return True
- except (csv.Error, TypeError):
- return False
+ return detect_wrapper(stream, delimiter=DELIMITER)