
A Debian Buster-based zuul-jobs test started failing when using stestr recently [1]. Upon further investigation, this is a Python 3.7 environment which is affected by a recent breaking change to importlib_metadata. It seems stevedore worked around this with Ib9c2b0a14edea91e97d122d2ac93b650029f918e, which was released with 3.5.1 -- but I was still seeing the issue. Upon further investigation, the "real_groups" dict being returned here with importlib-metadata 4.12.0 is in buckets by group, e.g. {'group.one': [EntryPoint(name='foo', ... , group='group.one'), EntryPoint(name='bar', ... , group='group.one')], 'group.two': [EntryPoint(name='moo', ... , group='group.two'), EntryPoint(name='goo', ... , group='group.two')], } This current code seems to return a dict with entry-points by thier name, e.g. {'foo': EntryPoint(name='foo', ... , group='group.one), 'bar': EntryPoint(name='bar', ... , group='group.one), 'moo': EntryPoint(name='moo', ... , group='group.two), 'goo': EntryPoint(name='goo', ... , group='group.two) } This reorgansies the fixup routine to put entry-points in a bucket by their group. With this change, stestr is again finding it's command plugins. [1] https://github.com/mtreinish/stestr/issues/336 [2] https://github.com/python/importlib_metadata/issues/409 Change-Id: I3496ab1dfa312b1098a869cdfd9a0c6f81653b28 (cherry picked from commit 5189992d719ad15e0e3504947895bf5ba9dc7a1d)
stevedore -- Manage dynamic plugins for Python applications
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.
- Free software: Apache license
- Documentation: https://docs.openstack.org/stevedore/latest
- Source: https://opendev.org/openstack/stevedore
- Bugs: https://bugs.launchpad.net/python-stevedore
Description
Languages
Python
100%