sci-image-models / src /utils /config.py
lucasoc's picture
feat: initial release of sci-image-markdown Qwen2.5-VL-3B LoRA adapter and extraction codebase
be90b31 verified
Raw History Blame Contribute Delete
917 Bytes
"""
Configuration management utilities.
"""
import os
from typing import Any, Dict, Optional
import yaml
def load_config(config_path: str) -> Dict[str, Any]:
"""Load a YAML configuration file."""
if not os.path.exists(config_path):
raise FileNotFoundError(f"Configuration file not found: {config_path}")
with open(config_path, "r", encoding="utf-8") as f:
return yaml.safe_load(f) or {}
def merge_configs(base: Dict[str, Any], override: Optional[Dict[str, Any]]) -> Dict[str, Any]:
"""Deep merge two dictionaries, where override takes precedence."""
if not override:
return base.copy()
result = base.copy()
for key, value in override.items():
if key in result and isinstance(result[key], dict) and isinstance(value, dict):
result[key] = merge_configs(result[key], value)
else:
result[key] = value
return result