feat: opener shows sex only with age or nationality

This commit is contained in:
BRADSEC
2026-06-21 19:49:28 +10:00
parent 8002021987
commit 1db73e408f
2 changed files with 20 additions and 2 deletions
+5 -2
View File
@@ -304,12 +304,15 @@ def build_description(sex, nat, age, skin_texture,
if s:
parts.append(fmt.format(s))
# Opener: "34 year old Brazilian female"
# Opener: "34 year old Brazilian female". Sex is shown only alongside an age
# or nationality, so a face-only fragment does not start with a bare "female".
age_str = f"{age['age']} year old" if age else None
nat_str = nat_text(nat) or None
sex_str = sex if sex else None
opener_parts = [p for p in [age_str, nat_str, sex_str] if p]
opener_parts = [p for p in [age_str, nat_str] if p]
if opener_parts:
if sex_str:
opener_parts.append(sex_str)
parts.append(" ".join(opener_parts))
add(face_shape, "{} face")
+15
View File
@@ -153,6 +153,21 @@ class TestBuildDescription(unittest.TestCase):
s = core.build_description(*args)
self.assertNotIn("eyes eyes", s)
def test_opener_omits_bare_sex(self):
# sex present but no age and no nationality -> no leading "female".
args = [""] + [None] * 17
args[0] = "female" # sex positional slot
args[4] = {"description": "oval"} # face_shape slot -> "oval face"
s = core.build_description(*args)
self.assertTrue(s.startswith("oval face"), s)
self.assertNotIn("female", s)
def test_opener_keeps_sex_with_age(self):
# age + sex -> "<n> year old female ..."
s = core.build_description(
"female", None, {"age": 30}, *( [None] * 15 ))
self.assertIn("year old female", s)
class TestBodyData(unittest.TestCase):