Turn off OrderedDict for yaml.

Fixes #12.
This commit is contained in:
Kenneth Reitz
2011-05-22 19:52:24 -04:00
parent 36fbdda492
commit 5ba56c2bb3
2 changed files with 20 additions and 8 deletions
+16 -5
View File
@@ -235,11 +235,16 @@ class Dataset(object):
return False
def _package(self, dicts=True):
def _package(self, dicts=True, ordered=True):
"""Packages Dataset into lists of dictionaries for transmission."""
_data = list(self._data)
if ordered:
dict_pack = OrderedDict
else:
dict_pack = dict
# Execute formatters
if self._formatters:
for row_i, row in enumerate(_data):
@@ -256,7 +261,7 @@ class Dataset(object):
if self.headers:
if dicts:
data = [OrderedDict(list(zip(self.headers, data_row))) for data_row in _data]
data = [dict_pack(list(zip(self.headers, data_row))) for data_row in _data]
else:
data = [list(self.headers)] + list(_data)
else:
@@ -786,13 +791,19 @@ class Databook(object):
raise InvalidDatasetType
def _package(self):
def _package(self, ordered=True):
"""Packages :class:`Databook` for delivery."""
collector = []
if ordered:
dict_pack = OrderedDict
else:
dict_pack = dict
for dset in self._datasets:
collector.append(OrderedDict(
collector.append(dict_pack(
title = dset.title,
data = dset.dict
data = dset._package(ordered=ordered)
))
return collector
+4 -3
View File
@@ -12,7 +12,7 @@ except ImportError:
import tablib.packages.yaml3 as yaml
else:
import tablib.packages.yaml as yaml
import tablib
@@ -25,7 +25,8 @@ extentions = ('yaml', 'yml')
def export_set(dataset):
"""Returns YAML representation of Dataset."""
return yaml.dump(dataset.dict)
return yaml.dump(dataset._package(ordered=False))
def export_book(databook):
@@ -50,7 +51,7 @@ def import_book(dbook, in_stream):
data.title = sheet['title']
data.dict = sheet['data']
dbook.add_sheet(data)
def detect(stream):
"""Returns True if given stream is valid YAML."""
try: