Harden formatter preset normalization

This commit is contained in:
2026-06-27 14:07:38 +02:00
parent c34886b362
commit 0289a94153
3 changed files with 26 additions and 0 deletions
+6
View File
@@ -77,7 +77,12 @@ def normalize_detail_level(value: str) -> str:
return detail_policy.normalize_detail_level(value) return detail_policy.normalize_detail_level(value)
def _choice_key(value: Any) -> str:
return str(value or "").strip().lower().replace("-", "_").replace(" ", "_")
def normalize_style_policy(value: str) -> str: def normalize_style_policy(value: str) -> str:
value = _choice_key(value)
return value if value in STYLE_POLICIES else "drop_style_tail" return value if value in STYLE_POLICIES else "drop_style_tail"
@@ -90,6 +95,7 @@ def caption_profile_choices() -> list[str]:
def normalize_caption_profile(value: str) -> str: def normalize_caption_profile(value: str) -> str:
value = _choice_key(value)
return value if value in CAPTION_PROFILES else CAPTION_PROFILE_DEFAULT return value if value in CAPTION_PROFILES else CAPTION_PROFILE_DEFAULT
+9
View File
@@ -1,5 +1,7 @@
from __future__ import annotations from __future__ import annotations
from typing import Any
DEFAULT_STYLE_PRESET = "flat_vector_pony" DEFAULT_STYLE_PRESET = "flat_vector_pony"
DEFAULT_QUALITY_PRESET = "pony_high" DEFAULT_QUALITY_PRESET = "pony_high"
@@ -79,15 +81,22 @@ def sdxl_formatter_profile_choices() -> list[str]:
return list(SDXL_FORMATTER_PROFILES) return list(SDXL_FORMATTER_PROFILES)
def _choice_key(value: Any) -> str:
return str(value or "").strip().lower().replace("-", "_").replace(" ", "_")
def normalize_style_preset(value: str) -> str: def normalize_style_preset(value: str) -> str:
value = _choice_key(value)
return value if value in SDXL_STYLE_PRESETS else DEFAULT_STYLE_PRESET return value if value in SDXL_STYLE_PRESETS else DEFAULT_STYLE_PRESET
def normalize_quality_preset(value: str) -> str: def normalize_quality_preset(value: str) -> str:
value = _choice_key(value)
return value if value in SDXL_QUALITY_PRESETS else DEFAULT_QUALITY_PRESET return value if value in SDXL_QUALITY_PRESETS else DEFAULT_QUALITY_PRESET
def normalize_formatter_profile(value: str) -> str: def normalize_formatter_profile(value: str) -> str:
value = _choice_key(value)
return value if value in SDXL_FORMATTER_PROFILES else DEFAULT_FORMATTER_PROFILE return value if value in SDXL_FORMATTER_PROFILES else DEFAULT_FORMATTER_PROFILE
+11
View File
@@ -3039,6 +3039,10 @@ def smoke_caption_policy() -> None:
) )
_expect(caption_policy.normalize_detail_level("bad") == "balanced", "Caption invalid detail fallback changed") _expect(caption_policy.normalize_detail_level("bad") == "balanced", "Caption invalid detail fallback changed")
_expect(caption_policy.normalize_style_policy("bad") == "drop_style_tail", "Caption invalid style fallback changed") _expect(caption_policy.normalize_style_policy("bad") == "drop_style_tail", "Caption invalid style fallback changed")
_expect(
caption_policy.normalize_style_policy("Keep Style Terms") == "keep_style_terms",
"Caption style policy should normalize spaces/case",
)
_expect(caption_policy.style_policy_choices() == ["drop_style_tail", "keep_style_terms"], "Caption style policy choices changed") _expect(caption_policy.style_policy_choices() == ["drop_style_tail", "keep_style_terms"], "Caption style policy choices changed")
_expect(caption_policy.keep_style_terms("keep_style_terms") is True, "Caption style policy keep flag changed") _expect(caption_policy.keep_style_terms("keep_style_terms") is True, "Caption style policy keep flag changed")
_expect(caption_policy.detail_allows("concise") is False, "Caption concise detail gate changed") _expect(caption_policy.detail_allows("concise") is False, "Caption concise detail gate changed")
@@ -3048,6 +3052,10 @@ def smoke_caption_policy() -> None:
caption_policy.normalize_caption_profile("bad") == caption_policy.CAPTION_PROFILE_DEFAULT, caption_policy.normalize_caption_profile("bad") == caption_policy.CAPTION_PROFILE_DEFAULT,
"Caption invalid profile fallback changed", "Caption invalid profile fallback changed",
) )
_expect(
caption_policy.normalize_caption_profile("training-dense") == "training_dense",
"Caption profile should normalize hyphen spelling",
)
_expect( _expect(
caption_policy.apply_caption_profile( caption_policy.apply_caption_profile(
"training_dense", "training_dense",
@@ -3381,8 +3389,11 @@ def smoke_sdxl_presets_policy() -> None:
sdxl_presets.normalize_formatter_profile("bad") == sdxl_presets.DEFAULT_FORMATTER_PROFILE, sdxl_presets.normalize_formatter_profile("bad") == sdxl_presets.DEFAULT_FORMATTER_PROFILE,
"SDXL invalid profile fallback changed", "SDXL invalid profile fallback changed",
) )
_expect(sdxl_presets.normalize_formatter_profile("SDXL Photo") == "sdxl_photo", "SDXL profile should normalize spaces/case")
_expect(sdxl_presets.normalize_style_preset("bad") == sdxl_presets.DEFAULT_STYLE_PRESET, "SDXL invalid style fallback changed") _expect(sdxl_presets.normalize_style_preset("bad") == sdxl_presets.DEFAULT_STYLE_PRESET, "SDXL invalid style fallback changed")
_expect(sdxl_presets.normalize_style_preset("flat-vector-pony") == "flat_vector_pony", "SDXL style should normalize hyphens")
_expect(sdxl_presets.normalize_quality_preset("bad") == sdxl_presets.DEFAULT_QUALITY_PRESET, "SDXL invalid quality fallback changed") _expect(sdxl_presets.normalize_quality_preset("bad") == sdxl_presets.DEFAULT_QUALITY_PRESET, "SDXL invalid quality fallback changed")
_expect(sdxl_presets.normalize_quality_preset("Pony High") == "pony_high", "SDXL quality should normalize spaces/case")
_expect( _expect(
sdxl_presets.apply_formatter_profile( sdxl_presets.apply_formatter_profile(
"sdxl_photo", "sdxl_photo",