from __future__ import annotations from typing import Any def _context_text(item_text: str, item_axis_values: dict[str, Any] | None) -> str: return " ".join( str(part or "").lower() for part in ( item_text, *((item_axis_values or {}).values()), ) ) def build_outercourse_role_graph( woman: str, man: str, item_text: str, item_axis_values: dict[str, Any] | None = None, pov_labels: list[str] | None = None, ) -> str: position_text = str((item_axis_values or {}).get("position") or "").lower() text = _context_text(item_text, item_axis_values) man_is_pov = man in set(pov_labels or []) if any(term in text for term in ("boobjob", "titjob", "breast-sex", "breast sex")): if man_is_pov: return ( f"{woman} kneels between the POV viewer's open thighs with her torso bent forward over his pelvis and shoulders low, " "both hands lifting and pressing her breasts tightly around the POV viewer's penis shaft while the glans sits just below her lips." ) return ( f"{woman} kneels between {man}'s open thighs with her torso bent forward over his pelvis and shoulders low while {man} sits with legs apart, " f"{woman}'s hands lifting and pressing her breasts tightly around {man}'s penis shaft while the glans sits just below her lips." ) if any(term in text for term in ("testicle", "balls-licking", "balls licking", "balls and mouth", "balls held")): if man_is_pov: return ( f"{woman} kneels very low between the POV viewer's open thighs with her torso bent forward and shoulders between his knees, " "head tucked under the penis shaft at the base of the penis, mouth and tongue on the POV viewer's balls while his penis points upward above her face." ) return ( f"{man} sits with legs apart while {woman} kneels very low between his open thighs with her torso bent forward and shoulders between his knees, " f"head tucked under the penis shaft at the base of his penis, mouth and tongue on his balls while {man}'s penis points upward above her face." ) if "penis-licking" in position_text or "penis licking" in text or "tongue along" in text or "tongue licking" in text: if man_is_pov: return ( f"{woman} bends forward between the POV viewer's open thighs, head low under the POV viewer's penis with her face directly under the penis, " "tongue running along the underside from the penis shaft to the glans while one hand steadies the base of the penis." ) return ( f"{woman} bends forward between {man}'s open thighs, head low under {man}'s penis with her face directly under the penis, " f"tongue running along the underside from the penis shaft to the glans while one hand steadies the base of the penis." ) if "footjob" in text or "soles" in text or "toes curled" in text or "feet stroking" in text: if man_is_pov: return ( f"{woman} faces the POV viewer with her hips back, torso visible behind her raised legs, and both knees bent open toward the camera, " "both soles wrapped around the POV viewer's penis shaft in the lower foreground." ) return ( f"{man} reclines with hips forward while {woman} faces him with her hips back and both knees bent open, " f"wrapping both soles around {man}'s penis shaft while the contact stays centered." ) if "handjob" in position_text or "handjob" in text or "hand job" in text or "hand wrapped" in text: if man_is_pov: return ( f"{woman} kneels between the POV viewer's open thighs with her torso leaning forward and face visible behind the penis shaft, " "one hand wrapped around the POV viewer's penis shaft while the other hand steadies the base of the penis as she strokes toward the glans." ) return ( f"{woman} kneels between {man}'s open thighs with her torso leaning forward and face visible behind the penis shaft, " f"one hand wrapped around {man}'s penis shaft while the other hand steadies the base of the penis as she strokes toward the glans." ) if man_is_pov: return ( f"{woman} kneels close to the POV viewer's hips and keeps the POV viewer's penis centered in clear non-penetrative contact, " "with her mouth, hands, breasts, or feet visibly working around the penis shaft." ) return ( f"{woman} kneels close to {man}'s hips and keeps {man}'s penis centered in clear non-penetrative contact, " "with her mouth, hands, breasts, or feet visibly working around the penis shaft." )