diff --git a/tablib/core.py b/tablib/core.py index 80857ca..c03956f 100644 --- a/tablib/core.py +++ b/tablib/core.py @@ -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 diff --git a/tablib/formats/_yaml.py b/tablib/formats/_yaml.py index 66800a7..974228b 100644 --- a/tablib/formats/_yaml.py +++ b/tablib/formats/_yaml.py @@ -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: