[Python-checkins] cpython (3.3): Issue #17098: Be more stringent of setting __loader__ on early imported
brett.cannon
python-checkins at python.org
Fri Feb 1 22:38:03 CET 2013
http://hg.python.org/cpython/rev/19ea454ccdf7
changeset: 81884:19ea454ccdf7
branch: 3.3
parent: 81882:4a4688b865ff
user: Brett Cannon <brett at python.org>
date: Fri Feb 01 15:31:49 2013 -0500
summary:
Issue #17098: Be more stringent of setting __loader__ on early imported
modules. Also made test more rigorous.
files:
Lib/importlib/_bootstrap.py | 7 +-
Lib/test/test_importlib/test_api.py | 6 +
Python/importlib.h | 591 ++++++++-------
3 files changed, 310 insertions(+), 294 deletions(-)
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py
--- a/Lib/importlib/_bootstrap.py
+++ b/Lib/importlib/_bootstrap.py
@@ -1704,10 +1704,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
@@ -184,6 +184,12 @@
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.assertEqual(importlib.machinery.BuiltinImporter,
+ module.__loader__)
+ elif imp.is_frozen(name):
+ self.assertEqual(importlib.machinery.FrozenImporter,
+ module.__loader__)
def test_main():
from test.support import run_unittest
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