From ab997b4460e94d0b53a070f0832b061ff850a02b Mon Sep 17 00:00:00 2001 From: Philipp Verpoort Date: Tue, 1 Sep 2026 21:51:14 +0200 Subject: [PATCH] Bugfix: include groupselect library in Nuitka --- .github/workflows/build.yml | 15 +++++++++++++-- app/main.py | 2 +- pyproject.toml | 2 +- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f750a94..39badbf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -95,10 +95,21 @@ jobs: shell: bash run: | uv run pyside6-deploy --init --name groupselect2 app/main.py + # groupselect-lib's groupselect.algorithms.__init__ resolves its algorithm + # implementations (DREAM, HERMES, ...) via a runtime-constructed + # importlib.import_module() call, not a static "from ... import" -- Nuitka's + # standalone mode only bundles modules it can find via static import analysis, + # so those submodules were silently left out of the build (ModuleNotFoundError + # at runtime, e.g. "No module named groupselect.algorithms.algorithm_dream"). + # --include-package forces the whole groupselect package in regardless of how + # it's imported. groupselect-lib is tiny, so we deliberately go one level wider + # than strictly necessary (the whole package, not just .algorithms) to guard + # against the same pattern showing up elsewhere in it later. + include_args="--include-package=groupselect" if [ "${{ runner.os }}" = "Windows" ]; then - extra_args="--msvc=latest --noinclude-qt-translations" + extra_args="--msvc=latest --noinclude-qt-translations $include_args" else - extra_args="--noinclude-qt-translations" + extra_args="--noinclude-qt-translations $include_args" fi sed -i.bak "s/^extra_args = .*/extra_args = $extra_args/" app/pysidedeploy.spec rm -f app/pysidedeploy.spec.bak diff --git a/app/main.py b/app/main.py index 474b558..811cbd0 100644 --- a/app/main.py +++ b/app/main.py @@ -21,7 +21,7 @@ def main(): """Set up the application context and launch the app.""" app_ctx = AppContext( app_name="GroupSelect", - app_version="v2.1.1", + app_version="v2.1.2", project_file_ending=".gspr", main_window_cls=GSMainWindow, model_manager_cls=GSModelManager, diff --git a/pyproject.toml b/pyproject.toml index 763edbd..97d89c1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "groupselect-app" -version = "2.1.1" +version = "2.1.2" description = "The GroupSelect App developed by the Sortition Foundation." authors = [ { name = "Philipp C. Verpoort", email = "pcv@sortitionfoundation.org" }