ENH: Reset index after ITK filters, keep ITK object and python interface consistent #14
Workflow file for this run
This file contains 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: ci-pytest | |
# Fast tests with cached antspy build designed to test changes in the python code | |
# Builds on Linux only, with a single python version | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- master | |
workflow_dispatch: | |
env: | |
# Updates or changes to this, or the runner OS or arch will invalidate the cache | |
python_version: '3.10' # Python version to use for testing - update when needed | |
jobs: | |
test: | |
runs-on: ubuntu-20.04 | |
# Default shell needs to be bash for conda | |
# https://github.com/conda-incubator/setup-miniconda?tab=readme-ov-file#important | |
defaults: | |
run: | |
shell: bash -el {0} | |
steps: | |
- name: Setup Miniconda | |
uses: conda-incubator/setup-miniconda@030178870c779d9e5e1b4e563269f3aa69b04081 # v3.0.3, devs recommend using hash | |
with: | |
miniconda-version: "latest" | |
python-version: ${{ env.python_version }} | |
auto-update-conda: true | |
activate-environment: "test-env" | |
- name: Configure Conda to use only .tar.bz2 | |
run: | | |
conda config --set use_only_tar_bz2 true | |
- name: Checkout code | |
uses: actions/checkout@v4 # Checkout PR code to 'antspy-pr' | |
with: | |
path: antspy-pr | |
- name: Load conda environment from cache if available | |
id: cache-env | |
uses: actions/cache@v4 | |
with: | |
path: ~/conda-env.tar.bz2 | |
key: >- | |
${{ runner.os }}-conda-${{ env.python_version }}- | |
${{ hashFiles('antspy-pr/ants/environment.yml', 'antspy-pr/ants/requirements.txt', 'antspy-pr/ants/setup.py', | |
'antspy-pr/ants/scripts/configure_ITK.sh', 'antspy-pr/ants/scripts/configure_ANTsPy.sh', | |
'antspy-pr/ants/lib/*') }} | |
- name: Unpack cached environment | |
if: steps.cache-env.outputs.cache-hit == 'true' | |
run: | | |
mkdir -p ${CONDA}/envs/antspy-env | |
tar -xjf ~/conda-env.tar.bz2 -C ${CONDA}/envs/antspy-env | |
conda activate antspy-env | |
conda-unpack | |
- name: Install dependencies and ANTsPy from PR | |
if: steps.cache-env.outputs.cache-hit != 'true' | |
run: | | |
conda create -n antspy-env python=${{ env.python_version }} -y | |
conda activate antspy-env | |
conda install -c conda-forge conda-pack | |
conda info | |
pip install ./antspy-pr | |
conda list | |
antspy-pr/tests/run_tests.sh | |
conda pack -n antspy-env -o ~/conda-env.tar.bz2 | |
- name: Cache Conda environment | |
if: steps.cache-env.outputs.cache-hit != 'true' | |
uses: actions/cache@v4 | |
with: | |
path: ~/conda-env.tar.bz2 | |
key: >- | |
${{ runner.os }}-conda-${{ env.python_version }}- | |
${{ hashFiles('antspy-pr/ants/environment.yml', 'antspy-pr/ants/requirements.txt', 'antspy-pr/ants/setup.py', | |
'antspy-pr/ants/scripts/configure_ITK.sh', 'antspy-pr/ants/scripts/configure_ANTsPy.sh', | |
'antspy-pr/ants/lib/*') }}) }} | |
- name: Replace installed ANTsPy with PR code | |
if: steps.cache-env.outputs.cache-hit == 'true' | |
run: | | |
conda activate antspy-env | |
echo "List of installed packages in cached env:" | |
conda list | |
ANTS_SITE_PACKAGES="${CONDA}/envs/antspy-env/lib/python${{ env.python_version }}/site-packages/ants" | |
for d in contrib core learn registration segmentation utils viz; do | |
rm -rf $ANTS_SITE_PACKAGES/$d; | |
cp -r antspy-pr/ants/$d $ANTS_SITE_PACKAGES/$d; | |
done | |
find $ANTS_SITE_PACKAGES -name '__pycache__' -exec rm -rf {} + | |
- name: Run tests | |
if: steps.cache-env.outputs.cache-hit == 'true' | |
run: | | |
conda activate antspy-env | |
bash antspy-pr/tests/run_tests.sh |