Ruff enable type annotations rule (#362)

This PR enables the ruff rule for return type annotations (ANN), and
adds the ty package for type checking.
This commit is contained in:
Maximilian Dorninger
2026-01-06 17:07:19 +01:00
committed by GitHub
parent dd0b439bbe
commit a39e0d204a
57 changed files with 259 additions and 179 deletions

View File

@@ -1,7 +1,7 @@
import contextlib
import logging
import uuid
from typing import Any, Optional, override
from typing import Any, AsyncGenerator, Optional, override
from fastapi import Depends, Request
from fastapi.responses import RedirectResponse, Response
@@ -59,7 +59,9 @@ class UserManager(UUIDIDMixin, BaseUserManager[User, uuid.UUID]):
await self.update(user=user, user_update=updated_user)
@override
async def on_after_register(self, user: User, request: Optional[Request] = None):
async def on_after_register(
self, user: User, request: Optional[Request] = None
) -> None:
log.info(f"User {user.id} has registered.")
if user.email in config.admin_emails:
updated_user = UserUpdate(is_superuser=True, is_verified=True)
@@ -68,7 +70,7 @@ class UserManager(UUIDIDMixin, BaseUserManager[User, uuid.UUID]):
@override
async def on_after_forgot_password(
self, user: User, token: str, request: Optional[Request] = None
):
) -> None:
link = f"{MediaManagerConfig().misc.frontend_url}web/login/reset-password?token={token}"
log.info(f"User {user.id} has forgot their password. Reset Link: {link}")
@@ -83,7 +85,7 @@ class UserManager(UUIDIDMixin, BaseUserManager[User, uuid.UUID]):
<p>Hi {user.email},
<br>
<br>
if you forgot your password, <a href="{link}">reset you password here</a>.<br>
if you forgot your password, <a href=\"{link}\">reset you password here</a>.<br>
If you did not request a password reset, you can ignore this email.</p>
<br>
<br>
@@ -99,23 +101,27 @@ class UserManager(UUIDIDMixin, BaseUserManager[User, uuid.UUID]):
@override
async def on_after_reset_password(
self, user: User, request: Optional[Request] = None
):
) -> None:
log.info(f"User {user.id} has reset their password.")
@override
async def on_after_request_verify(
self, user: User, token: str, request: Optional[Request] = None
):
) -> None:
log.info(
f"Verification requested for user {user.id}. Verification token: {token}"
)
@override
async def on_after_verify(self, user: User, request: Optional[Request] = None):
async def on_after_verify(
self, user: User, request: Optional[Request] = None
) -> None:
log.info(f"User {user.id} has been verified")
async def get_user_manager(user_db: SQLAlchemyUserDatabase = Depends(get_user_db)):
async def get_user_manager(
user_db: SQLAlchemyUserDatabase = Depends(get_user_db),
) -> AsyncGenerator[UserManager, None]:
yield UserManager(user_db)
@@ -124,7 +130,7 @@ get_user_db_context = contextlib.asynccontextmanager(get_user_db)
get_user_manager_context = contextlib.asynccontextmanager(get_user_manager)
async def create_default_admin_user():
async def create_default_admin_user() -> None:
"""Create a default admin user if no users exist in the database"""
try:
async with get_async_session_context() as session:
@@ -177,10 +183,6 @@ async def create_default_admin_user():
)
async def get_user_manager(user_db: SQLAlchemyUserDatabase = Depends(get_user_db)):
yield UserManager(user_db)
def get_jwt_strategy() -> JWTStrategy[models.UP, models.ID]:
return JWTStrategy(secret=SECRET, lifetime_seconds=LIFETIME)