summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2014-06-24 13:49:24 -0700
committerRaymond Hettinger <python@rcn.com>2014-06-24 13:49:24 -0700
commit19cadeae7802aea98a04aa67ac35cfbcf1036927 (patch)
treed00de63c02b083348cd9634b2002e5592bf159ac
parent86e8d886a5f50c0bf3dfa8b200e8644fe1f9a2b6 (diff)
downloadcpython-19cadeae7802aea98a04aa67ac35cfbcf1036927.tar.gz
Issue 21832: Require named tuple inputs to be exact strings
-rw-r--r--Lib/collections.py3
1 files changed, 3 insertions, 0 deletions
diff --git a/Lib/collections.py b/Lib/collections.py
index 0beb142be5..8831f0be67 100644
--- a/Lib/collections.py
+++ b/Lib/collections.py
@@ -314,6 +314,7 @@ def namedtuple(typename, field_names, verbose=False, rename=False):
if isinstance(field_names, basestring):
field_names = field_names.replace(',', ' ').split()
field_names = map(str, field_names)
+ typename = str(typename)
if rename:
seen = set()
for index, name in enumerate(field_names):
@@ -326,6 +327,8 @@ def namedtuple(typename, field_names, verbose=False, rename=False):
field_names[index] = '_%d' % index
seen.add(name)
for name in [typename] + field_names:
+ if type(name) != str:
+ raise TypeError('Type names and field names must be strings')
if not all(c.isalnum() or c=='_' for c in name):
raise ValueError('Type names and field names can only contain '
'alphanumeric characters and underscores: %r' % name)