mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-09 08:08:32 +00:00
complete validation
This commit is contained in:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user