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()
def __init__(self, providers=None, provider_configs=None): #: Name of providers to use self.providers = providers or provider_manager.names() #: Provider configuration self.provider_configs = provider_configs or {} #: Initialized providers self.initialized_providers = {} #: Discarded providers self.discarded_providers = set() #: Dedicated :data:`provider_manager` as :class:`~stevedore.enabled.EnabledExtensionManager` self.manager = EnabledExtensionManager( provider_manager.namespace, lambda e: e.name in self.providers)