Skip to content

Commit aa2caf8

Browse files
Use Field(default_factory=...) on State mutables
Match the convention in docs/concepts/state-and-reducers.md. Pattern 2 and pattern 3 State models had list/dict fields with mutable defaults (=[], ={}); convert to Field(default_factory=...) and import Field from pydantic. Patterns 1 and 4 have no mutable defaults so they're unchanged.
1 parent ab9ef87 commit aa2caf8

2 files changed

Lines changed: 5 additions & 3 deletions

File tree

docs/patterns/session-as-checkpoint-resume.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,15 @@ across resume).
2626

2727
```python
2828
from typing import Annotated
29+
from pydantic import Field
2930
from openarmature.checkpoint import SQLiteCheckpointer
3031
from openarmature.graph import END, GraphBuilder, State, append, merge
3132
from openarmature.llm import Message
3233

3334

3435
class SessionState(State):
35-
messages: Annotated[list[Message], append] = []
36-
facts: Annotated[dict[str, str], merge] = {}
36+
messages: Annotated[list[Message], append] = Field(default_factory=list)
37+
facts: Annotated[dict[str, str], merge] = Field(default_factory=dict)
3738
last_user_input: str = ""
3839

3940

docs/patterns/tool-dispatch-as-node.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,13 @@ on top of [`Tool`, `ToolCall`, `ToolMessage`](../concepts/llms.md).
2121
```python
2222
import json
2323
from typing import Annotated
24+
from pydantic import Field
2425
from openarmature.graph import END, EndSentinel, GraphBuilder, State, append
2526
from openarmature.llm import AssistantMessage, Message, Tool, ToolMessage
2627

2728

2829
class AgentState(State):
29-
messages: Annotated[list[Message], append] = []
30+
messages: Annotated[list[Message], append] = Field(default_factory=list)
3031
turn: int = 0
3132

3233

0 commit comments

Comments
 (0)