summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Finucane <stephenfin@redhat.com>2022-10-04 15:53:01 +0100
committerStephen Finucane <stephenfin@redhat.com>2022-10-04 17:26:32 +0100
commit7eca3f5661bb7624139d629c097167c82ce4692c (patch)
tree17e41705435e56c707bb779842840f8c14389fec
parent28fc7164dace83abc3ecc06fcb56f7ca880d735a (diff)
downloadstevedore-7eca3f5661bb7624139d629c097167c82ce4692c.tar.gz
Remove Extension.extras
The behavior of the 'EntryPoint.extras` attribute that this exposes has changed in recent versions of 'importlib_metadata'/'importlib.metadata'. In change Iff536d4f4267efbebc4be1e7e5da8a9fde39f79b we applied a temporary fix to preserve the legacy behavior on these newer versions, however, given that this is actually a deprecated attribute [1], the best long-term option seems to be not exposing things. Do just that. [1] https://packaging.python.org/en/latest/specifications/entry-points/#data-model Change-Id: Id772d9f002e6945666685138bdef8f8ca32b5229 Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
-rw-r--r--releasenotes/notes/remove-extension-extras-attribute-c2c542c9a4dcd304.yaml7
-rw-r--r--stevedore/extension.py23
-rw-r--r--stevedore/tests/test_extension.py4
3 files changed, 7 insertions, 27 deletions
diff --git a/releasenotes/notes/remove-extension-extras-attribute-c2c542c9a4dcd304.yaml b/releasenotes/notes/remove-extension-extras-attribute-c2c542c9a4dcd304.yaml
new file mode 100644
index 0000000..c2a6e7c
--- /dev/null
+++ b/releasenotes/notes/remove-extension-extras-attribute-c2c542c9a4dcd304.yaml
@@ -0,0 +1,7 @@
+---
+upgrade:
+ - |
+ The ``stevedore.extension.Extension`` object no longer exposes an
+ ``extras`` attribute. Entry point extras are a deprecated concept that
+ aren't useful in the context of stevedore thus the value in exposing this
+ is minimal to none.
diff --git a/stevedore/extension.py b/stevedore/extension.py
index d9ee084..9db769f 100644
--- a/stevedore/extension.py
+++ b/stevedore/extension.py
@@ -59,29 +59,6 @@ class Extension(object):
return match.group('module')
@property
- def extras(self):
- """The 'extras' settings for the plugin."""
- # 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):
"""The attribute of the module to be loaded."""
match = self.entry_point.pattern.match(self.entry_point.value)
diff --git a/stevedore/tests/test_extension.py b/stevedore/tests/test_extension.py
index 7d6c6b8..65af4cb 100644
--- a/stevedore/tests/test_extension.py
+++ b/stevedore/tests/test_extension.py
@@ -268,10 +268,6 @@ class TestExtensionProperties(utils.TestCase):
self.assertEqual('module.name', self.ext1.module_name)
self.assertEqual('module', self.ext2.module_name)
- def test_extras(self):
- self.assertEqual(['[extra]'], self.ext1.extras)
- self.assertEqual([], self.ext2.extras)
-
def test_attr(self):
self.assertEqual('attribute.name', self.ext1.attr)
self.assertEqual('attribute', self.ext2.attr)