]> granicus.if.org Git - python/commitdiff
Allow all alphanumeric and underscores in type and field names.
authorRaymond Hettinger <python@rcn.com>
Mon, 21 May 2007 16:40:10 +0000 (16:40 +0000)
committerRaymond Hettinger <python@rcn.com>
Mon, 21 May 2007 16:40:10 +0000 (16:40 +0000)
Lib/collections.py
Lib/test/test_collections.py

index a2ce552ba2d8bb0ae9d171154508156e9f600324..4a860dd0c0cfa4b48561691753ecf160cd5c3800 100644 (file)
@@ -24,7 +24,7 @@ def NamedTuple(typename, s):
     """
 
     field_names = s.split()
-    if not ''.join([typename] + field_names).replace('_', '').isalpha():
+    if not ''.join([typename] + field_names).replace('_', '').isalnum():
         raise ValueError('Type names and field names can only contain alphanumeric characters and underscores')
     argtxt = ', '.join(field_names)
     reprtxt = ', '.join('%s=%%r' % name for name in field_names)
index b3f460e70e62fa8ccf1808badf160f30f0834f9d..f5dad7d2238f3a7bc36676455ef703f9e51c83fd 100644 (file)
@@ -11,6 +11,9 @@ class TestNamedTuple(unittest.TestCase):
         self.assertEqual(Point.__slots__, ())
         self.assertEqual(Point.__module__, __name__)
         self.assertEqual(Point.__getitem__, tuple.__getitem__)
+        self.assertRaises(ValueError, NamedTuple, 'abc%', 'def ghi')
+        self.assertRaises(ValueError, NamedTuple, 'abc', 'def g%hi')
+        NamedTuple('Point0', 'x1 y2')   # Verify that numbers are allowed in names
 
     def test_instance(self):
         Point = NamedTuple('Point', 'x y')