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()