From 9249e5caa415f17ce0428722b367a47adf7bdf6d Mon Sep 17 00:00:00 2001 From: Alex Hunt Date: Mon, 24 Aug 2026 16:21:50 +0100 Subject: [PATCH 1/2] ci: cut a GitHub release on a tag publish.yml puts the package on PyPI but creates no release, and Zenodo archives releases rather than tags. Without this a tagged version would reach PyPI and never be archived. Co-Authored-By: Claude Opus 5 --- .github/workflows/release.yml | 42 +++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..b0039de --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,42 @@ +name: release + +on: + push: + tags: + - 'v*' + +permissions: + contents: write + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Build the package + run: | + python -m pip install --upgrade pip build + python -m build + + - uses: softprops/action-gh-release@v2 + with: + files: dist/* + fail_on_unmatched_files: true + generate_release_notes: false + body: | + The local HTTP server FLIMKit image analysis clients talk to. + + ``` + pip install flimkit-bridge + ``` + + That pulls FLIMKit with it. The server then starts with FLIMKit, and `flimkit-bridge` is on the path as well for the server without the FLIMKit window. + + The QuPath extension and the Fiji add-on are both clients of this server. Install the jar for whichever you use. + + The wheel and sdist are attached below for anyone installing offline, or into `~/.flimkit/plugins/`. From 4542a659687961ab7b6aaad597217437c8b9991b Mon Sep 17 00:00:00 2001 From: Alex Hunt Date: Mon, 24 Aug 2026 16:29:42 +0100 Subject: [PATCH 2/2] test: the plugin test names the tool this package registers It came across from the QuPath add-on still asserting qupath_bridge_open and the qupath_bridge entry point, both renamed when the package stopped being named after one of its clients. It passed locally only because the old package was still installed and providing those names, so a fourth test now asserts they are gone. Co-Authored-By: Claude Opus 5 --- tests/test_plugin.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tests/test_plugin.py b/tests/test_plugin.py index 7495580..31da00c 100644 --- a/tests/test_plugin.py +++ b/tests/test_plugin.py @@ -9,7 +9,7 @@ def test_api_version_matches(): def test_tool_is_registered(): - found = plugins.get_tool('qupath_bridge_open') + found = plugins.get_tool('flimkit_bridge_open') assert found is not None assert found.menu_path == ('Tools',) assert callable(found.callback) @@ -17,4 +17,9 @@ def test_tool_is_registered(): def test_entry_point_is_declared(): names = [e.name for e in entry_points(group='flimkit.plugins')] - assert 'qupath_bridge' in names + assert 'flimkit_bridge' in names + + +def test_the_tool_is_not_named_after_one_client(): + assert plugins.get_tool('qupath_bridge_open') is None + assert plugins.get_tool('fiji_bridge_open') is None