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-check...@python.org>wrote: > http://hg.python.org/cpython/rev/19ea454ccdf7 > changeset: 81884:19ea454ccdf7 > branch: 3.3 > parent: 81882:4a4688b865ff > user: Brett Cannon <br...@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 > > _______________________________________________ > Python-checkins mailing list > python-check...@python.org > http://mail.python.org/mailman/listinfo/python-checkins > >
_______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com