[Python-Dev] [Python-checkins] cpython (3.3): Issue #17098: Be more stringent of setting loader on early imported (original) (raw)

Brett Cannon brett at python.org
Sun Feb 3 15:17:41 CET 2013


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 <python-checkins at python.org>wrote:

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/testimportlib/testapi.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 @@ BYTECODESUFFIXES = DEBUGBYTECODESUFFIXES moduletype = type(sys) - for module in sys.modules.values(): + for name, module in sys.modules.items(): if isinstance(module, moduletype): if not hasattr(module, 'loader'): - module.loader = BuiltinImporter + if name in sys.builtinmodulenames: + module.loader = BuiltinImporter + elif imp.isfrozen(name): + module.loader = FrozenImporter selfmodule = sys.modules[name] for builtinname in ('io', 'warnings', 'builtins', 'marshal'): diff --git a/Lib/test/testimportlib/testapi.py b/Lib/test/testimportlib/testapi.py --- a/Lib/test/testimportlib/testapi.py +++ b/Lib/test/testimportlib/testapi.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.builtinmodulenames: + self.assertEqual(importlib.machinery.BuiltinImporter, + module.loader) + elif imp.isfrozen(name): + self.assertEqual(importlib.machinery.FrozenImporter, + module.loader) def testmain(): from test.support import rununittest 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 at python.org http://mail.python.org/mailman/listinfo/python-checkins -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20130203/9c8e9283/attachment-0001.html>



More information about the Python-Dev mailing list