| from __future__ import annotations | |
| from typing import Any | |
| from shared.deepy.config import ( | |
| DEEPY_AUTO_CANCEL_QUEUE_TASKS_DEFAULT, | |
| DEEPY_AUTO_CANCEL_QUEUE_TASKS_KEY, | |
| DEEPY_DEFAULT_EDIT_IMAGE, | |
| DEEPY_DEFAULT_GEN_IMAGE, | |
| DEEPY_DEFAULT_GEN_VIDEO, | |
| DEEPY_TOOL_EDIT_IMAGE_KEY, | |
| DEEPY_TOOL_GEN_IMAGE_KEY, | |
| DEEPY_TOOL_GEN_SPEECH_FROM_DESCRIPTION_KEY, | |
| DEEPY_TOOL_GEN_SPEECH_FROM_SAMPLE_KEY, | |
| DEEPY_TOOL_GEN_VIDEO_KEY, | |
| DEEPY_TOOL_GEN_VIDEO_WITH_SPEECH_KEY, | |
| get_deepy_config_value, | |
| normalize_deepy_auto_cancel_queue_tasks, | |
| ) | |
| from shared.deepy import tool_settings as deepy_tool_settings | |
| ASSISTANT_OVERRIDE_DIMENSION_MIN = 256 | |
| ASSISTANT_OVERRIDE_DIMENSION_MAX = 1920 | |
| ASSISTANT_OVERRIDE_DIMENSION_STEP = 16 | |
| ASSISTANT_OVERRIDE_WIDTH_DEFAULT = 1280 | |
| ASSISTANT_OVERRIDE_HEIGHT_DEFAULT = 720 | |
| ASSISTANT_OVERRIDE_FRAMES_MIN = 5 | |
| ASSISTANT_OVERRIDE_FRAMES_MAX = 768 | |
| ASSISTANT_OVERRIDE_FRAMES_DEFAULT = 81 | |
| ASSISTANT_OVERRIDE_SEED_DEFAULT = -1 | |
| ASSISTANT_USE_TEMPLATE_PROPERTIES_KEY = "deepy_use_template_properties" | |
| ASSISTANT_OVERRIDE_WIDTH_KEY = "deepy_width" | |
| ASSISTANT_OVERRIDE_HEIGHT_KEY = "deepy_height" | |
| ASSISTANT_OVERRIDE_NUM_FRAMES_KEY = "deepy_num_frames" | |
| ASSISTANT_OVERRIDE_SEED_KEY = "deepy_seed" | |
| def _clamp_int(value: Any, default: int, minimum: int, maximum: int, step: int = 1) -> int: | |
| try: | |
| number = int(round(float(value))) | |
| except Exception: | |
| number = int(default) | |
| number = max(minimum, min(maximum, number)) | |
| if step > 1: | |
| number = minimum + int(round((number - minimum) / step)) * step | |
| number = max(minimum, min(maximum, number)) | |
| return int(number) | |
| def _normalize_bool(value: Any) -> bool: | |
| if isinstance(value, str): | |
| text = value.strip().lower() | |
| if text in {"", "0", "false", "off", "no"}: | |
| return False | |
| if text in {"1", "true", "on", "yes"}: | |
| return True | |
| return bool(value) | |
| def normalize_assistant_use_template_properties(value: Any) -> bool: | |
| return _normalize_bool(value) | |
| def normalize_assistant_override_width(value: Any) -> int: | |
| return _clamp_int(value, ASSISTANT_OVERRIDE_WIDTH_DEFAULT, ASSISTANT_OVERRIDE_DIMENSION_MIN, ASSISTANT_OVERRIDE_DIMENSION_MAX, ASSISTANT_OVERRIDE_DIMENSION_STEP) | |
| def normalize_assistant_override_height(value: Any) -> int: | |
| return _clamp_int(value, ASSISTANT_OVERRIDE_HEIGHT_DEFAULT, ASSISTANT_OVERRIDE_DIMENSION_MIN, ASSISTANT_OVERRIDE_DIMENSION_MAX, ASSISTANT_OVERRIDE_DIMENSION_STEP) | |
| def normalize_assistant_override_num_frames(value: Any) -> int: | |
| return _clamp_int(value, ASSISTANT_OVERRIDE_FRAMES_DEFAULT, ASSISTANT_OVERRIDE_FRAMES_MIN, ASSISTANT_OVERRIDE_FRAMES_MAX, 1) | |
| def normalize_assistant_override_seed(value: Any) -> int: | |
| return _clamp_int(value, ASSISTANT_OVERRIDE_SEED_DEFAULT, -1, 999999999, 1) | |
| def get_persisted_assistant_tool_ui_settings(server_config: dict[str, Any] | None = None) -> dict[str, Any]: | |
| source = server_config if isinstance(server_config, dict) else {} | |
| return normalize_assistant_tool_ui_settings( | |
| auto_cancel_queue_tasks=source.get(DEEPY_AUTO_CANCEL_QUEUE_TASKS_KEY, get_deepy_config_value(DEEPY_AUTO_CANCEL_QUEUE_TASKS_KEY, DEEPY_AUTO_CANCEL_QUEUE_TASKS_DEFAULT)), | |
| use_template_properties=source.get(ASSISTANT_USE_TEMPLATE_PROPERTIES_KEY, get_deepy_config_value(ASSISTANT_USE_TEMPLATE_PROPERTIES_KEY, True)), | |
| width=source.get(ASSISTANT_OVERRIDE_WIDTH_KEY, get_deepy_config_value(ASSISTANT_OVERRIDE_WIDTH_KEY, ASSISTANT_OVERRIDE_WIDTH_DEFAULT)), | |
| height=source.get(ASSISTANT_OVERRIDE_HEIGHT_KEY, get_deepy_config_value(ASSISTANT_OVERRIDE_HEIGHT_KEY, ASSISTANT_OVERRIDE_HEIGHT_DEFAULT)), | |
| num_frames=source.get(ASSISTANT_OVERRIDE_NUM_FRAMES_KEY, get_deepy_config_value(ASSISTANT_OVERRIDE_NUM_FRAMES_KEY, ASSISTANT_OVERRIDE_FRAMES_DEFAULT)), | |
| seed=source.get(ASSISTANT_OVERRIDE_SEED_KEY, get_deepy_config_value(ASSISTANT_OVERRIDE_SEED_KEY, ASSISTANT_OVERRIDE_SEED_DEFAULT)), | |
| video_with_speech_variant=source.get(DEEPY_TOOL_GEN_VIDEO_WITH_SPEECH_KEY, get_deepy_config_value(DEEPY_TOOL_GEN_VIDEO_WITH_SPEECH_KEY, deepy_tool_settings.get_default_video_with_speech_variant())), | |
| image_generator_variant=source.get(DEEPY_TOOL_GEN_IMAGE_KEY, get_deepy_config_value(DEEPY_TOOL_GEN_IMAGE_KEY, DEEPY_DEFAULT_GEN_IMAGE)), | |
| image_editor_variant=source.get(DEEPY_TOOL_EDIT_IMAGE_KEY, get_deepy_config_value(DEEPY_TOOL_EDIT_IMAGE_KEY, DEEPY_DEFAULT_EDIT_IMAGE)), | |
| video_generator_variant=source.get(DEEPY_TOOL_GEN_VIDEO_KEY, get_deepy_config_value(DEEPY_TOOL_GEN_VIDEO_KEY, DEEPY_DEFAULT_GEN_VIDEO)), | |
| speech_from_description_variant=source.get(DEEPY_TOOL_GEN_SPEECH_FROM_DESCRIPTION_KEY, get_deepy_config_value(DEEPY_TOOL_GEN_SPEECH_FROM_DESCRIPTION_KEY, deepy_tool_settings.get_default_speech_from_description_variant())), | |
| speech_from_sample_variant=source.get(DEEPY_TOOL_GEN_SPEECH_FROM_SAMPLE_KEY, get_deepy_config_value(DEEPY_TOOL_GEN_SPEECH_FROM_SAMPLE_KEY, deepy_tool_settings.get_default_speech_from_sample_variant())), | |
| ) | |
| def store_assistant_tool_ui_settings(server_config: dict[str, Any] | None, settings: dict[str, Any] | None) -> bool: | |
| if not isinstance(server_config, dict): | |
| return False | |
| normalized = normalize_assistant_tool_ui_settings(**dict(settings or {})) | |
| changed = False | |
| updates = { | |
| DEEPY_AUTO_CANCEL_QUEUE_TASKS_KEY: normalized["auto_cancel_queue_tasks"], | |
| ASSISTANT_USE_TEMPLATE_PROPERTIES_KEY: normalized["use_template_properties"], | |
| ASSISTANT_OVERRIDE_WIDTH_KEY: normalized["width"], | |
| ASSISTANT_OVERRIDE_HEIGHT_KEY: normalized["height"], | |
| ASSISTANT_OVERRIDE_NUM_FRAMES_KEY: normalized["num_frames"], | |
| ASSISTANT_OVERRIDE_SEED_KEY: normalized["seed"], | |
| DEEPY_TOOL_GEN_VIDEO_WITH_SPEECH_KEY: normalized["video_with_speech_variant"], | |
| DEEPY_TOOL_GEN_IMAGE_KEY: normalized["image_generator_variant"], | |
| DEEPY_TOOL_EDIT_IMAGE_KEY: normalized["image_editor_variant"], | |
| DEEPY_TOOL_GEN_VIDEO_KEY: normalized["video_generator_variant"], | |
| DEEPY_TOOL_GEN_SPEECH_FROM_DESCRIPTION_KEY: normalized["speech_from_description_variant"], | |
| DEEPY_TOOL_GEN_SPEECH_FROM_SAMPLE_KEY: normalized["speech_from_sample_variant"], | |
| } | |
| for key, value in updates.items(): | |
| if server_config.get(key) == value: | |
| continue | |
| server_config[key] = value | |
| changed = True | |
| return changed | |
| def get_template_selector_state() -> dict[str, Any]: | |
| persisted = get_persisted_assistant_tool_ui_settings() | |
| return { | |
| "image_generator_choices": deepy_tool_settings.list_tool_variant_choices("gen_image", current_variant=persisted["image_generator_variant"]), | |
| "selected_image_generator": persisted["image_generator_variant"], | |
| "image_editor_choices": deepy_tool_settings.list_tool_variant_choices("edit_image", current_variant=persisted["image_editor_variant"]), | |
| "selected_image_editor": persisted["image_editor_variant"], | |
| "video_generator_choices": deepy_tool_settings.list_tool_variant_choices("gen_video", current_variant=persisted["video_generator_variant"]), | |
| "selected_video_generator": persisted["video_generator_variant"], | |
| "video_with_speech_choices": deepy_tool_settings.list_tool_variant_choices("gen_video_with_speech", current_variant=persisted["video_with_speech_variant"]), | |
| "selected_video_with_speech": persisted["video_with_speech_variant"], | |
| "speech_from_description_choices": deepy_tool_settings.list_tool_variant_choices("gen_speech_from_description", current_variant=persisted["speech_from_description_variant"]), | |
| "selected_speech_from_description": persisted["speech_from_description_variant"], | |
| "speech_from_sample_choices": deepy_tool_settings.list_tool_variant_choices("gen_speech_from_sample", current_variant=persisted["speech_from_sample_variant"]), | |
| "selected_speech_from_sample": persisted["speech_from_sample_variant"], | |
| } | |
| def refresh_template_selector_state(current_image_generator: Any, current_image_editor: Any, current_video_generator: Any, current_video_with_speech: Any, current_speech_from_description: Any, current_speech_from_sample: Any) -> dict[str, Any]: | |
| deepy_tool_settings.refresh_tool_presets() | |
| return { | |
| "image_generator_choices": deepy_tool_settings.list_tool_variant_choices("gen_image", current_variant=current_image_generator), | |
| "selected_image_generator": deepy_tool_settings.find_tool_variant("gen_image", current_image_generator), | |
| "image_editor_choices": deepy_tool_settings.list_tool_variant_choices("edit_image", current_variant=current_image_editor), | |
| "selected_image_editor": deepy_tool_settings.find_tool_variant("edit_image", current_image_editor), | |
| "video_generator_choices": deepy_tool_settings.list_tool_variant_choices("gen_video", current_variant=current_video_generator), | |
| "selected_video_generator": deepy_tool_settings.find_tool_variant("gen_video", current_video_generator), | |
| "video_with_speech_choices": deepy_tool_settings.list_tool_variant_choices("gen_video_with_speech", current_variant=current_video_with_speech), | |
| "selected_video_with_speech": deepy_tool_settings.find_tool_variant("gen_video_with_speech", current_video_with_speech), | |
| "speech_from_description_choices": deepy_tool_settings.list_tool_variant_choices("gen_speech_from_description", current_variant=current_speech_from_description), | |
| "selected_speech_from_description": deepy_tool_settings.find_tool_variant("gen_speech_from_description", current_speech_from_description), | |
| "speech_from_sample_choices": deepy_tool_settings.list_tool_variant_choices("gen_speech_from_sample", current_variant=current_speech_from_sample), | |
| "selected_speech_from_sample": deepy_tool_settings.find_tool_variant("gen_speech_from_sample", current_speech_from_sample), | |
| } | |
| def normalize_assistant_tool_ui_settings( | |
| *, | |
| auto_cancel_queue_tasks: Any = None, | |
| use_template_properties: Any = None, | |
| priority: Any = None, | |
| width: Any = None, | |
| height: Any = None, | |
| num_frames: Any = None, | |
| seed: Any = None, | |
| video_with_speech_variant: Any = None, | |
| image_generator_variant: Any = None, | |
| image_editor_variant: Any = None, | |
| video_generator_variant: Any = None, | |
| speech_from_description_variant: Any = None, | |
| speech_from_sample_variant: Any = None, | |
| ) -> dict[str, Any]: | |
| return { | |
| "auto_cancel_queue_tasks": normalize_deepy_auto_cancel_queue_tasks(get_deepy_config_value(DEEPY_AUTO_CANCEL_QUEUE_TASKS_KEY, DEEPY_AUTO_CANCEL_QUEUE_TASKS_DEFAULT) if auto_cancel_queue_tasks is None else auto_cancel_queue_tasks), | |
| "use_template_properties": normalize_assistant_use_template_properties(get_deepy_config_value(ASSISTANT_USE_TEMPLATE_PROPERTIES_KEY, True) if use_template_properties is None else use_template_properties), | |
| "width": normalize_assistant_override_width(get_deepy_config_value(ASSISTANT_OVERRIDE_WIDTH_KEY, ASSISTANT_OVERRIDE_WIDTH_DEFAULT) if width is None else width), | |
| "height": normalize_assistant_override_height(get_deepy_config_value(ASSISTANT_OVERRIDE_HEIGHT_KEY, ASSISTANT_OVERRIDE_HEIGHT_DEFAULT) if height is None else height), | |
| "num_frames": normalize_assistant_override_num_frames(get_deepy_config_value(ASSISTANT_OVERRIDE_NUM_FRAMES_KEY, ASSISTANT_OVERRIDE_FRAMES_DEFAULT) if num_frames is None else num_frames), | |
| "seed": normalize_assistant_override_seed(get_deepy_config_value(ASSISTANT_OVERRIDE_SEED_KEY, ASSISTANT_OVERRIDE_SEED_DEFAULT) if seed is None else seed), | |
| "video_with_speech_variant": deepy_tool_settings.resolve_tool_variant("gen_video_with_speech", get_deepy_config_value(DEEPY_TOOL_GEN_VIDEO_WITH_SPEECH_KEY, deepy_tool_settings.get_default_video_with_speech_variant()) if video_with_speech_variant is None else video_with_speech_variant, default_variant=deepy_tool_settings.get_default_video_with_speech_variant()), | |
| "image_generator_variant": deepy_tool_settings.resolve_tool_variant("gen_image", get_deepy_config_value(DEEPY_TOOL_GEN_IMAGE_KEY, DEEPY_DEFAULT_GEN_IMAGE) if image_generator_variant is None else image_generator_variant, default_variant=DEEPY_DEFAULT_GEN_IMAGE), | |
| "image_editor_variant": deepy_tool_settings.resolve_tool_variant("edit_image", get_deepy_config_value(DEEPY_TOOL_EDIT_IMAGE_KEY, DEEPY_DEFAULT_EDIT_IMAGE) if image_editor_variant is None else image_editor_variant, default_variant=DEEPY_DEFAULT_EDIT_IMAGE), | |
| "video_generator_variant": deepy_tool_settings.resolve_tool_variant("gen_video", get_deepy_config_value(DEEPY_TOOL_GEN_VIDEO_KEY, DEEPY_DEFAULT_GEN_VIDEO) if video_generator_variant is None else video_generator_variant, default_variant=DEEPY_DEFAULT_GEN_VIDEO), | |
| "speech_from_description_variant": deepy_tool_settings.resolve_tool_variant("gen_speech_from_description", get_deepy_config_value(DEEPY_TOOL_GEN_SPEECH_FROM_DESCRIPTION_KEY, deepy_tool_settings.get_default_speech_from_description_variant()) if speech_from_description_variant is None else speech_from_description_variant, default_variant=deepy_tool_settings.get_default_speech_from_description_variant()), | |
| "speech_from_sample_variant": deepy_tool_settings.resolve_tool_variant("gen_speech_from_sample", get_deepy_config_value(DEEPY_TOOL_GEN_SPEECH_FROM_SAMPLE_KEY, deepy_tool_settings.get_default_speech_from_sample_variant()) if speech_from_sample_variant is None else speech_from_sample_variant, default_variant=deepy_tool_settings.get_default_speech_from_sample_variant()), | |
| } | |
| __all__ = [ | |
| "ASSISTANT_OVERRIDE_DIMENSION_MAX", | |
| "ASSISTANT_OVERRIDE_DIMENSION_MIN", | |
| "ASSISTANT_OVERRIDE_DIMENSION_STEP", | |
| "ASSISTANT_OVERRIDE_FRAMES_DEFAULT", | |
| "ASSISTANT_OVERRIDE_FRAMES_MAX", | |
| "ASSISTANT_OVERRIDE_FRAMES_MIN", | |
| "ASSISTANT_OVERRIDE_HEIGHT_DEFAULT", | |
| "ASSISTANT_OVERRIDE_HEIGHT_KEY", | |
| "ASSISTANT_OVERRIDE_NUM_FRAMES_KEY", | |
| "ASSISTANT_OVERRIDE_SEED_DEFAULT", | |
| "ASSISTANT_OVERRIDE_SEED_KEY", | |
| "ASSISTANT_OVERRIDE_WIDTH_DEFAULT", | |
| "ASSISTANT_OVERRIDE_WIDTH_KEY", | |
| "ASSISTANT_USE_TEMPLATE_PROPERTIES_KEY", | |
| "get_persisted_assistant_tool_ui_settings", | |
| "store_assistant_tool_ui_settings", | |
| "get_template_selector_state", | |
| "normalize_assistant_override_height", | |
| "normalize_assistant_override_num_frames", | |
| "normalize_assistant_override_seed", | |
| "normalize_assistant_override_width", | |
| "normalize_assistant_tool_ui_settings", | |
| "normalize_assistant_use_template_properties", | |
| "refresh_template_selector_state", | |
| ] | |