refactor: improve backend type safety and import organization

- Add TYPE_CHECKING guards for runtime-expensive imports (aiohttp, aiosqlite)
- Reorganize imports to follow PEP 8 conventions
- Convert TypeAlias to modern PEP 695 type syntax (where appropriate)
- Use Sequence/Mapping from collections.abc for type hints (covariant)
- Replace string literals with cast() for improved type inference
- Fix casting of Fail2BanResponse and TypedDict patterns
- Add IpLookupResult TypedDict for precise return type annotation
- Reformat overlong lines for readability (120 char limit)
- Add asyncio_mode and filterwarnings to pytest config
- Update test fixtures with improved type hints

This improves mypy type checking and makes type relationships explicit.
This commit is contained in:
2026-03-20 13:44:14 +01:00
parent bdcdd5d672
commit 1c0bac1353
30 changed files with 431 additions and 644 deletions

View File

@@ -8,10 +8,11 @@ table. All methods are plain async functions that accept a
from __future__ import annotations
import math
from collections.abc import Mapping
from typing import TYPE_CHECKING, TypedDict, cast
if TYPE_CHECKING:
from collections.abc import Mapping
import aiosqlite
@@ -165,5 +166,5 @@ def _row_to_dict(row: object) -> ImportLogRow:
Returns:
Dict mapping column names to Python values.
"""
mapping = cast(Mapping[str, object], row)
return cast(ImportLogRow, dict(mapping))
mapping = cast("Mapping[str, object]", row)
return cast("ImportLogRow", dict(mapping))