summaryrefslogtreecommitdiff
path: root/coverage/plugin.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2014-08-21 10:35:15 -0400
committerNed Batchelder <ned@nedbatchelder.com>2014-08-21 10:35:15 -0400
commit6c6b73902539473740b515cea1481a924e552a66 (patch)
tree792a8eba337900c873b82f4c7ede7ae1ce8c4338 /coverage/plugin.py
parent17ed409f9daec331ac4c2a2ec667fa76328d42b0 (diff)
downloadpython-coveragepy-6c6b73902539473740b515cea1481a924e552a66.tar.gz
More-serious plugin support
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 0b55710..8e26ae6 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