Skip to content

Commit 5d68384

Browse files
committed
update build workflow
1 parent 7c5b528 commit 5d68384

File tree

5 files changed

+121
-172
lines changed

5 files changed

+121
-172
lines changed

.github/workflows/build.yaml

+116-167
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ on:
88

99
defaults:
1010
run:
11-
shell: micromamba-shell {0}
11+
shell: bash -el {0}
1212

1313
jobs:
1414
black:
@@ -26,42 +26,60 @@ jobs:
2626
runs-on: ubuntu-latest
2727
strategy:
2828
matrix:
29-
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
3029
include:
31-
- python-version: '3.12'
30+
- python-version: '3.8'
31+
conda-env: py38
32+
- python-version: '3.9'
33+
conda-env: wo-python
34+
- python-version: '3.9'
35+
conda-env: tf
36+
- python-version: '3.10'
37+
conda-env: wo-python
38+
- python-version: '3.11'
39+
conda-env: full
3240
run-expensive-tests: true
41+
- python-version: '3.12'
42+
conda-env: wo-python
43+
- python-version: '3.13'
44+
conda-env: wo-python
3345
steps:
46+
- id: setup
47+
run: |
48+
echo "env-name=conda-${{ matrix.conda-env }}-${{ matrix.python-version }}"
49+
echo "env-name=conda-${{ matrix.conda-env }}-${{ matrix.python-version }}" >> $GITHUB_OUTPUT
50+
echo "env-file=dev/env-${{ matrix.conda-env }}.yaml"
51+
echo "env-file=dev/env-${{ matrix.conda-env }}.yaml" >> $GITHUB_OUTPUT
52+
[ ! -f dev/env-${{ matrix.conda-env }}.yaml ] && exit 1
3453
- uses: actions/checkout@v4
35-
- name: Install Conda environment with Micromamba
36-
if: matrix.python-version != '3.8'
37-
uses: mamba-org/setup-micromamba@v1
54+
- uses: conda-incubator/setup-miniconda@v3
3855
with:
39-
cache-downloads: true
40-
cache-environment: true
41-
environment-file: dev/env-wo-python.yaml
42-
create-args: >-
43-
python=${{ matrix.python-version }}
44-
post-cleanup: 'all'
45-
env:
46-
PIP_NO_DEPS: true
47-
- name: Install py3.8 environment
48-
if: matrix.python-version == '3.8'
49-
uses: mamba-org/setup-micromamba@v1
50-
with:
51-
cache-downloads: true
52-
cache-environment: true
53-
environment-file: dev/env-py38.yaml
54-
post-cleanup: 'all'
55-
env:
56-
PIP_NO_DEPS: true
57-
- name: additional setup
58-
run: pip install --no-deps -e .
56+
auto-update-conda: true
57+
auto-activate-base: true
58+
activate-environment: ${{steps.setup.outputs.env-name}}
59+
channel-priority: strict
60+
miniforge-version: latest
5961
- name: Get Date
6062
id: get-date
6163
run: |
6264
echo "date=$(date +'%Y-%b')"
6365
echo "date=$(date +'%Y-%b')" >> $GITHUB_OUTPUT
64-
shell: bash
66+
echo "today=$(date -u '+%Y%m%d')"
67+
echo "today=$(date -u '+%Y%m%d')" >> $GITHUB_OUTPUT
68+
- name: Cache env
69+
uses: actions/cache@v4
70+
with:
71+
path: ${{ env.CONDA }}/envs/${{steps.setup.outputs.env-name}}
72+
key: >-
73+
conda-${{ runner.os }}-${{ runner.arch }}-
74+
-${{steps.get-date.outputs.today }}-
75+
-${{ hashFiles(matrix.conda-env) }}-
76+
-${{env.CACHE_NUMBER }}
77+
env:
78+
CACHE_NUMBER: 0
79+
id: cache
80+
- name: Update env
81+
run: conda env update --name=${{steps.setup.outputs.env-name}} --file=${{steps.setup.output.env-file}} python=${{matrix.python-version}}
82+
if: steps.cache.outputs.cache-hit != 'true'
6583
- uses: actions/cache@v4
6684
with:
6785
path: bioimageio_cache
@@ -77,148 +95,82 @@ jobs:
7795
runs-on: ubuntu-latest
7896
strategy:
7997
matrix:
80-
python-version: ['3.8', '3.12']
8198
include:
82-
- python-version: '3.12'
99+
- python-version: '3.8'
100+
conda-env: py3.8
101+
- python-version: '3.9'
102+
conda-env: tf
103+
- python-version: '3.11'
104+
conda-env: full
83105
report-coverage: true
84106
run-expensive-tests: true
85-
steps:
86-
- uses: actions/checkout@v4
87-
- name: Install Conda environment with Micromamba
88-
if: matrix.python-version != '3.8'
89-
uses: mamba-org/setup-micromamba@v1
90-
with:
91-
cache-downloads: true
92-
cache-environment: true
93-
environment-file: dev/env-wo-python.yaml
94-
create-args: >-
95-
python=${{ matrix.python-version }}
96-
post-cleanup: 'all'
97-
env:
98-
PIP_NO_DEPS: true
99-
- name: Install py3.8 environment
100-
if: matrix.python-version == '3.8'
101-
uses: mamba-org/setup-micromamba@v1
102-
with:
103-
cache-downloads: true
104-
cache-environment: true
105-
environment-file: dev/env-py38.yaml
106-
post-cleanup: 'all'
107-
env:
108-
PIP_NO_DEPS: true
109-
- name: additional setup spec
110-
run: |
111-
conda remove --yes --force bioimageio.spec || true # allow failure for cached env
112-
pip install --no-deps git+https://github.com/bioimage-io/spec-bioimage-io
113-
- name: additional setup core
114-
run: pip install --no-deps -e .
115-
- name: Get Date
116-
id: get-date
117-
run: |
118-
echo "date=$(date +'%Y-%b')"
119-
echo "date=$(date +'%Y-%b')" >> $GITHUB_OUTPUT
120-
shell: bash
121-
- uses: actions/cache@v4
122-
with:
123-
path: bioimageio_cache
124-
key: "test-spec-main-${{ steps.get-date.outputs.date }}"
125-
- name: pytest-spec-main
126-
run: pytest --disable-pytest-warnings
127-
env:
128-
BIOIMAGEIO_CACHE_PATH: bioimageio_cache
129-
RUN_EXPENSIVE_TESTS: ${{ matrix.run-expensive-tests && 'true' || 'false' }}
130-
- if: matrix.report-coverage && github.event_name == 'pull_request'
131-
uses: orgoro/[email protected]
132-
with:
133-
coverageFile: coverage.xml
134-
token: ${{ secrets.GITHUB_TOKEN }}
135-
- if: matrix.report-coverage && github.ref == 'refs/heads/main'
136-
run: |
137-
pip install genbadge[coverage]
138-
genbadge coverage --input-file coverage.xml --output-file ./dist/coverage/coverage-badge.svg
139-
coverage html -d dist/coverage
140-
- if: matrix.report-coverage && github.ref == 'refs/heads/main'
141-
uses: actions/upload-artifact@v4
142-
with:
143-
name: coverage
144-
retention-days: 1
145-
path: dist
146-
147-
148-
test-spec-main-tf:
149-
runs-on: ubuntu-latest
150-
strategy:
151-
matrix:
152-
python-version: ['3.9', '3.12']
153-
steps:
154-
- uses: actions/checkout@v4
155-
- uses: mamba-org/setup-micromamba@v1
156-
with:
157-
cache-downloads: true
158-
cache-environment: true
159-
environment-file: dev/env-tf.yaml
160-
condarc: |
161-
channel-priority: flexible
162-
create-args: >-
163-
python=${{ matrix.python-version }}
164-
post-cleanup: 'all'
165-
env:
166-
PIP_NO_DEPS: true
167-
- name: additional setup spec
168-
run: |
169-
conda remove --yes --force bioimageio.spec || true # allow failure for cached env
170-
pip install --no-deps git+https://github.com/bioimage-io/spec-bioimage-io
171-
- name: additional setup core
172-
run: pip install --no-deps -e .
173-
- name: Get Date
174-
id: get-date
175-
run: |
176-
echo "date=$(date +'%Y-%b')"
177-
echo "date=$(date +'%Y-%b')" >> $GITHUB_OUTPUT
178-
shell: bash
179-
- uses: actions/cache@v4
180-
with:
181-
path: bioimageio_cache
182-
key: "test-spec-main-tf-${{ steps.get-date.outputs.date }}"
183-
- run: pytest --disable-pytest-warnings
184-
env:
185-
BIOIMAGEIO_CACHE_PATH: bioimageio_cache
107+
- python-version: '3.12'
108+
conda-env: tf
186109

