Spaces:
Running
Running
File size: 1,454 Bytes
aa27d2d 09cc5a2 aa27d2d 09cc5a2 aa27d2d ee2facf aa27d2d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 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() |