Source code for idmtools.registry.master_plugin_registry
"""
Registry to aggregate all plugins to one place.
Copyright 2021, Bill & Melinda Gates Foundation. All rights reserved.
"""
from typing import Dict, Set
from idmtools.registry import PluginSpecification
from idmtools.registry.experiment_specification import ExperimentPlugins
from idmtools.utils.decorators import SingletonMixin
[docs]class MasterPluginRegistry(SingletonMixin):
"""
MasterPluginRegistry indexes all type of plugins into one class.
Notes:
TODO - Rename this class
"""
[docs] def __init__(self) -> None:
"""
Initialize Master registry.
"""
from idmtools.registry.platform_specification import PlatformPlugins
from idmtools.registry.task_specification import TaskPlugins
self._plugin_map = PlatformPlugins(strip_all=False).get_plugin_map()
self._plugin_map.update(TaskPlugins(strip_all=False).get_plugin_map())
self._plugin_map.update(ExperimentPlugins(strip_all=False).get_plugin_map())
try:
from idmtools_cli.iplatform_cli import PlatformCLIPlugins
self._plugin_map.update(PlatformCLIPlugins(strip_all=False).get_plugin_map())
except ImportError:
pass
[docs] def get_plugin_map(self) -> Dict[str, PluginSpecification]:
"""
Get plugin map.
Returns:
Plugin map
"""
return self._plugin_map
[docs] def get_plugins(self) -> Set[PluginSpecification]:
"""
Get Plugins map.
Returns:
The full plugin map
"""
return set(self._plugin_map.values())