complete validation

This commit is contained in:
Brandon Hancock
2024-11-01 16:29:14 -04:00
parent 40248aadec
commit 84bb5be5f5

View File

@@ -11,6 +11,7 @@ from typing import (
Type,
TypeVar,
Union,
cast,
)
from pydantic import BaseModel, ValidationError
@@ -216,10 +217,18 @@ class Flow(Generic[T], metaclass=FlowMeta):
if isinstance(self._state, BaseModel):
# Structured state management
try:
# Create a new instance with updated values to ensure validation
self._state = self._state.__class__(
**{**self._state.model_dump(), **inputs}
M = self._state.__class__
# Dynamically create a new model class with 'extra' set to 'forbid'
class ModelWithExtraForbid(M):
model_config = M.model_config.copy()
model_config["extra"] = "forbid"
# Create a new instance using the combined state and inputs
self._state = cast(
T, ModelWithExtraForbid(**{**self._state.model_dump(), **inputs})
)
except ValidationError as e:
raise ValueError(f"Invalid inputs for structured state: {e}") from e
elif isinstance(self._state, dict):