Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

33 строки
1.0 KiB

  1. import os
  2. from pathlib import Path
  3. import yaml
  4. def _read_yaml(path: str) -> dict:
  5. with open(path, "r", encoding="utf-8") as f:
  6. return yaml.safe_load(f) or {}
  7. def deep_merge(a: dict, b: dict) -> dict:
  8. out = dict(a or {})
  9. for k, v in (b or {}).items():
  10. if isinstance(v, dict) and isinstance(out.get(k), dict):
  11. out[k] = deep_merge(out[k], v)
  12. else:
  13. out[k] = v
  14. return out
  15. def load_settings() -> dict:
  16. cfg_path = os.getenv("CONFIG_FILE", "/config/config.yaml")
  17. settings = _read_yaml(cfg_path)
  18. secrets_path = os.getenv("SECRETS_FILE", "")
  19. if secrets_path and Path(secrets_path).exists():
  20. secrets = _read_yaml(secrets_path)
  21. settings = deep_merge(settings, secrets)
  22. # fallback paths (coerenti con compose)
  23. settings.setdefault("paths", {})
  24. settings["paths"].setdefault("dataset", os.getenv("DATASET_PATH", "/data/fingerprint.parquet"))
  25. settings["paths"].setdefault("model", os.getenv("MODEL_PATH", "/models/model.joblib"))
  26. return settings