Normalize built-in row subject metadata
This commit is contained in:
@@ -571,7 +571,17 @@ def _fixture_hardcore_row(**overrides: Any) -> dict[str, Any]:
|
||||
def smoke_builtin_single() -> None:
|
||||
row = _prompt_row(name="builtin_single_woman", category="woman", subcategory="random", seed=1001, men_count=0)
|
||||
_expect(row.get("source") == "built_in_generator", "builtin row should come from built-in generator")
|
||||
_expect(row.get("subject_type") == "woman", "builtin single row lost normalized subject_type")
|
||||
_expect(row.get("subject_phrase") == "woman", "builtin single row lost normalized subject_phrase")
|
||||
_expect(row.get("women_count") == 1 and row.get("men_count") == 0, "builtin single row lost normalized cast counts")
|
||||
_expect(row.get("person_count") == 1, "builtin single row lost normalized person count")
|
||||
_expect("cast_summary" not in row, "builtin single row should not masquerade as configured cast")
|
||||
_expect_trigger_once("builtin_single_woman.prompt", row.get("prompt"), Trigger)
|
||||
sdxl = sdxl_formatter.format_sdxl_prompt("", metadata_json=_json(row), target="single", trigger=SdxlTrigger, prepend_trigger=True)
|
||||
_expect("1woman" in str(sdxl.get("sdxl_prompt", "")).lower(), "builtin single SDXL route lost normalized woman count")
|
||||
caption, caption_method = caption_naturalizer.naturalize_caption("", metadata_json=_json(row), target="single", trigger=Trigger, include_trigger=True)
|
||||
_expect(caption_method.endswith("metadata(single)"), "builtin single caption route did not use single metadata branch")
|
||||
_expect("woman" in caption.lower(), "builtin single caption route lost normalized subject")
|
||||
_expect_formatter_outputs(row, "builtin_single_woman", target="single")
|
||||
|
||||
|
||||
@@ -2800,6 +2810,51 @@ def smoke_row_normalization_policy() -> None:
|
||||
_expect(row.get("trigger") == Trigger, "Row normalization lost active trigger")
|
||||
_expect_no_duplicate_comma_items("row_normalization.negative", row.get("negative_prompt"))
|
||||
|
||||
legacy_couple = row_normalization.normalize_prompt_row(
|
||||
{
|
||||
"source": "built_in_generator",
|
||||
"primary_subject": "two women",
|
||||
"prompt": "Two adults in a clean legacy prompt.",
|
||||
"caption": "legacy couple caption",
|
||||
"negative_prompt": "bad anatomy",
|
||||
},
|
||||
active_trigger=Trigger,
|
||||
prepend_trigger_to_prompt=False,
|
||||
)
|
||||
_expect(legacy_couple.get("subject_type") == "couple", "Legacy couple row lost normalized subject_type")
|
||||
_expect(legacy_couple.get("women_count") == 2 and legacy_couple.get("men_count") == 0, "Legacy couple row lost normalized counts")
|
||||
_expect(legacy_couple.get("person_count") == 2, "Legacy couple row lost normalized person count")
|
||||
_expect("cast_summary" not in legacy_couple, "Legacy couple row should not gain configured-cast summary")
|
||||
|
||||
legacy_group = row_normalization.normalize_prompt_row(
|
||||
{
|
||||
"source": "built_in_generator",
|
||||
"primary_subject": "mixed adult group",
|
||||
"prompt": "Group legacy prompt.",
|
||||
"caption": "legacy group caption",
|
||||
"negative_prompt": "bad anatomy",
|
||||
},
|
||||
active_trigger=Trigger,
|
||||
prepend_trigger_to_prompt=False,
|
||||
)
|
||||
_expect(legacy_group.get("subject_type") == "group", "Legacy group row lost normalized subject_type")
|
||||
_expect(legacy_group.get("women_count") == 2 and legacy_group.get("men_count") == 2, "Legacy group row lost fallback counts")
|
||||
_expect(legacy_group.get("person_count") == 4, "Legacy group row lost normalized person count")
|
||||
|
||||
legacy_layout = row_normalization.normalize_prompt_row(
|
||||
{
|
||||
"source": "built_in_generator",
|
||||
"primary_subject": "layout scene",
|
||||
"prompt": "Layout legacy prompt.",
|
||||
"caption": "legacy layout caption",
|
||||
"negative_prompt": "bad anatomy",
|
||||
},
|
||||
active_trigger=Trigger,
|
||||
prepend_trigger_to_prompt=False,
|
||||
)
|
||||
_expect(legacy_layout.get("subject_type") == "layout", "Legacy layout row lost normalized subject_type")
|
||||
_expect("women_count" not in legacy_layout and "men_count" not in legacy_layout, "Legacy layout row should not invent cast counts")
|
||||
|
||||
outputs = row_normalization.normalize_pair_text_outputs(
|
||||
active_trigger=Trigger,
|
||||
prepend_trigger_to_prompt=True,
|
||||
|
||||
Reference in New Issue
Block a user