summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2007-05-21 16:40:10 (GMT)
committerRaymond Hettinger <python@rcn.com>2007-05-21 16:40:10 (GMT)
commit767debb6aa5729e919da309ecc770f8b2d94beba (patch)
tree668f74f7f1ce5f7fc23b9d8fbefc7420c35f1753
parent0d6a8ccfb7b602c97fd3dd2a57eaa8138c811186 (diff)
downloadcpython-767debb6aa5729e919da309ecc770f8b2d94beba.zip
cpython-767debb6aa5729e919da309ecc770f8b2d94beba.tar.gz
cpython-767debb6aa5729e919da309ecc770f8b2d94beba.tar.bz2
Allow all alphanumeric and underscores in type and field names.
-rw-r--r--Lib/collections.py2
-rw-r--r--Lib/test/test_collections.py3
2 files changed, 4 insertions, 1 deletions
diff --git a/Lib/collections.py b/Lib/collections.py
index a2ce552..4a860dd 100644
--- a/Lib/collections.py
+++ b/Lib/collections.py
@@ -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)
diff --git a/Lib/test/test_collections.py b/Lib/test/test_collections.py
index b3f460e..f5dad7d 100644
--- a/Lib/test/test_collections.py
+++ b/Lib/test/test_collections.py
@@ -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')