import logging from pathlib import Path from app.core.config import settings logger = logging.getLogger(__name__) class ModelLoader: def __init__(self): self.current_version = "meta_model.pkl" # Try settings.MODEL_DIR first self.model_dir = Path(settings.MODEL_DIR) # If running from root directory (e.g. HF Spaces), "../models/" goes out of bounds. # Fallback to looking relative to this file to robustly find the 'models' directory. if not self.model_dir.exists() or not list(self.model_dir.glob("*.pkl")): repo_root = Path(__file__).resolve().parent.parent.parent.parent fallback_dir = repo_root / "models" if fallback_dir.exists(): self.model_dir = fallback_dir self.model_dir.mkdir(parents=True, exist_ok=True) def get_latest_model_version(self) -> str: try: files = [f.name for f in self.model_dir.iterdir() if f.is_file()] if not files: logger.warning("No model files found in directory. Using generated meta_model.") return self.current_version latest_file = sorted(files)[-1] self.current_version = latest_file return self.current_version except Exception as e: logger.error(f"Failed to scan directory: {e}") return "unknown_error" model_loader = ModelLoader()