Spaces:
Running
Running
from fastapi import HTTPException | |
from pydantic import BaseModel | |
from langflow.api.utils import get_suggestion_message | |
from langflow.services.database.models.flow.model import Flow | |
from langflow.services.database.models.flow.utils import get_outdated_components | |
class InvalidChatInputError(Exception): | |
pass | |
# create a pidantic documentation for this class | |
class ExceptionBody(BaseModel): | |
message: str | list[str] | |
traceback: str | list[str] | None = None | |
description: str | list[str] | None = None | |
code: str | None = None | |
suggestion: str | list[str] | None = None | |
class APIException(HTTPException): | |
def __init__(self, exception: Exception, flow: Flow | None = None, status_code: int = 500): | |
body = self.build_exception_body(exception, flow) | |
super().__init__(status_code=status_code, detail=body.model_dump_json()) | |
def build_exception_body(exc: str | list[str] | Exception, flow: Flow | None) -> ExceptionBody: | |
body = {"message": str(exc)} | |
if flow: | |
outdated_components = get_outdated_components(flow) | |
if outdated_components: | |
body["suggestion"] = get_suggestion_message(outdated_components) | |
return ExceptionBody(**body) | |