[Python-checkins] cpython (merge 3.3 -> default): Merge w/ 3.3 more fixes thanks to issue #17098

brett.cannon python-checkins at python.org
Fri Feb 1 22:38:04 CET 2013


http://hg.python.org/cpython/rev/306f066e6a33
changeset:   81885:306f066e6a33
parent:      81883:370882f297a4
parent:      81884:19ea454ccdf7
user:        Brett Cannon <brett at python.org>
date:        Fri Feb 01 16:36:29 2013 -0500
summary:
  Merge w/ 3.3 more fixes thanks to issue #17098

files:
  Lib/importlib/_bootstrap.py         |    7 +-
  Lib/test/test_importlib/test_api.py |    9 +
  Python/importlib.h                  |  551 ++++++++-------
  3 files changed, 296 insertions(+), 271 deletions(-)


diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py
--- a/Lib/importlib/_bootstrap.py
+++ b/Lib/importlib/_bootstrap.py
@@ -1724,10 +1724,13 @@
         BYTECODE_SUFFIXES = DEBUG_BYTECODE_SUFFIXES
 
     module_type = type(sys)
-    for module in sys.modules.values():
+    for name, module in sys.modules.items():
         if isinstance(module, module_type):
             if not hasattr(module, '__loader__'):
-                module.__loader__ = BuiltinImporter
+                if name in sys.builtin_module_names:
+                    module.__loader__ = BuiltinImporter
+                elif _imp.is_frozen(name):
+                    module.__loader__ = FrozenImporter
 
     self_module = sys.modules[__name__]
     for builtin_name in ('_io', '_warnings', 'builtins', 'marshal'):
diff --git a/Lib/test/test_importlib/test_api.py b/Lib/test/test_importlib/test_api.py
--- a/Lib/test/test_importlib/test_api.py
+++ b/Lib/test/test_importlib/test_api.py
@@ -1,6 +1,7 @@
 from . import util
 import imp
 import importlib
+from importlib import _bootstrap
 from importlib import machinery
 import sys
 from test import support
@@ -184,6 +185,14 @@
             if isinstance(module, types.ModuleType):
                 self.assertTrue(hasattr(module, '__loader__'),
                         '{!r} lacks a __loader__ attribute'.format(name))
+                if name in sys.builtin_module_names:
+                    self.assertIn(module.__loader__,
+                            (importlib.machinery.BuiltinImporter,
+                             importlib._bootstrap.BuiltinImporter))
+                elif imp.is_frozen(name):
+                    self.assertIn(module.__loader__,
+                            (importlib.machinery.FrozenImporter,
+                             importlib._bootstrap.FrozenImporter))
 
 
 if __name__ == '__main__':
diff --git a/Python/importlib.h b/Python/importlib.h
--- a/Python/importlib.h
+++ b/Python/importlib.h
[stripped]

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list