def list_plugins(lst, verbose=False): from openalea.core.plugin.manager import PluginManager pm = PluginManager() import pkg_resources from openalea.core.plugin import iter_groups if lst in ['summary', 'all']: prefixes = ['openalea', 'oalab', 'vpltk'] else: prefixes = [lst] for group in sorted(iter_groups()): match = False for prefix in prefixes: if group.startswith(prefix): match = True break if match: eps = [ep for ep in pkg_resources.iter_entry_points(group)] if lst == 'summary': print '\n\033[91m%s\033[0m (%d plugins)' % (group, len(eps)) for ep in eps: parts = [str(s) for s in (ep.module_name, ep.name)] identifier = ':'.join(parts) print ' - %s \033[90m%s (%s)\033[0m' % (ep.name, identifier, ep.dist.egg_name()) else: print '\033[44m%s\033[0m' % group UNDEF = 'Not defined' plugin_groups = {UNDEF: []} for plugin in pm.items(group): interface = getattr(plugin, 'implement', None) if interface: plugin_groups.setdefault(interface, []).append(plugin) else: plugin_groups[UNDEF].append(plugin) for group, plugins in plugin_groups.items(): if not plugins: continue print ' implements: \033[91m%s\033[0m' % group plugin_names = {} for plugin in plugins: plugin_names[plugin.name] = plugin for pl_name in sorted(plugin_names): plugin = plugin_names[pl_name] p_class = plugin.__class__ print ' - \033[93m%s \033[90m%s:%s\033[0m' % (plugin_name(plugin), p_class.__module__, p_class.__name__) if verbose: print ' tags: %s' % ', '.join(plugin.tags) print ' plugin: %s, egg: %s\n path: %s' % ( ep.name, ep.dist.egg_name(), ep.dist.location) print ' criteria:' for crit_name in sorted(dir(plugin)): if crit_name in ('implementation', '__call__'): continue crit = getattr(plugin, crit_name) if can_display_criterion(crit_name, crit): print format_criterion(crit_name, crit, 10) print print
def parse(self): args = self.parser.parse_args() self.session.gui = True if args.color: self.session.color_cli = True os.environ['OA_CLICOLOR'] = '1' if args.list_plugins: self.session.gui = False import pkg_resources from openalea.core.plugin import iter_groups if args.list_plugins in ['summary', 'all']: prefixes = ['oalab', 'vpltk', 'openalea'] else: prefixes = [args.list_plugins] for category in sorted(iter_groups()): match = False for prefix in prefixes: if category.startswith(prefix): match = True break if match: eps = [ep for ep in pkg_resources.iter_entry_points(category)] if args.list_plugins == 'summary': print ' - \033[91m%s\033[0m (%d plugins)' % (category, len(eps)) else: print '\033[91m%s\033[0m' % category print for ep in eps: print_plugin_name(ep) print print if args.debug_plugins: debug = args.debug_plugins.split(',') if 'oalab.lab' not in debug: debug.append('oalab.lab') from openalea.core.service.plugin import PluginInstanceManager pim = PluginInstanceManager() pim.debug = debug self.session.extension = args.extension self.args = args
def __init__(self, parent=None): ManagerExplorer.__init__(self, parent) self._explorer.set_default_item_icon(DEFAULT_ICON) self.set_criteria(self.criteria) self._cb_group = QtGui.QComboBox() prefixes = ['openalea', 'oalab', 'vpltk'] for group in sorted(iter_groups()): match = False for prefix in prefixes: if group.startswith(prefix): match = True break if match: self._cb_group.addItem(group) self._cb_group.currentIndexChanged.connect(self._on_group_changed) self._layout.addWidget(self._cb_group, 0, 2) self._on_group_changed(0)