Compare commits

..

4 Commits

Author SHA1 Message Date
aclist
daa4aa0059 chore: clear typehinting errors resulting from mixins
Some checks are pending
Mirror to Codeberg / mirror-to-codeberg (push) Waiting to run
2026-07-24 00:48:45 +09:00
aclist
71a0481600 fix: add comma 2026-07-24 00:47:28 +09:00
aclist
ba1b980a7f chore: rename test namespace 2026-07-24 00:47:08 +09:00
aclist
1dc20b838d fix: support source version of DZGUI 2026-07-24 00:45:27 +09:00
3 changed files with 22 additions and 20 deletions

View File

@ -49,8 +49,10 @@ class PageNum(Enum):
SHORTCUTS = 7
FINAL = 8
class OptionalPageMixin:
"""Marks optional pages as advanceable"""
def _on_map(self, page: "ScrolledWizardPage") -> None:
EMITTER.emit("step_complete")
@ -221,7 +223,7 @@ class APIValidationPage(ScrolledWizardPage):
self.spinner.stop()
class BMValidationPage(OptionalPageMixin, APIValidationPage):
class BMValidationPage(OptionalPageMixin, APIValidationPage): # type: ignore
def __init__(self) -> None:
super().__init__(
enum=PageNum.BM_API,
@ -451,6 +453,7 @@ class Assistant(Gtk.Assistant):
else:
self.set_default_size(1500, 900)
self.is_binary = False if os.getenv("PYAPP") is None else True
self.config_path = XDG.config
self.config_values: dict[str, Any] = config_boilerplate
@ -491,7 +494,7 @@ class Assistant(Gtk.Assistant):
):
continue
# NOTE: disabled for now on system-provided packages
if isinstance(page, ShortcutCreationPage) and os.getenv("PYAPP") is None:
if isinstance(page, ShortcutCreationPage) and not self.is_binary:
continue
self._add_page(page, page.get_page_type())
@ -506,32 +509,33 @@ class Assistant(Gtk.Assistant):
def _advance_page(self, index: int) -> int:
page = self.get_nth_page(index)
# TODO: use enums/isinstance
match page:
case self.page1:
case IntroductionPage():
pass
case self.page2:
if self.page2.is_migrated():
case ConfigMigrationPage():
if page.is_migrated():
steam_path = lookup(self.config_path, Preferences.DEFAULT)
self.page7.set_steam_path(steam_path)
return self.get_n_pages() - 2
case self.page3:
offset = 1 if not self.is_binary else 2
self.setup_complete = True
return self.get_n_pages() - offset
case SteamPathPage():
self.config_values["default_steam_path"] = page.get_path_from_radio()
case self.page4:
case SteamValidationPage():
self.config_values["steam_api"] = page.get_api_key()
case self.page5:
case BMValidationPage():
self.config_values["bm_api"] = page.get_api_key()
case PreferencesPage():
# NOTE: collects config values before advancing to last page
case self.page6:
name, use_miles, client = self.page6.get_prefs()
self.config_values["name"] = name
self.config_values["use_miles"] = use_miles
self.config_values["client"] = client
self.write_config()
self.page7.set_steam_path(self.config_values["default_steam_path"])
case self.page7:
self.page7.create_shortcuts()
self.setup_complete = True
case ShortcutCreationPage():
page.create_shortcuts()
case _:
raise AttributeError("Trying to advance a non-canonical page")
return index + 1
@ -575,9 +579,7 @@ class Assistant(Gtk.Assistant):
bar.set_fraction(fraction)
bar.set_text(f"{page_num}/{total}")
# NOTE: disable forward action
# TODO: use page enums
if page != self.page1:
if not isinstance(page, IntroductionPage):
EMITTER.emit("step_pending")
@ -604,7 +606,7 @@ class CheckboxWithLabel(Gtk.Box):
self.button.set_active(state)
class ShortcutCreationPage(OptionalPageMixin, ScrolledWizardPage):
class ShortcutCreationPage(OptionalPageMixin, ScrolledWizardPage): # type: ignore
def __init__(self, shortcut: Path) -> None:
super().__init__(
enum=PageNum.SHORTCUTS,

View File

@ -107,11 +107,11 @@ config-settings-package = { pygobject-stubs = { config = "Gtk3,Gdk3,Soup2" } }
[tool.pytest.ini_options]
markers = [
"apitest: checks remote endpoints",
"config: config file keys/values",
"mods: tests mod metadata/link creation",
"pefile: validate PE files",
"post_install: requires a completed installation",
"redact: log redaction mechanisms",
"slow: long-running tests",
"webtest: checks remote endpoints"
]

View File

@ -4,7 +4,7 @@ from dzgui.config.query import get_config
from dzgui.config.xdg import get_xdg_paths, parse_filepaths
from dzgui.api import probe
pytestmark = pytest.mark.webtest
pytestmark = pytest.mark.apitest
@pytest.fixture