summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Reitz <me@kennethreitz.com>2010-10-01 17:56:31 -0400
committerKenneth Reitz <me@kennethreitz.com>2010-10-01 17:56:31 -0400
commitfbfbe01b70fde0221375bb64fb2eabac7ca65221 (patch)
tree23e117d866ffba373a840adc2cf50f521854612b
parentd85523b6a6dc5452105a887f3d5fe60534b57332 (diff)
parent06a394ea5ccf57600a12b0deca45a2f7e89b018b (diff)
downloadtablib-fbfbe01b70fde0221375bb64fb2eabac7ca65221.tar.gz
Merge branch 'joshmerge' into develop
-rw-r--r--tablib/core.py13
-rwxr-xr-xtest_tablib.py7
2 files changed, 18 insertions, 2 deletions
diff --git a/tablib/core.py b/tablib/core.py
index 730467f..a7a2963 100644
--- a/tablib/core.py
+++ b/tablib/core.py
@@ -173,10 +173,19 @@ class Dataset(object):
def append(self, row=None, col=None):
"""Adds a row to the end of Dataset"""
- if row:
+ if row is not None:
self._validate(row)
self._data.append(tuple(row))
- elif col:
+ elif col is not None:
+ col = list(col)
+ if self.headers:
+ header = [col.pop(0)]
+ else:
+ header = []
+ if len(col) == 1 and callable(col[0]):
+ col = map(col[0], self._data)
+ col = tuple(header + col)
+
self._validate(col=col)
if self.headers:
diff --git a/test_tablib.py b/test_tablib.py
index 9e50e6f..ebad061 100755
--- a/test_tablib.py
+++ b/test_tablib.py
@@ -102,6 +102,13 @@ class TablibTestCase(unittest.TestCase):
self.assertRaises(tablib.InvalidDimensions, data.append, col=new_col)
+ def test_add_callable_column(self):
+ """Verify adding column with values specified as callable."""
+ new_col = ['first_again', lambda x: x[0]]
+ self.founders.append(col=new_col)
+
+ self.assertTrue(map(lambda x: x[0] == x[-1], self.founders))
+
def test_header_slicing(self):
"""Verify slicing by headers."""