diff --git a/stevedore/extension.py b/stevedore/extension.py index cdd53d2..55cb22c 100644 --- a/stevedore/extension.py +++ b/stevedore/extension.py @@ -13,6 +13,7 @@ """ExtensionManager """ +import operator import pkg_resources import logging @@ -168,6 +169,10 @@ class ExtensionManager(object): self.ENTRY_POINT_CACHE[self.namespace] = eps return self.ENTRY_POINT_CACHE[self.namespace] + def entry_points_names(self): + """Return the list of entry points names for this namespace.""" + return list(map(operator.attrgetter("name"), self.list_entry_points())) + def _load_plugins(self, invoke_on_load, invoke_args, invoke_kwds, verify_requirements): extensions = [] diff --git a/stevedore/tests/test_extension.py b/stevedore/tests/test_extension.py index a84c2df..4e91429 100644 --- a/stevedore/tests/test_extension.py +++ b/stevedore/tests/test_extension.py @@ -58,6 +58,12 @@ class TestCallback(utils.TestCase): set(map(operator.attrgetter("name"), n))) self.assertEqual(4, len(n)) + def test_list_entry_points_names(self): + em = extension.ExtensionManager('stevedore.test.extension') + names = em.entry_points_names() + self.assertEqual(set(['e1', 'e2', 't1', 't2']), set(names)) + self.assertEqual(4, len(names)) + def test_contains_by_name(self): em = extension.ExtensionManager('stevedore.test.extension') self.assertEqual('t1' in em, True)