diff options
author | Daniel Rocco <drocco@thebrightlink.com> | 2013-08-24 14:02:15 -0400 |
---|---|---|
committer | Daniel Rocco <drocco@thebrightlink.com> | 2013-11-23 23:12:46 -0500 |
commit | a8150369a045f08f86db00e49a45bda4594fd2d5 (patch) | |
tree | 13deefb61eb02b6cd43fcbcf9a1b763d2b5c6677 | |
parent | acaf47782e25b1a4eb6056e72034335d03e00e3b (diff) | |
download | stevedore-a8150369a045f08f86db00e49a45bda4594fd2d5.tar.gz |
make Extension responsible for formatting its target name
-rw-r--r-- | stevedore/driver.py | 10 | ||||
-rw-r--r-- | stevedore/extension.py | 10 |
2 files changed, 15 insertions, 5 deletions
diff --git a/stevedore/driver.py b/stevedore/driver.py index ea2e122..54cdcae 100644 --- a/stevedore/driver.py +++ b/stevedore/driver.py @@ -34,12 +34,12 @@ class DriverManager(NamedExtensionManager): raise RuntimeError('No %r driver found, looking for %r' % (namespace, name)) if len(self.extensions) > 1: + discovered_drivers = ','.join(e.entry_point_target + for e in self.extensions) + raise RuntimeError('Multiple %r drivers found: %s' % - (namespace, - ','.join('%s:%s' % (e.entry_point.module_name, - e.entry_point.attrs[0]) - for e in self.extensions)) - ) + (namespace, discovered_drivers)) + def __call__(self, func, *args, **kwds): """Invokes func() for the single loaded extension. diff --git a/stevedore/extension.py b/stevedore/extension.py index a29af8e..ec71279 100644 --- a/stevedore/extension.py +++ b/stevedore/extension.py @@ -34,6 +34,16 @@ class Extension(object): self.plugin = plugin self.obj = obj + @property + def entry_point_target(self): + """The module and attribute referenced by this extension's entry_point. + + :return: A string representation of the target of the entry point in + 'dotted.module:object' format. + """ + return '%s:%s' % (self.entry_point.module_name, + self.entry_point.attrs[0]) + class ExtensionManager(object): """Base class for all of the other managers. |