Skip to content

Commit 082bab6

Browse files
Add ruff linter/formatter
1 parent 0c3f5c4 commit 082bab6

File tree

91 files changed

+2113
-1418
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

91 files changed

+2113
-1418
lines changed

.github/workflows/test.yml

+7-5
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,15 @@ jobs:
5656
- name: Frontend Unit Tests
5757
run: |
5858
set -e
59-
docker compose exec frontend npm run test:unit
60-
docker compose exec frontend npm run lint
59+
docker compose -f docker-compose.stack.dev.yml exec frontend npm run test:unit
60+
docker compose -f docker-compose.stack.dev.yml exec frontend npm run lint
6161
6262
- name: Backend Unit Tests
6363
run: |
6464
set -e
65-
docker compose exec backend pytest -vvv ./tests/unit
65+
docker compose -f docker-compose.stack.dev.yml exec backend pytest -vvv ./tests/unit
66+
docker compose -f docker-compose.stack.dev.yml exec backend ruff check
67+
docker compose -f docker-compose.stack.dev.yml exec backend ruff format --check
6668
6769
- name: Test database
6870
run: |
@@ -76,6 +78,6 @@ jobs:
7678
fi
7779
# Ensure the latest migration works backwards and forwards with
7880
# existing job data
79-
docker compose exec backend alembic downgrade -1
80-
docker compose exec backend alembic upgrade head
81+
docker compose -f docker-compose.stack.dev.yml exec backend alembic downgrade -1
82+
docker compose -f docker-compose.stack.dev.yml exec backend alembic upgrade head
8183
./corgi stop

backend/app/.ruff.toml

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
line-length = 80
2+
3+
[lint]
4+
select = [
5+
# pycodestyle
6+
"E",
7+
# Pyflakes
8+
"F",
9+
# pyupgrade
10+
"UP",
11+
# flake8-bugbear
12+
"B",
13+
# flake8-simplify
14+
"SIM",
15+
# isort
16+
"I",
17+
]
18+
ignore = ["F401", "B008", "B006", "UP022"]
19+
fixable = ["ALL"]
20+
21+
[format]
22+
quote-style = "double"
23+
indent-style = "space"
24+
docstring-code-format = true

backend/app/app/api/__init__.py

+1-7
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
11
from fastapi import APIRouter
22

3-
from app.api.endpoints import (jobs,
4-
abl,
5-
ping,
6-
status,
7-
version,
8-
auth,
9-
github)
3+
from app.api.endpoints import abl, auth, github, jobs, ping, status, version
104

115
api_router = APIRouter()
126
api_router.include_router(ping.router, prefix="/ping", tags=["ping"])

backend/app/app/api/endpoints/abl.py

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
from typing import List, Optional
22

3+
from fastapi import APIRouter, Depends
4+
from httpx import AsyncClient
5+
from sqlalchemy.orm import Session
6+
37
from app.core.auth import RequiresRole
48
from app.data_models.models import (
5-
Role,
6-
RequestApproveBook,
79
ApprovedBook,
10+
RequestApproveBook,
11+
Role,
812
)
913
from app.db.utils import get_db
10-
from app.service.abl import get_abl_info_database, add_new_entries
11-
from fastapi import APIRouter, Depends
12-
from httpx import AsyncClient
13-
from sqlalchemy.orm import Session
14+
from app.service.abl import add_new_entries, get_abl_info_database
1415

1516
router = APIRouter()
1617

@@ -21,7 +22,7 @@ async def get_abl_info(
2122
consumer: Optional[str] = None,
2223
repo_name: Optional[str] = None,
2324
version: Optional[str] = None,
24-
code_version: Optional[str] = None
25+
code_version: Optional[str] = None,
2526
):
2627
return get_abl_info_database(db, consumer, repo_name, version, code_version)
2728

backend/app/app/api/endpoints/auth.py

+20-15
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,25 @@
11
import logging
22
from typing import Awaitable
33

4-
from app.core.auth import set_user_session_cookie
5-
from app.core.config import IS_DEV_ENV
6-
from app.core.errors import CustomBaseError
7-
from app.data_models.models import UserSession
8-
from app.db.utils import get_db
9-
from app.github import (AccessDeniedError, authenticate_client, get_user,
10-
github_oauth, sync_user_repositories)
11-
from app.service.user import user_service
124
from fastapi import APIRouter, Depends, HTTPException, Request, status
135
from fastapi.responses import RedirectResponse
146
from httpx import AsyncClient
157
from sqlalchemy.orm import Session
168
from starlette.datastructures import URL
179

10+
from app.core.auth import set_user_session_cookie
11+
from app.core.config import IS_DEV_ENV
12+
from app.core.errors import CustomBaseError
13+
from app.db.utils import get_db
14+
from app.github import (
15+
AccessDeniedError,
16+
authenticate_client,
17+
get_user,
18+
github_oauth,
19+
sync_user_repositories,
20+
)
21+
from app.service.user import user_service
22+
1823
router = APIRouter()
1924

2025

@@ -26,16 +31,15 @@ def __init__(self):
2631
async def handle_auth_errors(thunk: Awaitable):
2732
try:
2833
return await thunk
29-
except AccessDeniedError:
34+
except AccessDeniedError as ade:
3035
raise HTTPException(
31-
status_code=status.HTTP_403_FORBIDDEN,
32-
detail="Forbidden"
33-
)
36+
status_code=status.HTTP_403_FORBIDDEN, detail="Forbidden"
37+
) from ade
3438
except CustomBaseError:
3539
raise
3640
except Exception as e:
3741
logging.error(e)
38-
raise AuthenticationError()
42+
raise AuthenticationError() from e
3943

4044

4145
async def authenticate_token_user(request: Request, token: str, db: Session):
@@ -63,7 +67,8 @@ async def token_login(request: Request, db: Session = Depends(get_db)):
6367
if access_token is not None:
6468
token = access_token.split("Bearer ")[1]
6569
return await handle_auth_errors(
66-
authenticate_token_user(request, token, db))
70+
authenticate_token_user(request, token, db)
71+
)
6772
else:
6873
raise CustomBaseError("Missing required token")
6974

@@ -85,5 +90,5 @@ async def callback(request: Request, db: Session = Depends(get_db)):
8590

8691
set_user_session_cookie(request, user)
8792

88-
response = RedirectResponse(url=f"/")
93+
response = RedirectResponse(url="/")
8994
return response
+5-4
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
from typing import List
22

3+
from fastapi import APIRouter, Depends
4+
from sqlalchemy.orm import Session
5+
36
from app.core.auth import active_user
47
from app.data_models.models import RepositorySummary, UserSession
58
from app.db.utils import get_db
69
from app.service.user import user_service
7-
from fastapi import APIRouter, Depends
8-
from sqlalchemy.orm import Session
910

1011
router = APIRouter()
1112

1213

1314
@router.get("/repository-summary", response_model=List[RepositorySummary])
1415
async def repositories(
15-
user: UserSession = Depends(active_user),
16-
db: Session = Depends(get_db)):
16+
user: UserSession = Depends(active_user), db: Session = Depends(get_db)
17+
):
1718
return user_service.get_user_repositories(db, user)

0 commit comments

Comments
 (0)