diff options
| author | Kenneth Reitz <me@kennethreitz.org> | 2016-02-07 06:09:55 -0500 |
|---|---|---|
| committer | Kenneth Reitz <me@kennethreitz.org> | 2016-02-07 06:09:55 -0500 |
| commit | 679bd115b6aeeb3008890b5e7797fd7fcbf66c6c (patch) | |
| tree | 8560f79adc379dc33748ad2d386e336ecad6a587 /tablib | |
| parent | 32cbc36fc181dcdb551325529a3c582a6acb30bd (diff) | |
| parent | 70716fdd216755dc4b542df74e95b0e5ac74f0ee (diff) | |
| download | tablib-679bd115b6aeeb3008890b5e7797fd7fcbf66c6c.tar.gz | |
Merge branch 'develop' of https://github.com/papisz/tablib into develop
Diffstat (limited to 'tablib')
| -rw-r--r-- | tablib/core.py | 2 | ||||
| -rw-r--r-- | tablib/formats/_csv.py | 20 | ||||
| -rw-r--r-- | tablib/formats/_tsv.py | 49 |
3 files changed, 22 insertions, 49 deletions
diff --git a/tablib/core.py b/tablib/core.py index 7f36d8b..a744a70 100644 --- a/tablib/core.py +++ b/tablib/core.py @@ -256,6 +256,8 @@ class Dataset(object): setattr(cls, fmt.title, property(fmt.export_set, fmt.import_set)) except AttributeError: setattr(cls, fmt.title, property(fmt.export_set)) + setattr(cls, 'set_%s' % fmt.title, fmt.import_set) + setattr(cls, 'get_%s' % fmt.title, fmt.export_set) except AttributeError: pass diff --git a/tablib/formats/_csv.py b/tablib/formats/_csv.py index 7597395..7deec23 100644 --- a/tablib/formats/_csv.py +++ b/tablib/formats/_csv.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -""" Tablib - CSV Support. +""" Tablib - *SV Support. """ from tablib.compat import is_py3, csv, StringIO @@ -11,17 +11,17 @@ extensions = ('csv',) DEFAULT_ENCODING = 'utf-8' +DEFAULT_DELIMITER = ',' - -def export_set(dataset): +def export_set(dataset, delimiter=DEFAULT_DELIMITER): """Returns CSV representation of Dataset.""" stream = StringIO() if is_py3: - _csv = csv.writer(stream) + _csv = csv.writer(stream, delimiter=delimiter) else: - _csv = csv.writer(stream, encoding=DEFAULT_ENCODING) + _csv = csv.writer(stream, delimiter=delimiter, encoding=DEFAULT_ENCODING) for row in dataset._package(dicts=False): _csv.writerow(row) @@ -29,15 +29,15 @@ def export_set(dataset): return stream.getvalue() -def import_set(dset, in_stream, headers=True): +def import_set(dset, in_stream, headers=True, delimiter=DEFAULT_DELIMITER): """Returns dataset from CSV stream.""" dset.wipe() if is_py3: - rows = csv.reader(StringIO(in_stream)) + rows = csv.reader(in_stream.splitlines(), delimiter=delimiter) else: - rows = csv.reader(StringIO(in_stream), encoding=DEFAULT_ENCODING) + rows = csv.reader(in_stream.splitlines(), delimiter=delimiter, encoding=DEFAULT_ENCODING) for i, row in enumerate(rows): if (i == 0) and (headers): @@ -46,10 +46,10 @@ def import_set(dset, in_stream, headers=True): dset.append(row) -def detect(stream): +def detect(stream, delimiter=DEFAULT_DELIMITER): """Returns True if given stream is valid CSV.""" try: - csv.Sniffer().sniff(stream, delimiters=',') + csv.Sniffer().sniff(stream, delimiters=delimiter) return True except (csv.Error, TypeError): return False 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) |
