Cover builder prompt route branches

This commit is contained in:
2026-06-27 12:34:45 +02:00
parent 9a2e5db041
commit 05c84c6b83
+93 -26
View File
@@ -610,6 +610,40 @@ def smoke_config_route_location_theme() -> None:
def smoke_builder_prompt_route_policy() -> None: def smoke_builder_prompt_route_policy() -> None:
def legacy_from_request(request: builder_prompt_route.PromptBuildRequest) -> dict[str, Any]:
return pb.build_prompt(
category=request.category,
subcategory=request.subcategory,
row_number=request.row_number,
start_index=request.start_index,
seed=request.seed,
clothing=request.clothing,
ethnicity=request.ethnicity,
poses=request.poses,
backside_bias=request.backside_bias,
figure=request.figure,
no_plus_women=request.no_plus_women,
no_black=request.no_black,
minimal_clothing_ratio=request.minimal_clothing_ratio,
standard_pose_ratio=request.standard_pose_ratio,
trigger=request.trigger,
prepend_trigger_to_prompt=request.prepend_trigger_to_prompt,
extra_positive=request.extra_positive,
extra_negative=request.extra_negative,
seed_config=request.seed_config,
women_count=request.women_count,
men_count=request.men_count,
camera_config=request.camera_config,
expression_intensity=request.expression_intensity,
character_profile=request.character_profile,
character_cast=request.character_cast,
expression_enabled=request.expression_enabled,
expression_phase=request.expression_phase,
hardcore_position_config=request.hardcore_position_config,
location_config=request.location_config,
composition_config=request.composition_config,
)
seed_config_json = pb.build_seed_lock_config_json(base_seed=3501, reroll_axis="content", reroll_seed=3502) seed_config_json = pb.build_seed_lock_config_json(base_seed=3501, reroll_axis="content", reroll_seed=3502)
request = builder_prompt_route.PromptBuildRequest( request = builder_prompt_route.PromptBuildRequest(
category="Casual clothes", category="Casual clothes",
@@ -638,32 +672,7 @@ def smoke_builder_prompt_route_policy() -> None:
expression_enabled=True, expression_enabled=True,
) )
typed_route = builder_prompt_route.build_prompt_result(request, pb._prompt_build_dependencies()) typed_route = builder_prompt_route.build_prompt_result(request, pb._prompt_build_dependencies())
legacy_row = pb.build_prompt( legacy_row = legacy_from_request(request)
category=request.category,
subcategory=request.subcategory,
row_number=request.row_number,
start_index=request.start_index,
seed=request.seed,
clothing=request.clothing,
ethnicity=request.ethnicity,
poses=request.poses,
backside_bias=request.backside_bias,
figure=request.figure,
no_plus_women=request.no_plus_women,
no_black=request.no_black,
minimal_clothing_ratio=request.minimal_clothing_ratio,
standard_pose_ratio=request.standard_pose_ratio,
trigger=request.trigger,
prepend_trigger_to_prompt=request.prepend_trigger_to_prompt,
extra_positive=request.extra_positive,
extra_negative=request.extra_negative,
seed_config=request.seed_config,
women_count=request.women_count,
men_count=request.men_count,
camera_config=request.camera_config,
expression_intensity=request.expression_intensity,
expression_enabled=request.expression_enabled,
)
_expect(typed_route.row == legacy_row, "Typed builder prompt route should match public wrapper output") _expect(typed_route.row == legacy_row, "Typed builder prompt route should match public wrapper output")
_expect(typed_route.category == "Casual clothes", "Builder prompt route changed category") _expect(typed_route.category == "Casual clothes", "Builder prompt route changed category")
_expect(typed_route.subcategory == "Casual clothes / Smart casual", "Builder prompt route changed subcategory") _expect(typed_route.subcategory == "Casual clothes / Smart casual", "Builder prompt route changed subcategory")
@@ -677,6 +686,64 @@ def smoke_builder_prompt_route_policy() -> None:
) )
_expect_trigger_once("builder_prompt_route_policy.prompt", typed_route.row.get("prompt"), "sxcpinup_coloredpencil") _expect_trigger_once("builder_prompt_route_policy.prompt", typed_route.row.get("prompt"), "sxcpinup_coloredpencil")
built_in_request = builder_prompt_route.PromptBuildRequest(
category="woman",
subcategory="random",
row_number=1,
start_index=1,
seed=3503,
clothing="full",
ethnicity="any",
poses="standard",
backside_bias=0.0,
figure="curvy",
no_plus_women=False,
no_black=False,
minimal_clothing_ratio=0.0,
standard_pose_ratio=1.0,
trigger=Trigger,
prepend_trigger_to_prompt=True,
extra_positive="built-in route marker",
extra_negative="built-in route negative",
expression_intensity=0.5,
expression_enabled=False,
)
built_in_route = builder_prompt_route.build_prompt_result(built_in_request, pb._prompt_build_dependencies())
_expect(built_in_route.row == legacy_from_request(built_in_request), "Builder built-in route should match public wrapper")
_expect(built_in_route.branch == "built_in", "Builder prompt route lost built-in branch")
_expect(built_in_route.row.get("source") == "built_in_generator", "Builder built-in branch changed source")
_expect(built_in_route.row.get("expression_disabled") is True, "Builder built-in branch lost expression disable")
_expect("built-in route marker" in built_in_route.row.get("prompt", ""), "Builder built-in branch lost extra positive")
auto_weighted_request = builder_prompt_route.PromptBuildRequest(
category="auto_weighted",
subcategory="random",
row_number=2,
start_index=10,
seed=3504,
clothing="random",
ethnicity="any",
poses="random",
backside_bias=0.35,
figure="random",
no_plus_women=False,
no_black=False,
minimal_clothing_ratio=0.4,
standard_pose_ratio=0.6,
trigger=Trigger,
prepend_trigger_to_prompt=True,
extra_positive="auto route marker",
extra_negative="auto route negative",
seed_config=pb.build_seed_lock_config_json(base_seed=3504, reroll_axis="person", reroll_seed=3505),
expression_intensity=0.7,
expression_enabled=True,
)
auto_route = builder_prompt_route.build_prompt_result(auto_weighted_request, pb._prompt_build_dependencies())
_expect(auto_route.row == legacy_from_request(auto_weighted_request), "Builder auto-weighted route should match public wrapper")
_expect(auto_route.branch == "auto_weighted", "Builder prompt route lost auto-weighted branch")
_expect(auto_route.parsed_seed_config.get("person_seed") == 3505, "Builder auto-weighted branch lost person seed lock")
_expect("auto route marker" in auto_route.row.get("prompt", ""), "Builder auto-weighted branch lost extra positive")
def smoke_builder_config_route_policy() -> None: def smoke_builder_config_route_policy() -> None:
category_config = pb.build_category_config_json("women_casual", "Casual clothes / Smart casual") category_config = pb.build_category_config_json("women_casual", "Casual clothes / Smart casual")