changeset: 91361:30063f97a44d branch: 2.7 parent: 91352:e04eefef7820 user: Raymond Hettinger date: Tue Jun 24 13:49:24 2014 -0700 files: Lib/collections.py description: Issue 21832: Require named tuple inputs to be exact strings diff -r e04eefef7820 -r 30063f97a44d Lib/collections.py --- a/Lib/collections.py Mon Jun 23 20:14:46 2014 -0700 +++ b/Lib/collections.py Tue Jun 24 13:49:24 2014 -0700 @@ -314,6 +314,7 @@ 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 @@ 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)