]> granicus.if.org Git - python/commitdiff
Have namedtuple's field renamer assign names that
authorRaymond Hettinger <python@rcn.com>
Thu, 2 Apr 2009 22:25:40 +0000 (22:25 +0000)
committerRaymond Hettinger <python@rcn.com>
Thu, 2 Apr 2009 22:25:40 +0000 (22:25 +0000)
are consistent with the corresponding tuple index.

Lib/collections.py
Lib/test/test_collections.py

index d77aff5a23805fe7a5c6719bd877418445700586..fb53900934681b8cf5260411c4830aec05509a20 100644 (file)
@@ -178,7 +178,7 @@ def namedtuple(typename, field_names, verbose=False, rename=False):
             if (not all(c.isalnum() or c=='_' for c in name) or _iskeyword(name)
                 or not name or name[0].isdigit() or name.startswith('_')
                 or name in seen):
-                names[i] = '_%d' % (i+1)
+                names[i] = '_%d' % i
             seen.add(name)
         field_names = tuple(names)
     for name in (typename,) + field_names:
index 8ffa75bdc5d3b335108f9195ef4fb5706e0db409..f822b6b4825e29516dc938013e471b17043596d7 100644 (file)
@@ -49,12 +49,12 @@ class TestNamedTuple(unittest.TestCase):
 
     def test_name_fixer(self):
         for spec, renamed in [
-            [('efg', 'g%hi'),  ('efg', '_2')],                              # field with non-alpha char
-            [('abc', 'class'), ('abc', '_2')],                              # field has keyword
-            [('8efg', '9ghi'), ('_1', '_2')],                               # field starts with digit
-            [('abc', '_efg'), ('abc', '_2')],                               # field with leading underscore
-            [('abc', 'efg', 'efg', 'ghi'), ('abc', 'efg', '_3', 'ghi')],    # duplicate field
-            [('abc', '', 'x'), ('abc', '_2', 'x')],                         # fieldname is a space
+            [('efg', 'g%hi'),  ('efg', '_1')],                              # field with non-alpha char
+            [('abc', 'class'), ('abc', '_1')],                              # field has keyword
+            [('8efg', '9ghi'), ('_0', '_1')],                               # field starts with digit
+            [('abc', '_efg'), ('abc', '_1')],                               # field with leading underscore
+            [('abc', 'efg', 'efg', 'ghi'), ('abc', 'efg', '_2', 'ghi')],    # duplicate field
+            [('abc', '', 'x'), ('abc', '_1', 'x')],                         # fieldname is a space
         ]:
             self.assertEqual(namedtuple('NT', spec, rename=True)._fields, renamed)