gh-104212: Explain how to port imp code to importlib (#105905)

This commit is contained in:
Victor Stinner 2023-06-19 16:13:11 +02:00 committed by GitHub
parent ab3823a97b
commit 7a56a4148c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 32 additions and 1 deletions

View File

@ -1369,7 +1369,38 @@ Removed
* The :mod:`!imp` module has been removed. (Contributed by Barry Warsaw in
:gh:`98040`.)
* Replace ``imp.new_module(name)`` with ``types.ModuleType(name)``.
* Replace removed :mod:`!imp` functions with :mod:`importlib` functions:
================================= =======================================
imp importlib
================================= =======================================
``imp.NullImporter`` Insert ``None`` into ``sys.path_importer_cache``
``imp.cache_from_source()`` :func:`importlib.util.cache_from_source`
``imp.find_module()`` :func:`importlib.util.find_spec`
``imp.get_magic()`` :attr:`importlib.util.MAGIC_NUMBER`
``imp.get_suffixes()`` :attr:`importlib.machinery.SOURCE_SUFFIXES`, :attr:`importlib.machinery.EXTENSION_SUFFIXES`, and :attr:`importlib.machinery.BYTECODE_SUFFIXES`
``imp.get_tag()`` :attr:`sys.implementation.cache_tag <sys.implementation>`
``imp.load_module()`` :func:`importlib.import_module`
``imp.new_module(name)`` ``types.ModuleType(name)``
``imp.reload()`` :func:`importlib.reload`
``imp.source_from_cache()`` :func:`importlib.util.source_from_cache`
================================= =======================================
* Removed :mod:`!imp` functions and attributes with no replacements:
* undocumented functions:
* ``imp.init_builtin()``
* ``imp.load_compiled()``
* ``imp.load_dynamic()``
* ``imp.load_package()``
* ``imp.load_source()``
* ``imp.lock_held()``, ``imp.acquire_lock()``, ``imp.release_lock()``:
the locking scheme has changed in Python 3.3 to per-module locks.
* ``imp.find_module()`` constants: ``SEARCH_ERROR``, ``PY_SOURCE``,
``PY_COMPILED``, ``C_EXTENSION``, ``PY_RESOURCE``, ``PKG_DIRECTORY``,
``C_BUILTIN``, ``PY_FROZEN``, ``PY_CODERESOURCE``, ``IMP_HOOK``.
* Removed the ``suspicious`` rule from the documentation Makefile, and
removed ``Doc/tools/rstlint.py``, both in favor of `sphinx-lint