summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2014-06-24 20:44:03 (GMT)
committerRaymond Hettinger <python@rcn.com>2014-06-24 20:44:03 (GMT)
commit7c59613a75a40553ae364504877eabfef694f5a0 (patch)
tree8a118fd7c075cca6fbf32ac1387268644d3b77d8
parent4c945fe9e9ea813ecb19ed705e1c7b3ae26b0d2a (diff)
downloadcpython-7c59613a75a40553ae364504877eabfef694f5a0.zip
cpython-7c59613a75a40553ae364504877eabfef694f5a0.tar.gz
cpython-7c59613a75a40553ae364504877eabfef694f5a0.tar.bz2
Issue 21832: Require named tuple inputs to be exact strings
-rw-r--r--Lib/collections/__init__.py3
1 files changed, 3 insertions, 0 deletions
diff --git a/Lib/collections/__init__.py b/Lib/collections/__init__.py
index d6deb6a..d993fe0 100644
--- a/Lib/collections/__init__.py
+++ b/Lib/collections/__init__.py
@@ -323,6 +323,7 @@ def namedtuple(typename, field_names, verbose=False, rename=False):
if isinstance(field_names, str):
field_names = field_names.replace(',', ' ').split()
field_names = list(map(str, field_names))
+ typename = str(typename)
if rename:
seen = set()
for index, name in enumerate(field_names):
@@ -333,6 +334,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 name.isidentifier():
raise ValueError('Type names and field names must be valid '
'identifiers: %r' % name)