Merge pull request #28 from aclist/fix/type_checking

fix: clear linting errors
This commit is contained in:
aclist 2025-12-20 22:17:28 +09:00 committed by GitHub
commit 01176c7798
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
38 changed files with 121 additions and 161 deletions

View File

@ -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:

View File

@ -1,7 +1,6 @@
import dayzquery
import hashlib
import logging
import re
import shlex
from dataclasses import dataclass
@ -11,13 +10,12 @@ 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,
)
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 +89,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:
@ -157,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)

View File

@ -2,7 +2,6 @@ import shutil
import textwrap
from pathlib import Path
def write_desktop_file(share_path: Path) -> None:
template = f"""\
[Desktop Entry]
@ -28,8 +27,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()

View File

@ -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

View File

@ -1,22 +1,13 @@
import logging
import locale
import os
import re
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,
@ -32,23 +23,32 @@ 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.util.redact import redact_log
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:

View File

@ -1,12 +1,14 @@
import re
from dataclasses import dataclass
from typing import Self
from dzgui.const.enum import FilterMode, MAIN_MENU_ROWS, HELP_MENU_ROWS
from dzgui.util import strings
import gi
gi.require_version("Gtk", "3.0")
from gi.repository.Gtk import ListStore
from gi.repository import GObject
from dzgui.const.enum import FilterMode, MAIN_MENU_ROWS, HELP_MENU_ROWS
from dataclasses import dataclass, fields
from gi.repository.Gtk import ListStore # noqa E402
from gi.repository import GObject, GLib # noqa E402
@dataclass
@dataclass(slots=True, frozen=True)
@ -160,7 +162,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)

View File

@ -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:
@ -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

View File

@ -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

View File

@ -3,20 +3,17 @@ 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
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
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,
@ -107,6 +104,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)

View File

@ -1,5 +1,4 @@
from datetime import datetime
from pathlib import Path
def get_time() -> int:
return int(datetime.now().timestamp())

View File

@ -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:

View File

@ -1,6 +1,5 @@
import re
import subprocess
from pathlib import Path
CPU_FILE = "/proc/cpuinfo"

View File

@ -1,7 +1,5 @@
import os
import platform
import re
import textwrap
from datetime import datetime
from pathlib import Path

View File

@ -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

View File

@ -1,5 +1,4 @@
import a2s
import gzip
import requests
import shutil
import subprocess

View File

@ -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 = [

View File

@ -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)

View File

@ -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:
"""

View File

@ -1,5 +1,4 @@
import os
import shlex
import subprocess
from dzgui.const.constants import APPID_DAYZ

View File

@ -1,5 +1,4 @@
from dataclasses import dataclass
from typing import List, Dict
from dzgui.const.constants import SYSTEM_LOG

View File

@ -1,4 +1,3 @@
import hashlib
import logging
from pathlib import Path

View File

@ -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)

View File

@ -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__)

View File

@ -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")

View File

@ -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)

View File

@ -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

View File

@ -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 = ""):

View File

@ -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

View File

@ -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")

View File

@ -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,11 +23,10 @@ class Changelog(Gtk.Box):
try:
changelog = resources.read_text(APP_NAME_LOWER, "data/CHANGELOG.md")
except OSError as e:
logger.critical(e)
changelog = "Error: Failed to read changelog"
# TODO: log error
# 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)

View File

@ -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

View File

@ -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:

View File

@ -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

View File

@ -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:

View File

@ -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()

View File

@ -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:

View File

@ -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

View File

@ -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]"
@ -63,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"