Kaydet (Commit) 077ef45a authored tarafından Brett Cannon's avatar Brett Cannon

Update the What's New details for importlib based on doc/ABC changes.

üst 773468f3
...@@ -141,9 +141,10 @@ are also provided to help in implementing the core ABCs. ...@@ -141,9 +141,10 @@ are also provided to help in implementing the core ABCs.
longer requires implementation of a ``find_module()`` method. longer requires implementation of a ``find_module()`` method.
.. class:: MetaPathFinder(Finder) .. class:: MetaPathFinder
An abstract base class representing a :term:`meta path finder`. An abstract base class representing a :term:`meta path finder` and
inheriting from :class:`Finder`.
.. versionadded:: 3.3 .. versionadded:: 3.3
...@@ -156,9 +157,10 @@ are also provided to help in implementing the core ABCs. ...@@ -156,9 +157,10 @@ are also provided to help in implementing the core ABCs.
package. If a loader cannot be found, ``None`` is returned. package. If a loader cannot be found, ``None`` is returned.
.. class:: PathEntryFinder(Finder) .. class:: PathEntryFinder
An abstract base class representing a :term:`path entry finder`. An abstract base class representing a :term:`path entry finder` and
inheriting from :class:`Finder`.
.. versionadded:: 3.3 .. versionadded:: 3.3
......
...@@ -519,7 +519,15 @@ One of the large benefits of this work is the exposure of what goes into ...@@ -519,7 +519,15 @@ One of the large benefits of this work is the exposure of what goes into
making the import statement work. That means the various importers that were making the import statement work. That means the various importers that were
once implicit are now fully exposed as part of the :mod:`importlib` package. once implicit are now fully exposed as part of the :mod:`importlib` package.
In terms of finders, * :class:`importlib.machinery.FileFinder` exposes the The abstract base classes defined in :mod:`importlib.abc` have been expanded
to properly delineate between :term:`meta path finders <meta path finder>`
and :term:`path entry finders <path entry finder>` by introducing
:class:`importlib.abc.MetaPathFinder` and
:class:`importlib.abc.PathEntryFinder`, respectively. The old ABC of
:class:`importlib.abc.Finder` is now only provided for backwards-compatibility
and does not enforce any method requirements.
In terms of finders, :class:`importlib.machinery.FileFinder` exposes the
mechanism used to search for source and bytecode files of a module. Previously mechanism used to search for source and bytecode files of a module. Previously
this class was an implicit member of :attr:`sys.path_hooks`. this class was an implicit member of :attr:`sys.path_hooks`.
...@@ -547,10 +555,10 @@ section] ...@@ -547,10 +555,10 @@ section]
Beyond the expanse of what :mod:`importlib` now exposes, there are other Beyond the expanse of what :mod:`importlib` now exposes, there are other
visible changes to import. The biggest is that :attr:`sys.meta_path` and visible changes to import. The biggest is that :attr:`sys.meta_path` and
:attr:`sys.path_hooks` now store all of the finders used by import explicitly. :attr:`sys.path_hooks` now store all of the meta path finders and path entry
Previously the finders were implicit and hidden within the C code of import hooks used by import. Previously the finders were implicit and hidden within
instead of being directly exposed. This means that one can now easily remove or the C code of import instead of being directly exposed. This means that one can
change the order of the various finders to fit one's needs. now easily remove or change the order of the various finders to fit one's needs.
Another change is that all modules have a ``__loader__`` attribute, storing the Another change is that all modules have a ``__loader__`` attribute, storing the
loader used to create the module. :pep:`302` has been updated to make this loader used to create the module. :pep:`302` has been updated to make this
...@@ -1733,6 +1741,12 @@ Porting Python code ...@@ -1733,6 +1741,12 @@ Porting Python code
both the modification time and size of the source file the bytecode file was both the modification time and size of the source file the bytecode file was
compiled from. compiled from.
* :class:`importlib.abc.Finder` no longer specifies a `find_module()` abstract
method that must be implemented. If you were relying on subclasses to
implement that method, make sure to check for the method's existence first.
You will probably want to check for `find_loader()` first, though, in the
case of working with :term:`path entry finders <path entry finder>`.
* :mod:`pkgutil` has been converted to use :mod:`importlib` internally. This * :mod:`pkgutil` has been converted to use :mod:`importlib` internally. This
eliminates many edge cases where the old behaviour of the PEP 302 import eliminates many edge cases where the old behaviour of the PEP 302 import
emulation failed to match the behaviour of the real import system. The emulation failed to match the behaviour of the real import system. The
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment