From 45f1c5d8c6f139fc260300870562c36ab3b2e06d Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Tue, 3 Feb 2026 00:21:52 +0900 Subject: [PATCH] chore: clear linting errors --- dzgui/api/pefile.py | 10 ++++----- dzgui/api/steam.py | 31 ++++++++++++++------------ dzgui/controllers/mc.py | 16 +++++++++---- dzgui/views/components/filter_panel.py | 15 +++++++++---- dzgui/views/components/right_panel.py | 14 ++++++------ dzgui/views/components/statusbar.py | 12 +++++----- dzgui/views/trees/tree_base.py | 6 ++--- dzgui/views/trees/tree_servers.py | 9 ++++---- 8 files changed, 65 insertions(+), 48 deletions(-) diff --git a/dzgui/api/pefile.py b/dzgui/api/pefile.py index dee55d3..26509ef 100644 --- a/dzgui/api/pefile.py +++ b/dzgui/api/pefile.py @@ -4,7 +4,6 @@ import struct from dataclasses import dataclass from enum import Enum from pathlib import Path -from shlex import shlex from typing import BinaryIO, Union from packaging.version import Version @@ -73,7 +72,7 @@ class PackedData: def unpack(cls, data: BinaryIO): r = [] for key, value in cls.__annotations__.items(): - if value == str: + if type(value) is str: f = data.read(8).rstrip(b"\x00\x00").decode() else: fmt = endian + (value.fmt) @@ -269,6 +268,7 @@ class AppNotInstalledError(Exception): class AppMovedError(Exception): """VDF points to a nonexistent location on disk""" + pass @@ -372,10 +372,7 @@ def get_version(file: Path) -> FileVersion: shift = entry.data_or_subdir & ~(1 << 31) seek_to_hex(hex(offset + shift), f) table = RESOURCE_DIRECTORY_TABLE.unpack(f) - total = ( - table.number_of_name_entries - + table.number_of_id_entries - ) + total = table.number_of_name_entries + table.number_of_id_entries for entry in range(total): entry = RESOURCE_DIRECTORY_ENTRY.unpack(f) break @@ -423,6 +420,7 @@ def get_pefile_path(steam_path: Path, appid: int) -> Path: pe_path = app_path / f"steamapps/common/{name}/{binary}" return pe_path + def get_app_path(folders_path: Path, appid: int) -> Path: app_path = None diff --git a/dzgui/api/steam.py b/dzgui/api/steam.py index 87691e0..358941d 100644 --- a/dzgui/api/steam.py +++ b/dzgui/api/steam.py @@ -11,12 +11,14 @@ from dzgui.util.bash import concat_bash_args logger = logging.getLogger(__name__) -def query_defunct(): +def query_defunct() -> None: pass + + # TODO: unimplemented -#cf. +# cf. #!/usr/bin/env bash -#query_defunct(){ +# query_defunct(){ # readarray -t modlist <<< "$@" # local max=${#modlist[@]} # concat(){ @@ -41,9 +43,9 @@ def query_defunct(): # | select(.filename|contains("screenshot")|not) # | "\(.file_size) \(.publishedfileid)"') # <<< "$result" awk '{print $2}' -#} +# } # -#query_defunct "3576065083" +# query_defunct "3576065083" def concat_mods(mods: list[str]) -> str: @@ -51,6 +53,7 @@ def concat_mods(mods: list[str]) -> str: mods[mod] = "@" + mod return ";".join(mods) + # TEST: set config to name=user, use official server and no mods, # ensure that formatted string is identical to fixture def connect(addr: str, appid: int, name: str, mods: list) -> None: @@ -58,13 +61,13 @@ def connect(addr: str, appid: int, name: str, mods: list) -> None: # TODO: concat_mods(mods): # @;@; params = [ - f"-connect={addr}", - "-nolauncher", - "-nosplash", - "-skipintro", - f"-name={name}", - f"-mod={concat}" - ] + f"-connect={addr}", + "-nolauncher", + "-nosplash", + "-skipintro", + f"-name={name}", + f"-mod={concat}", + ] # TODO: get steam launch command from configs # args = concat_bash_args() # @@ -130,8 +133,8 @@ def gen_shortcut() -> None: show user account name, select outer steam id steam/userdata//config/shortcuts.vdf """ - #STEAMID_MAGIC = 76561197960265728 + # STEAMID_MAGIC = 76561197960265728 # STEAMID_64 - STEAMID_MAGIC = STEAMID32 # or get right-most 32 bits - #STEAMID_64 & 0xFFFFFFFF + # STEAMID_64 & 0xFFFFFFFF pass diff --git a/dzgui/controllers/mc.py b/dzgui/controllers/mc.py index 2f98ca6..bfa3086 100644 --- a/dzgui/controllers/mc.py +++ b/dzgui/controllers/mc.py @@ -7,7 +7,7 @@ from warnings import deprecated from concurrent.futures import wait from concurrent.futures import ThreadPoolExecutor from pathlib import Path -from typing import Any, Callable, Literal, TYPE_CHECKING +from typing import Any, Callable, Literal, Union, TYPE_CHECKING import dzgui.api.pefile as PeFile import dzgui.api.servers as Servers @@ -112,6 +112,14 @@ class Emitter(GObject.GObject): """User invoked right movement keybinding from ServerTreeView""" pass + @GObject.Signal(flags=GObject.SignalFlags.RUN_LAST, arg_types=()) + def distcalc_started(self) -> None: + pass + + @GObject.Signal(flags=GObject.SignalFlags.RUN_LAST, arg_types=(object, object,)) + def distcalc_ended(self, dist: Union[str, None], context: Union["ServerTab", NotebookPage]) -> None: + pass + class Controller(GObject.GObject): def __init__(self) -> None: @@ -400,7 +408,7 @@ class Controller(GObject.GObject): self.mediator.notebook.set_page_by_enum(button.opens) - def dump_api(self): + def dump_api(self) -> None: key = self.query_config(Preferences.STEAM) job = Servers.query_api params = Servers.params @@ -646,7 +654,7 @@ class Controller(GObject.GObject): ) self.push_data(data) - def cleanup(self): + def cleanup(self) -> None: treeview = self.get_active_treeview() context = self.get_active_context() # TODO: rename signal @@ -664,7 +672,7 @@ class Controller(GObject.GObject): def push_data(self, data: tuple, mode: FilterMode) -> None: treeview = self.get_active_treeview() - context = self.get_active_context() + # context = self.get_active_context() manager = treeview.get_filter_man() if data is None: diff --git a/dzgui/views/components/filter_panel.py b/dzgui/views/components/filter_panel.py index eacde6c..c8c8e15 100644 --- a/dzgui/views/components/filter_panel.py +++ b/dzgui/views/components/filter_panel.py @@ -1,5 +1,5 @@ import logging -from typing import Literal +from typing import Literal, TYPE_CHECKING from dzgui.const.enum import FilterMode from dzgui.const.constants import NO_EXPAND, NO_FILL, NO_PADDING @@ -14,9 +14,12 @@ from gi.repository import Gtk, Gdk, Pango, GLib # noqa E402 logger = logging.getLogger(__name__) +if TYPE_CHECKING: + from dzgui.controllers.mc import Controller + class FilterPanel(Gtk.Box): - def __init__(self, controller): + def __init__(self, controller: "Controller") -> None: super().__init__(spacing=6, vexpand=False) self.default_filters = { @@ -85,8 +88,12 @@ class FilterPanel(Gtk.Box): self.keyword_entry.connect("activate", self._on_keyword_enter) self.keyword_entry.connect("key-press-event", self._on_keyword_keypress) - self.emitter.connect("request_keyword_focus", lambda _: self.keyword_entry.grab_focus()) - self.emitter.connect("request_maps_focus", lambda _: self.maps_entry.grab_focus()) + self.emitter.connect( + "request_keyword_focus", lambda _: self.keyword_entry.grab_focus() + ) + self.emitter.connect( + "request_maps_focus", lambda _: self.maps_entry.grab_focus() + ) completion = Gtk.EntryCompletion(inline_completion=True) completion.set_text_column(0) diff --git a/dzgui/views/components/right_panel.py b/dzgui/views/components/right_panel.py index de994e2..9381a8f 100644 --- a/dzgui/views/components/right_panel.py +++ b/dzgui/views/components/right_panel.py @@ -1,19 +1,19 @@ -from typing import Literal, TYPE_CHECKING +from typing import TYPE_CHECKING from dzgui.views.components.buttonbox import ButtonBox from dzgui.views.components.filter_panel import FilterPanel from dzgui.views.components.mod_panel import ModSelectionPanel from dzgui.views.components.buttons import RefreshButton, KeysButton from dzgui.const.constants import NO_EXPAND, NO_FILL, FILL, NO_PADDING -from dzgui.util.strings import atomic_buttons import gi + gi.require_version("Gtk", "3.0") from gi.repository import Gtk, GLib # noqa E402 if TYPE_CHECKING: from dzgui.controllers.mc import Controller - from GLib import SOURCE_REMOVE + class RightPanel(Gtk.Box): def __init__(self, controller: "Controller"): @@ -21,8 +21,8 @@ class RightPanel(Gtk.Box): self.controller = controller self.controller.register_widget("right_panel", self) - self.emitter = controller.get_emitter() + emitter = controller.get_emitter() emitter.connect("request_button_box_focus", self.focus_button_box) self.button_vbox = ButtonBox(controller) @@ -41,13 +41,13 @@ class RightPanel(Gtk.Box): def reinit_maps(self, rows: list) -> None: self.controller.reinit_map_store() # TODO: communicate with controller - #self.controller.clear_map_store() - #map_store.append(["All maps"]) + # self.controller.clear_map_store() + # map_store.append(["All maps"]) self.selected = "All maps" self.filters_vbox.set_unique_maps(rows) # TODO: reference - #def _on_ping_clicked(self, button: Gtk.Button) -> None: + # def _on_ping_clicked(self, button: Gtk.Button) -> None: # block_signals() # def _update_pings(): # # TODO diff --git a/dzgui/views/components/statusbar.py b/dzgui/views/components/statusbar.py index e4a220c..a4e59ec 100644 --- a/dzgui/views/components/statusbar.py +++ b/dzgui/views/components/statusbar.py @@ -20,6 +20,7 @@ class Statusbar(Gtk.Grid): self.controller = controller self.controller.register_widget("statusbar", self) + self.emitter = controller.get_emitter() self.playercount = "" self.statusbar = Gtk.Statusbar() @@ -45,19 +46,17 @@ class Statusbar(Gtk.Grid): controller.mediator.notebook.connect_after( "switch-page", self._on_notebook_page_changed ) - self.connect("server_row_changed", self._on_server_row_changed) - self.connect("server_page_changed", self._on_server_page_changed) + self.emitter.connect("distcalc_started", self._on_distcalc_started) + # TODO: self.connect("distcalc_ended", self._on_distcalc_ended) + self.connect("server_page_changed", self._on_server_page_changed) + # TODO: move to emitter @GObject.Signal(flags=GObject.SignalFlags.RUN_LAST, arg_types=(object,)) def server_page_changed(self, tab: ServerTab) -> None: pass - @GObject.Signal(flags=GObject.SignalFlags.RUN_LAST, arg_types=()) - def server_row_changed(self) -> None: - pass - @GObject.Signal( flags=GObject.SignalFlags.RUN_LAST, arg_types=( @@ -123,6 +122,7 @@ class Statusbar(Gtk.Grid): self.set_by_context(context, count) tree = self.controller.get_active_treeview() + # TODO: emit page change signal on emitter, treeview catches signal and calls distcalc tree.emit("distcalc_started") def pop(self, context: Union["ServerTab", "NotebookPage"]) -> None: diff --git a/dzgui/views/trees/tree_base.py b/dzgui/views/trees/tree_base.py index 39fdbf5..a39dd91 100644 --- a/dzgui/views/trees/tree_base.py +++ b/dzgui/views/trees/tree_base.py @@ -1,6 +1,6 @@ import logging -from typing import TYPE_CHECKING +from typing import Optional, TYPE_CHECKING from dzgui.const.constants import SEPARATOR from dzgui.util.keys import is_navkey @@ -20,7 +20,7 @@ if TYPE_CHECKING: class TreeView(CursorMixin, Gtk.TreeView): # type: ignore def __init__( - self, controller: "Controller", menu: "ContextMenuGroup" = None + self, controller: "Controller", menu: Optional["ContextMenuGroup"] = None ) -> None: super().__init__( enable_search=False, @@ -147,7 +147,7 @@ class TreeView(CursorMixin, Gtk.TreeView): # type: ignore name = self.get_value_at_index(0) return name - def select_first_row(self): + def select_first_row(self) -> None: sel = self.get_selection() self._on_tree_selection_changed(sel) diff --git a/dzgui/views/trees/tree_servers.py b/dzgui/views/trees/tree_servers.py index 6b3a5f5..8543b71 100644 --- a/dzgui/views/trees/tree_servers.py +++ b/dzgui/views/trees/tree_servers.py @@ -3,7 +3,7 @@ import multiprocessing from typing import Any, Self from warnings import deprecated -from dzgui.const.enum import ContextMenu, ContextMenuGroup, FilterMode, ServerTab +from dzgui.const.enum import ContextMenu, ContextMenuGroup, ServerTab from dzgui.api.servers import Record from dzgui.model.filtered_model import FilteredModelManager from dzgui.util.dist import CalcDist @@ -203,13 +203,14 @@ class ServerTreeView(TreeView): self.current_proc.terminate() def _on_distcalc_started(self, treeview: Self): - bar = self.controller.get_statusbar() + # bar = self.controller.get_statusbar() record = self.get_record() if record is None: return - bar.emit("server_row_changed") + self.emitter.emit("distcalc_started") + # bar.emit("server_row_changed") cache = self.controller.get_dist_cache() if record.ip in cache: @@ -297,7 +298,7 @@ class ServerTreeView(TreeView): except AttributeError: pass - mod_context_items = [ContextMenu.OPEN_WORKSHOP, ContextMenu.DELETE_MOD] + # mod_context_items = [ContextMenu.OPEN_WORKSHOP, ContextMenu.DELETE_MOD] # TODO: dynamic menu entries # for row in items: