diff --git a/sijapi/classes.py b/sijapi/classes.py index 837b8cc..d73e23b 100644 --- a/sijapi/classes.py +++ b/sijapi/classes.py @@ -93,37 +93,43 @@ class Configuration(BaseModel): yaml_path = cls._resolve_path(yaml_path, 'config') if secrets_path: secrets_path = cls._resolve_path(secrets_path, 'config') - + try: with yaml_path.open('r') as file: config_data = yaml.safe_load(file) - + debug(f"Loaded configuration data from {yaml_path}") - secrets_data = {} if secrets_path: with secrets_path.open('r') as file: secrets_data = yaml.safe_load(file) debug(f"Loaded secrets data from {secrets_path}") - - # Set default HOME if not present + if isinstance(config_data, list): + for item in config_data: + if isinstance(item, dict): + item.update(secrets_data) + else: + config_data.update(secrets_data) + + if isinstance(config_data, list): + config_data = {"configurations": config_data} + if 'HOME' not in config_data: config_data['HOME'] = str(Path.home()) debug(f"HOME was not in config, set to default: {config_data['HOME']}") - - # Resolve placeholders using secrets - config_data = cls.resolve_placeholders(config_data, secrets_data, Path(config_data['HOME'])) - - if isinstance(config_data, list): - config_data = {"configurations": config_data} - + + load_dotenv() instance = cls.create_dynamic_model(**config_data) instance._dir_config = dir_config or instance + resolved_data = instance.resolve_placeholders(config_data) + instance = cls.create_dynamic_model(**resolved_data) + instance._dir_config = dir_config or instance return instance - + except Exception as e: err(f"Error loading configuration: {str(e)}") raise + @classmethod def _resolve_path(cls, path: Union[str, Path], default_dir: str) -> Path: base_path = Path(__file__).parent.parent