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

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

index 002ce9724de929dc9437f81035a07f456ca7b978..786a9f784a3b559763bdc01ab4bb200030cc8070 100644 (file)
@@ -174,7 +174,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 e8d72ee57ad177b409f8cb9257269f5cad163e3a..c471361f28fe33dc9245670e0bcafe014280cf8c 100644 (file)
@@ -51,12 +51,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)