|
- import os
- from pathlib import Path
- import yaml
-
- def _read_yaml(path: str) -> dict:
- with open(path, "r", encoding="utf-8") as f:
- return yaml.safe_load(f) or {}
-
- def deep_merge(a: dict, b: dict) -> dict:
- out = dict(a or {})
- for k, v in (b or {}).items():
- if isinstance(v, dict) and isinstance(out.get(k), dict):
- out[k] = deep_merge(out[k], v)
- else:
- out[k] = v
- return out
-
- def load_settings() -> dict:
- cfg_path = os.getenv("CONFIG_FILE", "/config/config.yaml")
- settings = _read_yaml(cfg_path)
-
- secrets_path = os.getenv("SECRETS_FILE", "")
- if secrets_path and Path(secrets_path).exists():
- secrets = _read_yaml(secrets_path)
- settings = deep_merge(settings, secrets)
-
- # fallback paths (coerenti con compose)
- settings.setdefault("paths", {})
- settings["paths"].setdefault("dataset", os.getenv("DATASET_PATH", "/data/fingerprint.parquet"))
- settings["paths"].setdefault("model", os.getenv("MODEL_PATH", "/models/model.joblib"))
-
- return settings
|