import gc from typing import List import gradio as gr from core.settings import ALL_MODEL_MAP from utils.app_utils import _ensure_model_downloaded class ModelManager: _instance = None def __new__(cls, *args, **kwargs): if not cls._instance: cls._instance = super(ModelManager, cls).__new__(cls, *args, **kwargs) return cls._instance def __init__(self): if hasattr(self, 'initialized'): return self.initialized = True print("✅ ModelManager initialized.") def ensure_models_downloaded(self, required_models: List[str], progress): print(f"--- [ModelManager] Ensuring models are downloaded: {required_models} ---") for i, display_name in enumerate(required_models): if progress and hasattr(progress, '__call__'): progress(i / len(required_models), desc=f"Checking file: {display_name}") try: _ensure_model_downloaded(display_name, progress) except Exception as e: raise gr.Error(f"Failed to download model '{display_name}'. Reason: {e}") print(f"--- [ModelManager] ✅ All required models are present on disk. ---") model_manager = ModelManager()