Skip to content

Tox

Tox #1184

Workflow file for this run

name: Tox
on:
push:
branches: [ master, main, 'maint/*' ]
tags: [ '*' ]
pull_request:
branches: [ master, main, 'maint/*' ]
schedule:
# 8am EST / 9am EDT Mondays
- cron: "0 13 * * 1"
defaults:
run:
shell: bash
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
env:
# Force tox and pytest to use color
FORCE_COLOR: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install the latest version of uv
uses: astral-sh/setup-uv@v4
- run: uv build
- run: uvx twine check dist/*
- uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
test-package:
runs-on: ubuntu-latest
needs: [build]
strategy:
matrix:
package: ["wheel", "sdist"]
steps:
- uses: actions/download-artifact@v4
with:
name: dist
path: dist/
- uses: actions/setup-python@v5
with:
python-version: 3
- name: Display Python version
run: python -c "import sys; print(sys.version)"
- name: Update pip
run: pip install --upgrade pip
- name: Install wheel
run: pip install dist/nipype-*.whl
if: matrix.package == 'wheel'
- name: Install sdist
run: pip install dist/nipype-*.tar.gz
if: matrix.package == 'sdist'
- run: python -c 'import nipype; print(nipype.__version__)'
- name: Install test extras
run: pip install nipype[tests]
- name: Run tests
run: pytest --doctest-modules -v --pyargs nipype
test:
# Check each OS, all supported Python, minimum versions and latest releases
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: ["ubuntu-latest"]
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
dependencies: [none, full, pre]
include:
- os: ubuntu-latest
python-version: "3.9"
dependencies: min
exclude:
# Skip some intermediate versions for full tests
- python-version: "3.10"
dependencies: full
- python-version: "3.11"
dependencies: full
# Do not test pre-releases for versions out of SPEC0
- python-version: "3.9"
dependencies: pre
- python-version: "3.10"
dependencies: pre
env:
DEPENDS: ${{ matrix.dependencies }}
steps:
- uses: actions/checkout@v4
- name: Install the latest version of uv
uses: astral-sh/setup-uv@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Display Python version
run: python -c "import sys; print(sys.version)"
- name: Install tox
run: |
uv tool install tox --with=tox-uv --with=tox-gh-actions
- name: Show tox config
run: tox c
- name: Run tox
run: tox -v --exit-and-dump-after 1200
- uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
if: ${{ always() }}
- name: Upload pytest test results
uses: actions/upload-artifact@v4
with:
name: pytest-results-${{ matrix.os }}-${{ matrix.python-version }}-${{ matrix.deb-depends }}
path: test-results.xml
if: ${{ always() && matrix.check == 'test' }}
publish:
runs-on: ubuntu-latest
environment: "Package deployment"
needs: [test, test-package]
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
steps:
- uses: actions/download-artifact@v4
with:
name: dist
path: dist/
- uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
checks:
runs-on: 'ubuntu-latest'
continue-on-error: true
strategy:
matrix:
check: ['specs', 'style']
steps:
- uses: actions/checkout@v4
- name: Install the latest version of uv
uses: astral-sh/setup-uv@v4
- name: Show tox config
run: uvx tox c
- name: Show tox config (this call)
run: uvx tox c -e ${{ matrix.check }}
- name: Run check
run: uvx tox -e ${{ matrix.check }}