diff options
Diffstat (limited to 'coverage/plugin.py')
-rw-r--r-- | coverage/plugin.py | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/coverage/plugin.py b/coverage/plugin.py index 0b557106..8e26ae6b 100644 --- a/coverage/plugin.py +++ b/coverage/plugin.py @@ -1,20 +1,30 @@ """Plugin management for coverage.py""" -def load_plugins(modules, name): - """Load plugins from `modules`, finding them by `name`. +import sys - Yields the loaded plugins. + +class CoveragePlugin(object): + """Base class for coverage.py plugins.""" + def __init__(self, options): + self.options = options + + +def load_plugins(modules, config): + """Load plugins from `modules`. + + Returns a list of loaded and configured plugins. """ + plugins = [] for module in modules: - try: - __import__(module) - mod = sys.modules[module] - except ImportError: - blah() - continue - - entry = getattr(mod, name, None) - if entry: - yield entry + __import__(module) + mod = sys.modules[module] + + plugin_class = getattr(mod, "Plugin", None) + if plugin_class: + options = config.get_plugin_options(module) + plugin = plugin_class(options) + plugins.append(plugin) + + return plugins |