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_penetration_role_graph( woman: str, man: str, item_text: str, item_axis_values: dict[str, Any] | None = None, ) -> str: text = _context_text(item_text, item_axis_values) if "missionary" in text: return ( f"{woman} lies on her back with legs open around {man}'s hips while {man} is above her between her thighs; " f"{man}'s hips press close and {man}'s penis thrusts into her pussy." ) if "reverse cowgirl" in text: return f"{woman} straddles {man}'s hips facing away while {man} lies under her and {man}'s penis thrusts into her pussy." if "cowgirl" in text or "straddling" in text: return f"{woman} straddles {man}'s hips facing him while {man} lies under her and {man}'s penis thrusts into her pussy." if "doggy" in text or "rear-entry" in text or "bent-over" in text or "bent over" in text: return f"{woman} is on all fours with hips raised while {man} is positioned behind her and {man}'s penis thrusts into her pussy." if "standing" in text: return f"{woman} stands braced with hips angled back while {man} stands behind her and {man}'s penis thrusts into her pussy." if "spooning" in text or "side-lying" in text: return f"{woman} lies on her side with thighs parted while {man} presses behind her and {man}'s penis thrusts into her pussy." if "edge-of-bed" in text or "edge of bed" in text or "bed edge" in text or "edge-supported" in text or "raised edge" in text: return ( f"{woman} lies back at a raised edge with hips at the edge and legs open while {man} kneels between her thighs; " f"{man}'s hips press close and {man}'s penis thrusts into her pussy." ) if "kneeling straddle" in text: return f"{woman} kneels straddling {man}'s hips while {man} supports her waist and {man}'s penis thrusts into her pussy." if "lotus" in text: return f"{woman} sits in {man}'s lap facing him with legs around his hips while {man}'s penis thrusts into her pussy." return ( f"{woman} lies on her back with legs spread wide and knees bent outward while {man} kneels between her open thighs facing her; " f"{man}'s hips are pressed between her legs and {man}'s penis thrusts into her pussy." )