MSG
Feat/UI ux opti wip (#10)
81da2d5
Raw
History Blame Contribute Delete
1.18 kB
from __future__ import annotations
from typing import Any
def unwrap_update(value: Any) -> Any:
"""Extract payload from gr.update() return values when calling tab handlers directly."""
if value is None:
return None
if isinstance(value, dict):
return value
if hasattr(value, "model_dump"):
return value.model_dump(exclude_none=True)
if hasattr(value, "to_dict"):
return value.to_dict()
return value
def update_value(value: Any, default: Any = "") -> Any:
payload = unwrap_update(value)
if isinstance(payload, dict) and "value" in payload:
return payload["value"]
return payload if payload is not None else default
def update_choices(value: Any) -> list[Any]:
payload = unwrap_update(value)
if isinstance(payload, dict):
return list(payload.get("choices") or [])
return []
def ok(data: dict[str, Any] | None = None, **kwargs: Any) -> dict[str, Any]:
out: dict[str, Any] = {"ok": True}
if data:
out.update(data)
out.update(kwargs)
return out
def err(message: str, **kwargs: Any) -> dict[str, Any]:
return {"ok": False, "error": message, **kwargs}