autonomy-labs / app /errors.py
ArunKr's picture
Upload folder using huggingface_hub
a896a8b verified
from __future__ import annotations
from typing import Any
def normalize_error(
detail: Any,
*,
status_code: int | None = None,
default_code: str = "http_error",
) -> dict[str, Any]:
"""
Normalize FastAPI/Starlette error "detail" into a consistent shape.
Shape:
{"code": str, "message": str, "status": int|None, "details": Any|None}
"""
if isinstance(detail, dict):
code = str(detail.get("code") or default_code)
message = str(detail.get("message") or detail.get("detail") or "Error")
details = detail.get("details")
return {"code": code, "message": message, "status": status_code, "details": details}
if isinstance(detail, list):
return {"code": default_code, "message": "Validation error", "status": status_code, "details": detail}
if detail is None:
return {"code": default_code, "message": "Error", "status": status_code, "details": None}
return {"code": default_code, "message": str(detail), "status": status_code, "details": None}