Skip to content

Commit 978041c

Browse files
committed
lint and format
1 parent 9c7db17 commit 978041c

File tree

7 files changed

+37
-106
lines changed

7 files changed

+37
-106
lines changed

app/exception_handlers.py

Lines changed: 0 additions & 82 deletions
This file was deleted.

app/exception_handlers/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
from app.exception_handlers.registry import register_exception_handlers
22

3-
__all__ = ["register_exception_handlers"]
3+
__all__ = ["register_exception_handlers"]

app/exception_handlers/base.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import orjson
2+
from attrs import define, field
23
from fastapi import Request
34
from rotoger import AppStructLogger
4-
from attrs import define, field
5-
65

76
logger = AppStructLogger().get_logger()
87

98

109
@define(slots=True)
1110
class RequestInfo:
1211
"""Contains extracted request information."""
12+
1313
path: str = field()
1414
body: dict = field(default=None)
1515

@@ -39,5 +39,5 @@ async def log_error(cls, message: str, request_info: RequestInfo, **kwargs):
3939
message,
4040
request_url=request_info.path,
4141
request_body=request_info.body,
42-
**kwargs
43-
)
42+
**kwargs,
43+
)

app/exception_handlers/database.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,24 @@
11
from fastapi import Request
22
from fastapi.responses import JSONResponse
33
from sqlalchemy.exc import SQLAlchemyError
4+
45
from app.exception_handlers.base import BaseExceptionHandler
56

67

78
class SQLAlchemyExceptionHandler(BaseExceptionHandler):
89
"""Handles SQLAlchemy database exceptions."""
910

1011
@classmethod
11-
async def handle_exception(cls, request: Request, exc: SQLAlchemyError) -> JSONResponse:
12+
async def handle_exception(
13+
cls, request: Request, exc: SQLAlchemyError
14+
) -> JSONResponse:
1215
request_info = await cls.extract_request_info(request)
1316

1417
await cls.log_error(
15-
"Database error occurred",
16-
request_info,
17-
sql_error=repr(exc)
18+
"Database error occurred", request_info, sql_error=repr(exc)
1819
)
1920

2021
return JSONResponse(
2122
status_code=500,
22-
content={"message": "A database error occurred. Please try again later."}
23-
)
23+
content={"message": "A database error occurred. Please try again later."},
24+
)

app/exception_handlers/registry.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
from fastapi import FastAPI
2-
from sqlalchemy.exc import SQLAlchemyError
32
from fastapi.exceptions import ResponseValidationError
3+
from sqlalchemy.exc import SQLAlchemyError
44

55
from app.exception_handlers.database import SQLAlchemyExceptionHandler
66
from app.exception_handlers.validation import ResponseValidationExceptionHandler
77

8+
89
def register_exception_handlers(app: FastAPI) -> None:
910
"""Register all exception handlers with the FastAPI app."""
10-
app.add_exception_handler(SQLAlchemyError, SQLAlchemyExceptionHandler.handle_exception)
11-
app.add_exception_handler(ResponseValidationError, ResponseValidationExceptionHandler.handle_exception)
11+
app.add_exception_handler(
12+
SQLAlchemyError, SQLAlchemyExceptionHandler.handle_exception
13+
)
14+
app.add_exception_handler(
15+
ResponseValidationError, ResponseValidationExceptionHandler.handle_exception
16+
)

app/exception_handlers/validation.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,31 +9,34 @@ class ResponseValidationExceptionHandler(BaseExceptionHandler):
99
"""Handles response validation exceptions."""
1010

1111
@classmethod
12-
async def handle_exception(cls, request: Request, exc: ResponseValidationError) -> JSONResponse:
12+
async def handle_exception(
13+
cls, request: Request, exc: ResponseValidationError
14+
) -> JSONResponse:
1315
request_info = await cls.extract_request_info(request)
1416
errors = exc.errors()
1517

1618
# Check if this is a None/null response case
1719
is_none_response = False
1820
for error in errors:
19-
if error.get("input") is None and "valid dictionary" in error.get("msg", ""):
21+
if error.get("input") is None and "valid dictionary" in error.get(
22+
"msg", ""
23+
):
2024
is_none_response = True
2125
break
2226

2327
await cls.log_error(
2428
"Response validation error occurred",
2529
request_info,
2630
validation_errors=errors,
27-
is_none_response=is_none_response
31+
is_none_response=is_none_response,
2832
)
2933

3034
if is_none_response:
3135
return JSONResponse(
3236
status_code=404,
33-
content={"no_response": "The requested resource was not found"}
37+
content={"no_response": "The requested resource was not found"},
3438
)
3539
else:
3640
return JSONResponse(
37-
status_code=422,
38-
content={"response_format_error": errors}
39-
)
41+
status_code=422, content={"response_format_error": errors}
42+
)

tests/api/test_stuff.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,17 @@ async def test_add_stuff(client: AsyncClient):
2727
)
2828
response = await client.post("/stuff", json=stuff)
2929
assert response.status_code == status.HTTP_500_INTERNAL_SERVER_ERROR
30-
assert response.json() == snapshot({'message':'A database error occurred. Please try again later.'})
30+
assert response.json() == snapshot(
31+
{"message": "A database error occurred. Please try again later."}
32+
)
3133

3234

3335
async def test_get_stuff(client: AsyncClient):
34-
response = await client.get(f"/stuff/nonexistent")
36+
response = await client.get("/stuff/nonexistent")
3537
assert response.status_code == status.HTTP_404_NOT_FOUND
36-
assert response.json() == snapshot({'no_response':'The requested resource was not found'})
38+
assert response.json() == snapshot(
39+
{"no_response": "The requested resource was not found"}
40+
)
3741
stuff = StuffFactory.build(factory_use_constructors=True).model_dump(mode="json")
3842
await client.post("/stuff", json=stuff)
3943
name = stuff["name"]

0 commit comments

Comments
 (0)