diff options
author | Ian Wienand <iwienand@redhat.com> | 2022-10-18 14:38:37 +1100 |
---|---|---|
committer | Stephen Finucane <stephenfin@redhat.com> | 2022-10-19 11:17:28 +0100 |
commit | 93f1e0937c9eadd79050c12808d8a2b8b4f2646b (patch) | |
tree | 9a49745976a7373e5892180a83a202cf27f463c5 | |
parent | 1e4d71d4b552494ff33ad03b76d2a590d58efe77 (diff) | |
download | stevedore-stable/zed.tar.gz |
Order old importlib-metadata results by group4.0.2stable/zed
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)
-rw-r--r-- | stevedore/_cache.py | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/stevedore/_cache.py b/stevedore/_cache.py index 6a76bc8..da53114 100644 --- a/stevedore/_cache.py +++ b/stevedore/_cache.py @@ -104,7 +104,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 |