diff --git a/src/configuration.py b/src/configuration.py new file mode 100644 index 00000000..4a29a163 --- /dev/null +++ b/src/configuration.py @@ -0,0 +1,43 @@ +import yaml + +from typing import Any, Optional +from models.config import Configuration, LLamaStackConfiguration + + +class AppConfig: + _instance = None + + def __new__(cls, *args: Any, **kwargs: Any) -> "AppConfig": + """Create a new instance of the class.""" + if not isinstance(cls._instance, cls): + cls._instance = super().__new__(cls, *args, **kwargs) + return cls._instance + + def __init__(self) -> None: + """Initialize the class instance.""" + self._configuration: Optional[Configuration] = None + + def load_configuration(self, filename: str) -> None: + """Load configuration from YAML file.""" + with open(filename, encoding="utf-8") as fin: + config_dict = yaml.safe_load(fin) + print(config_dict) + self._configuration = Configuration(**config_dict) + + @property + def configuration(self) -> Configuration: + assert ( + self._configuration is not None + ), "logic error: configuration is not loaded" + return self._configuration + + @property + def llama_stack_configuration(self) -> LLamaStackConfiguration: + assert ( + self._configuration is not None + ), "logic error: configuration is not loaded" + return self._configuration.llama_stack + + +configuration: AppConfig = AppConfig() +xyz: str = "XYZ" diff --git a/src/lightspeed-stack.py b/src/lightspeed-stack.py index d2c34258..2f869748 100644 --- a/src/lightspeed-stack.py +++ b/src/lightspeed-stack.py @@ -1,21 +1,13 @@ """Lightspeed stack.""" -import yaml - from runners.uvicorn import start_uvicorn from models.config import Configuration - - -def load_configuration(filename: str) -> Configuration: - """Load configuration from YAML file.""" - with open(filename, encoding="utf-8") as fin: - config_dict = yaml.safe_load(fin) - print(config_dict) - return Configuration(**config_dict) +from configuration import configuration if __name__ == "__main__": print("Lightspeed stack") - configuration = load_configuration("lightspeed-stack.yaml") + configuration.load_configuration("lightspeed-stack.yaml") print(configuration) + print(configuration.llama_stack_configuration) start_uvicorn()