Manage dynamic plugins for Python applications
Go to file
Stephen Finucane 48e178ab5c Fix compatibility with Python 3.12, importlib-metadata 5.0
importlib-metadata 5.0 has removed support for dict-style interaction
with entrypoints [1]. This is going to eventually affect us when Python
3.12 is released but even before then anyone not properly using upper
constraints with an older Python 3.7-based release (the only Python
version where we require the third-party importlib-metadata package
rather than the stdlib importlib.metadata package) will be bitten. Fix
it now to address both.

[1] dde2b9de29

Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
Change-Id: Ib9c2b0a14edea91e97d122d2ac93b650029f918e
Closes-Bug: #1991559
(cherry picked from commit 28fc7164da)
(cherry picked from commit 1e4d71d4b5)
(cherry picked from commit 143a3e9f07)
(cherry picked from commit 54acda936d)
2022-10-05 11:18:02 +01:00
doc Merge "Adding pre-commit" 2020-10-05 16:59:20 +00:00
releasenotes Merge "Fix cache dir flooding when running from /tmp" 2020-11-05 22:10:11 +00:00
stevedore Fix compatibility with Python 3.12, importlib-metadata 5.0 2022-10-05 11:18:02 +01:00
.gitignore Drop Python 2.7 support 2020-04-21 15:14:10 +01:00
.gitreview Update .gitreview for stable/wallaby 2021-04-16 10:46:50 +01:00
.pre-commit-config.yaml Dropping lower constraints testing 2021-04-16 10:46:09 +01:00
.stestr.conf Switch to stestr 2018-07-05 18:04:48 +07:00
.zuul.yaml Dropping lower constraints testing 2021-04-16 10:46:09 +01:00
CONTRIBUTING.rst Workflow documentation is now in infra-manual 2014-12-05 03:30:40 +00:00
LICENSE add license 2012-06-19 14:33:24 -04:00
README.rst update git.openstack.org to opendev 2019-04-25 01:07:11 +00:00
bindep.txt Add local bindep.txt 2019-06-27 12:59:31 +02:00
lower-constraints.txt switch to importlib.metadata package 2020-07-06 08:39:52 -04:00
requirements.txt switch to importlib.metadata package 2020-07-06 08:39:52 -04:00
setup.cfg Drop Python 2.7 support 2020-04-21 15:14:10 +01:00
setup.py Drop Python 2.7 support 2020-04-21 15:14:10 +01:00
test-requirements.txt Adding pre-commit 2020-09-15 13:40:37 +02:00
tox.ini Update TOX_CONSTRAINTS_FILE for stable/wallaby 2021-04-16 10:46:50 +01:00

README.rst

stevedore -- Manage dynamic plugins for Python applications

Latest Version

image

Python makes loading code dynamically easy, allowing you to configure and extend your application by discovering and loading extensions ("plugins") at runtime. Many applications implement their own library for doing this, using __import__ or importlib. stevedore avoids creating yet another extension mechanism by building on top of setuptools entry points. The code for managing entry points tends to be repetitive, though, so stevedore provides manager classes for implementing common patterns for using dynamically loaded extensions.