diff --git a/AUTHORS b/AUTHORS index cd73e657..0d498b30 100644 --- a/AUTHORS +++ b/AUTHORS @@ -33,6 +33,7 @@ Here is a list of past and present much-appreciated contributors: Mike Waldner Nicholas Pilon Peyman Salehi + Qianfeng Yuan (Tamako) Rabin Nankhwa Tak Hogan Tommy Anthony diff --git a/src/tablib/core.py b/src/tablib/core.py index b0b56fd2..ea6b6964 100644 --- a/src/tablib/core.py +++ b/src/tablib/core.py @@ -704,7 +704,7 @@ def _transpose_with_headers(self): _dset.headers = new_headers for index, column in enumerate(self.headers): - if column == self.headers[0]: + if index == 0: # It's in the headers, so skip it continue diff --git a/tests/test_tablib.py b/tests/test_tablib.py index ca8ac05e..d44bbf06 100755 --- a/tests/test_tablib.py +++ b/tests/test_tablib.py @@ -483,6 +483,31 @@ def test_transpose_multiple_headers(self): data.append(('John', 'Tyler', 71)) self.assertEqual(data.transpose().transpose().dict, data.dict) + def test_transpose_repeated_first_header(self): + data = tablib.Dataset( + ('John', 'Adams', 90), + ('George', 'Washington', 67), + headers=['name', 'last_name', 'name'], + ) + + transposed = data.transpose() + + self.assertEqual(transposed.headers, ['name', 'John', 'George']) + self.assertEqual(list(transposed), [ + ('last_name', 'Adams', 'Washington'), + ('name', 90, 67), + ]) + + def test_transpose_roundtrip_value_matching_first_header(self): + data = tablib.Dataset( + ('fname', 'Doe', '10'), headers=['fname', 'lname', 'age'], + ) + + roundtrip = data.transpose().transpose() + + self.assertEqual(roundtrip.headers, data.headers) + self.assertEqual(list(roundtrip), list(data)) + def test_row_stacking(self): """Row stacking."""