Merge branch 'improved_tracebacks' of https://github.com/savannahostrowski/fastapi into improved_tracebacks

This commit is contained in:
Savannah Ostrowski 2025-11-06 11:10:21 -08:00
commit bb65d780ea
2 changed files with 13 additions and 2 deletions

View File

@ -5,12 +5,14 @@ from starlette.exceptions import HTTPException as StarletteHTTPException
from starlette.exceptions import WebSocketException as StarletteWebSocketException
from typing_extensions import Annotated, Doc
class EndpointContext(TypedDict, total=False):
function: str
path: str
file: str
line: int
class HTTPException(StarletteHTTPException):
"""
An HTTP exception you can raise in your own code to show errors to the client.

View File

@ -243,6 +243,7 @@ def _extract_endpoint_context(func: Any) -> EndpointContext:
_endpoint_context_cache[func_id] = ctx
return ctx
async def serialize_response(
*,
field: Optional[ModelField] = None,
@ -354,7 +355,11 @@ def get_request_handler(
)
# Extract endpoint context for error messages
endpoint_ctx = _extract_endpoint_context(dependant.call) if dependant.call else EndpointContext()
endpoint_ctx = (
_extract_endpoint_context(dependant.call)
if dependant.call
else EndpointContext()
)
if dependant.path:
endpoint_ctx["path"] = f"{request.method} {dependant.path}"
@ -480,7 +485,11 @@ def get_websocket_app(
embed_body_fields: bool = False,
) -> Callable[[WebSocket], Coroutine[Any, Any, Any]]:
async def app(websocket: WebSocket) -> None:
endpoint_ctx = _extract_endpoint_context(dependant.call) if dependant.call else EndpointContext()
endpoint_ctx = (
_extract_endpoint_context(dependant.call)
if dependant.call
else EndpointContext()
)
if dependant.path:
endpoint_ctx["path"] = f"WS {dependant.path}"