summaryrefslogtreecommitdiffstats
path: root/Doc/reference
diff options
context:
space:
mode:
authorBarry Warsaw <barry@python.org>2023-05-03 11:55:22 (GMT)
committerGitHub <noreply@github.com>2023-05-03 11:55:22 (GMT)
commit326997829d02458246dfd5b6d03297e2418bde52 (patch)
tree05b94e8dbb81f6b7a8d9054bd773c3cf24e0797e /Doc/reference
parentbcea36f8db9ad4fd542b38997e065987e829cb9f (diff)
downloadcpython-326997829d02458246dfd5b6d03297e2418bde52.zip
cpython-326997829d02458246dfd5b6d03297e2418bde52.tar.gz
cpython-326997829d02458246dfd5b6d03297e2418bde52.tar.bz2
gh-98040: Remove find_loader, find_module and other deprecated APIs (#98059)
* Remove deprecated classes from pkgutil * Remove some other PEP 302 obsolescence * Use find_spec instead of load_module * Remove more tests of PEP 302 obsolete APIs * Remove another bunch of tests using obsolete load_modules() * Remove deleted names from __all__ * Remove obsolete footnote * imp is removed * Remove `imp` from generated stdlib names * What's new and blurb * Update zipimport documentation for the removed methods * Fix some Windows tests * Remove any test (or part of a test) that references `find_module()`. * Use assertIsNone() / assertIsNotNone() consistently. * Update Doc/reference/import.rst * We don't need pkgutil._get_spec() any more either * test.test_importlib.fixtures.NullFinder * ...BadLoaderFinder.find_module * ...test_api.InvalidatingNullFinder.find_module * ...test.test_zipimport test of z.find_module * Suppress cross-references to find_loader and find_module * Suppress cross-references to Finder * Suppress cross-references to pkgutil.ImpImporter and pkgutil.ImpLoader --------- Co-authored-by: Oleg Iarygin <oleg@arhadthedev.net> Co-authored-by: Adam Turner <9087854+aa-turner@users.noreply.github.com>
Diffstat (limited to 'Doc/reference')
-rw-r--r--Doc/reference/import.rst34
1 files changed, 17 insertions, 17 deletions
diff --git a/Doc/reference/import.rst b/Doc/reference/import.rst
index 57eb540..8f30181 100644
--- a/Doc/reference/import.rst
+++ b/Doc/reference/import.rst
@@ -324,15 +324,18 @@ modules, and one that knows how to import modules from an :term:`import path`
.. versionchanged:: 3.4
The :meth:`~importlib.abc.MetaPathFinder.find_spec` method of meta path
- finders replaced :meth:`~importlib.abc.MetaPathFinder.find_module`, which
+ finders replaced :meth:`!find_module`, which
is now deprecated. While it will continue to work without change, the
import machinery will try it only if the finder does not implement
``find_spec()``.
.. versionchanged:: 3.10
- Use of :meth:`~importlib.abc.MetaPathFinder.find_module` by the import system
+ Use of :meth:`!find_module` by the import system
now raises :exc:`ImportWarning`.
+.. versionchanged:: 3.12
+ ``find_module()`` has been removed. Use :meth:`find_spec` instead.
+
Loading
=======
@@ -837,7 +840,7 @@ stores finder objects rather than being limited to :term:`importer` objects).
In this way, the expensive search for a particular :term:`path entry`
location's :term:`path entry finder` need only be done once. User code is
free to remove cache entries from :data:`sys.path_importer_cache` forcing
-the path based finder to perform the path entry search again [#fnpic]_.
+the path based finder to perform the path entry search again.
If the path entry is not present in the cache, the path based finder iterates
over every callable in :data:`sys.path_hooks`. Each of the :term:`path entry
@@ -887,13 +890,13 @@ module. ``find_spec()`` returns a fully populated spec for the module.
This spec will always have "loader" set (with one exception).
To indicate to the import machinery that the spec represents a namespace
-:term:`portion`, the path entry finder sets "submodule_search_locations" to
+:term:`portion`, the path entry finder sets ``submodule_search_locations`` to
a list containing the portion.
.. versionchanged:: 3.4
:meth:`~importlib.abc.PathEntryFinder.find_spec` replaced
- :meth:`~importlib.abc.PathEntryFinder.find_loader` and
- :meth:`~importlib.abc.PathEntryFinder.find_module`, both of which
+ :meth:`!find_loader` and
+ :meth:`!find_module`, both of which
are now deprecated, but will be used if ``find_spec()`` is not defined.
Older path entry finders may implement one of these two deprecated methods
@@ -901,7 +904,7 @@ a list containing the portion.
sake of backward compatibility. However, if ``find_spec()`` is
implemented on the path entry finder, the legacy methods are ignored.
- :meth:`~importlib.abc.PathEntryFinder.find_loader` takes one argument, the
+ :meth:`!find_loader` takes one argument, the
fully qualified name of the module being imported. ``find_loader()``
returns a 2-tuple where the first item is the loader and the second item
is a namespace :term:`portion`.
@@ -920,10 +923,13 @@ a list containing the portion.
``find_loader()`` in preference to ``find_module()``.
.. versionchanged:: 3.10
- Calls to :meth:`~importlib.abc.PathEntryFinder.find_module` and
- :meth:`~importlib.abc.PathEntryFinder.find_loader` by the import
+ Calls to :meth:`!find_module` and
+ :meth:`!find_loader` by the import
system will raise :exc:`ImportWarning`.
+.. versionchanged:: 3.12
+ ``find_module()`` and ``find_loader()`` have been removed.
+
Replacing the standard import system
====================================
@@ -1045,8 +1051,8 @@ The original specification for :data:`sys.meta_path` was :pep:`302`, with
subsequent extension in :pep:`420`.
:pep:`420` introduced :term:`namespace packages <namespace package>` for
-Python 3.3. :pep:`420` also introduced the :meth:`find_loader` protocol as an
-alternative to :meth:`find_module`.
+Python 3.3. :pep:`420` also introduced the :meth:`!find_loader` protocol as an
+alternative to :meth:`!find_module`.
:pep:`366` describes the addition of the ``__package__`` attribute for
explicit relative imports in main modules.
@@ -1073,9 +1079,3 @@ methods to finders and loaders.
module may replace itself in :data:`sys.modules`. This is
implementation-specific behavior that is not guaranteed to work in other
Python implementations.
-
-.. [#fnpic] In legacy code, it is possible to find instances of
- :class:`imp.NullImporter` in the :data:`sys.path_importer_cache`. It
- is recommended that code be changed to use ``None`` instead. See
- :ref:`portingpythoncode` for more details. Note that the ``imp`` module
- was removed in Python 3.12.