Re: [Python-Dev] [Python-checkins] cpython (3.3): Issue #17098: Be more stringent of setting __loader__ on early imported
FYI, Raymond let me know that this is causing the buildbots to occasionally
fail thanks to xml.parsers.expat.errors somehow circumventing import. I'm
going to try and figure out what's going on.
On Fri, Feb 1, 2013 at 4:38 PM, brett.cannon
http://hg.python.org/cpython/rev/19ea454ccdf7 changeset: 81884:19ea454ccdf7 branch: 3.3 parent: 81882:4a4688b865ff user: Brett Cannon
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
_______________________________________________ Python-checkins mailing list Python-checkins@python.org http://mail.python.org/mailman/listinfo/python-checkins
participants (1)
-
Brett Cannon