From a0509126e0f593078045c49f774c857b65c634c5 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Mon, 13 Sep 2010 16:49:11 -0400 Subject: [PATCH 1/6] Added simple unit-testing structure. --- test_tablib.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 test_tablib.py diff --git a/test_tablib.py b/test_tablib.py new file mode 100644 index 0000000..457d74b --- /dev/null +++ b/test_tablib.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import unittest + +import tablib + +class TablibTestCase(unittest.TestCase): + def setUp(self): + pass + + def tearDown(self): + pass + + def test_empty_append(self): + data = tablib.Dataset() + new_row = (1,2,3) + data.append(new_row) + assert data.width == len(new_row) + + + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file From ddf4b441b07c1542b1bd44b5db4bb61c5fa79cc8 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Mon, 13 Sep 2010 16:50:08 -0400 Subject: [PATCH 2/6] Fixed exception catch, Fixes Issue #5. --- tablib/core.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tablib/core.py b/tablib/core.py index 91dcac4..f1dd3b6 100644 --- a/tablib/core.py +++ b/tablib/core.py @@ -118,7 +118,7 @@ class Dataset(object): """Returns the width of the Dataset.""" try: return len(self._data[0]) - except KeyError, why: + except IndexError, why: return 0 @property From 70211b71e009cc3ec0ae96d431f25a3f1bd6c244 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Mon, 13 Sep 2010 17:18:25 -0400 Subject: [PATCH 3/6] Updated Readme.rst --- README.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/README.rst b/README.rst index fed8f77..3e9e09f 100644 --- a/README.rst +++ b/README.rst @@ -127,6 +127,7 @@ If you'd like to contribute, simply fork `the repository`_, commit your changes, Roadmap ------- +- Add ability to add/remove full columns - Import datasets from CSV, JSON, YAML - Release CLI Interface - Auto-detect import format From a7471f7302ab6fba0740198c203d9af4efe8c837 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Mon, 13 Sep 2010 17:21:40 -0400 Subject: [PATCH 4/6] Testing fixtures for fixed bugs. --- test_tablib.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/test_tablib.py b/test_tablib.py index 457d74b..cea6d24 100644 --- a/test_tablib.py +++ b/test_tablib.py @@ -13,12 +13,27 @@ class TablibTestCase(unittest.TestCase): pass def test_empty_append(self): + data = tablib.Dataset() + new_row = (1,2,3) data.append(new_row) - assert data.width == len(new_row) + + self.assertTrue(data.width == len(new_row)) + + + def test_empty_append_with_headers(self): + + data = tablib.Dataset() + + data.headers = ['first', 'second'] + new_row = (1,2,3,4) - + self.assertRaises(tablib.InvalidDimensions, data.append, new_row) + + # def test_adding_header with (self): + + if __name__ == '__main__': From 9ecc57dbf703f9c95b3ebf872f436c8162796b4e Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Mon, 13 Sep 2010 17:22:02 -0400 Subject: [PATCH 5/6] Added header property to prevent invalid headers being set. --- tablib/core.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/tablib/core.py b/tablib/core.py index f1dd3b6..c387031 100644 --- a/tablib/core.py +++ b/tablib/core.py @@ -18,7 +18,7 @@ import yaml from helpers import * -__all__ = ['Dataset', 'DataBook'] +# __all__ = ['Dataset', 'DataBook'] __name__ = 'tablib' __version__ = '0.6.1' @@ -36,6 +36,7 @@ class Dataset(object): self._saved_file = None self._saved_format = None self._data = list(args) + self.__headers = None try: self.headers = kwargs['headers'] @@ -119,8 +120,22 @@ class Dataset(object): try: return len(self._data[0]) except IndexError, why: - return 0 + try: + return len(self.headers) + except TypeError, e: + return 0 + + @property + def headers(self): + """Headers property.""" + return self.__headers + @headers.setter + def headers(self, collection): + """Validating headers setter.""" + self._validate(collection) + self.__headers = collection + @property def dict(self): """Returns python dict of Dataset.""" From 9f5379fcc75e18463780241a0e3c1405657d132d Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Mon, 13 Sep 2010 17:24:39 -0400 Subject: [PATCH 6/6] Version Bump (0.6.2). --- HISTORY.rst | 8 +++++++- setup.py | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 537f471..5d2ba1e 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -1,10 +1,16 @@ History ======= +0.6.2 (2010-09-13) +------------------ +* Fixed Dataset.append() error on empty dataset. +* Updated Dataset.headers property w/ validation. +* Added Testing Fixtures. + 0.6.1 (2010-09-12) ------------------ -* Packaging hotfixes +* Packaging hotfixes. 0.6.0 (2010-09-11) diff --git a/setup.py b/setup.py index 72fefee..5670078 100644 --- a/setup.py +++ b/setup.py @@ -18,7 +18,7 @@ if sys.argv[-1] == "publish": setup( name='tablib', - version='0.6.1', + version='0.6.2', description='Format agnostic tabular data library (XLS, JSON, YAML, CSV)', long_description=open('README.rst').read() + '\n\n' + open('HISTORY.rst').read(),