"""Gradio UI handlers and helpers.""" from __future__ import annotations import gradio as gr from .config import logger from .jobs import get_jobs_table, get_queue_info, jobs, jobs_lock from .models import extract_zip, list_models def upload_model(zip_file, model_name): """Handle model upload.""" if not zip_file: return "⚠️ No file provided.", gr.update(), gr.update() from pathlib import Path name = (model_name or "").strip() or Path(zip_file).stem try: extract_zip(zip_file, name) models = list_models() return ( f"✅ Model **{name}** loaded successfully.", gr.update(choices=models, value=name), gr.update(value=[[m] for m in models]), ) except Exception as exc: logger.exception("Model upload failed") return f"❌ Error: {exc}", gr.update(), gr.update() def refresh_models(): """Refresh the models list.""" models = list_models() default_value = models[0] if models else None return gr.update(value=[[m] for m in models]), gr.update(choices=models, value=default_value) def toggle_autotune(enabled): """Toggle autotune slider visibility.""" return gr.update(visible=enabled)