From 1c40ba76992c7a05850df647967eb2e85a474694 Mon Sep 17 00:00:00 2001 From: Pavel Tisnovsky Date: Mon, 12 May 2025 09:36:20 +0200 Subject: [PATCH] Configuration loading code --- src/configuration.py | 43 +++++++++++++++++++++++++++++++++++++++++ src/lightspeed-stack.py | 14 +++----------- 2 files changed, 46 insertions(+), 11 deletions(-) create mode 100644 src/configuration.py 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()