mirror of
https://github.com/wassname/scikit-image.git
synced 2026-07-12 03:52:02 +08:00
io: Track meta-data on plugins.
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
"""
|
||||
|
||||
__all__ = ['use', 'load', 'available', 'call']
|
||||
__all__ = ['use', 'load', 'available', 'call', 'info']
|
||||
|
||||
import warnings
|
||||
from ConfigParser import ConfigParser
|
||||
@@ -16,6 +16,7 @@ plugin_store = {'imread': [],
|
||||
|
||||
plugin_provides = {}
|
||||
plugin_module_name = {}
|
||||
plugin_meta_data = {}
|
||||
|
||||
def _scan_plugins():
|
||||
"""Scan the plugins directory for .ini files and parse them
|
||||
@@ -29,6 +30,12 @@ def _scan_plugins():
|
||||
cp = ConfigParser()
|
||||
cp.read(f)
|
||||
name = cp.sections()[0]
|
||||
|
||||
meta_data = {}
|
||||
for opt in cp.options(name):
|
||||
meta_data[opt] = cp.get(name, opt)
|
||||
plugin_meta_data[name] = meta_data
|
||||
|
||||
provides = [s.strip() for s in cp.get(name, 'provides').split(',')]
|
||||
valid_provides = [p for p in provides if p in plugin_store]
|
||||
|
||||
@@ -177,3 +184,22 @@ def load(plugin):
|
||||
if not func in store:
|
||||
store.insert(0, (plugin, func))
|
||||
|
||||
def info(plugin):
|
||||
"""Return plugin meta-data.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
plugin : str
|
||||
Name of plugin.
|
||||
|
||||
Returns
|
||||
-------
|
||||
m : dict
|
||||
Meta data as specified in plugin ``.ini``.
|
||||
|
||||
"""
|
||||
try:
|
||||
return plugin_meta_data[plugin]
|
||||
except KeyError:
|
||||
raise ValueError('No information on plugin "%s"' % plugin)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user