mirror of
https://github.com/aclist/dztui.git
synced 2026-11-10 03:50:38 +01:00
chore: clear typehinting errors
This commit is contained in:
1 parent
e03c6905c6
commit
0c4026daf8
13 files changed
+33
-43
No files matched your search
+2
-1
@@ -111,7 +111,8 @@ class WorkshopACF(ACF):
|
||||
def __init__(self, file: Path) -> None:
|
||||
super().__init__(file)
|
||||
|
||||
def unpack(self, d: dict[str, str], lines: list[Any] = []) -> str:
|
||||
def unpack(self, d: dict[str, Any], lines: list[Any] = []) -> str:
|
||||
self.indent: int
|
||||
t1 = "AppWorkshop"
|
||||
t2 = ("WorkshopItemsInstalled", "WorkshopItemDetails")
|
||||
for k, v in d.items():
|
||||
|
||||
@@ -111,7 +111,7 @@ def get_netmask() -> str:
|
||||
|
||||
|
||||
# TODO: rename
|
||||
def test_ip(suffix: int, port: int, event: threading.Event) -> dict | None:
|
||||
def test_ip(suffix: int, port: int, event: threading.Event) -> dict[str, Any] | None:
|
||||
if event.is_set():
|
||||
return None
|
||||
netmask = get_netmask()
|
||||
@@ -139,7 +139,9 @@ def sanitize(name: str) -> str:
|
||||
return name
|
||||
|
||||
|
||||
def parse_json(json: list) -> list:
|
||||
def parse_json(
|
||||
json: list[dict[str, Any]],
|
||||
) -> list[tuple[str, str, str, str, int, int, int, str, int, int, str, bool]]:
|
||||
"""
|
||||
Server metadata is underspecified and server operators
|
||||
tend to insert random garbage in the headers. In case
|
||||
@@ -507,14 +509,14 @@ def record_to_fqip(record: Record) -> str:
|
||||
return f"{record.ip}:{record.gameport}:{record.qport}"
|
||||
|
||||
|
||||
def response_to_fqip(res: dict) -> str:
|
||||
def response_to_fqip(res: dict[str, Any]) -> str:
|
||||
ip = res["addr"].split(":")[0]
|
||||
gameport = res["gameport"]
|
||||
qport = res["addr"].split(":")[1]
|
||||
return f"{ip}:{gameport}:{qport}"
|
||||
|
||||
|
||||
def response_to_record(res: dict) -> Record:
|
||||
def response_to_record(res: dict[str, Any]) -> Record:
|
||||
ip = res["addr"].split(":")[0]
|
||||
gameport = res["gameport"]
|
||||
qport = res["addr"].split(":")[1]
|
||||
|
||||
@@ -77,7 +77,7 @@ class AppNavigation:
|
||||
|
||||
class Controller(GObject.GObject):
|
||||
def __init__(self) -> None:
|
||||
self.dist_cache: dict[str, "Haversine"] = {}
|
||||
self.dist_cache: dict[str, "Haversine" | None] = {}
|
||||
self.mediator = AppNavigation()
|
||||
|
||||
self.prefs: UserPrefs
|
||||
@@ -355,10 +355,10 @@ class Controller(GObject.GObject):
|
||||
filter_man.set_filter(filt, state)
|
||||
self.mediator.filters.set_filters(filters)
|
||||
|
||||
def get_dist_cache(self) -> dict[str, "Haversine"]:
|
||||
def get_dist_cache(self) -> dict[str, Union["Haversine", None]]:
|
||||
return self.dist_cache
|
||||
|
||||
def set_dist_cache(self, addr: str, haversine: "Haversine") -> None:
|
||||
def set_dist_cache(self, addr: str, haversine: Union["Haversine", None]) -> None:
|
||||
self.dist_cache[addr] = haversine
|
||||
|
||||
def get_map_store(self) -> Gtk.ListStore:
|
||||
|
||||
@@ -51,7 +51,6 @@ class FilterManager:
|
||||
self.active_map = (0, all_maps)
|
||||
self.prior_map = all_maps
|
||||
|
||||
self.filters: list
|
||||
self.enabled_filters = dict(self.default_filters)
|
||||
|
||||
def get_tooltips(self) -> dict[str, str]:
|
||||
@@ -75,7 +74,7 @@ class FilterManager:
|
||||
def set_active_keyword(self, word: str) -> None:
|
||||
self.active_keyword = word
|
||||
|
||||
def get_default_filters(self) -> dict:
|
||||
def get_default_filters(self) -> dict[str, bool]:
|
||||
"""Deep copy of defaults"""
|
||||
return dict(self.default_filters)
|
||||
|
||||
@@ -116,7 +115,7 @@ class FilterManager:
|
||||
def get_unique_maps(self) -> list[str]:
|
||||
return [row[0] for row in self.map_store if row[0] != "All maps"]
|
||||
|
||||
def get_all_filters(self) -> tuple:
|
||||
def get_all_filters(self) -> tuple[str, ...]:
|
||||
map_name = self.get_active_map_name()
|
||||
enabled = self.get_filters()
|
||||
kw = self.get_active_keyword()
|
||||
|
||||
@@ -47,7 +47,7 @@ class ProxyModelManager:
|
||||
|
||||
def __init__(self, filter_man: "FilterManager") -> None:
|
||||
self.filter_cache: dict[
|
||||
tuple[str],
|
||||
tuple[str, ...],
|
||||
list[tuple[str, str, str, str, int, int, int, str, int, int, str, bool]],
|
||||
] = {}
|
||||
|
||||
@@ -68,9 +68,6 @@ class ProxyModelManager:
|
||||
return False
|
||||
return True
|
||||
|
||||
def append_row(self, row: list) -> None:
|
||||
self.proxy_model.append(row)
|
||||
|
||||
def append_row_to_control(
|
||||
self, row: tuple[str, str, str, str, int, int, int, str, int, int, str, bool]
|
||||
) -> None:
|
||||
@@ -84,7 +81,6 @@ class ProxyModelManager:
|
||||
self.proxy_model[treeiter][4] = playercount.players
|
||||
self.proxy_model[treeiter][6] = playercount.queue
|
||||
|
||||
# TODO: use dataclass for record rows
|
||||
def append_row_to_history(
|
||||
self,
|
||||
history: tuple[str, str, str, str, int, int, int, str, int, int, str, bool],
|
||||
@@ -264,7 +260,7 @@ class ProxyModelManager:
|
||||
rows = [row for row in rows if row[11]]
|
||||
return rows
|
||||
|
||||
def filter_toggle_on(self, filters: tuple[str]) -> list:
|
||||
def filter_toggle_on(self, filters: tuple[str, ...]) -> list:
|
||||
"""Effectively applies all filters"""
|
||||
self.set_filtered(self.control_model)
|
||||
self.set_filtered(self.filter_map(filters))
|
||||
@@ -275,7 +271,7 @@ class ProxyModelManager:
|
||||
self.set_filtered(self.filter_toggle_off(filters, f))
|
||||
return self.filtered
|
||||
|
||||
def set_cache(self, filters: tuple[str], filtered_rows: list[tuple]) -> None:
|
||||
def set_cache(self, filters: tuple[str, ...], filtered_rows: list[tuple]) -> None:
|
||||
self.filter_cache[filters] = filtered_rows
|
||||
|
||||
def set_filtered(self, rows: list | None) -> None:
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import re
|
||||
from typing import Any
|
||||
|
||||
from dzgui.util.localize import number
|
||||
from dzgui.strings.generic import selectable_tree
|
||||
@@ -60,7 +61,7 @@ def format_server_mods(mods: int) -> str:
|
||||
return f"Found {mods:n} {plural}. {workshop}"
|
||||
|
||||
|
||||
def format_player_count(model: Gtk.TreeModel | None, control: list) -> str:
|
||||
def format_player_count(model: Gtk.TreeModel | None, control: list[Any]) -> str:
|
||||
players = 0
|
||||
hits: int
|
||||
status: str
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
from typing import Callable, Literal, Self, TYPE_CHECKING, Union
|
||||
|
||||
from dzgui.util.clip import copy_clipboard
|
||||
from dzgui.util.format import pluralize
|
||||
from dzgui.strings import buttons
|
||||
from dzgui.util.strings import (
|
||||
alert_button_tooltip,
|
||||
atomic_buttons,
|
||||
)
|
||||
from dzgui.const.constants import (
|
||||
@@ -14,7 +12,6 @@ from dzgui.const.constants import (
|
||||
LIST_ADD,
|
||||
REFRESH_ICON,
|
||||
STEAM_ICON,
|
||||
WARNING,
|
||||
WEB_BROWSER,
|
||||
)
|
||||
from dzgui.strings import connect_panel
|
||||
@@ -101,15 +98,14 @@ class LargeIconTextButton(IconButton):
|
||||
|
||||
|
||||
class ClipboardButton(IconTextButton):
|
||||
def __init__(self, controller: Union["Controller", None], func: Callable) -> None:
|
||||
def __init__(self, func: Callable[[], str]) -> None:
|
||||
super().__init__(CLIPBOARD, atomic_buttons.copy)
|
||||
self.controller = controller
|
||||
self.connect("clicked", self._on_button_clicked, func)
|
||||
|
||||
# TODO: strings
|
||||
self.set_tooltip_text("Copy to clipboard")
|
||||
|
||||
def _on_button_clicked(self, button: Self, func: Callable) -> None:
|
||||
def _on_button_clicked(self, button: Self, func: Callable[[], str]) -> None:
|
||||
def revert() -> Literal[False]:
|
||||
self.revert_icon()
|
||||
return False
|
||||
@@ -120,10 +116,9 @@ class ClipboardButton(IconTextButton):
|
||||
GLib.timeout_add(600, revert)
|
||||
|
||||
|
||||
# TODO: determine when controller would be passed to this button or drop
|
||||
class CopyIpButton(ClipboardButton):
|
||||
def __init__(self, controller: Union["Controller", None], func: Callable) -> None:
|
||||
super().__init__(controller, func)
|
||||
def __init__(self, func: Callable[[], str]) -> None:
|
||||
super().__init__(func)
|
||||
|
||||
# TODO: strings
|
||||
self.set_tooltip_text("Copy IP to clipboard")
|
||||
@@ -252,7 +247,6 @@ class AddButton(IconTextButton):
|
||||
self.set_tooltip_text(connect_panel.add_tooltip)
|
||||
|
||||
|
||||
|
||||
class SpinnerButton(Gtk.Button):
|
||||
def __init__(self, label: str) -> None:
|
||||
super().__init__()
|
||||
|
||||
@@ -187,7 +187,7 @@ class FavPanel(Gtk.Frame):
|
||||
|
||||
self.fav_button = SteamConnectButton()
|
||||
self.fav_button.connect("clicked", self._on_connect_clicked)
|
||||
self.copy_button = CopyIpButton(self.controller, self.get_fav_ip)
|
||||
self.copy_button = CopyIpButton(self.get_fav_ip)
|
||||
|
||||
# TODO: strings
|
||||
self.unset_button = CloseButton("Unset")
|
||||
|
||||
@@ -38,7 +38,7 @@ class ValidatedEntry(Gtk.Entry):
|
||||
def __init__(
|
||||
self,
|
||||
controller: "Controller",
|
||||
func: Callable,
|
||||
func: Callable[[str], bool],
|
||||
placeholder_text: str = "",
|
||||
tooltip_text: str = "",
|
||||
) -> None:
|
||||
@@ -46,7 +46,6 @@ class ValidatedEntry(Gtk.Entry):
|
||||
hexpand=True, placeholder_text=placeholder_text, tooltip_text=tooltip_text
|
||||
)
|
||||
|
||||
self.func: Callable
|
||||
self.set_validation_func(func)
|
||||
self.controller = controller
|
||||
|
||||
@@ -72,7 +71,7 @@ class ValidatedEntry(Gtk.Entry):
|
||||
self.emit("string_validated", False)
|
||||
remove_class(self, self.classname)
|
||||
|
||||
def set_validation_func(self, func: Callable) -> None:
|
||||
def set_validation_func(self, func: Callable[[str], bool]) -> None:
|
||||
self.func = func
|
||||
|
||||
def insert_icon(self) -> None:
|
||||
@@ -141,7 +140,7 @@ class APIEntry(Gtk.Box):
|
||||
def __init__(self) -> None:
|
||||
super().__init__(orientation=Gtk.Orientation.HORIZONTAL, spacing=10)
|
||||
|
||||
self.func: Callable | None = None
|
||||
self.func: Callable[[str], None] | None = None
|
||||
|
||||
# TODO: strings
|
||||
self.entry = Gtk.Entry(
|
||||
@@ -222,7 +221,7 @@ class APIEntry(Gtk.Box):
|
||||
res = self.func(text)
|
||||
return res
|
||||
|
||||
def set_validation_func(self, func: Callable | None) -> None:
|
||||
def set_validation_func(self, func: Callable[[str], None] | None) -> None:
|
||||
self.func = func
|
||||
|
||||
def disable_button(self) -> None:
|
||||
|
||||
@@ -30,7 +30,7 @@ class ButtonGrid(Gtk.Grid):
|
||||
def __init__(
|
||||
self,
|
||||
controller: "Controller",
|
||||
defaults: dict[str, str],
|
||||
defaults: dict[str, bool],
|
||||
tooltips: dict[str, str],
|
||||
) -> None:
|
||||
super().__init__(
|
||||
@@ -96,7 +96,7 @@ class ButtonGrid(Gtk.Grid):
|
||||
logger.info(f"User toggled button '{label}' to {state}")
|
||||
self.emitter.emit("check_toggled", label, state)
|
||||
|
||||
def get_checkboxes(self) -> list:
|
||||
def get_checkboxes(self) -> list[Gtk.CheckButton]:
|
||||
return self.checks
|
||||
|
||||
|
||||
|
||||
@@ -105,7 +105,7 @@ class BootDialog(ColorAwareApp, Gtk.Dialog): # type: ignore
|
||||
self.error_label = Gtk.Label(margin_start=15, margin_end=15)
|
||||
|
||||
# TODO: abstract class
|
||||
self.copy_button = ClipboardButton(None, lambda: self.error_label.get_text())
|
||||
self.copy_button = ClipboardButton(self.error_label.get_text)
|
||||
self.button_hbox = Gtk.Box(
|
||||
orientation=Gtk.Orientation.HORIZONTAL, halign=Gtk.Align.CENTER, spacing=10
|
||||
)
|
||||
|
||||
@@ -187,7 +187,7 @@ class TextBufferDialog(GenericDialog):
|
||||
secondary=secondary,
|
||||
)
|
||||
self.text = text
|
||||
copy_button = ClipboardButton(controller, self.get_text)
|
||||
copy_button = ClipboardButton(self.get_text)
|
||||
self.add_action_widget(copy_button, Gtk.ResponseType.NONE)
|
||||
self.add_button("OK", Gtk.ResponseType.OK)
|
||||
self.connect("response", self._on_response)
|
||||
|
||||
@@ -15,9 +15,7 @@ logger = logging.getLogger(APP_NAME)
|
||||
|
||||
|
||||
class ContextMixin(TreeView):
|
||||
def present_menu(
|
||||
self, widget: Gtk.Widget, event: Gdk.Event
|
||||
) -> bool:
|
||||
def present_menu(self, widget: Gtk.Widget, event: Gdk.Event) -> bool:
|
||||
|
||||
if self.menu is None:
|
||||
return False
|
||||
@@ -26,7 +24,7 @@ class ContextMixin(TreeView):
|
||||
|
||||
match event.type:
|
||||
case Gdk.EventType.BUTTON_PRESS:
|
||||
if event.button != 3:
|
||||
if event.button != Gdk.BUTTON_SECONDARY: # type: ignore[comparison-overlap]
|
||||
return False
|
||||
self._process_button_event(event) # type: ignore
|
||||
case Gdk.EventType.KEY_PRESS:
|
||||
|
||||
Reference in new issue
Block a user