コード例 #1
0
ファイル: __init__.py プロジェクト: MrSwiss/charla
    def load(self, name, package=__package__):
        if name in self.plugins:
            msg = u("Not loading already loaded plugin: {0}").format(name)
            self.logger.warn(msg)
            return msg

        try:
            fqplugin = "{0}.{1}".format(package, name)
            if fqplugin in sys.modules:
                reload(sys.modules[fqplugin])

            m = safe__import__(name, globals(), locals(), package)

            p1 = lambda x: isclass(x) and issubclass(x, BasePlugin)  # noqa
            p2 = lambda x: x is not BasePlugin  # noqa
            predicate = lambda x: p1(x) and p2(x)  # noqa
            plugins = getmembers(m, predicate)

            for name, Plugin in plugins:
                instance = Plugin(*self.init_args, **self.init_kwargs)
                instance.register(self)
                self.logger.debug(
                    u("Registered Component: {0}").format(instance))
                if name not in self.plugins:
                    self.plugins[name] = set()
                self.plugins[name].add(instance)

            msg = u("Loaded plugin: {0}").format(name)
            self.logger.info(msg)
            return msg
        except Exception, e:
            msg = u("Could not load plugin: {0} Error: {1}").format(name, e)
            self.logger.error(msg)
            self.logger.error(format_exc())
            return msg
コード例 #2
0
ファイル: __init__.py プロジェクト: MrSwiss/charla
    def load(self, name, package=__package__):
        if name in self.plugins:
            msg = u("Not loading already loaded plugin: {0}").format(name)
            self.logger.warn(msg)
            return msg

        try:
            fqplugin = "{0}.{1}".format(package, name)
            if fqplugin in sys.modules:
                reload(sys.modules[fqplugin])

            m = safe__import__(name, globals(), locals(), package)

            p1 = lambda x: isclass(x) and issubclass(x, BasePlugin)  # noqa
            p2 = lambda x: x is not BasePlugin  # noqa
            predicate = lambda x: p1(x) and p2(x)  # noqa
            plugins = getmembers(m, predicate)

            for name, Plugin in plugins:
                instance = Plugin(*self.init_args, **self.init_kwargs)
                instance.register(self)
                self.logger.debug(u("Registered Component: {0}").format(instance))
                if name not in self.plugins:
                    self.plugins[name] = set()
                self.plugins[name].add(instance)

            msg = u("Loaded plugin: {0}").format(name)
            self.logger.info(msg)
            return msg
        except Exception, e:
            msg = u("Could not load plugin: {0} Error: {1}").format(name, e)
            self.logger.error(msg)
            self.logger.error(format_exc())
            return msg
コード例 #3
0
ファイル: __init__.py プロジェクト: carriercomm/cgod
    def load(self, name, package=__package__):
        if name in self.plugins:
            self.logger.warn(
                "Not loading already loaded plugin: {0:s}".format(name)
            )
            return

        try:
            fqplugin = "{0:s}.{1:s}".format(package, name)
            if fqplugin in sys.modules:
                reload(sys.modules[fqplugin])

            m = safe__import__(name, globals(), locals(), package)

            plugins = getmembers(m, is_plugin)

            for name, Plugin in plugins:
                instance = Plugin(*self.init_args, **self.init_kwargs)
                instance.register(self)
                self.logger.debug(
                    "Registered Component: {0:s}".format(instance)
                )
                if name not in self.plugins:
                    self.plugins[name] = set()
                self.plugins[name].add(instance)

            self.logger.info("Loaded plugin: {0:s}".format(name))
        except Exception, e:
            self.logger.error(
                "Could not load plugin: {0:s} Error: {1:s}".format(
                    name, e
                )
            )
            self.logger.error(format_exc())