Home / File/ exception_handlers.py — fastapi Source File

exception_handlers.py — fastapi Source File

Architecture documentation for exception_handlers.py, a python file in the fastapi codebase. 12 imports, 2 dependents.

File python FastAPI Routing 12 imports 2 dependents 3 functions

Entity Profile

Dependency Diagram

graph LR
  2d259205_f589_7dee_455a_60e1c67ed35e["exception_handlers.py"]
  ea747667_035c_8539_a8f7_f347fb7e7c39["encoders.py"]
  2d259205_f589_7dee_455a_60e1c67ed35e --> ea747667_035c_8539_a8f7_f347fb7e7c39
  1ac1bc37_1a47_e7e2_9156_ab0473094700["jsonable_encoder"]
  2d259205_f589_7dee_455a_60e1c67ed35e --> 1ac1bc37_1a47_e7e2_9156_ab0473094700
  01c652c5_d85c_f45e_848e_412c94ea4172["exceptions.py"]
  2d259205_f589_7dee_455a_60e1c67ed35e --> 01c652c5_d85c_f45e_848e_412c94ea4172
  58bb043a_10d8_c308_5564_225558a63815["RequestValidationError"]
  2d259205_f589_7dee_455a_60e1c67ed35e --> 58bb043a_10d8_c308_5564_225558a63815
  b73e338b_e4cd_2e94_eb5a_5e6ac7b197b0["WebSocketRequestValidationError"]
  2d259205_f589_7dee_455a_60e1c67ed35e --> b73e338b_e4cd_2e94_eb5a_5e6ac7b197b0
  1c2c0e68_6ed1_7632_8c35_00818f97b599["utils.py"]
  2d259205_f589_7dee_455a_60e1c67ed35e --> 1c2c0e68_6ed1_7632_8c35_00818f97b599
  dba5a7c0_1fab_8f88_2c80_2b79c3b3dc47["is_body_allowed_for_status_code"]
  2d259205_f589_7dee_455a_60e1c67ed35e --> dba5a7c0_1fab_8f88_2c80_2b79c3b3dc47
  75b7515c_c403_b332_0929_cfe34deb0c70["websockets.py"]
  2d259205_f589_7dee_455a_60e1c67ed35e --> 75b7515c_c403_b332_0929_cfe34deb0c70
  72a586ac_ceef_ac9f_17ec_0ed0d645b635["starlette.exceptions"]
  2d259205_f589_7dee_455a_60e1c67ed35e --> 72a586ac_ceef_ac9f_17ec_0ed0d645b635
  7ba41d57_5222_3320_290a_ff23f8a854b4["starlette.requests"]
  2d259205_f589_7dee_455a_60e1c67ed35e --> 7ba41d57_5222_3320_290a_ff23f8a854b4
  e5a24867_6a9b_cc44_1a92_bc955a4ceb50["starlette.responses"]
  2d259205_f589_7dee_455a_60e1c67ed35e --> e5a24867_6a9b_cc44_1a92_bc955a4ceb50
  26ce4316_d64e_8f75_fd3c_7f3b4f109cff["starlette.status"]
  2d259205_f589_7dee_455a_60e1c67ed35e --> 26ce4316_d64e_8f75_fd3c_7f3b4f109cff
  46d0b5a1_0a29_e7e1_5201_61b2c63c0e75["tutorial006_py39.py"]
  46d0b5a1_0a29_e7e1_5201_61b2c63c0e75 --> 2d259205_f589_7dee_455a_60e1c67ed35e
  6c1867f2_34c4_b2ed_5639_41766e6fd7ce["applications.py"]
  6c1867f2_34c4_b2ed_5639_41766e6fd7ce --> 2d259205_f589_7dee_455a_60e1c67ed35e
  style 2d259205_f589_7dee_455a_60e1c67ed35e fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

from fastapi.encoders import jsonable_encoder
from fastapi.exceptions import RequestValidationError, WebSocketRequestValidationError
from fastapi.utils import is_body_allowed_for_status_code
from fastapi.websockets import WebSocket
from starlette.exceptions import HTTPException
from starlette.requests import Request
from starlette.responses import JSONResponse, Response
from starlette.status import WS_1008_POLICY_VIOLATION


async def http_exception_handler(request: Request, exc: HTTPException) -> Response:
    headers = getattr(exc, "headers", None)
    if not is_body_allowed_for_status_code(exc.status_code):
        return Response(status_code=exc.status_code, headers=headers)
    return JSONResponse(
        {"detail": exc.detail}, status_code=exc.status_code, headers=headers
    )


async def request_validation_exception_handler(
    request: Request, exc: RequestValidationError
) -> JSONResponse:
    return JSONResponse(
        status_code=422,
        content={"detail": jsonable_encoder(exc.errors())},
    )


async def websocket_request_validation_exception_handler(
    websocket: WebSocket, exc: WebSocketRequestValidationError
) -> None:
    await websocket.close(
        code=WS_1008_POLICY_VIOLATION, reason=jsonable_encoder(exc.errors())
    )

Domain

Subdomains

Frequently Asked Questions

What does exception_handlers.py do?
exception_handlers.py is a source file in the fastapi codebase, written in python. It belongs to the FastAPI domain, Routing subdomain.
What functions are defined in exception_handlers.py?
exception_handlers.py defines 3 function(s): http_exception_handler, request_validation_exception_handler, websocket_request_validation_exception_handler.
What does exception_handlers.py depend on?
exception_handlers.py imports 12 module(s): RequestValidationError, WebSocketRequestValidationError, encoders.py, exceptions.py, is_body_allowed_for_status_code, jsonable_encoder, starlette.exceptions, starlette.requests, and 4 more.
What files import exception_handlers.py?
exception_handlers.py is imported by 2 file(s): applications.py, tutorial006_py39.py.
Where is exception_handlers.py in the architecture?
exception_handlers.py is located at fastapi/exception_handlers.py (domain: FastAPI, subdomain: Routing, directory: fastapi).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free