]> granicus.if.org Git - python/commitdiff
Issue 21832: Require named tuple inputs to be exact strings
authorRaymond Hettinger <python@rcn.com>
Tue, 24 Jun 2014 20:49:24 +0000 (13:49 -0700)
committerRaymond Hettinger <python@rcn.com>
Tue, 24 Jun 2014 20:49:24 +0000 (13:49 -0700)
Lib/collections.py

index 0beb142be59703902b86d7cc481699b9cb802ba1..8831f0be670248dca8296e01174f42e109c5462f 100644 (file)
@@ -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)