single |
:alt: tests
:alt: Code style: Black
Compatibility shim to ease adoption of `importlib_metadata 3.6
`_.
Supplies forward-compatibility of "selectable" entry points even on older
versions of importlib_metadata and ``importlib.metadata``, and avoids usage
that triggers [deprecation warnings].
Use this shim for libraries or applications invoking ``entry_points()``
that run on Python older than 3.10 or where importlib_metadata is older
than 3.6. In most cases, this shim is unnecessary and the easiest thing to
do is simply require ``importlib_metadata >= 3.6`` on all Pythons (or only
those prior to 3.10a7). In some environments, a library may be constrained
on which versions of importlib_metadata can be required, so this library
bridges that gap.
To use this shim, add ``backports.entry_points_selectable`` to your project
requirements. It will require importlib_metadata automatically where needed
(prior to Python 3.8) but be satisfied by older versions. Projects should
still require importlib_metadata as appropriate for API uses other than for
entry_points.
Then in code, instead of ``from importlib.metadata import entry_points``,
use::
from backports.entry_points_selectable import entry_points
And then use the "selectable" features (pass keyword arguments to
entry_points or invoke ``.select()`` on the result).
This backport has a very lenient dependency on `importlib_metadata` for
older Pythons and is a single module implementation. If adding a dependency
is a concern, this module may be vendored into the downstream project.
|