summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Reitz <me@kennethreitz.org>2016-02-07 07:29:08 -0500
committerKenneth Reitz <me@kennethreitz.org>2016-02-07 07:29:08 -0500
commitfcc9700d11e337947e0a99a9c10831615ef2005f (patch)
tree79bfb3c6961a768151908bf989c4e7d29f6dd969
parent1ec9c18a66548b5fa9f751af550fce52defc1f3b (diff)
downloadtablib-fcc9700d11e337947e0a99a9c10831615ef2005f.tar.gz
Fix for transpose().transpose() with duplicate keys
#199
-rw-r--r--tablib/core.py6
-rwxr-xr-xtest_tablib.py10
2 files changed, 12 insertions, 4 deletions
diff --git a/tablib/core.py b/tablib/core.py
index 7d09789..808c005 100644
--- a/tablib/core.py
+++ b/tablib/core.py
@@ -895,17 +895,17 @@ class Dataset(object):
new_headers = [self.headers[0]] + self[self.headers[0]]
_dset.headers = new_headers
- for column in self.headers:
+ for index, column in enumerate(self.headers):
if column == self.headers[0]:
# It's in the headers, so skip it
continue
# Adding the column name as now they're a regular column
- row_data = [column] + self[column]
+ # Use `get_col(index)` in case there are repeated values
+ row_data = [column] + self.get_col(index)
row_data = Row(row_data)
_dset.append(row=row_data)
-
return _dset
diff --git a/test_tablib.py b/test_tablib.py
index 3830dda..f929367 100755
--- a/test_tablib.py
+++ b/test_tablib.py
@@ -241,7 +241,6 @@ class TablibTestCase(unittest.TestCase):
# Delete from invalid index
self.assertRaises(IndexError, self.founders.__delitem__, 3)
-
def test_csv_export(self):
"""Verify exporting dataset object as CSV."""
@@ -738,6 +737,15 @@ class TablibTestCase(unittest.TestCase):
self.assertEqual(second_row,
("gpa",90, 67, 50))
+ def test_transpose_multiple_headers(self):
+
+ data = tablib.Dataset()
+ data.headers = ("first_name", "last_name", "age")
+ data.append(('John', 'Adams', 90))
+ data.append(('George', 'Washington', 67))
+ data.append(('John', 'Tyler', 71))
+ self.assertEqual(data.transpose().transpose().dict, data.dict)
+
def test_row_stacking(self):
"""Row stacking."""