Extract seed config policy
This commit is contained in:
@@ -29,6 +29,7 @@ import __init__ as sxcp_nodes # noqa: E402
|
||||
import krea_formatter # noqa: E402
|
||||
import prompt_builder as pb # noqa: E402
|
||||
import sdxl_formatter # noqa: E402
|
||||
import seed_config # noqa: E402
|
||||
|
||||
|
||||
Trigger = "sxcppnl7"
|
||||
@@ -1761,6 +1762,43 @@ def smoke_node_utility_registration() -> None:
|
||||
_expect(krea_config.get("width") == krea_width and krea_config.get("height") == krea_height, "Krea2 config_json dimensions mismatch")
|
||||
|
||||
|
||||
def smoke_seed_config_policy() -> None:
|
||||
_expect(pb.SEED_AXIS_SALTS is seed_config.SEED_AXIS_SALTS, "prompt_builder seed salts should delegate to seed_config")
|
||||
_expect(pb.seed_mode_choices() == seed_config.seed_mode_choices(), "seed mode choices drifted from seed_config")
|
||||
|
||||
fixed_config = json.loads(
|
||||
pb.build_seed_config_json(
|
||||
category_seed=-1,
|
||||
content_seed=123,
|
||||
pose_seed=456,
|
||||
role_seed=789,
|
||||
category_seed_mode="fixed",
|
||||
content_seed_mode="fixed",
|
||||
pose_seed_mode="follow_main",
|
||||
role_seed_mode="auto",
|
||||
)
|
||||
)
|
||||
_expect(fixed_config["category_seed"] == 0, "fixed seed mode should clamp negative seeds to zero")
|
||||
_expect(fixed_config["content_seed"] == 123, "fixed seed mode should preserve positive seed")
|
||||
_expect(fixed_config["pose_seed"] == -1, "follow_main seed mode should emit unlocked axis")
|
||||
_expect(fixed_config["role_seed"] == 789, "auto seed mode should preserve numeric seed")
|
||||
|
||||
parsed = pb._parse_seed_config({"item_seed": "44", "pose_seed": "55", "bad": "nope"})
|
||||
_expect(parsed == {"item_seed": 44, "pose_seed": 55}, "seed parser should keep integer-like values only")
|
||||
_expect(pb._configured_axis_seed(parsed, "content") == 44, "content axis should honor item_seed alias")
|
||||
_expect(pb._configured_axis_seed(parsed, "role") == 55, "role axis should honor pose seed alias")
|
||||
|
||||
locked = json.loads(pb.build_seed_lock_config_json(base_seed=100, reroll_axis="content_pose", reroll_seed=999))
|
||||
_expect(locked["content_seed"] == 999, "content_pose reroll should alter content seed")
|
||||
_expect(locked["pose_seed"] == 999 and locked["role_seed"] == 999, "content_pose reroll should alter pose and role seeds")
|
||||
_expect(locked["scene_seed"] == 100, "content_pose reroll should leave scene locked")
|
||||
|
||||
rng_a = pb._axis_rng({"content_seed": 123}, "content", 999, 7)
|
||||
rng_b = seed_config.axis_rng({"content_seed": 123}, "content", 999, 7)
|
||||
_expect(rng_a.random() == rng_b.random(), "prompt_builder axis RNG should delegate to seed_config")
|
||||
_expect(pb._row_seed(123, 7, 41) == seed_config.row_seed(123, 7, 41), "row seed wrapper drifted from seed_config")
|
||||
|
||||
|
||||
def smoke_node_camera_registration() -> None:
|
||||
required_nodes = [
|
||||
"SxCPCameraControl",
|
||||
@@ -2387,6 +2425,7 @@ SMOKE_CASES: list[tuple[str, Callable[[], None]]] = [
|
||||
("expression_disabled", smoke_no_expression_fallback),
|
||||
("formatter_metadata_fixtures", smoke_formatter_metadata_fixtures),
|
||||
("node_utility_registration", smoke_node_utility_registration),
|
||||
("seed_config_policy", smoke_seed_config_policy),
|
||||
("node_camera_registration", smoke_node_camera_registration),
|
||||
("node_route_config_registration", smoke_node_route_config_registration),
|
||||
("node_character_registration", smoke_node_character_registration),
|
||||
|
||||
Reference in New Issue
Block a user