summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Wienand <iwienand@redhat.com>2022-10-18 14:38:37 +1100
committerStephen Finucane <stephenfin@redhat.com>2022-10-19 11:18:40 +0100
commit7b48fffd01307223b53ef129bb6a0753a67abdce (patch)
treeafbf2ac975ac1f3efd795f4447df556b9a282b6b
parent48e178ab5ca6d8d2e6c6b9eee9e2fc62176d1340 (diff)
downloadstevedore-stable/wallaby.tar.gz
Order old importlib-metadata results by groupwallaby-em3.3.3stable/wallaby
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) (cherry picked from commit 93f1e0937c9eadd79050c12808d8a2b8b4f2646b) (cherry picked from commit 6c9978a9062da6cc3f9cc1859bf63c72b057cabb) (cherry picked from commit 1c1270666a4ec1ba164ce610b8ba798e157dacf2)
-rw-r--r--stevedore/_cache.py3
1 files changed, 2 insertions, 1 deletions
diff --git a/stevedore/_cache.py b/stevedore/_cache.py
index 288d740..63f6129 100644
--- a/stevedore/_cache.py
+++ b/stevedore/_cache.py
@@ -110,7 +110,8 @@ def _build_cacheable_data():
# importlib-metadata 4.0 or later (or stdlib importlib.metadata in
# Python 3.9 or later)
real_groups = {
- name: real_groups.select(name=name) for name in real_groups.names
+ group: real_groups.select(group=group)
+ for group in real_groups.groups
}
# Convert the namedtuple values to regular tuples