reducer replaces merge_strategy.

This commit is contained in:
lda
2026-05-17 16:23:51 +07:00 Verified
parent c5b43c7dbe
commit 86ffb17ec6
14 changed files with 348 additions and 91 deletions
+19 -3
View File
@@ -4,9 +4,9 @@ from wf_core import SchemaRef, StateField, StateSchema, Workflow
from wf_core.runtime.ops.state import write_state_value
def test_exact_nested_state_path_uses_declared_merge_strategy() -> None:
def test_exact_nested_state_path_uses_declared_reducer() -> None:
workflow = _workflow(
fields={"person.tags": StateField(type="array", merge_strategy="append")}
fields={"person.tags": StateField(type="array", reducer="wf.std.append")}
)
state = {"person": {"tags": ["seed"]}}
@@ -17,7 +17,7 @@ def test_exact_nested_state_path_uses_declared_merge_strategy() -> None:
def test_parent_state_declaration_does_not_apply_to_nested_write() -> None:
workflow = _workflow(
fields={"person": StateField(type="object", merge_strategy="merge_object")}
fields={"person": StateField(type="object", reducer="wf.std.merge_object")}
)
state = {"person": {"tags": ["seed"]}}
@@ -35,6 +35,22 @@ def test_undeclared_nested_state_path_defaults_to_replace() -> None:
assert state["person"]["tags"] == ["next"]
def test_state_field_defaults_to_replace_reducer() -> None:
assert StateField(type="string").reducer == "wf.std.replace"
def test_unknown_state_reducer_fails_clearly() -> None:
workflow = _workflow(fields={"person.tags": StateField(type="array", reducer="x.nope")})
state = {"person": {"tags": ["seed"]}}
try:
write_state_value(workflow, state, "state.person.tags", ["next"])
except Exception as exc:
assert "unknown reducer 'x.nope'" in str(exc)
else:
raise AssertionError("expected unknown reducer to fail")
def _workflow(*, fields: dict[str, StateField]) -> Workflow:
return Workflow(
name="nested_state_paths",