Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
0363f13
WIP setup mkdocs
FynnBe Nov 24, 2025
add1a41
use max disk space action
FynnBe Nov 24, 2025
0fa1ef3
use max disk space action in tests too
FynnBe Nov 24, 2025
e12e2e7
update pyright settings
FynnBe Nov 24, 2025
244ac48
add tests
FynnBe Nov 25, 2025
20e4466
fix typo
FynnBe Nov 25, 2025
2c34d6f
WIP fix python repl examples in docs
FynnBe Nov 25, 2025
6b6c156
fix issues in test_add_weights.py
FynnBe Nov 25, 2025
9bc83a1
add missing import
FynnBe Dec 8, 2025
3f4c251
update docs
FynnBe Dec 9, 2025
0aae924
mark bioimageio imports as known third party
FynnBe Dec 19, 2025
2e59dd4
update absolute tolerance
FynnBe Dec 19, 2025
d9a2a0c
update docs
FynnBe Dec 19, 2025
b0b7ccd
update docs
FynnBe Dec 22, 2025
e2d2807
avoid broken onnx_ir version
FynnBe Jan 15, 2026
28c6867
bump patch and spec and update changelog
FynnBe Jan 15, 2026
ad62247
rewrite test_add_weights
FynnBe Jan 15, 2026
83c3244
fix conda recipe generation
FynnBe Jan 15, 2026
f66efcd
add tests
FynnBe Jan 16, 2026
ce8a963
fix conda recipe
FynnBe Jan 16, 2026
c76434e
improve cli
FynnBe Jan 16, 2026
df7eed1
fix cli tests
FynnBe Jan 16, 2026
78d213f
add doc images
FynnBe Jan 16, 2026
3362f6e
wip update docs
FynnBe Jan 16, 2026
d999b79
remove main block in main file
FynnBe Jan 28, 2026
b9a878d
use markdown-exec[ansi]
FynnBe Jan 28, 2026
630bfa9
update docs
FynnBe Jan 29, 2026
48c9abf
update block illustration
FynnBe Jan 29, 2026
04b6a19
fix conda recipe
FynnBe Jan 29, 2026
e8d72fb
remove limited h5 support
FynnBe Jan 30, 2026
fcc9929
improve console doc examples formatting
FynnBe Jan 30, 2026
3a21380
remove unused import
FynnBe Jan 30, 2026
96f0903
rename test
FynnBe Feb 3, 2026
eb535e4
add conda env name explicitly in test summary
FynnBe Feb 3, 2026
13c3362
add working_dir arg
FynnBe Feb 3, 2026
30a4f0c
improve get-started docs
FynnBe Feb 3, 2026
a0f6cc2
unify quantile variable names and add sample quantile method
FynnBe Feb 9, 2026
bb58471
exclude hidden files from pyright analysis
FynnBe Feb 9, 2026
2a87299
fix Clip._apply
FynnBe Feb 9, 2026
13cdfc7
fix test_clip_percentiles
FynnBe Feb 9, 2026
2e109d3
pytest ignore scripts/generate_api_doc_pages.py (avoids mkdocs except…
FynnBe Feb 9, 2026
349ccf8
fix test_clip_percentiles
FynnBe Feb 10, 2026
5836726
bump spec
FynnBe Feb 10, 2026
41f5975
split off coverage comment
FynnBe Feb 11, 2026
fa93823
fix typing
FynnBe Feb 12, 2026
ebdced4
readd main func in __main__ as entry point
FynnBe Feb 12, 2026
9d16164
bump spec and add test from spec at main
FynnBe Feb 12, 2026
8a4cdef
use weight-format arg in CLI call when testing in a separate conda env
FynnBe Feb 12, 2026
0071dcd
move griffe libs to docs deps
FynnBe Feb 13, 2026
7c659cb
bump spec
FynnBe Feb 16, 2026
62c16b6
update set-output syntax
FynnBe Feb 16, 2026
3aab02d
fix branch name output
FynnBe Feb 17, 2026
7632d6c
add empty-cache command
FynnBe Feb 17, 2026
c43d650
bump spec
FynnBe Feb 17, 2026
539bd2b
save actual output only if working_dir is specified
FynnBe Feb 17, 2026
4ea018f
ignore .lock files in test_empty_cache
FynnBe Feb 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .github/actions/max_disk_space/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
name: 'Maximize disk space'
description: 'Maximize available disk space by removing unwanted software'

runs:
using: 'composite'
steps:
- name: Maximize available disk space
uses: AdityaGarg8/remove-unwanted-software@v5
with:
remove-android: 'true'
remove-dotnet: 'true'
remove-haskell: 'true'
remove-codeql: 'true'
146 changes: 92 additions & 54 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:
workflow_dispatch:
inputs:
force-publish:
description: 'Force publish even if no version change detected'
description: 'Force publish even if no version change was detected'
required: false
type: choice
options:
Expand Down Expand Up @@ -41,6 +41,8 @@ jobs:
lookup-only: true
- uses: actions/checkout@v4
if: steps.look-up.outputs.cache-hit != 'true'
- uses: ./.github/actions/max_disk_space
if: steps.look-up.outputs.cache-hit != 'true'
- uses: actions/cache@v4
if: steps.look-up.outputs.cache-hit != 'true'
with:
Expand Down Expand Up @@ -79,11 +81,15 @@ jobs:
numpy-version: 2
- python-version: '3.12'
numpy-version: 1
- python-version: '3.12'
numpy-version: 2
spec-from-main: true
# - python-version: '3.13'
# numpy-version: 2

steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/max_disk_space
- uses: actions/setup-python@v6
with:
python-version: ${{matrix.python-version}}
Expand All @@ -97,6 +103,10 @@ jobs:
run: |
pyright --version
pyright -p pyproject.toml --pythonversion ${{ matrix.python-version }}
- if: matrix.spec-from-main
run: |
pip uninstall -y bioimageio.spec
pip install git+https://github.com/bioimage-io/spec-bioimage-io.git@main
- name: Restore bioimageio cache ${{needs.populate-cache.outputs.cache-key}}
uses: actions/cache/restore@v4
with:
Expand All @@ -123,7 +133,7 @@ jobs:
include-hidden-files: true

coverage:
needs: [test]
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Expand All @@ -138,13 +148,11 @@ jobs:
ls -la .coverage*
coverage combine
coverage xml -o coverage.xml
- uses: orgoro/coverage@v3.2
- uses: actions/upload-artifact@v4
with:
coverageFile: coverage.xml
token: ${{ secrets.GITHUB_TOKEN }}
thresholdAll: 0.7
thresholdNew: 0.9
thresholdModified: 0.6
name: coverage.xml
path: coverage.xml
retention-days: 1
- name: generate coverage badge and html report
run: |
pip install genbadge[coverage]
Expand All @@ -154,6 +162,23 @@ jobs:
with:
name: coverage-summary
path: dist
retention-days: 1

coverage-comment:
needs: coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: coverage.xml
- uses: orgoro/coverage@v3.2
with:
coverageFile: coverage.xml
token: ${{ secrets.GITHUB_TOKEN }}
thresholdAll: 0.7
thresholdNew: 0.9
thresholdModified: 0.6

conda-build:
needs: [populate-cache, test] # only so we run tests even if the pinned bioimageio.spec version is not yet published on conda-forge
Expand Down Expand Up @@ -190,34 +215,6 @@ jobs:
env:
BIOIMAGEIO_CACHE_PATH: bioimageio_cache

docs:
needs: [coverage, test]
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: coverage-summary
path: dist
- uses: actions/setup-python@v6
with:
python-version: '3.12'
cache: 'pip'
- run: pip install -e .[dev,partners]
- name: Generate developer docs
run: ./scripts/pdoc/run.sh
- run: cp README.md ./dist/README.md
- name: copy rendered presentations
run: |
mkdir ./dist/presentations
cp -r ./presentations/*.html ./dist/presentations/
- name: Deploy to gh-pages 🚀
uses: JamesIves/github-pages-deploy-action@v4
with:
branch: gh-pages
folder: dist

build:
runs-on: ubuntu-latest
steps:
Expand All @@ -235,21 +232,36 @@ jobs:
path: dist/
name: dist

publish:
needs: [test, build, conda-build, docs]
docs:
needs: coverage
runs-on: ubuntu-latest
environment:
name: release
url: https://pypi.org/project/bioimageio.core/
permissions:
contents: write # required for tag creation
id-token: write # required for pypi publish action
outputs:
new-version: ${{ steps.get-new-version.outputs.new-version }}
steps:
- name: Check out the repository
uses: actions/checkout@v4
- uses: actions/checkout@v4
with:
fetch-depth: 2
fetch-depth: 0
fetch-tags: true
- uses: ./.github/actions/max_disk_space
- uses: actions/download-artifact@v4
with:
name: coverage-summary
path: dist
- uses: actions/setup-python@v6
with:
python-version: '3.12'
cache: 'pip'
- run: pip install -e .[dev,docs,partners]
- name: Check doc scripts
run: pyright scripts/generate_api_doc_pages.py
- name: Get branch name to deploy to
id: get_branch
shell: bash
run: |
if [[ -n '${{ github.event.pull_request.head.ref }}' ]]; then branch=gh-pages-${{ github.event.pull_request.head.ref }}; else branch=gh-pages; fi
echo "branch=$branch" >> $GITHUB_OUTPUT
- name: Get parent commit
if: inputs.force-publish != 'true'
id: get-parent-commit
Expand All @@ -258,7 +270,6 @@ jobs:
- id: get-existing-tag
if: inputs.force-publish == 'true'
run: echo "existing-tag=$(git tag --points-at HEAD 'v[0-9]*.[0-9]*.[0-9]*')" >> $GITHUB_OUTPUT

- name: Detect new version from last commit and create tag
id: tag-version
if: github.ref == 'refs/heads/main' && steps.get-parent-commit.outputs.sha && inputs.force-publish != 'true'
Expand All @@ -273,8 +284,6 @@ jobs:
import os
from pathlib import Path



if "${{ inputs.force-publish }}" == "true":
existing_tag = "${{ steps.get-existing-tag.outputs.existing-tag }}"
valid = existing_tag.count("v") == 1 and existing_tag.count(".") == 2 and all(part.isdigit() for part in existing_tag.lstrip("v").split("."))
Expand All @@ -291,23 +300,52 @@ jobs:

with open(os.environ['GITHUB_OUTPUT'], 'a') as f:
print(f"new-version={new_version}", file=f)
- name: Configure Git Credentials
run: |
git config user.name github-actions[bot]
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
- name: Generate developer docs
run: mike deploy --push --branch ${{ steps.get_branch.outputs.branch }} --update-aliases ${{ steps.get-new-version.outputs.new-version || 'dev'}} ${{ steps.get-new-version.outputs.new-version && 'latest' || ' '}}
- name: copy rendered presentations
run: |
mkdir ./dist/presentations
cp -r ./presentations/*.html ./dist/presentations/
- name: Deploy to gh-pages 🚀
uses: JamesIves/github-pages-deploy-action@v4
with:
branch: gh-pages
folder: dist
clean: true
clean-exclude: |
.nojekyll
index.html
versions.json
latest/
dev/
v0.*/

publish:
needs: [test, coverage, build, conda-build, docs]
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' && needs.docs.outputs.new-version
environment:
name: release
url: https://pypi.org/project/bioimageio.core/
permissions:
contents: write # required to create a github release (release drafter)
id-token: write # required for pypi publish action
steps:
- uses: actions/download-artifact@v4
if: github.ref == 'refs/heads/main' && steps.get-new-version.outputs.new-version
with:
name: dist
path: dist
- name: Publish package on PyPI
if: github.ref == 'refs/heads/main' && steps.get-new-version.outputs.new-version
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: dist/

- name: Publish the release notes
if: github.ref == 'refs/heads/main'
uses: release-drafter/release-drafter@v6.0.0
with:
publish: "${{ steps.get-new-version.outputs.new-version != '' }}"
tag: '${{ steps.get-new-version.outputs.new-version }}'
tag: '${{ needs.docs.outputs.new-version }}'
env:
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
6 changes: 4 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@ __pycache__/
*.egg-info/
*.pyc
**/tmp
bioimageio_cache/
bioimageio_unzipped_tf_weights/
build/
cache
coverage.xml
dist/
docs/
docs/api/
dogfood/
pkgs/
site/
typings/pooch/
bioimageio_cache/
Loading
Loading