Fix compatibility with Python 3.10, 3.9.11
A fix to 'importlib.metadata' in Python 3.10 [1], later backported to 3.9 and released in 3.9.11 [2], has broken our tests. Fix them. [1]b1e2868607
[2]177be52517
Signed-off-by: Stephen Finucane <stephenfin@redhat.com> Closes-bug: #1966040 Change-Id: Iff536d4f4267efbebc4be1e7e5da8a9fde39f79b
This commit is contained in:
parent
55e9e1e5e8
commit
663d56c953
@ -61,17 +61,25 @@ class Extension(object):
|
||||
@property
|
||||
def extras(self):
|
||||
"""The 'extras' settings for the plugin."""
|
||||
# NOTE: The underlying package returns re.Match objects for
|
||||
# some reason. Translate those to the matched strings, which
|
||||
# seem more useful.
|
||||
return [
|
||||
# Python 3.6 returns _sre.SRE_Match objects. Later
|
||||
# versions of python return re.Match objects. Both types
|
||||
# have a 'string' attribute containing the text that
|
||||
# matched the pattern.
|
||||
getattr(e, 'string', e)
|
||||
for e in self.entry_point.extras
|
||||
]
|
||||
# NOTE: The underlying package returned re.Match objects until this was
|
||||
# fixed in importlib-metadata 4.11.3. This was fixed in Python 3.10 and
|
||||
# backported to Python 3.9.11. For older versions without this fix,
|
||||
# translate the re.Match objects to the matched strings, which seem
|
||||
# more useful.
|
||||
extras = []
|
||||
for extra in self.entry_point.extras:
|
||||
if isinstance(extra, str):
|
||||
# We were previously returning the whole string including
|
||||
# backets. We need to continue doing so to preserve API
|
||||
# compatibility.
|
||||
extras.append(f'[{extra}]')
|
||||
else:
|
||||
# Python 3.6 returns _sre.SRE_Match objects. Later
|
||||
# versions of python return re.Match objects. Both types
|
||||
# have a 'string' attribute containing the text that
|
||||
# matched the pattern.
|
||||
extras.append(getattr(extra, 'string', extra))
|
||||
return extras
|
||||
|
||||
@property
|
||||
def attr(self):
|
||||
|
Loading…
x
Reference in New Issue
Block a user