fix(types): resolve pre-existing basedpyright errors in py/ and standalone.py

Fix ~950 basedpyright errors across the backend:
- Convert ineffective # type: ignore comments to # pyright: ignore[rule]
- Add missing generic type arguments (Dict[str, Any], list[Any], ...)
- Annotate dynamic dict literals and runtime-initialized attributes
- Widen CivitAI provider tuple signatures in recipe parsers
- Remove dead LoraRoutes handlers calling nonexistent LoraService methods
- Suppress unavoidable ServiceRegistry import cycles (basedpyright counts
  function-local imports as cycle edges)
This commit is contained in:
Will Miao
2026-08-08 20:12:52 +08:00
parent 6fcdeb799d
commit 8e724538bd
103 changed files with 1184 additions and 1015 deletions

View File

@@ -13,9 +13,11 @@ class AutoOrganizeLockProvider(Protocol):
def is_auto_organize_running(self) -> bool:
"""Return ``True`` when an auto-organize operation is in-flight."""
...
async def get_auto_organize_lock(self) -> asyncio.Lock:
"""Return the asyncio lock guarding auto-organize operations."""
...
class AutoOrganizeInProgressError(RuntimeError):

View File

@@ -81,7 +81,7 @@ class BulkMetadataRefreshUseCase:
async def emit(status: str, **extra: Any) -> None:
if progress_callback is None:
return
payload = {
payload: Dict[str, Any] = {
"status": status,
"total": total_models,
"processed": processed,

View File

@@ -5,9 +5,10 @@ from __future__ import annotations
import os
import tempfile
from contextlib import suppress
from typing import Any, Dict, List
from typing import Any, Dict, List, cast
from aiohttp import web
from aiohttp.multipart import BodyPartReader
from ....utils.example_images_processor import (
ExampleImagesImportError,
@@ -35,7 +36,8 @@ class ImportExampleImagesUseCase:
if request.content_type and "multipart/form-data" in request.content_type:
reader = await request.multipart()
first_field = await reader.next()
first_field_raw = await reader.next()
first_field = cast(BodyPartReader, first_field_raw) if first_field_raw is not None else None
if first_field and first_field.name == "model_hash":
model_hash = await first_field.text()
else:
@@ -43,7 +45,8 @@ class ImportExampleImagesUseCase:
if first_field is not None:
await self._collect_upload_file(first_field, files_to_import, temp_files)
async for field in reader:
async for raw_field in reader:
field = cast(BodyPartReader, raw_field)
if field.name == "model_hash" and not model_hash:
model_hash = await field.text()
elif field.name == "files":
@@ -53,6 +56,8 @@ class ImportExampleImagesUseCase:
model_hash = data.get("model_hash")
files_to_import = list(data.get("file_paths", []))
if not model_hash:
raise ImportExampleImagesValidationError("Missing model_hash parameter")
result = await self._processor.import_images(model_hash, files_to_import)
return result
except ExampleImagesValidationError as exc: