Extract oral role graph wording
This commit is contained in:
@@ -802,6 +802,89 @@ def smoke_pov_outercourse_position_routes() -> None:
|
||||
_expect(term in prompt, f"{name} Krea prompt missing {term!r}: {prompt}")
|
||||
|
||||
|
||||
def smoke_pov_oral_position_routes() -> None:
|
||||
cases = [
|
||||
(
|
||||
"pov_oral_kneeling",
|
||||
"kneeling",
|
||||
("viewer's penis", "takes the viewer's penis in her mouth"),
|
||||
("takes the viewer's penis in her mouth", "viewer stands over her"),
|
||||
),
|
||||
(
|
||||
"pov_oral_face_sitting",
|
||||
"face_sitting",
|
||||
("straddling the viewer's face", "pussy directly over the viewer's mouth"),
|
||||
("straddling the viewer's face", "tongue contact visible"),
|
||||
),
|
||||
(
|
||||
"pov_oral_sixty_nine",
|
||||
"sixty_nine",
|
||||
("head-to-hips", "viewer's mouth on woman a's pussy"),
|
||||
("head-to-hips", "viewer's mouth on the woman's pussy"),
|
||||
),
|
||||
(
|
||||
"pov_oral_edge_supported",
|
||||
"edge_supported",
|
||||
("raised edge with thighs open", "viewer kneels between her legs"),
|
||||
("raised edge with thighs open", "viewer kneels between her legs"),
|
||||
),
|
||||
(
|
||||
"pov_oral_side_lying",
|
||||
"side_lying",
|
||||
("woman a lies on her side", "viewer lies beside her hips"),
|
||||
("woman lies on her side", "viewer lies beside her hips"),
|
||||
),
|
||||
(
|
||||
"pov_oral_chair",
|
||||
"chair_oral",
|
||||
("viewer sits in a chair", "kneels between his thighs"),
|
||||
("viewer sits in a chair", "kneels between the viewer's thighs"),
|
||||
),
|
||||
]
|
||||
for offset, (name, position_key, role_terms, krea_terms) in enumerate(cases, start=3701):
|
||||
pair = pb.build_insta_of_pair(
|
||||
row_number=1,
|
||||
start_index=1,
|
||||
seed=offset,
|
||||
ethnicity="any",
|
||||
figure="random",
|
||||
no_plus_women=False,
|
||||
no_black=False,
|
||||
trigger=Trigger,
|
||||
prepend_trigger_to_prompt=True,
|
||||
options_json=_insta_options(
|
||||
softcore_camera_mode="from_camera_config",
|
||||
hardcore_camera_mode="from_camera_config",
|
||||
camera_detail="compact",
|
||||
),
|
||||
character_cast=_character_cast(pov_man=True),
|
||||
hardcore_position_config=_position_filter("oral_only", "oral", [position_key]),
|
||||
location_config=_coworking_location_config(),
|
||||
hardcore_camera_config=_orbit_camera(
|
||||
horizontal_angle=45,
|
||||
vertical_angle=0,
|
||||
zoom=7.5,
|
||||
subject_focus="action",
|
||||
),
|
||||
)
|
||||
_expect_pair(pair, name)
|
||||
hard_row = pair.get("hardcore_row") or {}
|
||||
_expect(hard_row.get("action_family") == "oral", f"{name} action_family should be oral")
|
||||
_expect(hard_row.get("position_family") == "oral", f"{name} position_family should be oral")
|
||||
_expect(position_key in (hard_row.get("position_keys") or []), f"{name} lost position key {position_key!r}")
|
||||
role_graph = _expect_text(f"{name}.source_role_graph", hard_row.get("source_role_graph"), 40).lower()
|
||||
for term in role_terms:
|
||||
_expect(term in role_graph, f"{name} role graph missing {term!r}: {role_graph}")
|
||||
krea = krea_formatter.format_krea2_prompt("", metadata_json=_json(pair), target="hardcore")
|
||||
prompt = _expect_text(f"{name}.krea_prompt", krea.get("krea_prompt"), 60).lower()
|
||||
_expect("metadata" in krea.get("method", ""), f"{name}.krea did not use metadata")
|
||||
_expect("viewer" in prompt and "first-person" in prompt, f"{name} Krea prompt lost POV wording")
|
||||
_expect("viewer lies on the viewer" not in prompt, f"{name} Krea prompt kept recursive POV wording: {prompt}")
|
||||
_expect("camera:" not in krea.get("krea_prompt", ""), f"{name} Krea prompt emitted normal third-person camera directive")
|
||||
for term in krea_terms:
|
||||
_expect(term in prompt, f"{name} Krea prompt missing {term!r}: {prompt}")
|
||||
|
||||
|
||||
def smoke_no_expression_fallback() -> None:
|
||||
cast = pb.build_character_slot_json(
|
||||
subject_type="woman",
|
||||
@@ -934,6 +1017,7 @@ SMOKE_CASES: list[tuple[str, Callable[[], None]]] = [
|
||||
("pov_camera_scene", smoke_pov_camera_scene),
|
||||
("krea_pov_penetration_route", smoke_krea_pov_penetration_route),
|
||||
("pov_outercourse_position_routes", smoke_pov_outercourse_position_routes),
|
||||
("pov_oral_position_routes", smoke_pov_oral_position_routes),
|
||||
("expression_disabled", smoke_no_expression_fallback),
|
||||
("formatter_metadata_fixtures", smoke_formatter_metadata_fixtures),
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user