From 5792b6f5984a3d306dfaca45cd30315e3c94e072 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Wed, 17 Dec 2025 15:03:51 +0900 Subject: [PATCH 01/10] fix: clear linting errors --- dzgui/main.py | 1 + dzgui/views/trees/tree_base.py | 16 ++++++---------- dzgui/views/trees/tree_log.py | 25 +++++++++---------------- dzgui/views/trees/tree_menu.py | 10 ++++------ dzgui/views/trees/tree_mods.py | 18 +++++++++--------- 5 files changed, 29 insertions(+), 41 deletions(-) diff --git a/dzgui/main.py b/dzgui/main.py index 5ed56fa..57a09dd 100644 --- a/dzgui/main.py +++ b/dzgui/main.py @@ -107,6 +107,7 @@ def main() -> None: rebuild_symlinks(XDG.config) remove_stale_signatures(XDG.config, XDG.version) + # TODO: handle IP DB failure get_ipdb(XDG.ips) local_coords = get_local_coords(XDG.ips) diff --git a/dzgui/views/trees/tree_base.py b/dzgui/views/trees/tree_base.py index 528389d..7e4ce7c 100644 --- a/dzgui/views/trees/tree_base.py +++ b/dzgui/views/trees/tree_base.py @@ -1,18 +1,15 @@ import logging -import multiprocessing -import subprocess + +from typing import Callable, TYPE_CHECKING + +from dzgui.const.constants import SEPARATOR +from dzgui.util.keys import is_navkey +from dzgui.views.mixins.cursor_mixin import CursorMixin import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk, GLib, Gdk, GObject, Pango # noqa -from dzgui.const.constants import SEPARATOR -from dzgui.util.keys import is_navkey -from dzgui.util import strings -from typing import Any, Callable, TYPE_CHECKING - -from dzgui.views.mixins.cursor_mixin import CursorMixin - logger = logging.getLogger(__name__) if TYPE_CHECKING: @@ -85,7 +82,6 @@ class TreeView(CursorMixin, Gtk.TreeView): self, treeview: Gtk.TreeView, event: Gdk.EventKey ) -> None: - keyname = Gdk.keyval_name(event.keyval) if is_navkey(event.keyval): # TODO: investigate this if self.sel_blocked is False: diff --git a/dzgui/views/trees/tree_log.py b/dzgui/views/trees/tree_log.py index 6fd2de7..b85c9a8 100644 --- a/dzgui/views/trees/tree_log.py +++ b/dzgui/views/trees/tree_log.py @@ -1,23 +1,16 @@ import logging -import multiprocessing -import subprocess + +from typing import TYPE_CHECKING + +from dzgui.const.enum import ContextMenuGroup +from dzgui.util import strings +from dzgui.views.trees.tree_base import TreeView +from dzgui.views.mixins.context_mixin import ContextMixin import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk, GLib, Gdk, GObject, Pango # noqa E402 -from dzgui.util.keys import is_navkey -from dzgui.util import strings -from typing import Any, TYPE_CHECKING - -from dzgui.views.trees.tree_base import TreeView -from dzgui.views.mixins.context_mixin import ContextMixin -from dzgui.const.enum import ContextMenuGroup - -from typing import Any -import dzgui.util._json as JSON # noqa - - if TYPE_CHECKING: from dzgui.controllers.mc import Controller @@ -34,8 +27,8 @@ class LogTreeView(ContextMixin, TreeView): self.set_headers_visible(True) self.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE) - s = self.controller.get_log_store() - self.set_model(s) + model = self.controller.get_log_store() + self.set_model(model) for i, column_title in enumerate(strings.log_cols): renderer = Gtk.CellRendererText() diff --git a/dzgui/views/trees/tree_menu.py b/dzgui/views/trees/tree_menu.py index ccc5014..0b91ff3 100644 --- a/dzgui/views/trees/tree_menu.py +++ b/dzgui/views/trees/tree_menu.py @@ -1,16 +1,14 @@ import logging -import multiprocessing -import subprocess from typing import TYPE_CHECKING -import gi -gi.require_version("Gtk", "3.0") -from gi.repository import Gtk, GLib, Gdk, GObject, Pango # noqa - from dzgui.const.enum import RowType, NotebookPage from dzgui.util.open_links import open_link_by_rowtype from dzgui.views.trees.tree_base import TreeView +import gi +gi.require_version("Gtk", "3.0") +from gi.repository import Gtk, GLib, Gdk, GObject, Pango # noqa + logger = logging.getLogger(__name__) if TYPE_CHECKING: diff --git a/dzgui/views/trees/tree_mods.py b/dzgui/views/trees/tree_mods.py index 9195abc..b7417d4 100644 --- a/dzgui/views/trees/tree_mods.py +++ b/dzgui/views/trees/tree_mods.py @@ -1,18 +1,18 @@ import logging -from typing import Any, Literal, TYPE_CHECKING +from typing import Any, TYPE_CHECKING + +from dzgui.util import strings, localize +from dzgui.views.trees.tree_base import TreeView +from dzgui.views.mixins.context_mixin import ContextMixin +from dzgui.views.mixins.mods_mixin import ModsMixin +from dzgui.const.enum import ( + ContextMenuGroup, + ) import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk, GLib, Gdk, GObject, Pango # noqa -from dzgui.const.enum import ( - ContextMenuGroup, - RowType, - ) -from dzgui.util import strings, localize -from dzgui.views.trees.tree_base import TreeView -from dzgui.views.mixins.context_mixin import ContextMixin -from dzgui.views.mixins.mods_mixin import ModsMixin if TYPE_CHECKING: from dzgui.controllers.mc import Controller From c150329d30c75943f2a99b6213d5c59d17cd625a Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Wed, 17 Dec 2025 15:09:24 +0900 Subject: [PATCH 02/10] fix: clear linting errors in controller --- dzgui/controllers/mc.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/dzgui/controllers/mc.py b/dzgui/controllers/mc.py index f9757b4..931e51a 100644 --- a/dzgui/controllers/mc.py +++ b/dzgui/controllers/mc.py @@ -1,21 +1,13 @@ import logging -import os -import locale import shutil import threading import textwrap -from datetime import datetime from pathlib import Path from typing import Any, Callable, TYPE_CHECKING -import gi # noqa E402 -gi.require_version("Gtk", "3.0") -from gi.repository import Gtk, Gdk, GLib, GObject - import dzgui.api.pefile as PeFile from dzgui.api.probe import test_steam_api, test_bm_api - from dzgui.api.mods import ( get_delimited_mods, get_local_mod_path, @@ -34,22 +26,30 @@ from dzgui.const.enum import ( ContextMenu, ) -from dzgui.const.constants import LIBRARYFOLDERS_PATH, APPID_DAYZ, APPID_DAYZ_EXP, HEX_RED, WINDOW_DEFAULT_X, WINDOW_DEFAULT_Y -from dzgui.controllers.model import ModelManager +from dzgui.const.constants import ( + APPID_DAYZ, + APPID_DAYZ_EXP, + HEX_RED, + WINDOW_DEFAULT_X, + WINDOW_DEFAULT_Y +) from dzgui.config import update from dzgui.config.query import lookup from dzgui.config.userprefs import UserPrefs - +from dzgui.controllers.model import ModelManager from dzgui.util.diag import write_diagnostic -from dzgui.util import localize, cooldown, strings +from dzgui.util import cooldown, strings from dzgui.util._json import read_json, write_json from dzgui.util.open_links import open_workshop_page -from dzgui.util.format import pluralize, format_mods - +from dzgui.util.format import format_mods from dzgui.views.dialogs.filepicker import FilePicker from dzgui.views.dialogs.generic import GenericDialog +import gi +gi.require_version("Gtk", "3.0") +from gi.repository import Gtk, Gdk, GLib, GObject # noqa E402 + logger = logging.getLogger(__name__) if TYPE_CHECKING: From 77c42f5b7837cc2da5267b5cdb910bec0d58eed3 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Thu, 18 Dec 2025 14:29:00 +0900 Subject: [PATCH 03/10] chore: clear linting errors --- dzgui/api/bm.py | 2 -- dzgui/api/mods.py | 4 ++-- dzgui/config/freedesktop.py | 4 ++-- dzgui/config/uninstall.py | 3 ++- dzgui/controllers/mc.py | 1 - dzgui/controllers/model.py | 4 +++- dzgui/init/migrate.py | 1 - dzgui/init/update.py | 2 -- dzgui/util/cooldown.py | 1 - dzgui/util/css.py | 4 ++-- dzgui/util/deck.py | 1 - dzgui/util/diag.py | 2 -- dzgui/util/ip.py | 1 - dzgui/util/keys.py | 4 ++-- dzgui/util/localize.py | 4 ++-- dzgui/util/margins.py | 4 ++-- dzgui/util/open_links.py | 1 - dzgui/util/strings.py | 1 - dzgui/util/symlink.py | 1 - 19 files changed, 17 insertions(+), 28 deletions(-) diff --git a/dzgui/api/bm.py b/dzgui/api/bm.py index 80521e9..c2597f0 100644 --- a/dzgui/api/bm.py +++ b/dzgui/api/bm.py @@ -7,8 +7,6 @@ from dzgui.config.query import lookup from dzgui.const.endpoints import BM_SERVERS from dzgui.const.enum import Preferences -from typing import Union - logger = logging.getLogger(__name__) def get_attributes(config: Path, uid: int) -> str: diff --git a/dzgui/api/mods.py b/dzgui/api/mods.py index abf1246..a23bc20 100644 --- a/dzgui/api/mods.py +++ b/dzgui/api/mods.py @@ -17,7 +17,7 @@ from dzgui.const.constants import ( ) from dzgui.util.strings import checkmark -from dzgui.config.query import enum_to_key, lookup +from dzgui.config.query import lookup from dzgui.const.enum import Preferences from typing import Any @@ -91,7 +91,7 @@ def get_delimited_mods(steam_path: Path) -> list[Any]: for mod in mods: mod_dir = mod.name symlink = _hash(mod_dir) - # NOTE: malformed .cpp files could break this + # FIXME: malformed .cpp files could break this # mention that mods may be downloading meta = parse_meta(mod) if meta is None: diff --git a/dzgui/config/freedesktop.py b/dzgui/config/freedesktop.py index 9cda9f6..5ddb20a 100644 --- a/dzgui/config/freedesktop.py +++ b/dzgui/config/freedesktop.py @@ -28,8 +28,8 @@ def write_shim_file(share_path: Path) -> None: """ try: file.write_text(textwrap.dedent(template)) - f.chmod(f.stat().st_mode | stat.S_IEXEC) - except OSError: + file.chmod(file.stat().st_mode | stat.S_IEXEC) + except OSError as e: logger.critical(e) return clear_old_path() diff --git a/dzgui/config/uninstall.py b/dzgui/config/uninstall.py index 973b221..fb40d2f 100644 --- a/dzgui/config/uninstall.py +++ b/dzgui/config/uninstall.py @@ -1,7 +1,8 @@ import shutil from pathlib import Path -def uninstall(path: Path) -> None +def uninstall(path: Path) -> None: + pass # TODO: use xdg object? # partial/full (keep config?) # -u removes state, log diff --git a/dzgui/controllers/mc.py b/dzgui/controllers/mc.py index 8c321f7..2aa75eb 100644 --- a/dzgui/controllers/mc.py +++ b/dzgui/controllers/mc.py @@ -1,5 +1,4 @@ import logging -import re import shutil import threading import textwrap diff --git a/dzgui/controllers/model.py b/dzgui/controllers/model.py index a3dae37..a0474c1 100644 --- a/dzgui/controllers/model.py +++ b/dzgui/controllers/model.py @@ -62,7 +62,9 @@ class ModelManager: Methods are not thread-safe in themselves. """ - def __init__(self): + # FIXME: do not manipulate keyword/map widgets in here + + def __init__(self) -> None: self.filter_cache = {} self.ping_cache = {} diff --git a/dzgui/init/migrate.py b/dzgui/init/migrate.py index ecab06e..70ebbd6 100644 --- a/dzgui/init/migrate.py +++ b/dzgui/init/migrate.py @@ -47,7 +47,6 @@ def copy_state_files(state_path: Path) -> None: def copy_ipdb(ips_path: Path) -> None: home = Path.home() - name = "ips.csv" legacy = home / LEGACY_IPS_PATH if ips_path == legacy: return diff --git a/dzgui/init/update.py b/dzgui/init/update.py index c558d3e..222374c 100644 --- a/dzgui/init/update.py +++ b/dzgui/init/update.py @@ -1,11 +1,9 @@ import requests -import os import subprocess import sys from importlib import resources from packaging.version import Version, InvalidVersion -from pathlib import Path from dzgui.const.constants import APP_NAME_LOWER, REQUEST_TIMEOUT from dzgui.const.endpoints import GITHUB_RELEASES, CODEBERG_RELEASES diff --git a/dzgui/util/cooldown.py b/dzgui/util/cooldown.py index 9126025..413a4d0 100644 --- a/dzgui/util/cooldown.py +++ b/dzgui/util/cooldown.py @@ -1,5 +1,4 @@ from datetime import datetime -from pathlib import Path def get_time() -> int: return int(datetime.now().timestamp()) diff --git a/dzgui/util/css.py b/dzgui/util/css.py index c0ddc92114..d53188d 100644 --- a/dzgui/util/css.py +++ b/dzgui/util/css.py @@ -1,6 +1,6 @@ -import gi # noqa E402 +import gi gi.require_version("Gtk", "3.0") -from gi.repository import Gtk, Gdk +from gi.repository import Gtk, Gdk # noqa E402 def add_class(widget: Gtk.Widget, label: str) -> None: diff --git a/dzgui/util/deck.py b/dzgui/util/deck.py index df66dc5..7599fcc 100644 --- a/dzgui/util/deck.py +++ b/dzgui/util/deck.py @@ -1,6 +1,5 @@ import re import subprocess -from pathlib import Path CPU_FILE = "/proc/cpuinfo" diff --git a/dzgui/util/diag.py b/dzgui/util/diag.py index aae4149..8d069c2 100644 --- a/dzgui/util/diag.py +++ b/dzgui/util/diag.py @@ -1,7 +1,5 @@ import os import platform -import re -import textwrap from datetime import datetime from pathlib import Path diff --git a/dzgui/util/ip.py b/dzgui/util/ip.py index 4c1bf2f..5b2057b 100644 --- a/dzgui/util/ip.py +++ b/dzgui/util/ip.py @@ -1,5 +1,4 @@ import a2s -import gzip import requests import shutil import subprocess diff --git a/dzgui/util/keys.py b/dzgui/util/keys.py index 71c9064..bf8c363 100644 --- a/dzgui/util/keys.py +++ b/dzgui/util/keys.py @@ -1,6 +1,6 @@ -import gi # noqa E402 +import gi gi.require_version("Gtk", "3.0") -from gi.repository import Gdk +from gi.repository import Gdk # noqa E402 def is_navkey(key: int) -> bool: nav_keys = [ diff --git a/dzgui/util/localize.py b/dzgui/util/localize.py index d3c9988..5fe9fc6 100644 --- a/dzgui/util/localize.py +++ b/dzgui/util/localize.py @@ -10,7 +10,7 @@ def number(num: int | float) -> str: return locale.format_string(spec, num, grouping=True) -def set_locale(): +def set_locale() -> None: locale.setlocale(locale.LC_ALL, "") user_loc = loc if (loc := os.getenv("LC_CTYPE")) else "en_US.UTF-8" - locale.setlocale(locale.LC_NUMERIC, loc) + locale.setlocale(locale.LC_NUMERIC, user_loc) diff --git a/dzgui/util/margins.py b/dzgui/util/margins.py index 726ace6..f4f8883 100644 --- a/dzgui/util/margins.py +++ b/dzgui/util/margins.py @@ -1,6 +1,6 @@ -import gi # noqa E402 +import gi gi.require_version("Gtk", "3.0") -from gi.repository import Gtk +from gi.repository import Gtk # noqa E402 def set_surrounding_margins(widget: Gtk.Widget, margin: int) -> None: """ diff --git a/dzgui/util/open_links.py b/dzgui/util/open_links.py index f32cac5..7d0f92e 100644 --- a/dzgui/util/open_links.py +++ b/dzgui/util/open_links.py @@ -1,5 +1,4 @@ import os -import shlex import subprocess from dzgui.const.constants import APPID_DAYZ diff --git a/dzgui/util/strings.py b/dzgui/util/strings.py index ca9d277..2129746 100644 --- a/dzgui/util/strings.py +++ b/dzgui/util/strings.py @@ -1,5 +1,4 @@ from dataclasses import dataclass -from typing import List, Dict from dzgui.const.constants import SYSTEM_LOG diff --git a/dzgui/util/symlink.py b/dzgui/util/symlink.py index f0742ab..0c847e0 100644 --- a/dzgui/util/symlink.py +++ b/dzgui/util/symlink.py @@ -1,4 +1,3 @@ -import hashlib import logging from pathlib import Path From 6e8a78cf3e3ec5446d12a011ba5a75a753e35e18 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Thu, 18 Dec 2025 14:30:19 +0900 Subject: [PATCH 04/10] chore: update pyproject.toml --- pyproject.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 37150e9..9f2f0ef 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,12 +45,13 @@ test = [ "pre-commit==4.4.0", "pytest==8.4.2", "pytest-cov==7.0.0", - "PyGObject-stubs==2.13.0", ] lint = [ "mypy==1.17.0", "mypy_extensions==1.1.0", "ruff==0.11.13", + "PyGObject-stubs==2.13.0", + "types-requests>=2.32.4", ] dev = [ "dzgui[docs,test,lint]" From 3ea2afabed3f4ec27bbde6bc632e3ae895de2fe3 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Thu, 18 Dec 2025 14:35:11 +0900 Subject: [PATCH 05/10] chore: clear linting errors --- dzgui/views/pages/changelog.py | 3 +-- dzgui/views/pages/devs.py | 10 ++++------ dzgui/views/pages/options.py | 24 +++++++++--------------- dzgui/views/pages/thanks.py | 4 ++-- 4 files changed, 16 insertions(+), 25 deletions(-) diff --git a/dzgui/views/pages/changelog.py b/dzgui/views/pages/changelog.py index ab4c36a..5274a12 100644 --- a/dzgui/views/pages/changelog.py +++ b/dzgui/views/pages/changelog.py @@ -19,11 +19,10 @@ class Changelog(Gtk.Box): try: changelog = resources.read_text(APP_NAME_LOWER, "data/CHANGELOG.md") except OSError as e: - changelog = "Error: Failed to read changelog" # TODO: log error + changelog = "Error: Failed to read changelog" # TODO: should long text be wrapped? - formatted = format_pango(changelog) self.changelog_label = Gtk.Label(valign=Gtk.Align.START, margin=15) self.changelog_label.set_markup(formatted) diff --git a/dzgui/views/pages/devs.py b/dzgui/views/pages/devs.py index 80f53aa..7938178 100644 --- a/dzgui/views/pages/devs.py +++ b/dzgui/views/pages/devs.py @@ -1,9 +1,3 @@ -import typing - -import gi # noqa E402 -gi.require_version("Gtk", "3.0") -from gi.repository import Gtk - from dataclasses import fields from typing import Union, TYPE_CHECKING @@ -11,6 +5,10 @@ from dzgui.const.enum import NotebookPage from dzgui.util.strings import developers from dzgui.util.css import add_class +import gi # noqa E402 +gi.require_version("Gtk", "3.0") +from gi.repository import Gtk # noqa E402 + if TYPE_CHECKING: from dzgui.controllers.mc import Controller from dzgui.config.userprefs import UserPrefs diff --git a/dzgui/views/pages/options.py b/dzgui/views/pages/options.py index 4d63a51..4dc05ec 100644 --- a/dzgui/views/pages/options.py +++ b/dzgui/views/pages/options.py @@ -1,18 +1,17 @@ -import gi -gi.require_version("Gtk", "3.0") -from gi.repository import Gtk, Gdk # noqa - from pathlib import Path from typing import TYPE_CHECKING +from dzgui.api import pefile as PeFile +from dzgui.api.steam import find_user_id +from dzgui.config import query +from dzgui.util import strings, css, open_links + from dzgui.views.components.label import LeftLabel from dzgui.views.components.eventbox import InfoEventBox -from dzgui.views.components.icon import Icon from dzgui.views.components.web_button import WebButton from dzgui.views.dialogs.link_dialog import WorkshopLinkDialog -from dzgui.util import strings, css, open_links -from dzgui.const.enum import Preferences, RowType, Popup +from dzgui.const.enum import Preferences, Popup from dzgui.const.endpoints import STEAM_API_SETUP, BM_API_SETUP from dzgui.const.constants import ( APPID_DAYZ, @@ -29,9 +28,9 @@ from dzgui.const.constants import ( VIEW_REVEAL, ) -from dzgui.config import query -from dzgui.api import pefile as PeFile -from dzgui.api.steam import find_user_id +import gi +gi.require_version("Gtk", "3.0") +from gi.repository import Gtk, Gdk # noqa if TYPE_CHECKING: from dzgui.controllers.mc import Controller @@ -264,7 +263,6 @@ class Options(Gtk.Box): ) -> None: old_text = self.controller.query_config(enum) button.set_sensitive(False) - wait_msg = strings.dialog.working match enum: case Preferences.NAME: value = entry.get_text().strip() @@ -315,10 +313,6 @@ class Options(Gtk.Box): def _on_radio_toggled( self, button: Gtk.RadioButton, context: Preferences ) -> None: - AppNav = self.controller.get_mediator() - - state = button.get_group()[0].get_active() - try: self.controller.toggle_config(context) except Exception: diff --git a/dzgui/views/pages/thanks.py b/dzgui/views/pages/thanks.py index 9009e89..130cf42 100644 --- a/dzgui/views/pages/thanks.py +++ b/dzgui/views/pages/thanks.py @@ -1,9 +1,9 @@ from dzgui.util.format import format_pango from dzgui.util.strings import thanks -import gi # noqa E402 +import gi gi.require_version("Gtk", "3.0") -from gi.repository import Gtk +from gi.repository import Gtk # noqa E402 """ Special thanks page recognizing contributors to the project in alpha-order From 3e74174ab868fef5cd016a92b8c6f46e9144e4e9 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Thu, 18 Dec 2025 20:51:45 +0900 Subject: [PATCH 06/10] chore: add temporary exclusions --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 9f2f0ef..6f6ef5f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -64,6 +64,7 @@ build-backend = "setuptools.build_meta" [tool.ruff] line-length = 88 indent-width = 4 +extend-exclude = ["tree_servers.py", "tree_server_mods.py", "dialogs", "right_panel.py", "filter_panel.py", "base.py", "*lib/a2s", "dist.py"] [tool.ruff.format] quote-style = "double" From d5e54c04882d6ec06075cecba5194aa0cae5c8e6 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Thu, 18 Dec 2025 20:52:04 +0900 Subject: [PATCH 07/10] chore: clear linting errors --- dzgui/api/mods.py | 1 - dzgui/config/freedesktop.py | 1 - dzgui/init/migrate.py | 2 +- dzgui/main.py | 4 +--- dzgui/util/dist.py | 9 +++++---- dzgui/views/base.py | 10 +++++----- dzgui/views/components/buttonbox.py | 13 ++++--------- dzgui/views/components/connect_panel.py | 6 +++--- dzgui/views/components/eventbox.py | 8 ++++---- dzgui/views/components/icon.py | 4 ++-- dzgui/views/components/label.py | 4 ++-- dzgui/views/components/mod_panel.py | 14 +++++--------- dzgui/views/mixins/context_mixin.py | 2 +- 13 files changed, 33 insertions(+), 45 deletions(-) diff --git a/dzgui/api/mods.py b/dzgui/api/mods.py index a23bc20..33f902e 100644 --- a/dzgui/api/mods.py +++ b/dzgui/api/mods.py @@ -1,7 +1,6 @@ import dayzquery import hashlib import logging -import re import shlex from dataclasses import dataclass diff --git a/dzgui/config/freedesktop.py b/dzgui/config/freedesktop.py index 5ddb20a..a9aa87c 100644 --- a/dzgui/config/freedesktop.py +++ b/dzgui/config/freedesktop.py @@ -2,7 +2,6 @@ import shutil import textwrap from pathlib import Path - def write_desktop_file(share_path: Path) -> None: template = f"""\ [Desktop Entry] diff --git a/dzgui/init/migrate.py b/dzgui/init/migrate.py index 70ebbd6..e7594b9 100644 --- a/dzgui/init/migrate.py +++ b/dzgui/init/migrate.py @@ -32,7 +32,7 @@ def migrate_cols_file(res: Path) -> None: return cols["View"] = cols.pop("Perspective") cols["Max"] = cols.pop("Maximum") - write_json(j, res) + write_json(j, res) def copy_state_files(state_path: Path) -> None: diff --git a/dzgui/main.py b/dzgui/main.py index 57a09dd..4274de4 100644 --- a/dzgui/main.py +++ b/dzgui/main.py @@ -3,8 +3,6 @@ import logging import os import sys -from packaging.version import Version - from dzgui.api.mods import remove_stale_signatures from dzgui.config.ipdb import get_ipdb @@ -16,7 +14,7 @@ from dzgui.const.update import ALLOW_UPDATES from dzgui.init.coords import get_local_coords from dzgui.init.dayz import is_dayz_installed -from dzgui.init.flock import lock_acquire, lock_release +from dzgui.init.flock import lock_acquire from dzgui.init.migrate import ( has_new_config, migrate_cols_file, diff --git a/dzgui/util/dist.py b/dzgui/util/dist.py index 8c6d41b..0d6f0d8 100644 --- a/dzgui/util/dist.py +++ b/dzgui/util/dist.py @@ -1,15 +1,16 @@ import multiprocessing from math import radians, cos, sin, asin, sqrt -from typing import Self, TYPE_CHECKING +from typing import TYPE_CHECKING -import gi -gi.require_version("Gtk", "3.0") -from gi.repository import Gtk, GLib, Gdk, GObject, Pango # noqa E402 import dzgui.util.ip as ip from dzgui.util.ip import GeolocationError from dzgui.util.localize import number +import gi +gi.require_version("Gtk", "3.0") +from gi.repository import Gtk # noqa E402 + if TYPE_CHECKING: from dzgui.util.ip import Coords diff --git a/dzgui/views/base.py b/dzgui/views/base.py index 5983444..a629597 100644 --- a/dzgui/views/base.py +++ b/dzgui/views/base.py @@ -19,10 +19,6 @@ from enum import Enum from pathlib import Path from typing import Literal, Any -import gi -gi.require_version("Gtk", "3.0") -from gi.repository import Gtk, GLib, Gdk, GObject, Pango # noqa - # TODO: most likely very little of this will be retained from dzgui.const.enum import ( Preferences, @@ -35,7 +31,6 @@ from dzgui.const.enum import ( from dzgui.const.constants import NO_EXPAND, NO_FILL, EXPAND, FILL from dzgui.const.constants import APP_NAME, APP_NAME_LOWER, WINDOW_DEFAULT_X, WINDOW_DEFAULT_Y from dzgui.controllers.mc import Controller - from dzgui.util import css, dist, localize, strings, ip, deck, open_links from dzgui.util.format import pluralize @@ -62,6 +57,11 @@ from dzgui.views.dialogs.generic import GenericDialog # TODO: not going to be in base anymore import dzgui.util._json as JSON # noqa +import gi +gi.require_version("Gtk", "3.0") +from gi.repository import Gtk, GLib, Gdk, GObject, Pango # noqa E402 + + logger = logging.getLogger(__name__) # https://bugzilla.gnome.org/show_bug.cgi?id=708676 warnings.filterwarnings("ignore", ".*g_value_get_int", Warning) diff --git a/dzgui/views/components/buttonbox.py b/dzgui/views/components/buttonbox.py index 131a6ac..6cf6976 100644 --- a/dzgui/views/components/buttonbox.py +++ b/dzgui/views/components/buttonbox.py @@ -1,16 +1,11 @@ import logging -import functools - -import gi # noqa E402 -gi.require_version("Gtk", "3.0") -from gi.repository import Gtk, Gdk from dzgui.const.enum import ButtonType -from dzgui.const.enum import NotebookPage -from dzgui.const.enum import RowType -from dzgui.const.constants import NO_EXPAND, NO_FILL, EXPAND, FILL +from dzgui.const.constants import NO_EXPAND, NO_FILL -from typing import Callable +import gi +gi.require_version("Gtk", "3.0") +from gi.repository import Gtk, Gdk # noqa E402 logger = logging.getLogger(__name__) diff --git a/dzgui/views/components/connect_panel.py b/dzgui/views/components/connect_panel.py index f45fea3..f600828 100644 --- a/dzgui/views/components/connect_panel.py +++ b/dzgui/views/components/connect_panel.py @@ -1,9 +1,9 @@ -import gi # noqa E402 +import gi gi.require_version("Gtk", "3.0") -from gi.repository import Gtk, Gdk +from gi.repository import Gtk # noqa E402 class ConnectPanel(Gtk.Grid): - def __init__(self): + def __init__(self) -> None: super().__init__() self.label = Gtk.Label(label="Connect by IP/ID") diff --git a/dzgui/views/components/eventbox.py b/dzgui/views/components/eventbox.py index 57c8a25..aa607de 100644 --- a/dzgui/views/components/eventbox.py +++ b/dzgui/views/components/eventbox.py @@ -1,9 +1,9 @@ -import gi # noqa E402 -gi.require_version("Gtk", "3.0") -from gi.repository import Gtk, Gdk - from dzgui.const.constants import HELP_BUBBLE +import gi +gi.require_version("Gtk", "3.0") +from gi.repository import Gtk, Gdk # noqa E402 + class InfoEventBox(Gtk.EventBox): def __init__(self, text: str, parent: Gtk.Widget): super().__init__(margin_start=10) diff --git a/dzgui/views/components/icon.py b/dzgui/views/components/icon.py index 7213a79..0ade27e 100644 --- a/dzgui/views/components/icon.py +++ b/dzgui/views/components/icon.py @@ -1,9 +1,9 @@ import gi gi.require_version("Gtk", "3.0") -from gi.repository import Gtk +from gi.repository import Gtk # noqa E402 class Icon(Gtk.Image): - def __init__(self, name: str, l_margin=0): + def __init__(self, name: str, l_margin=0) -> None: super().__init__(icon_name=name, icon_size=Gtk.IconSize.BUTTON, margin_start=l_margin diff --git a/dzgui/views/components/label.py b/dzgui/views/components/label.py index 71ecbbf..4100a01 100644 --- a/dzgui/views/components/label.py +++ b/dzgui/views/components/label.py @@ -1,6 +1,6 @@ -import gi # noqa E402 +import gi gi.require_version("Gtk", "3.0") -from gi.repository import Gtk +from gi.repository import Gtk # noqa E402 class LeftLabel(Gtk.Label): def __init__(self, text: str, tooltip: str = ""): diff --git a/dzgui/views/components/mod_panel.py b/dzgui/views/components/mod_panel.py index 5a706e5..599daba 100644 --- a/dzgui/views/components/mod_panel.py +++ b/dzgui/views/components/mod_panel.py @@ -1,16 +1,12 @@ -import threading +from typing import TYPE_CHECKING -import gi # noqa E402 -gi.require_version("Gtk", "3.0") -from gi.repository import Gtk, Gdk, GLib - -from dzgui.const.enum import ModButton, Popup +from dzgui.const.enum import ModButton from dzgui.const.constants import NO_EXPAND, FILL from dzgui.util import strings -from dzgui.views.dialogs.generic import GenericDialog - -from typing import TYPE_CHECKING +import gi +gi.require_version("Gtk", "3.0") +from gi.repository import Gtk # noqa E402 if TYPE_CHECKING: from dzgui.controllers.mc import Controller diff --git a/dzgui/views/mixins/context_mixin.py b/dzgui/views/mixins/context_mixin.py index ecb3826..7b37313 100644 --- a/dzgui/views/mixins/context_mixin.py +++ b/dzgui/views/mixins/context_mixin.py @@ -1,6 +1,6 @@ import logging from dzgui.views.trees.tree_base import TreeView -from dzgui.const.enum import Popup, ContextMenu +from dzgui.const.enum import ContextMenu import gi gi.require_version("Gtk", "3.0") From 730e108ceab9ecffea17a4b4a9553b22ada8d1a5 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Fri, 19 Dec 2025 20:26:07 +0900 Subject: [PATCH 08/10] chore: clear linting errors --- dzgui/api/mods.py | 1 - dzgui/main.py | 1 - dzgui/views/pages/changelog.py | 6 +++++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/dzgui/api/mods.py b/dzgui/api/mods.py index 33f902e..6a04514 100644 --- a/dzgui/api/mods.py +++ b/dzgui/api/mods.py @@ -10,7 +10,6 @@ import dzgui.api.pefile as PeFile from dzgui.api.servers import Record, get_rules from dzgui.const.constants import ( APPID_DAYZ, - APPID_DAYZ_EXP, LIBRARYFOLDERS_PATH, WORKSHOP_PATH, ) diff --git a/dzgui/main.py b/dzgui/main.py index 4274de4..166f70e 100644 --- a/dzgui/main.py +++ b/dzgui/main.py @@ -9,7 +9,6 @@ from dzgui.config.ipdb import get_ipdb from dzgui.config.userprefs import UserPrefs from dzgui.config.xdg import get_xdg_paths, parse_filepaths -from dzgui.const.constants import APP_NAME_LOWER from dzgui.const.update import ALLOW_UPDATES from dzgui.init.coords import get_local_coords diff --git a/dzgui/views/pages/changelog.py b/dzgui/views/pages/changelog.py index 5274a12..2caa366 100644 --- a/dzgui/views/pages/changelog.py +++ b/dzgui/views/pages/changelog.py @@ -1,3 +1,5 @@ +import logging + from typing import TYPE_CHECKING from importlib import resources @@ -8,6 +10,8 @@ import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk # noqa E402 +logger = logging.getLogger(__name__) + if TYPE_CHECKING: from dzgui.controllers.mc import Controller @@ -19,7 +23,7 @@ class Changelog(Gtk.Box): try: changelog = resources.read_text(APP_NAME_LOWER, "data/CHANGELOG.md") except OSError as e: - # TODO: log error + logger.critical(e) changelog = "Error: Failed to read changelog" # TODO: should long text be wrapped? From 5e5d6e886b73b97cee1157a541253ae09538a8fa Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Sat, 20 Dec 2025 21:46:41 +0900 Subject: [PATCH 09/10] chore: do not save gport var --- dzgui/api/mods.py | 1 - 1 file changed, 1 deletion(-) diff --git a/dzgui/api/mods.py b/dzgui/api/mods.py index 6a04514..c929085 100644 --- a/dzgui/api/mods.py +++ b/dzgui/api/mods.py @@ -155,7 +155,6 @@ def find_stale_mods(config: Path) -> list[int]: for server in servers: split = server.split(":") ip = split[0] - gport = split[1] qport = split[2] mods = get_rules(ip, qport) From d8a12d13f6888b20ba387d133dd51d3eb3fec1a2 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Sat, 20 Dec 2025 22:15:05 +0900 Subject: [PATCH 10/10] chore: update imports --- dzgui/controllers/model.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/dzgui/controllers/model.py b/dzgui/controllers/model.py index a0474c1..fdcd241 100644 --- a/dzgui/controllers/model.py +++ b/dzgui/controllers/model.py @@ -1,11 +1,14 @@ -import gi -gi.require_version("Gtk", "3.0") -from gi.repository.Gtk import ListStore -from gi.repository import GObject +import re +from dataclasses import dataclass from dzgui.const.enum import FilterMode +from dzgui.util import strings + +import gi +gi.require_version("Gtk", "3.0") +from gi.repository.Gtk import ListStore # noqa E402 +from gi.repository import GObject, GLib # noqa E402 -from dataclasses import dataclass, fields @dataclass @dataclass(slots=True, frozen=True) @@ -140,7 +143,7 @@ class ModelManager: row[9] = self.ping_cache[row[7]] if len(rows) > 0: - clone = ModelMan.new_model() + clone = self.new_model() rows = self.sort_rows(rows) for row in rows: clone.append(row)