added ability to append new column passing a callable as the value that will be applied to every row; w/ test

This commit is contained in:
Josh Ourisman
2010-10-01 16:17:04 -04:00
parent 9f7fec2379
commit 149bafa97b
2 changed files with 16 additions and 0 deletions
+9
View File
@@ -177,6 +177,15 @@ class Dataset(object):
self._validate(row)
self._data.append(tuple(row))
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:
+7
View File
@@ -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."""