from typing import Dict from gradio.components import Component class Manager: def __init__(self) -> None: self._id_to_elem: Dict[str, "Component"] = {} self._elem_to_id: Dict["Component", str] = {} def add_elems(self, elem_dict: Dict[str, "Component"]) -> None: for elem_id, elem in elem_dict.items(): self._id_to_elem[elem_id] = elem self._elem_to_id[elem] = elem_id def get_elem_by_id(self, elem_id: str) -> "Component": return self._id_to_elem[elem_id] def _get_id_by_elem(self, elem: "Component") -> str: return self._elem_to_id[elem] def get(self, data, key): return data[self.get_elem_by_id(key)] def get_all(self, data) -> Dict: all = {} for k, v in self._id_to_elem.items(): all[k] = data[v] return all engine = Manager()