Spaces:
Running
Running
| from collections.abc import Callable | |
| import emoji | |
| from loguru import logger | |
| def validate_icon(value: str): | |
| # we are going to use the emoji library to validate the emoji | |
| # emojis can be defined using the :emoji_name: syntax | |
| if not value.startswith(":") and not value.endswith(":"): | |
| return value | |
| if not value.startswith(":") or not value.endswith(":"): | |
| # emoji should have both starting and ending colons | |
| # so if one of them is missing, we will raise | |
| msg = f"Invalid emoji. {value} is not a valid emoji." | |
| raise ValueError(msg) | |
| emoji_value = emoji.emojize(value, variant="emoji_type") | |
| if value == emoji_value: | |
| logger.warning(f"Invalid emoji. {value} is not a valid emoji.") | |
| return value | |
| return emoji_value | |
| def getattr_return_str(value): | |
| return str(value) if value else "" | |
| def getattr_return_bool(value): | |
| if isinstance(value, bool): | |
| return value | |
| return None | |
| def getattr_return_list_of_str(value): | |
| if isinstance(value, list): | |
| return [str(val) for val in value] | |
| return [] | |
| def getattr_return_list_of_object(value): | |
| if isinstance(value, list): | |
| return value | |
| return [] | |
| def getattr_return_list_of_values_from_dict(value): | |
| if isinstance(value, dict): | |
| return list(value.values()) | |
| return [] | |
| def getattr_return_dict(value): | |
| if isinstance(value, dict): | |
| return value | |
| return {} | |
| ATTR_FUNC_MAPPING: dict[str, Callable] = { | |
| "display_name": getattr_return_str, | |
| "description": getattr_return_str, | |
| "beta": getattr_return_bool, | |
| "legacy": getattr_return_bool, | |
| "documentation": getattr_return_str, | |
| "icon": validate_icon, | |
| "frozen": getattr_return_bool, | |
| "is_input": getattr_return_bool, | |
| "is_output": getattr_return_bool, | |
| "conditional_paths": getattr_return_list_of_str, | |
| "_outputs_map": getattr_return_list_of_values_from_dict, | |
| "_inputs": getattr_return_list_of_values_from_dict, | |
| "outputs": getattr_return_list_of_object, | |
| "inputs": getattr_return_list_of_object, | |
| "metadata": getattr_return_dict, | |
| "tool_mode": getattr_return_bool, | |
| } | |