Extract character profile policy
This commit is contained in:
@@ -25,6 +25,7 @@ if str(ROOT) not in sys.path:
|
||||
|
||||
import caption_naturalizer # noqa: E402
|
||||
import character_config # noqa: E402
|
||||
import character_profile # noqa: E402
|
||||
import category_cast_config # noqa: E402
|
||||
import category_library # noqa: E402
|
||||
import filter_config # noqa: E402
|
||||
@@ -711,6 +712,64 @@ def smoke_character_config_policy() -> None:
|
||||
_expect(character_config.normalize_slot_seed(0xFFFFFFFF + 99) == 0xFFFFFFFF, "Slot seed clamp changed")
|
||||
|
||||
|
||||
def smoke_character_profile_policy() -> None:
|
||||
_expect(pb.CHARACTER_MANUAL_FIELDS is character_profile.CHARACTER_MANUAL_FIELDS, "Prompt builder manual fields are not delegated")
|
||||
_expect(pb.PROFILE_DIR == character_profile.PROFILE_DIR, "Prompt builder profile dir is not delegated")
|
||||
_expect(pb._body_phrase("curvy", "hourglass figure") == "curvy build and hourglass figure", "Body phrase helper changed")
|
||||
_expect(pb._safe_profile_name("bad name!*") == "bad_name", "Profile name sanitizer changed")
|
||||
|
||||
manual = json.loads(
|
||||
pb.build_character_manual_config_json(
|
||||
combine_mode="merge_nonempty",
|
||||
manual_age="31-year-old adult",
|
||||
body_phrase="custom body",
|
||||
skin="warm skin",
|
||||
softcore_outfit="red dress",
|
||||
)
|
||||
)
|
||||
_expect(manual.get("manual_age") == "31-year-old adult", "Manual config lost age")
|
||||
_expect(manual.get("softcore_outfit") == "red dress", "Manual config lost outfit")
|
||||
_expect("manual_age=31-year-old adult" in manual.get("summary", ""), "Manual config summary changed")
|
||||
|
||||
metadata_row = {
|
||||
"subject_type": "woman",
|
||||
"age": "28-year-old adult",
|
||||
"body": "curvy",
|
||||
"body_phrase": "curvy figure with full hips",
|
||||
"skin": "warm skin",
|
||||
"hair": "long black hair",
|
||||
"eyes": "brown eyes",
|
||||
"figure": "balanced",
|
||||
"descriptor_detail": "medium",
|
||||
}
|
||||
profile_result = character_profile.build_character_profile_json(
|
||||
profile_name="smoke profile",
|
||||
source="metadata_json",
|
||||
metadata_json=metadata_row,
|
||||
)
|
||||
profile = json.loads(profile_result["profile_json"])
|
||||
_expect(profile.get("profile_name") == "smoke_profile", "Profile name normalization changed")
|
||||
_expect(profile.get("age") == "28-year-old adult", "Profile metadata extraction lost age")
|
||||
_expect("long black hair" in profile_result["descriptor"], "Profile descriptor lost hair at medium detail")
|
||||
|
||||
loaded = pb.load_character_profile_json(
|
||||
profile_name="manual",
|
||||
fallback_profile_json=profile_result["profile_json"],
|
||||
override_age="35-year-old adult",
|
||||
override_descriptor_detail="compact",
|
||||
)
|
||||
loaded_profile = json.loads(loaded["profile_json"])
|
||||
_expect(loaded.get("status") == "fallback", "Profile fallback load status changed")
|
||||
_expect(loaded_profile.get("age") == "35-year-old adult", "Profile override age did not apply")
|
||||
_expect(loaded_profile.get("descriptor_detail") == "compact", "Profile override descriptor detail did not apply")
|
||||
|
||||
context = {"subject_type": "woman", "subject": "woman", "subject_phrase": "woman", "age": "21-year-old adult"}
|
||||
applied_context, applied_profile, status = pb._apply_character_profile_to_context(context, loaded_profile)
|
||||
_expect(status == "applied", "Profile context application changed")
|
||||
_expect(applied_context.get("age") == "35-year-old adult", "Profile context application lost age")
|
||||
_expect(applied_profile.get("profile_type") == "character", "Profile context returned wrong profile")
|
||||
|
||||
|
||||
def smoke_hardcore_position_config_policy() -> None:
|
||||
_expect(
|
||||
pb.HARDCORE_POSITION_FAMILY_CHOICES is hardcore_position_config.HARDCORE_POSITION_FAMILY_CHOICES,
|
||||
@@ -2680,6 +2739,7 @@ SMOKE_CASES: list[tuple[str, Callable[[], None]]] = [
|
||||
("generation_profile_config_policy", smoke_generation_profile_config_policy),
|
||||
("filter_config_policy", smoke_filter_config_policy),
|
||||
("character_config_policy", smoke_character_config_policy),
|
||||
("character_profile_policy", smoke_character_profile_policy),
|
||||
("hardcore_position_config_policy", smoke_hardcore_position_config_policy),
|
||||
("category_library_route", smoke_category_library_route),
|
||||
("hardcore_category_routes", smoke_hardcore_category_routes),
|
||||
|
||||
Reference in New Issue
Block a user