Skip to content

Commit

Permalink
[3.12] gh-104212: Explain how to port imp code to importlib (GH-105905)…
Browse files Browse the repository at this point in the history
… (#105952)

gh-104212: Explain how to port imp code to importlib (GH-105905)
(cherry picked from commit 7a56a41)

Co-authored-by: Victor Stinner <vstinner@python.org>
  • Loading branch information
miss-islington and vstinner authored Jun 20, 2023
1 parent c5c8111 commit 5729b41
Showing 1 changed file with 32 additions and 1 deletion.
33 changes: 32 additions & 1 deletion Doc/whatsnew/3.12.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1368,7 +1368,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
Expand Down

0 comments on commit 5729b41

Please sign in to comment.