mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-05-01 07:13:00 +00:00
fix: eliminate PydanticSerializationUnexpectedValue warnings
Switch RuntimeState serializer from mode="wrap" to mode="plain" with dict return type so pydantic doesn't re-serialize entities through the Entity union pipeline. Also switch to string-based field discriminator for Entity union.
This commit is contained in:
@@ -192,15 +192,13 @@ try:
|
|||||||
|
|
||||||
from typing import Annotated
|
from typing import Annotated
|
||||||
|
|
||||||
from pydantic import Discriminator, Tag
|
from pydantic import Field
|
||||||
|
|
||||||
from crewai.state.runtime import RuntimeState, _entity_discriminator
|
from crewai.state.runtime import RuntimeState
|
||||||
|
|
||||||
Entity = Annotated[
|
Entity = Annotated[
|
||||||
Annotated[Flow, Tag("flow")] # type: ignore[type-arg]
|
Flow | Crew | Agent, # type: ignore[type-arg]
|
||||||
| Annotated[Crew, Tag("crew")]
|
Field(discriminator="entity_type"),
|
||||||
| Annotated[Agent, Tag("agent")],
|
|
||||||
Discriminator(_entity_discriminator),
|
|
||||||
]
|
]
|
||||||
|
|
||||||
RuntimeState.model_rebuild(
|
RuntimeState.model_rebuild(
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ from pydantic import (
|
|||||||
ModelWrapValidatorHandler,
|
ModelWrapValidatorHandler,
|
||||||
PrivateAttr,
|
PrivateAttr,
|
||||||
RootModel,
|
RootModel,
|
||||||
SerializerFunctionWrapHandler,
|
|
||||||
model_serializer,
|
model_serializer,
|
||||||
model_validator,
|
model_validator,
|
||||||
)
|
)
|
||||||
@@ -84,10 +83,10 @@ class RuntimeState(RootModel): # type: ignore[type-arg]
|
|||||||
"""The execution event record."""
|
"""The execution event record."""
|
||||||
return self._event_record
|
return self._event_record
|
||||||
|
|
||||||
@model_serializer(mode="wrap")
|
@model_serializer(mode="plain")
|
||||||
def _serialize(self, handler: SerializerFunctionWrapHandler) -> CheckpointPayload:
|
def _serialize(self) -> dict[str, Any]:
|
||||||
return {
|
return {
|
||||||
"entities": handler(self),
|
"entities": [e.model_dump() for e in self.root],
|
||||||
"event_record": self._event_record.model_dump(),
|
"event_record": self._event_record.model_dump(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user