187-
test-spec-conda-tf:
188-
runs-on: ubuntu-latest
189-
strategy:
190-
matrix:
191-
python-version: ['3.9', '3.12']
192110
steps:
193-
- uses: actions/checkout@v4
194-
- uses: mamba-org/setup-micromamba@v1
195-
with:
196-
cache-downloads: true
197-
cache-environment: true
198-
environment-file: dev/env-tf.yaml
199-
condarc: |
200-
channel-priority: flexible
201-
create-args: >-
202-
python=${{ matrix.python-version }}
203-
post-cleanup: 'all'
204-
env:
205-
PIP_NO_DEPS: true
206-
- name: additional setup
207-
run: pip install --no-deps -e .
208-
- name: Get Date
209-
id: get-date
210-
run: |
211-
echo "date=$(date +'%Y-%b')"
212-
echo "date=$(date +'%Y-%b')" >> $GITHUB_OUTPUT
213-
shell: bash
214-
- uses: actions/cache@v4
215-
with:
216-
path: bioimageio_cache
217-
key: "test-spec-conda-tf-${{ steps.get-date.outputs.date }}"
218-
- name: pytest-spec-tf
219-
run: pytest --disable-pytest-warnings
220-
env:
221-
BIOIMAGEIO_CACHE_PATH: bioimageio_cache
111+
- id: setup
112+
run: |
113+
echo "env-name=main-${{ matrix.conda-env }}-${{ matrix.python-version }}"
114+
echo "env-name=main-${{ matrix.conda-env }}-${{ matrix.python-version }}" >> $GITHUB_OUTPUT
115+
- uses: actions/checkout@v4
116+
- uses: conda-incubator/setup-miniconda@v3
117+
with:
118+
auto-update-conda: true
119+
auto-activate-base: true
120+
activate-environment: ${{steps.setup.outputs.env-name}}
121+
channel-priority: strict
122+
miniforge-version: latest
123+
- name: Get Date
124+
id: get-date
125+
run: |
126+
echo "date=$(date +'%Y-week%U')"
127+
echo "date=$(date +'%Y-week%U')" >> $GITHUB_OUTPUT
128+
echo "today=$(date -u '+%Y%m%d')"
129+
echo "today=$(date -u '+%Y%m%d')" >> $GITHUB_OUTPUT
130+
- name: Cache env
131+
uses: actions/cache@v4
132+
with:
133+
path: ${{ env.CONDA }}/envs/${{steps.setup.outputs.env-name}}
134+
key: >-
135+
conda-${{ runner.os }}-${{ runner.arch }}
136+
-${{steps.get-date.outputs.today }}
137+
-${{ hashFiles(matrix.conda-env) }}
138+
-${{env.CACHE_NUMBER }}
139+
env:
140+
CACHE_NUMBER: 0
141+
id: cache
142+
- name: Update env
143+
run: |
144+
conda env update --name=${{steps.setup.outputs.env-name}} --file=dev/env-${{matrix.conda-env}}.yaml python=${{matrix.python-version}}
145+
conda remove --yes --force bioimageio.spec
146+
if: steps.cache.outputs.cache-hit != 'true'
147+
- name: Install spec from main branch
148+
run: pip install --no-deps git+https://github.com/bioimage-io/spec-bioimage-io
149+
- uses: actions/cache@v4
150+
with:
151+
path: bioimageio_cache
152+
key: "test-spec-main-${{ steps.get-date.outputs.date }}"
153+
- name: pytest-spec-main
154+
run: pytest --disable-pytest-warnings
155+
env:
156+
BIOIMAGEIO_CACHE_PATH: bioimageio_cache
157+
RUN_EXPENSIVE_TESTS: ${{ matrix.run-expensive-tests && 'true' || 'false' }}
158+
- if: matrix.report-coverage && github.event_name == 'pull_request'
159+
uses: orgoro/[email protected]
160+
with:
161+
coverageFile: coverage.xml
162+
token: ${{ secrets.GITHUB_TOKEN }}
163+
- if: matrix.report-coverage && github.ref == 'refs/heads/main'
164+
run: |
165+
pip install genbadge[coverage]
166+
genbadge coverage --input-file coverage.xml --output-file ./dist/coverage/coverage-badge.svg
167+
coverage html -d dist/coverage
168+
- if: matrix.report-coverage && github.ref == 'refs/heads/main'
169+
uses: actions/upload-artifact@v4
170+
with:
171+
name: coverage
172+
retention-days: 1
173+
path: dist
222174

