Exemplo n.º 1
0
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
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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)