Source code for lwe.core.provider_manager
from lwe.core.config import Config
from lwe.core.logger import Logger
from lwe.core import constants
from lwe.core.plugin_manager import PluginManager
[docs]
class ProviderManager:
def __init__(self, config, plugin_manager):
self.config = config or Config()
self.plugin_manager = plugin_manager or PluginManager(self.config)
self.log = Logger(self.__class__.__name__, self.config)
self.provider_plugins = self.get_provider_plugins()
[docs]
def get_provider_plugins(self):
provider_plugins = {
k: v
for (k, v) in self.plugin_manager.get_plugins().items()
if v.plugin_type == "provider"
}
return provider_plugins
[docs]
def full_name(self, name):
if name[:9] != constants.PROVIDER_PREFIX:
name = f"{constants.PROVIDER_PREFIX}{name}"
return name
[docs]
def load_provider(self, provider_name: str):
try:
self.log.debug(f"Attempting to load provider: {provider_name}")
provider = self.provider_plugins[self.full_name(provider_name)]
self.log.debug(f"Found provider: {provider.__class__.__name__}")
except KeyError:
message = f"Provider {provider_name} not found in provider_plugins."
self.log.error(message)
return False, None, message
message = f"Successfully loaded provider: {provider_name}"
self.log.info(message)
return True, provider, message
[docs]
def get_provider_from_name(self, provider_name):
full_name = self.full_name(provider_name)
return self.provider_plugins[full_name] if full_name in self.provider_plugins else None