Add typed pair route contracts
This commit is contained in:
+94
-18
@@ -1,5 +1,6 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
from typing import Any, Callable
|
||||
|
||||
|
||||
@@ -23,7 +24,43 @@ def camera_config_with_detail(
|
||||
return camera_config
|
||||
|
||||
|
||||
def resolve_insta_pair_camera(
|
||||
@dataclass(frozen=True)
|
||||
class InstaPairCameraRoute:
|
||||
soft_row: dict[str, Any]
|
||||
hard_row: dict[str, Any]
|
||||
hard_scene: str
|
||||
hard_composition: str
|
||||
soft_camera_config: dict[str, Any]
|
||||
hard_camera_config: dict[str, Any]
|
||||
soft_camera_directive: str
|
||||
hard_camera_directive: str
|
||||
soft_camera_scene_directive: str
|
||||
hard_camera_scene_directive: str
|
||||
soft_camera_scene_sentence: str
|
||||
hard_camera_scene_sentence: str
|
||||
soft_camera_sentence: str
|
||||
hard_camera_sentence: str
|
||||
|
||||
def as_dict(self) -> dict[str, Any]:
|
||||
return {
|
||||
"soft_row": self.soft_row,
|
||||
"hard_row": self.hard_row,
|
||||
"hard_scene": self.hard_scene,
|
||||
"hard_composition": self.hard_composition,
|
||||
"soft_camera_config": dict(self.soft_camera_config),
|
||||
"hard_camera_config": dict(self.hard_camera_config),
|
||||
"soft_camera_directive": self.soft_camera_directive,
|
||||
"hard_camera_directive": self.hard_camera_directive,
|
||||
"soft_camera_scene_directive": self.soft_camera_scene_directive,
|
||||
"hard_camera_scene_directive": self.hard_camera_scene_directive,
|
||||
"soft_camera_scene_sentence": self.soft_camera_scene_sentence,
|
||||
"hard_camera_scene_sentence": self.hard_camera_scene_sentence,
|
||||
"soft_camera_sentence": self.soft_camera_sentence,
|
||||
"hard_camera_sentence": self.hard_camera_sentence,
|
||||
}
|
||||
|
||||
|
||||
def resolve_insta_pair_camera_result(
|
||||
*,
|
||||
soft_row: dict[str, Any],
|
||||
hard_row: dict[str, Any],
|
||||
@@ -41,7 +78,7 @@ def resolve_insta_pair_camera(
|
||||
contextual_composition_prompt: CompositionPrompt,
|
||||
composition_prompt: Callable[[Any], str],
|
||||
camera_scene_directive_for_context: CameraSceneDirective,
|
||||
) -> dict[str, Any]:
|
||||
) -> InstaPairCameraRoute:
|
||||
hard_camera_mode = str(options["hardcore_camera_mode"])
|
||||
soft_camera_source = softcore_camera_config or camera_config
|
||||
hard_camera_source = hardcore_camera_config or camera_config
|
||||
@@ -108,19 +145,58 @@ def resolve_insta_pair_camera(
|
||||
hard_row["camera_directive"] = hard_camera_directive
|
||||
hard_row["camera_scene_directive"] = hard_camera_scene_directive
|
||||
|
||||
return {
|
||||
"soft_row": soft_row,
|
||||
"hard_row": hard_row,
|
||||
"hard_scene": hard_scene,
|
||||
"hard_composition": hard_composition,
|
||||
"soft_camera_config": soft_camera_config_dict,
|
||||
"hard_camera_config": hard_camera_config_dict,
|
||||
"soft_camera_directive": soft_camera_directive,
|
||||
"hard_camera_directive": hard_camera_directive,
|
||||
"soft_camera_scene_directive": soft_camera_scene_directive,
|
||||
"hard_camera_scene_directive": hard_camera_scene_directive,
|
||||
"soft_camera_scene_sentence": f"{soft_camera_scene_directive} " if soft_camera_scene_directive else "",
|
||||
"hard_camera_scene_sentence": f"{hard_camera_scene_directive} " if hard_camera_scene_directive else "",
|
||||
"soft_camera_sentence": f"Camera control: {soft_camera_directive} " if soft_camera_directive else "",
|
||||
"hard_camera_sentence": f"Camera control: {hard_camera_directive} " if hard_camera_directive else "",
|
||||
}
|
||||
return InstaPairCameraRoute(
|
||||
soft_row=soft_row,
|
||||
hard_row=hard_row,
|
||||
hard_scene=hard_scene,
|
||||
hard_composition=hard_composition,
|
||||
soft_camera_config=soft_camera_config_dict,
|
||||
hard_camera_config=hard_camera_config_dict,
|
||||
soft_camera_directive=soft_camera_directive,
|
||||
hard_camera_directive=hard_camera_directive,
|
||||
soft_camera_scene_directive=soft_camera_scene_directive,
|
||||
hard_camera_scene_directive=hard_camera_scene_directive,
|
||||
soft_camera_scene_sentence=f"{soft_camera_scene_directive} " if soft_camera_scene_directive else "",
|
||||
hard_camera_scene_sentence=f"{hard_camera_scene_directive} " if hard_camera_scene_directive else "",
|
||||
soft_camera_sentence=f"Camera control: {soft_camera_directive} " if soft_camera_directive else "",
|
||||
hard_camera_sentence=f"Camera control: {hard_camera_directive} " if hard_camera_directive else "",
|
||||
)
|
||||
|
||||
|
||||
def resolve_insta_pair_camera(
|
||||
*,
|
||||
soft_row: dict[str, Any],
|
||||
hard_row: dict[str, Any],
|
||||
options: dict[str, Any],
|
||||
camera_config: str | dict[str, Any] | None,
|
||||
softcore_camera_config: str | dict[str, Any] | None,
|
||||
hardcore_camera_config: str | dict[str, Any] | None,
|
||||
hard_women_count: int,
|
||||
hard_men_count: int,
|
||||
pov_character_labels: list[str],
|
||||
camera_detail_choices: list[str] | tuple[str, ...],
|
||||
camera_config_with_mode: CameraConfigWithMode,
|
||||
camera_directive: CameraDirective,
|
||||
apply_contextual_composition: ApplyComposition,
|
||||
contextual_composition_prompt: CompositionPrompt,
|
||||
composition_prompt: Callable[[Any], str],
|
||||
camera_scene_directive_for_context: CameraSceneDirective,
|
||||
) -> dict[str, Any]:
|
||||
return resolve_insta_pair_camera_result(
|
||||
soft_row=soft_row,
|
||||
hard_row=hard_row,
|
||||
options=options,
|
||||
camera_config=camera_config,
|
||||
softcore_camera_config=softcore_camera_config,
|
||||
hardcore_camera_config=hardcore_camera_config,
|
||||
hard_women_count=hard_women_count,
|
||||
hard_men_count=hard_men_count,
|
||||
pov_character_labels=pov_character_labels,
|
||||
camera_detail_choices=camera_detail_choices,
|
||||
camera_config_with_mode=camera_config_with_mode,
|
||||
camera_directive=camera_directive,
|
||||
apply_contextual_composition=apply_contextual_composition,
|
||||
contextual_composition_prompt=contextual_composition_prompt,
|
||||
composition_prompt=composition_prompt,
|
||||
camera_scene_directive_for_context=camera_scene_directive_for_context,
|
||||
).as_dict()
|
||||
|
||||
Reference in New Issue
Block a user