mirror of
https://github.com/python/cpython.git
synced 2025-12-31 04:23:37 +00:00
Issue #14657: The frozen instance of importlib used for bootstrap is now also the module imported as importlib._bootstrap.
This commit is contained in:
parent
7636b19366
commit
48114b952b
3 changed files with 38 additions and 10 deletions
|
|
@ -1,19 +1,26 @@
|
|||
"""A pure Python implementation of import."""
|
||||
__all__ = ['__import__', 'import_module', 'invalidate_caches']
|
||||
|
||||
from . import _bootstrap
|
||||
|
||||
|
||||
# To simplify imports in test code
|
||||
_w_long = _bootstrap._w_long
|
||||
_r_long = _bootstrap._r_long
|
||||
|
||||
|
||||
# Bootstrap help #####################################################
|
||||
import imp
|
||||
import sys
|
||||
|
||||
_bootstrap._setup(sys, imp)
|
||||
try:
|
||||
_bootstrap = sys.modules['_frozen_importlib']
|
||||
except ImportError:
|
||||
from . import _bootstrap
|
||||
_bootstrap._setup(sys, imp)
|
||||
else:
|
||||
# importlib._bootstrap is the built-in import, ensure we don't create
|
||||
# a second copy of the module.
|
||||
_bootstrap.__name__ = 'importlib._bootstrap'
|
||||
_bootstrap.__package__ = 'importlib'
|
||||
_bootstrap.__file__ = __file__.replace('__init__.py', '_bootstrap.py')
|
||||
sys.modules['importlib._bootstrap'] = _bootstrap
|
||||
|
||||
# To simplify imports in test code
|
||||
_w_long = _bootstrap._w_long
|
||||
_r_long = _bootstrap._r_long
|
||||
|
||||
|
||||
# Public API #########################################################
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
from test.support import (
|
||||
EnvironmentVarGuard, TESTFN, check_warnings, forget, is_jython,
|
||||
make_legacy_pyc, rmtree, run_unittest, swap_attr, swap_item, temp_umask,
|
||||
unlink, unload, create_empty_file)
|
||||
unlink, unload, create_empty_file, cpython_only)
|
||||
from test import script_helper
|
||||
|
||||
|
||||
|
|
@ -746,6 +746,23 @@ def tearDown(self):
|
|||
sys.path[:] = self.orig_sys_path
|
||||
|
||||
|
||||
@cpython_only
|
||||
class ImportlibBootstrapTests(unittest.TestCase):
|
||||
# These tests check that importlib is bootstrapped.
|
||||
|
||||
def test_frozen_importlib(self):
|
||||
mod = sys.modules['_frozen_importlib']
|
||||
self.assertTrue(mod)
|
||||
|
||||
def test_frozen_importlib_is_bootstrap(self):
|
||||
from importlib import _bootstrap
|
||||
mod = sys.modules['_frozen_importlib']
|
||||
self.assertIs(mod, _bootstrap)
|
||||
self.assertEqual(mod.__name__, 'importlib._bootstrap')
|
||||
self.assertEqual(mod.__package__, 'importlib')
|
||||
self.assertTrue(mod.__file__.endswith('_bootstrap.py'), mod.__file__)
|
||||
|
||||
|
||||
def test_main(verbose=None):
|
||||
flag = importlib_util.using___import__
|
||||
try:
|
||||
|
|
@ -753,6 +770,7 @@ def test_main(verbose=None):
|
|||
run_unittest(ImportTests, PycacheTests,
|
||||
PycRewritingTests, PathsTests, RelativeImportTests,
|
||||
OverridingImportBuiltinTests,
|
||||
ImportlibBootstrapTests,
|
||||
TestSymbolicallyLinkedPackage,
|
||||
importlib_import_test_suite())
|
||||
finally:
|
||||
|
|
|
|||
|
|
@ -29,6 +29,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #14657: The frozen instance of importlib used for bootstrap is now
|
||||
also the module imported as importlib._bootstrap.
|
||||
|
||||
- Issue #14055: Add __sizeof__ support to _elementtree.
|
||||
|
||||
- Issue #15054: A bug in tokenize.tokenize that caused string literals
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue