Add error message for impossible roi request to ZeissDataReader #2633
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: build | |
| on: | |
| workflow_dispatch: | |
| release: {types: [published]} | |
| push: | |
| branches: [master] | |
| tags: ['**'] | |
| paths-ignore: | |
| - 'CHANGELOG.md' | |
| - 'CITATION.cff' | |
| - 'LICENSE' | |
| - 'scripts/**' | |
| - 'NOTICE.txt' | |
| - 'README.md' | |
| pull_request: | |
| branches: [master] | |
| paths-ignore: | |
| - 'CHANGELOG.md' | |
| - 'CITATION.cff' | |
| - 'LICENSE' | |
| - 'scripts/**' | |
| - 'NOTICE.txt' | |
| - 'README.md' | |
| jobs: | |
| test-cuda: | |
| defaults: {run: {shell: 'bash -el {0}'}} | |
| runs-on: [self-hosted, python, cuda] | |
| strategy: | |
| matrix: | |
| python-version: [3.11] | |
| numpy-version: [1.25] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: {fetch-depth: 0, submodules: recursive} | |
| - id: reqs | |
| name: set requirements | |
| run: | | |
| envname="${GITHUB_REPOSITORY##*/}-${GITHUB_RUN_ID}.${GITHUB_RUN_NUMBER}" | |
| echo "envname=$envname" >> $GITHUB_OUTPUT | |
| sed -ri -e 's/^(name: ).*/\1$envname/' -e '/ python /d' -e 's/(.* numpy) .*/\1=${{ matrix.numpy-version }}/' scripts/requirements-test.yml | |
| - uses: conda-incubator/setup-miniconda@v3 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| environment-file: scripts/requirements-test.yml | |
| activate-environment: ${{ steps.reqs.outputs.envname }} | |
| run-post: false | |
| - id: build | |
| name: build | |
| run: | | |
| conda activate "${{ steps.reqs.outputs.envname }}" | |
| pip install . | |
| - name: test | |
| run: | | |
| conda activate "${{ steps.reqs.outputs.envname }}" | |
| TESTS_FORCE_GPU=1 CIL_DATA_DIR=/opt/runner/hostedtoolcache/cil python -m unittest discover -v -k tigre -k TIGRE -k astra -k ASTRA -k Astra -k gpu -k GPU ./Wrappers/Python/test | |
| - if: always() | |
| name: Post Run conda-incubator/setup-miniconda@v3 | |
| shell: bash | |
| run: | | |
| sed -i '/${{ steps.reqs.outputs.envname }}/d' ~/.profile | |
| source ~/.profile | |
| conda env remove -n "${{ steps.reqs.outputs.envname }}" | |
| test: | |
| defaults: {run: {shell: 'bash -el {0}'}} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| include: | |
| - {python-version: '3.10', numpy-version: 1.23} | |
| - {python-version: 3.12, numpy-version: 1.26} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: {fetch-depth: 0, submodules: recursive} | |
| - name: set requirements | |
| run: sed -ri -e '/ python /d' -e 's/(.* numpy) .*/\1=${{ matrix.numpy-version }}/' -e 's/=cuda*//' -e '/tigre/d' scripts/requirements-test.yml | |
| - uses: conda-incubator/setup-miniconda@v3 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| environment-file: scripts/requirements-test.yml | |
| activate-environment: cil_dev | |
| - run: pip install . | |
| - name: test | |
| run: python -m unittest discover -v ./Wrappers/Python/test | |
| conda-matrix: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| python-version: ${{ steps.matrix.outputs.python-version }} | |
| numpy-version: ${{ steps.matrix.outputs.numpy-version }} | |
| os: ${{ steps.matrix.outputs.os }} | |
| include: ${{ steps.matrix.outputs.include }} | |
| include-numpy: ${{ steps.matrix.outputs.include-numpy }} | |
| steps: | |
| - id: matrix | |
| run: | | |
| if ${{ startsWith(github.ref, 'refs/tags') || github.event_name == 'workflow_dispatch' }}; then | |
| echo "python-version=['3.10', 3.11]" >> $GITHUB_OUTPUT | |
| echo "numpy-version=[1.23, 1.24, 1.25, 1.26]" >> $GITHUB_OUTPUT | |
| echo "os=['ubuntu', 'windows']" >> $GITHUB_OUTPUT | |
| include_max=true | |
| else | |
| echo "python-version=['3.10']" >> $GITHUB_OUTPUT | |
| echo "numpy-version=[1.23]" >> $GITHUB_OUTPUT | |
| if ${{ github.ref == 'refs/heads/master' }}; then | |
| echo "os=['ubuntu', 'windows']" >> $GITHUB_OUTPUT | |
| include_max=true | |
| else | |
| echo "os=['ubuntu']" >> $GITHUB_OUTPUT | |
| include_max=false | |
| fi | |
| fi | |
| if $include_max; then | |
| echo "include=[{'python-version': 3.12, 'os': 'ubuntu'}, {'python-version': 3.12, 'os': 'windows'}]" >> $GITHUB_OUTPUT | |
| echo "include-numpy=[{'python-version': 3.12, 'numpy-version': 1.26, 'os': 'ubuntu'}, {'python-version': 3.12, 'numpy-version': 1.26, 'os': 'windows'}]" >> $GITHUB_OUTPUT | |
| else | |
| echo "include=[]" >> $GITHUB_OUTPUT | |
| echo "include-numpy=[]" >> $GITHUB_OUTPUT | |
| fi | |
| conda-build: | |
| defaults: {run: {shell: 'bash -el {0}'}} | |
| runs-on: ${{ matrix.os }}-${{ matrix.os == 'ubuntu' && '24.04' || '2022' }} | |
| needs: conda-matrix | |
| strategy: | |
| matrix: | |
| python-version: ${{ fromJson(needs.conda-matrix.outputs.python-version) }} | |
| os: ${{ fromJson(needs.conda-matrix.outputs.os) }} | |
| include: ${{ fromJson(needs.conda-matrix.outputs.include) }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| submodules: recursive | |
| ref: ${{ github.event.pull_request.head.sha || github.ref }} # fix SHA | |
| - if: matrix.os == 'windows' | |
| uses: ilammy/msvc-dev-cmd@v1 | |
| - uses: conda-incubator/setup-miniconda@v3 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| mamba-version: "*" | |
| channels: conda-forge | |
| conda-remove-defaults: "true" | |
| - run: conda install boa conda-verify | |
| - name: conda build | |
| run: > | |
| conda mambabuild -c conda-forge -c https://tomography.stfc.ac.uk/conda --override-channels --python=${{ matrix.python-version }} | |
| --no-test --output-folder dist recipe | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: cil-py${{ matrix.python-version }}-${{ matrix.os }} | |
| path: dist/*/cil-*.tar.bz2 | |
| conda-test: | |
| defaults: {run: {shell: 'bash -el {0}'}} | |
| runs-on: ${{ matrix.os }}-${{ matrix.os == 'ubuntu' && '24.04' || '2022' }} | |
| needs: [conda-matrix, conda-build] | |
| strategy: | |
| matrix: | |
| python-version: ${{ fromJson(needs.conda-matrix.outputs.python-version) }} | |
| numpy-version: ${{ fromJson(needs.conda-matrix.outputs.numpy-version) }} | |
| os: ${{ fromJson(needs.conda-matrix.outputs.os) }} | |
| include: ${{ fromJson(needs.conda-matrix.outputs.include-numpy) }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: conda-incubator/setup-miniconda@v3 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| mamba-version: "*" | |
| channels: conda-forge | |
| conda-remove-defaults: "true" | |
| - run: conda install boa | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: cil-py${{ matrix.python-version }}-${{ matrix.os }} | |
| path: dist | |
| - name: conda test | |
| run: > | |
| conda mambabuild -c conda-forge -c https://tomography.stfc.ac.uk/conda --override-channels --python=${{ matrix.python-version }} | |
| --test dist/*/cil-*.tar.bz2 --extra-deps numpy=${{ matrix.numpy-version }} | |
| conda-upload: | |
| if: github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags') | |
| defaults: {run: {shell: 'bash -el {0}', working-directory: dist}} | |
| runs-on: ubuntu-latest | |
| needs: conda-test | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: conda-incubator/setup-miniconda@v3 | |
| with: | |
| mamba-version: "*" | |
| channels: conda-forge | |
| conda-remove-defaults: "true" | |
| - uses: actions/download-artifact@v4 | |
| with: {pattern: cil-py*-*, path: dist, merge-multiple: true} | |
| - run: mamba install anaconda-client | |
| - name: anaconda upload -c ccpi | |
| run: > | |
| anaconda -v -t ${{ secrets.CCPI_CONDA_TOKEN }} upload --force | |
| --label ${{ startsWith(github.ref, 'refs/tags') && 'main' || 'dev' }} */cil-*.tar.bz2 | |
| - if: startsWith(github.ref, 'refs/tags') | |
| name: conda upload -c tomography.stfc.ac.uk/conda | |
| run: | | |
| echo '${{ secrets.STFC_SSH_KEY }}' > ./key | |
| chmod 600 ./key | |
| rsync -e 'ssh -o StrictHostKeyChecking=no -i ./key' -R */cil-*.tar.bz2 '${{ secrets.STFC_SSH_HOST }}:${{ secrets.STFC_SSH_CONDA_DIR }}' | |
| ssh -o StrictHostKeyChecking=no -i ./key ${{ secrets.STFC_SSH_HOST }} \ | |
| 'bash -lic "conda index --bz2 --zst --run-exports --channeldata --rss -n ccpi ${{ secrets.STFC_SSH_CONDA_DIR }}"' | |
| docs: | |
| defaults: {run: {shell: 'bash -el {0}', working-directory: docs}} | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| submodules: recursive | |
| ref: ${{ github.event.pull_request.head.sha || github.ref }} # fix SHA | |
| - uses: conda-incubator/setup-miniconda@v3 | |
| with: | |
| python-version: 3.12 | |
| mamba-version: "*" | |
| channels: conda-forge | |
| conda-remove-defaults: "true" | |
| - uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: '3.2' | |
| bundler-cache: true | |
| cache-version: 0 | |
| - name: install dependencies | |
| run: | | |
| mamba install -c conda-forge -yq conda-merge | |
| conda-merge ../scripts/requirements-test.yml docs_environment.yml > environment.yml | |
| mamba env update -n test --file environment.yml | |
| conda list | |
| - run: pip install .. | |
| - name: checkout docs | |
| uses: actions/checkout@v4 | |
| with: | |
| path: docs/build | |
| ref: gh-pages | |
| - id: pages | |
| uses: actions/configure-pages@v5 | |
| - name: update web pages (jekyll) | |
| run: make JEKYLLOPTS="--baseurl ${{ steps.pages.outputs.base_path }}" web-deps web | |
| env: {JEKYLL_ENV: production} | |
| - name: update docs pages (sphinx) | |
| run: | | |
| docs_dir="${{ github.ref_name }}" | |
| docs_dir="${docs_dir//\//_}" | |
| if test "$docs_dir" = master; then docs_dir=nightly; fi | |
| make BUILDSUBDIR="$docs_dir" dirhtml | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: DocumentationHTML | |
| path: docs/build | |
| - name: Push changes | |
| if: github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags') | |
| uses: casperdcl/push-dir@v1 | |
| with: | |
| message: Update documentation | |
| branch: gh-pages | |
| dir: docs/build | |
| nojekyll: true | |
| docker: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| packages: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| submodules: recursive | |
| ref: ${{ github.event.pull_request.head.sha || github.ref }} # fix SHA | |
| - uses: jlumbroso/[email protected] | |
| with: | |
| docker-images: false | |
| large-packages: false | |
| - uses: docker/setup-buildx-action@v3 | |
| - uses: docker/metadata-action@v5 | |
| id: meta | |
| with: | |
| images: ghcr.io/${{ github.repository }} | |
| tags: | | |
| type=ref,event=branch | |
| type=semver,pattern={{version}} | |
| type=semver,pattern={{major}}.{{minor}} | |
| labels: | | |
| org.opencontainers.image.licenses=Apache-2.0 AND BSD-3-Clause AND GPL-3.0 | |
| - uses: docker/login-action@v3 | |
| if: github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags') | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - uses: docker/build-push-action@v6 | |
| with: | |
| cache-from: type=gha | |
| cache-to: type=gha,mode=max | |
| context: . | |
| load: true | |
| tags: tomographicimaging/cil:test | |
| - name: test | |
| run: > | |
| docker run --rm -v .:/CIL tomographicimaging/cil:test /bin/bash -c | |
| 'python -m unittest discover -v /CIL/Wrappers/Python/test' | |
| - uses: docker/build-push-action@v6 | |
| with: | |
| cache-from: type=gha | |
| cache-to: type=gha,mode=max | |
| context: . | |
| push: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags') }} | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| pass: | |
| needs: [test-cuda, test, conda-test, docs, docker] | |
| runs-on: ubuntu-latest | |
| steps: [{run: echo success}] |