summaryrefslogtreecommitdiff
path: root/coverage/plugin.py
diff options
context:
space:
mode:
Diffstat (limited to 'coverage/plugin.py')
-rw-r--r--coverage/plugin.py36
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