]> granicus.if.org Git - python/commitdiff
Issue 5021: doctest.testfile should set __name__
authorRaymond Hettinger <python@rcn.com>
Tue, 27 Jan 2009 10:06:09 +0000 (10:06 +0000)
committerRaymond Hettinger <python@rcn.com>
Tue, 27 Jan 2009 10:06:09 +0000 (10:06 +0000)
Lib/collections.py
Lib/doctest.py
Misc/NEWS

index 6831cf1396c2f9b128a3bd5b85ad190669a2f9d7..4bde5b36b7c7c5f27b419122fc015b9639c13800 100644 (file)
@@ -111,7 +111,7 @@ def namedtuple(typename, field_names, verbose=False):
     # where the named tuple is created.  Bypass this step in enviroments where
     # sys._getframe is not defined (Jython for example).
     if hasattr(_sys, '_getframe'):
-        result.__module__ = _sys._getframe(1).f_globals['__name__']
+        result.__module__ = _sys._getframe(1).f_globals.get('__name__', '__main__')
 
     return result
 
index 74ae79509285a65032e7ea5922d6bca95a64b84c..5fa588de1d522a8918d1b00b59a6f5ca6d67aea9 100644 (file)
@@ -837,6 +837,8 @@ class DocTestFinder:
             globs = globs.copy()
         if extraglobs is not None:
             globs.update(extraglobs)
+        if '__name__' not in globs:
+            globs['__name__'] = '__main__'  # provide a default module name
 
         # Recursively expore `obj`, extracting DocTests.
         tests = []
@@ -1947,6 +1949,8 @@ def testfile(filename, module_relative=True, name=None, package=None,
         globs = globs.copy()
     if extraglobs is not None:
         globs.update(extraglobs)
+    if '__name__' not in globs:
+        globs['__name__'] = '__main__'
 
     if raise_on_error:
         runner = DebugRunner(verbose=verbose, optionflags=optionflags)
index ee2e2628b83aa2e1a4fbe080905bcea6dc9eb969..3fb8ed91116b2248053667a420e38374757a7647 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -148,6 +148,12 @@ Library
   operator module; use the abstract base classes instead.  Also removed
   the repeat() function; use mul() instead.
 
+- Issue 5021:  doctest.testfile() did not create __name__ and
+  collections.namedtuple() relied on __name__ being defined.
+
+- Backport importlib from Python 3.1. Only the import_module() function has
+  been backported to help facilitate transitions from 2.7 to 3.1.
+
 - Issue #1885: distutils. When running sdist with --formats=tar,gztar
   the tar file was overriden by the gztar one.