Extract Krea row field policy

This commit is contained in:
2026-06-27 11:42:14 +02:00
parent d7caf1c270
commit 8fc3abc504
5 changed files with 153 additions and 50 deletions
+41 -48
View File
@@ -14,6 +14,7 @@ try:
from . import krea_configured_cast_formatter
from . import krea_normal_formatter
from . import krea_pair_formatter
from . import krea_row_fields
from .hardcore_text_cleanup import (
sanitize_hardcore_axis_values as _sanitize_hardcore_axis_values,
sanitize_hardcore_environment_anchors as _sanitize_hardcore_environment_anchors,
@@ -48,6 +49,7 @@ except ImportError: # Allows local smoke tests with `python -c`.
import krea_configured_cast_formatter
import krea_normal_formatter
import krea_pair_formatter
import krea_row_fields
from hardcore_text_cleanup import (
sanitize_hardcore_axis_values as _sanitize_hardcore_axis_values,
sanitize_hardcore_environment_anchors as _sanitize_hardcore_environment_anchors,
@@ -399,6 +401,17 @@ def _style_phrase(row: dict[str, Any], style_mode: str) -> str:
return style or suffix
def _krea_row_field_dependencies() -> krea_row_fields.KreaRowFieldDependencies:
return krea_row_fields.KreaRowFieldDependencies(
clean=_clean,
row_value=_row_value,
camera_phrase=_camera_phrase,
camera_scene_phrase=_camera_scene_phrase,
style_phrase=_style_phrase,
expression_disabled=_expression_disabled,
)
def _krea_normal_row_dependencies() -> krea_normal_formatter.KreaNormalRowDependencies:
return krea_normal_formatter.KreaNormalRowDependencies(
clean=_clean,
@@ -416,33 +429,25 @@ def _krea_normal_row_request_from_row(
detail_level: str,
style_mode: str,
) -> krea_normal_formatter.KreaNormalRowRequest:
subject_type = _clean(row.get("subject_type"))
primary = _clean(row.get("primary_subject"))
item = _row_value(row, "item", ("Sexual pose", "Erotic outfit", "Clothing")) or _clean(row.get("custom_item"))
item = re.sub(r",?\s*(fashion editorial|resort) styling$", "", item, flags=re.IGNORECASE)
scene = _row_value(row, "scene_text", ("Setting", "Scene")) or _clean(row.get("scene"))
pose = _row_value(row, "pose", ("Sexual pose", "Pose"))
expression = ""
if not _expression_disabled(row):
expression = _row_value(row, "character_expression_text") or _row_value(row, "expression", ("Facial expressions", "Facial expression"))
composition = re.sub(r"^vertical\s+", "", _row_value(row, "composition", ("Composition",)), flags=re.IGNORECASE)
camera = _camera_phrase(row)
camera_scene = _camera_scene_phrase(row)
style = _style_phrase(row, style_mode)
fields = krea_row_fields.extract_krea_row_fields(
row,
style_mode,
_krea_row_field_dependencies(),
)
return krea_normal_formatter.KreaNormalRowRequest(
row=row,
detail_level=detail_level,
style_mode=style_mode,
subject_type=subject_type,
primary=primary,
item=item,
scene=scene,
pose=pose,
expression=expression,
composition=composition,
camera=camera,
camera_scene=camera_scene,
style=style,
subject_type=fields.subject_type,
primary=fields.primary,
item=fields.item,
scene=fields.scene,
pose=fields.pose,
expression=fields.expression,
composition=fields.composition,
camera=fields.camera,
camera_scene=fields.camera_scene,
style=fields.style,
)
@@ -505,36 +510,24 @@ def _krea_configured_cast_request_from_row(
detail_level: str,
style_mode: str,
) -> krea_configured_cast_formatter.KreaConfiguredCastRequest:
primary = _clean(row.get("primary_subject"))
item = _row_value(row, "item", ("Sexual pose", "Erotic outfit", "Clothing")) or _clean(row.get("custom_item"))
item = re.sub(r",?\s*(fashion editorial|resort) styling$", "", item, flags=re.IGNORECASE)
scene = _row_value(row, "scene_text", ("Setting", "Scene")) or _clean(row.get("scene"))
expression = ""
if not _expression_disabled(row):
expression = _row_value(row, "character_expression_text") or _row_value(row, "expression", ("Facial expressions", "Facial expression"))
composition = re.sub(r"^vertical\s+", "", _row_value(row, "composition", ("Composition",)), flags=re.IGNORECASE)
source_composition = re.sub(
r"^vertical\s+",
"",
_clean(row.get("source_composition")) or composition,
flags=re.IGNORECASE,
fields = krea_row_fields.extract_krea_row_fields(
row,
style_mode,
_krea_row_field_dependencies(),
)
camera = _camera_phrase(row)
camera_scene = _camera_scene_phrase(row)
style = _style_phrase(row, style_mode)
return _krea_configured_cast_request(
row,
detail_level,
style_mode,
primary,
item,
scene,
expression,
composition,
source_composition,
camera,
camera_scene,
style,
fields.primary,
fields.item,
fields.scene,
fields.expression,
fields.composition,
fields.source_composition,
fields.camera,
fields.camera_scene,
fields.style,
)