From: Raymond Hettinger Date: Tue, 24 Jun 2014 22:20:55 +0000 (-0700) Subject: Issue 21832: Require named tuple inputs to be exact strings X-Git-Tag: v3.4.2rc1~327 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bc000509e8ae782ef96c656885c3342d11fca3a6;p=python Issue 21832: Require named tuple inputs to be exact strings --- diff --git a/Lib/collections/__init__.py b/Lib/collections/__init__.py index d6deb6a7b2..d993fe0ce7 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)