fix: Improve error handling in _serialize_value

- Move try-except block to cover all code paths
- Ensure proper error handling for all value types

Co-Authored-By: Joe Moura <joao@crewai.com>
This commit is contained in:
Devin AI
2025-02-14 06:28:38 +00:00
parent b98e720531
commit ae82745ddd

View File

@@ -718,6 +718,30 @@ class Flow(Generic[T], metaclass=FlowMeta):
setattr(instance, field_name, primitive_type())
return instance
# Handle dataclasses
if dataclasses.is_dataclass(value):
return self._serialize_dataclass(value)
# Handle dictionaries
if isinstance(value, dict):
return {
k: self._serialize_value(v)
for k, v in value.items()
}
# Handle lists, tuples, and sets
if isinstance(value, (list, tuple, set)):
serialized = [self._serialize_value(item) for item in value]
return (
serialized if isinstance(value, list)
else tuple(serialized) if isinstance(value, tuple)
else set(serialized)
)
# Handle other types
return value
except Exception as e:
logger.error(f"Serialization error for {type(value)}: {str(e)}")
raise SerializationError(f"Failed to serialize {type(value)}") from e