fix: resolve remaining ruff lint and mypy type errors

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Justin Visser 2026-02-26 22:58:55 +01:00
parent bf04c77aa9
commit ac002131d6
24 changed files with 219 additions and 57 deletions

View file

@ -11,6 +11,7 @@ from app.api.errors import ApiException
from app.db.models import User
from app.db.session import get_db_session
from app.services.domains.scholars import application as scholar_service
from app.services.domains.scholars import uploads as scholar_uploads
from app.settings import settings
router = APIRouter(tags=["media"])
@ -41,7 +42,7 @@ async def get_uploaded_scholar_image(
)
try:
image_path = scholar_service.resolve_upload_file_path(
image_path = scholar_uploads.resolve_upload_file_path(
upload_dir=settings.scholar_image_upload_dir,
relative_path=profile.profile_image_upload_path,
)

View file

@ -1,6 +1,7 @@
from __future__ import annotations
import logging
from typing import NoReturn
from fastapi import APIRouter, Depends, Request
from sqlalchemy.ext.asyncio import AsyncSession
@ -61,7 +62,7 @@ def _serialize_user_payload(user: User) -> dict[str, object]:
}
def _raise_invalid_credentials(*, normalized_email: str) -> None:
def _raise_invalid_credentials(*, normalized_email: str) -> NoReturn:
structured_log(logger, "info", "api.auth.login_failed", email=normalized_email)
raise ApiException(
status_code=401,

View file

@ -1,5 +1,6 @@
from __future__ import annotations
import asyncio
import logging
import re
from typing import Any
@ -32,6 +33,7 @@ from app.services.domains.settings import application as user_settings_service
from app.settings import settings
logger = logging.getLogger(__name__)
_background_tasks: set[asyncio.Task[Any]] = set()
router = APIRouter(prefix="/runs", tags=["api-runs"])
ACTIVE_RUN_STATUSES = {RunStatus.RUNNING, RunStatus.RESOLVING}
@ -656,11 +658,9 @@ async def run_manual(
await db_session.commit()
# Kick off background execution
import asyncio
from app.db.session import get_session_factory
asyncio.create_task(
task = asyncio.create_task(
ingest_service.execute_run(
session_factory=get_session_factory(),
run_id=run.id,
@ -680,6 +680,8 @@ async def run_manual(
idempotency_key=idempotency_key,
)
)
_background_tasks.add(task)
task.add_done_callback(_background_tasks.discard)
return success_payload(
request,

View file

@ -2,6 +2,7 @@ from __future__ import annotations
import asyncio
import logging
from typing import Any
from fastapi import APIRouter, Depends, File, Query, Request, UploadFile
from sqlalchemy.ext.asyncio import AsyncSession
@ -29,6 +30,7 @@ from app.services.domains.portability import application as import_export_servic
from app.services.domains.scholar import rate_limit as scholar_rate_limit
from app.services.domains.scholar.source import ScholarSource
from app.services.domains.scholars import application as scholar_service
from app.services.domains.scholars import search_hints as scholar_search_hints
from app.settings import settings
logger = logging.getLogger(__name__)
@ -110,7 +112,7 @@ def _serialize_scholar(profile) -> dict[str, object]:
if profile.profile_image_upload_path:
uploaded_image_url = _uploaded_image_media_path(int(profile.id))
profile_image_url, profile_image_source = scholar_service.resolve_profile_image(
profile_image_url, profile_image_source = scholar_search_hints.resolve_profile_image(
profile,
uploaded_image_url=uploaded_image_url,
)
@ -180,7 +182,7 @@ async def _hydrate_scholar_metadata_if_needed(
return profile
def _search_kwargs() -> dict[str, object]:
def _search_kwargs() -> dict[str, Any]:
return {
"network_error_retries": settings.ingestion_network_error_retries,
"retry_backoff_seconds": settings.ingestion_retry_backoff_seconds,
@ -202,7 +204,7 @@ def _search_response_data(query: str, parsed) -> dict[str, object]:
"query": query.strip(),
"state": parsed.state.value,
"state_reason": parsed.state_reason,
"action_hint": scholar_service.scrape_state_hint(
"action_hint": scholar_search_hints.scrape_state_hint(
state=parsed.state,
state_reason=parsed.state_reason,
),