ImageGen / core /model_manager.py
RioShiina's picture
feat: add Qwen-Image-2.1 prompt enhancer
266f72f verified
Raw
History Blame Contribute Delete
1.59 kB
import gc
from typing import List
import gradio as gr
from utils.app_utils import _ensure_model_downloaded, ensure_file_downloaded
from core.settings import ALL_MODEL_MAP, ALL_FILE_DOWNLOAD_MAP
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, item in enumerate(required_models):
if not item:
continue
if progress and hasattr(progress, '__call__'):
progress(i / max(len(required_models), 1), desc=f"Checking file: {item}")
try:
if item in ALL_MODEL_MAP:
_ensure_model_downloaded(item, progress)
elif item in ALL_FILE_DOWNLOAD_MAP:
ensure_file_downloaded(item, progress)
else:
_ensure_model_downloaded(item, progress)
except Exception as e:
raise gr.Error(f"Failed to download model '{item}'. Reason: {e}")
print(f"--- [ModelManager] ✅ All required models are present on disk. ---")
model_manager = ModelManager()