From 9022b1718625ad5b7bf00c5e4240cfdc6599d32c Mon Sep 17 00:00:00 2001 From: mARTin-B78 Date: Tue, 9 Jun 2026 16:02:07 +0200 Subject: [PATCH] fix: Pylance errors in gtksettings.py + pyrightconfig venv path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - str() wrap float config values passed to _entry() (min_speech_seconds, silence_rms, wakeword_silence_seconds) — type error + runtime safety - Guard m.group() calls after re.match() with 'if m:' — m can be None - Fix _bench_done: guard 'acc' None check alongside 'fastest' - Fix wakeword_bench.run() call: pass engines as first positional arg, remove invalid wakeword_model/wakeword_uri kwargs - gi.repository import: add type: ignore[import-untyped] to suppress Pylance false positives from missing C-extension stubs - pyrightconfig.json: point venv to linux/.venv so numpy resolves; add reportMissingModuleSource=none for stub-less system packages Co-Authored-By: Claude Sonnet 4.6 --- linux/blitztext/gtksettings.py | 19 ++++++++++--------- pyrightconfig.json | 5 ++++- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/linux/blitztext/gtksettings.py b/linux/blitztext/gtksettings.py index ad16f84..85b50c1 100644 --- a/linux/blitztext/gtksettings.py +++ b/linux/blitztext/gtksettings.py @@ -23,7 +23,7 @@ import gi gi.require_version("Gtk", "3.0") gi.require_version("Gdk", "3.0") -from gi.repository import Gdk, GLib, Gtk, Pango # noqa: E402 +from gi.repository import Gdk, GLib, Gtk, Pango # noqa: E402 # type: ignore[import-untyped] from . import __version__, audio, autostart, benchmark, llm, logbuffer, stt, wakeword_bench # noqa: E402 from .config import Config, save # noqa: E402 @@ -663,9 +663,10 @@ def _md_panel(text: str, height: int = 420) -> Gtk.ScrolledWindow: _insert_inline(raw[2:], end) elif re.match(r'^\d+\. ', raw): m = re.match(r'^(\d+\. )(.*)', raw) - buf.insert(end, " " + m.group(1)) - end = buf.get_end_iter() - _insert_inline(m.group(2), end) + if m: + buf.insert(end, " " + m.group(1)) + end = buf.get_end_iter() + _insert_inline(m.group(2), end) else: _insert_inline(raw, end) @@ -1576,9 +1577,9 @@ notebook.bt-nb tab:checked label { # ── Quality gate card ───────────────────────────────────────────────── q_card = _card_section(page, "Quality gate") - self.q_min = _labeled(q_card, "Min seconds", _entry(self.cfg.min_speech_seconds), width=LW, + self.q_min = _labeled(q_card, "Min seconds", _entry(str(self.cfg.min_speech_seconds)), width=LW, tooltip="Minimum audio length. Shorter clips are silently ignored (avoids pasting nothing).") - self.q_rms = _labeled(q_card, "Silence RMS", _entry(self.cfg.silence_rms), width=LW, + self.q_rms = _labeled(q_card, "Silence RMS", _entry(str(self.cfg.silence_rms)), width=LW, tooltip="Microphone volume threshold below which a clip is considered silent and dropped.") self.q_halluc = Gtk.Switch(); self.q_halluc.set_active(self.cfg.reject_hallucinations) _switch_row(q_card, "Reject hallucinations", self.q_halluc, width=LW, @@ -1616,7 +1617,7 @@ notebook.bt-nb tab:checked label { test_box.pack_start(self.ww_test_lbl, False, False, 0) _labeled(ww_card, "", test_box, width=LW) - self.ww_silence = _labeled(ww_card, "Silence to stop (s)", _entry(self.cfg.wakeword_silence_seconds), width=LW, + self.ww_silence = _labeled(ww_card, "Silence to stop (s)", _entry(str(self.cfg.wakeword_silence_seconds)), width=LW, tooltip="After the wakeword fires, stop recording this many seconds after you stop speaking. Default 2.0.") self.cancel_keywords = _labeled(ww_card, "Cancel words", _entry(", ".join(self.cfg.cancel_keywords), placeholder="abbrechen, cancel"), width=LW, @@ -1952,7 +1953,7 @@ notebook.bt-nb tab:checked label { def _bench_done(self, rows) -> bool: fastest, acc = benchmark.best(rows) - if not fastest: + if not fastest or not acc: self.bench_summary.set_markup('All engines failed — check the Log tab.') return False self.bench_summary.set_markup( @@ -2038,8 +2039,8 @@ notebook.bt-nb tab:checked label { GLib.idle_add(self._wwbench_progress, done, total, u) try: res = wakeword_bench.run( + self.cfg.wakeword_engines, tts_url=url, tts_api_key_env=key, tts_model=model, voices=voices, - wakeword_model=self.cfg.wakeword_model, wakeword_uri=self.cfg.wakeword_uri, language=self.cfg.language, count=count, progress=prog) except Exception as exc: # noqa: BLE001 - surface setup errors GLib.idle_add(self._wwbench_error, str(exc)) diff --git a/pyrightconfig.json b/pyrightconfig.json index 4f751af..117d589 100644 --- a/pyrightconfig.json +++ b/pyrightconfig.json @@ -1,5 +1,8 @@ { "extraPaths": [ "/usr/lib/python3/dist-packages" - ] + ], + "venvPath": "linux", + "venv": ".venv", + "reportMissingModuleSource": "none" }