223175
conda-build:
224176
needs: test-spec-conda
@@ -253,9 +205,6 @@ jobs:
253205
needs: [test-spec-main]
254206
if: github.ref == 'refs/heads/main'
255207
runs-on: ubuntu-latest
256-
defaults:
257-
run:
258-
shell: bash -l {0}
259208
steps:
260209
- uses: actions/checkout@v4
261210
- uses: actions/download-artifact@v4

bioimageio/core/stat_calculators.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from __future__ import annotations
22

3-
import collections.abc
3+
import collections
44
import warnings
55
from itertools import product
66
from typing import (

bioimageio/core/weight_converters/pytorch_to_onnx.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from pathlib import Path
22

3-
import torch.jit
3+
import torch
44

55
from bioimageio.spec.model.v0_5 import ModelDescr, OnnxWeightsDescr
66

dev/env.yaml dev/env-full.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: full
1+
name: core-full
22
channels:
33
- conda-forge
44
- nodefaults

dev/env-py38.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
# manipulated copy of env.yaml wo dependencies 'for model testing'
2-
name: core38
1+
# manipulated copy of env-full.yaml wo dependencies 'for model testing'
2+
name: core-py38
33
channels:
44
- conda-forge
55
- nodefaults

0 commit comments

Comments
 (0)