From e40395197d32bff61358e71fec9c222cab05ac0d Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Tue, 27 Feb 2024 18:13:23 -0300 Subject: [PATCH] Add model serialization to RunResponse schema --- src/backend/langflow/api/v1/schemas.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/backend/langflow/api/v1/schemas.py b/src/backend/langflow/api/v1/schemas.py index 0c33fdb36..0092efa4e 100644 --- a/src/backend/langflow/api/v1/schemas.py +++ b/src/backend/langflow/api/v1/schemas.py @@ -4,7 +4,7 @@ from pathlib import Path from typing import Any, Dict, List, Optional, Union from uuid import UUID -from pydantic import BaseModel, Field, field_validator +from pydantic import BaseModel, Field, field_validator, model_serializer from langflow.services.database.models.api_key.model import ApiKeyRead from langflow.services.database.models.base import orjson_dumps @@ -70,9 +70,21 @@ class RunResponse(BaseModel): """Run response schema.""" outputs: Optional[List[Any]] = None - status: Optional[str] = None session_id: Optional[str] = None + @model_serializer(mode="wrap") + def serialize(self, handler): + # Serialize all the outputs if they are base models + if self.outputs: + serialized_outputs = [] + for output in self.outputs: + if isinstance(output, BaseModel): + serialized_outputs.append(output.model_dump(exclude_none=True)) + else: + serialized_outputs.append(output) + self.outputs = serialized_outputs + return handler(self) + class PreloadResponse(BaseModel): """Preload response schema."""