Extract category library routing
This commit is contained in:
@@ -11,6 +11,7 @@ from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import random
|
||||
import re
|
||||
import sys
|
||||
from dataclasses import dataclass, field
|
||||
@@ -23,6 +24,7 @@ if str(ROOT) not in sys.path:
|
||||
sys.path.insert(0, str(ROOT))
|
||||
|
||||
import caption_naturalizer # noqa: E402
|
||||
import category_library # noqa: E402
|
||||
import krea_formatter # noqa: E402
|
||||
import prompt_builder as pb # noqa: E402
|
||||
import sdxl_formatter # noqa: E402
|
||||
@@ -494,6 +496,56 @@ def smoke_config_route_location_theme() -> None:
|
||||
_expect_formatter_outputs(row, "config_route_location_theme", target="single")
|
||||
|
||||
|
||||
def smoke_category_library_route() -> None:
|
||||
categories = category_library.load_category_library()
|
||||
_expect(len(categories) >= 3, "category library should load JSON categories")
|
||||
category, subcategory, women_count, men_count = category_library.find_subcategory(
|
||||
categories,
|
||||
"custom_random",
|
||||
"Hardcore sexual poses / Oral sex",
|
||||
random.Random(101),
|
||||
random.Random(102),
|
||||
women_count=1,
|
||||
men_count=1,
|
||||
)
|
||||
_expect(category.get("slug") == "hardcore_sexual_poses", "exact category lookup selected wrong category")
|
||||
_expect(subcategory.get("slug") == "oral_sex", "exact subcategory lookup selected wrong subcategory")
|
||||
_expect((women_count, men_count) == (1, 1), "exact subcategory lookup changed compatible cast counts")
|
||||
|
||||
item = category_library.compatible_entries(list(subcategory.get("items") or []), women_count, men_count)[0]
|
||||
scenes = category_library.configured_pool(
|
||||
category,
|
||||
subcategory,
|
||||
item,
|
||||
"scenes",
|
||||
"scene_pools",
|
||||
category_library.load_scene_pool_library(),
|
||||
"inherit_scenes",
|
||||
)
|
||||
expressions = category_library.configured_pool(
|
||||
category,
|
||||
subcategory,
|
||||
item,
|
||||
"expressions",
|
||||
"expression_pools",
|
||||
category_library.load_expression_pool_library(),
|
||||
"inherit_expressions",
|
||||
)
|
||||
compositions = category_library.configured_pool(
|
||||
category,
|
||||
subcategory,
|
||||
item,
|
||||
"compositions",
|
||||
"composition_pools",
|
||||
category_library.load_composition_pool_library(),
|
||||
"inherit_compositions",
|
||||
)
|
||||
_expect(scenes, "category inheritance did not resolve scenes")
|
||||
_expect(expressions, "category inheritance did not resolve expressions")
|
||||
_expect(compositions, "category inheritance did not resolve compositions")
|
||||
_expect(any("oral" in _clean_key(entry.get("prompt") if isinstance(entry, dict) else entry) for entry in scenes), "oral scene pool did not contribute")
|
||||
|
||||
|
||||
def smoke_hardcore_category_routes() -> None:
|
||||
cast = _character_cast()
|
||||
cases = [
|
||||
@@ -1593,6 +1645,7 @@ SMOKE_CASES: list[tuple[str, Callable[[], None]]] = [
|
||||
("builtin_single_woman", smoke_builtin_single),
|
||||
("camera_scene_single", smoke_camera_scene_single),
|
||||
("config_route_location_theme", smoke_config_route_location_theme),
|
||||
("category_library_route", smoke_category_library_route),
|
||||
("hardcore_category_routes", smoke_hardcore_category_routes),
|
||||
("krea_close_foreplay_route", smoke_krea_close_foreplay_route),
|
||||
("insta_pair_same_cast", smoke_insta_pair),
|
||||
|
||||
Reference in New Issue
Block a user