misc: drop typing as T, use builtin generics

Python 3.10 is the minimum, so annotations use `X | None`, `list[X]`
and friends, enforced by ruff's pyupgrade rules. The remaining typing
names are imported directly, with abstract types coming from
collections.abc. first() is now generic over the item and default.
This commit is contained in:
Dash committed 2026-10-17 15:55:55 +02:00
1 parent ada8d5b6ed
commit 0a4358e2b8
40 files changed
+248 -236

No files matched your search

@@ -1,5 +1,6 @@
import functools
import typing as T
from collections.abc import Sequence
from typing import Any
from pqcli.config import Class
from pqcli.ui.curses.util import KEYS_CANCEL, Choice
@@ -9,9 +10,9 @@ from pqcli.ui.curses.views.menu_view import MenuView
class ChooseCharacterClassView(MenuView):
def __init__(
self,
screen: T.Any,
classes: T.Sequence[Class],
class_: T.Optional[Class] = None,
screen: Any,
classes: Sequence[Class],
class_: Class | None = None,
) -> None:
super().__init__(
screen,
@@ -20,7 +21,7 @@ class ChooseCharacterClassView(MenuView):
)
for y, class_ in enumerate(classes, 1):
key: T.Optional[str] = str(y % 10) if y <= 10 else None
key: str | None = str(y % 10) if y <= 10 else None
self._choices.append(
Choice(
keys=[ord(key)] if key is not None else [],
@@ -1,6 +1,6 @@
import curses
import curses.ascii
import typing as T
from typing import Any
from pqcli.mechanic import generate_name
from pqcli.ui.curses.event_handler import EventHandler
@@ -10,17 +10,15 @@ from pqcli.ui.curses.widgets.focusable import focus_standout
class ChooseCharacterNameView(BaseView):
def __init__(
self, screen: T.Any, character_name: T.Optional[str] = None
) -> None:
def __init__(self, screen: Any, character_name: str | None = None) -> None:
super().__init__(screen)
self.on_cancel = EventHandler()
self.on_confirm = EventHandler()
self._active_widget = 0
self._win: T.Optional[T.Any] = None
self._text_win: T.Optional[T.Any] = None
self._win: Any | None = None
self._text_win: Any | None = None
self._text = character_name or generate_name()
def start(self) -> None:
@@ -1,5 +1,6 @@
import functools
import typing as T
from collections.abc import Sequence
from typing import Any
from pqcli.config import Race
from pqcli.ui.curses.util import KEYS_CANCEL, Choice
@@ -9,9 +10,9 @@ from pqcli.ui.curses.views.menu_view import MenuView
class ChooseCharacterRaceView(MenuView):
def __init__(
self,
screen: T.Any,
races: T.Sequence[Race],
race: T.Optional[Race] = None,
screen: Any,
races: Sequence[Race],
race: Race | None = None,
) -> None:
super().__init__(
screen,
@@ -20,7 +21,7 @@ class ChooseCharacterRaceView(MenuView):
)
for y, race in enumerate(races, 1):
key: T.Optional[str] = str(y % 10) if y <= 10 else None
key: str | None = str(y % 10) if y <= 10 else None
self._choices.append(
Choice(
keys=[ord(key)] if key is not None else [],
@@ -1,5 +1,5 @@
import curses.ascii
import typing as T
from typing import Any
from pqcli.config import PRIME_STATS
from pqcli.mechanic import StatsBuilder
@@ -10,15 +10,15 @@ from pqcli.ui.curses.widgets.focusable import focus_standout
class ChooseCharacterStatsView(BaseView):
def __init__(self, screen: T.Any) -> None:
def __init__(self, screen: Any) -> None:
super().__init__(screen)
self.on_cancel = EventHandler()
self.on_confirm = EventHandler()
self._active_widget = 0
self._win: T.Optional[T.Any] = None
self._stats_win: T.Optional[T.Any] = None
self._win: Any | None = None
self._stats_win: Any | None = None
self._stats_builder = StatsBuilder()
self._stats = self._stats_builder.roll()