From de5170eb1500bb6722bcad6196f3f32015fef681 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Tue, 24 Jun 2014 13:49:24 -0700 Subject: [PATCH] Issue 21832: Require named tuple inputs to be exact strings --- Lib/collections.py | 3 +++ 1 file changed, 3 insertions(+) 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) -- 2.50.1