changeset: 91373:5c60dd518182 branch: 3.4 parent: 91365:3bedc1846202 user: Raymond Hettinger date: Tue Jun 24 15:20:55 2014 -0700 files: Lib/collections/__init__.py description: Issue 21832: Require named tuple inputs to be exact strings diff -r 3bedc1846202 -r 5c60dd518182 Lib/collections/__init__.py --- a/Lib/collections/__init__.py Tue Jun 24 22:57:14 2014 +0200 +++ b/Lib/collections/__init__.py Tue Jun 24 15:20:55 2014 -0700 @@ -323,6 +323,7 @@ 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 @@ 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)