diff options
author | Julien Danjou <julien@danjou.info> | 2017-01-13 15:42:27 +0100 |
---|---|---|
committer | Julien Danjou <julien@danjou.info> | 2017-01-13 15:51:49 +0100 |
commit | eb04fc4a3e3db913475d2f7105420351a0a781a9 (patch) | |
tree | ebde6180eac9c6c5d07814602e0ef055a70a0b46 | |
parent | 04f5e154e521d593cee1f6a78d5beee8a5db0b13 (diff) | |
download | stevedore-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.py | 18 | ||||
-rw-r--r-- | stevedore/tests/test_extension.py | 9 |
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) |