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) | |