Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

tests Ruff 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 the affected project's 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 affected project.