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
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
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())