def load(self, invoke_on_load=True): self._manager = DispatchExtensionManager( "csm.plugin", self._check_plugin, invoke_on_load=invoke_on_load, invoke_args=(self._ctx, ), propagate_map_exceptions=True, on_load_failure_callback=self._on_load_failure, ) self._build_plugin_list()
def __init__(self, config: Config, invoke_on_load=False): self._logger = logging.getLogger(__name__) self.failed_plugins = list() self._disabled_plugins = config.plugins.disabled self._settings_initialized = False def check(ext: Extension): return self._check_extension(config, ext) self.weather = DriverManager( "blueweather.plugins.weather", config.plugins.weather_driver, on_load_failure_callback=self._on_load_fail ) self.plugins = ExtensionManager( "blueweather.plugins.plugin", on_load_failure_callback=self._on_load_fail ) self.api = EnabledExtensionManager( "blueweather.plugins.api", check_func=check, on_load_failure_callback=self._on_load_fail ) self.startup = EnabledExtensionManager( "blueweather.plugins.startup", check_func=check, on_load_failure_callback=self._on_load_fail ) self.settings = EnabledExtensionManager( "blueweather.plugins.settings", check_func=check, on_load_failure_callback=self._on_load_fail ) self.unitConversion = DispatchExtensionManager( "blueweather.plugins.unitconv", check_func=check, on_load_failure_callback=self._on_load_fail ) if self._logger.isEnabledFor(logging.INFO): extensions = self.getAllExtensions() for k, v in extensions.items(): extensions[k] = '\n\t'.join(v.keys()) extensions = '\n'.join( ["%s: \n\t%s" % (k, v) for k, v in extensions.items()] ) self._logger.info("Discovered Extensions: \n%s", extensions) if invoke_on_load: self.invoke()