summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Danjou <julien@danjou.info>2017-01-13 15:42:27 +0100
committerJulien Danjou <julien@danjou.info>2017-01-13 15:51:49 +0100
commiteb04fc4a3e3db913475d2f7105420351a0a781a9 (patch)
treeebde6180eac9c6c5d07814602e0ef055a70a0b46
parent04f5e154e521d593cee1f6a78d5beee8a5db0b13 (diff)
downloadstevedore-eb04fc4a3e3db913475d2f7105420351a0a781a9.tar.gz
extension: expose _find_entry_points as list_entry_points
Having the ability to list the entry points without loading them can be quite useful. Expose the internal method externally to help with that. Change-Id: Id675f335957a95fcfce61934dfbfbb2c64af761a
-rw-r--r--stevedore/extension.py18
-rw-r--r--stevedore/tests/test_extension.py9
2 files changed, 21 insertions, 6 deletions
diff --git a/stevedore/extension.py b/stevedore/extension.py
index 4029b65..cdd53d2 100644
--- a/stevedore/extension.py
+++ b/stevedore/extension.py
@@ -156,16 +156,22 @@ class ExtensionManager(object):
ENTRY_POINT_CACHE = {}
- def _find_entry_points(self, namespace):
- if namespace not in self.ENTRY_POINT_CACHE:
- eps = list(pkg_resources.iter_entry_points(namespace))
- self.ENTRY_POINT_CACHE[namespace] = eps
- return self.ENTRY_POINT_CACHE[namespace]
+ def list_entry_points(self):
+ """Return the list of entry points for this namespace.
+
+ The entry points are not actually loaded, their list is just read and
+ returned.
+
+ """
+ if self.namespace not in self.ENTRY_POINT_CACHE:
+ eps = list(pkg_resources.iter_entry_points(self.namespace))
+ self.ENTRY_POINT_CACHE[self.namespace] = eps
+ return self.ENTRY_POINT_CACHE[self.namespace]
def _load_plugins(self, invoke_on_load, invoke_args, invoke_kwds,
verify_requirements):
extensions = []
- for ep in self._find_entry_points(self.namespace):
+ for ep in self.list_entry_points():
LOG.debug('found extension %r', ep)
try:
ext = self._load_one_plugin(ep,
diff --git a/stevedore/tests/test_extension.py b/stevedore/tests/test_extension.py
index 7d695ef..a84c2df 100644
--- a/stevedore/tests/test_extension.py
+++ b/stevedore/tests/test_extension.py
@@ -13,6 +13,8 @@
"""Tests for stevedore.extension
"""
+import operator
+
import mock
from stevedore import exception
@@ -49,6 +51,13 @@ class TestCallback(utils.TestCase):
e = em['t1']
self.assertEqual(e.name, 't1')
+ def test_list_entry_points(self):
+ em = extension.ExtensionManager('stevedore.test.extension')
+ n = em.list_entry_points()
+ self.assertEqual(set(['e1', 'e2', 't1', 't2']),
+ set(map(operator.attrgetter("name"), n)))
+ self.assertEqual(4, len(n))
+
def test_contains_by_name(self):
em = extension.ExtensionManager('stevedore.test.extension')
self.assertEqual('t1' in em, True)