Remove python 3.8 support and add python 3.13 support #1503
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: Run tests | |
on: | |
push: | |
branches: | |
- dev | |
tags-ignore: # exclude tags created by "ci_addons publish_github_release" | |
- 'latest' | |
- 'latest-tmp' | |
pull_request: | |
jobs: | |
run-tests: | |
name: ${{ matrix.name }} | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- { name: linux-python3.9-minimum , test-tox-env: py39-minimum , build-tox-env: build-py39-minimum , python-ver: "3.9" , os: ubuntu-latest } | |
# NOTE config below with "upload-wheels: true" specifies that wheels should be uploaded as an artifact | |
- { name: linux-python3.13-upgraded , test-tox-env: py313-upgraded , build-tox-env: build-py313-upgraded , python-ver: "3.13", os: ubuntu-latest , upload-wheels: true } | |
- { name: windows-python3.9-minimum , test-tox-env: py39-minimum , build-tox-env: build-py39-minimum , python-ver: "3.9" , os: windows-latest } | |
- { name: windows-python3.13-upgraded , test-tox-env: py313-upgraded , build-tox-env: build-py313-upgraded , python-ver: "3.13", os: windows-latest } | |
- { name: macos-python3.9-minimum , test-tox-env: py39-minimum , build-tox-env: build-py39-minimum , python-ver: "3.9" , os: macos-latest } | |
steps: | |
- name: Cancel non-latest runs | |
uses: styfle/[email protected] | |
with: | |
all_but_latest: true | |
access_token: ${{ github.token }} | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
fetch-depth: 0 # tags are required for versioneer to determine the version | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-ver }} | |
- name: Install build dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install tox | |
python -m pip list | |
- name: Run tox tests | |
run: | | |
tox -e ${{ matrix.test-tox-env }} | |
- name: Build wheel and source distribution | |
run: | | |
tox -e ${{ matrix.build-tox-env }} | |
ls -1 dist | |
- name: Test installation from a wheel | |
run: | | |
tox -e wheelinstall --recreate --installpkg dist/*-none-any.whl | |
- name: Upload distribution as a workspace artifact | |
if: ${{ matrix.upload-wheels }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: distributions | |
path: dist | |
run-gallery-tests: | |
name: ${{ matrix.name }} | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- { name: linux-gallery-python3.9-minimum , test-tox-env: gallery-py39-minimum , python-ver: "3.9" , os: ubuntu-latest } | |
- { name: linux-gallery-python3.13-upgraded , test-tox-env: gallery-py313-upgraded, python-ver: "3.13", os: ubuntu-latest } | |
- { name: windows-gallery-python3.9-minimum , test-tox-env: gallery-py39-minimum , python-ver: "3.9" , os: windows-latest } | |
- { name: windows-gallery-python3.13-upgraded, test-tox-env: gallery-py313-upgraded, python-ver: "3.13", os: windows-latest } | |
steps: | |
- name: Cancel non-latest runs | |
uses: styfle/[email protected] | |
with: | |
all_but_latest: true | |
access_token: ${{ github.token }} | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
fetch-depth: 0 # tags are required for versioneer to determine the version | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-ver }} | |
- name: Install build dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install tox | |
python -m pip list | |
- name: Run tox tests | |
run: | | |
tox -e ${{ matrix.test-tox-env }} | |
run-tests-on-conda: | |
name: ${{ matrix.name }} | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash -l {0} # necessary for conda | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- { name: conda-linux-python3.9-minimum , test-tox-env: py39-minimum , build-tox-env: build-py39-minimum , python-ver: "3.9" , os: ubuntu-latest } | |
- { name: conda-linux-python3.13-upgraded , test-tox-env: py313-upgraded , build-tox-env: build-py313-upgraded , python-ver: "3.13", os: ubuntu-latest } | |
steps: | |
- name: Cancel non-latest runs | |
uses: styfle/[email protected] | |
with: | |
all_but_latest: true | |
access_token: ${{ github.token }} | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
fetch-depth: 0 # tags are required for versioneer to determine the version | |
- name: Set up Conda | |
uses: conda-incubator/setup-miniconda@v3 | |
with: | |
auto-update-conda: true | |
python-version: ${{ matrix.python-ver }} | |
- name: Install build dependencies | |
run: | | |
conda config --set always_yes yes --set changeps1 no | |
conda info | |
conda install -c conda-forge tox | |
- name: Conda reporting | |
run: | | |
conda info | |
conda config --show-sources | |
conda list --show-channel-urls | |
- name: Run tox tests | |
run: | | |
tox -e ${{ matrix.test-tox-env }} | |
- name: Build wheel and source distribution | |
run: | | |
tox -e ${{ matrix.build-tox-env }} | |
ls -1 dist | |
- name: Test installation from a wheel | |
run: | | |
tox -e wheelinstall --recreate --installpkg dist/*-none-any.whl | |
run-ros3-tests: # tox and conda do not play nicely so do not use tox here | |
name: ${{ matrix.name }} | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
shell: bash -l {0} # necessary for conda | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- { name: conda-linux-python3.13-ros3 , python-ver: "3.13", os: ubuntu-latest } | |
steps: | |
- name: Cancel non-latest runs | |
uses: styfle/[email protected] | |
with: | |
all_but_latest: true | |
access_token: ${{ github.token }} | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
fetch-depth: 0 # tags are required for versioneer to determine the version | |
- name: Set up Conda | |
uses: conda-incubator/setup-miniconda@v3 | |
with: | |
auto-update-conda: true | |
activate-environment: ros3 | |
environment-file: environment-ros3.yml | |
python-version: ${{ matrix.python-ver }} | |
channels: conda-forge | |
auto-activate-base: false | |
- name: Install run dependencies | |
run: | | |
pip install -r requirements-dev.txt | |
pip install . | |
conda info | |
conda list | |
pip list | |
- name: Run gallery ros3 tests | |
run: | | |
python test.py --ros3 | |
run-gallery-ros3-tests: | |
name: ${{ matrix.name }} | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
shell: bash -l {0} # necessary for conda | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- { name: conda-linux-gallery-python3.13-ros3 , python-ver: "3.13", os: ubuntu-latest } | |
steps: | |
- name: Cancel non-latest runs | |
uses: styfle/[email protected] | |
with: | |
all_but_latest: true | |
access_token: ${{ github.token }} | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
fetch-depth: 0 # tags are required for versioneer to determine the version | |
- name: Set up Conda | |
uses: conda-incubator/setup-miniconda@v3 | |
with: | |
auto-update-conda: true | |
activate-environment: ros3 | |
environment-file: environment-ros3.yml | |
python-version: ${{ matrix.python-ver }} | |
channels: conda-forge | |
auto-activate-base: false | |
- name: Install run dependencies | |
run: | | |
pip install matplotlib | |
pip install . | |
pip list | |
- name: Conda reporting | |
run: | | |
conda info | |
conda config --show-sources | |
conda list --show-channel-urls | |
- name: Run gallery ros3 tests | |
run: | | |
python test.py --example-ros3 | |
deploy-dev: | |
name: Deploy pre-release from dev | |
needs: [run-tests, run-gallery-tests, run-tests-on-conda, run-ros3-tests, run-gallery-ros3-tests] | |
if: ${{ github.event_name == 'push' }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Cancel non-latest runs | |
uses: styfle/[email protected] | |
with: | |
all_but_latest: true | |
access_token: ${{ github.token }} | |
- name: Checkout repo with submodules | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
fetch-depth: 0 # tags are required for versioneer to determine the version | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.13' | |
- name: Download wheel and source distributions from artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: distributions | |
path: dist | |
- name: Publish wheel and source distributions as a GitHub release | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install scikit-ci-addons | |
ci_addons publish_github_release NeurodataWithoutBorders/pynwb \ | |
--prerelease-packages "dist/*" \ | |
--prerelease-sha $GITHUB_SHA \ | |
--prerelease-packages-clear-pattern "*" \ | |
--prerelease-packages-keep-pattern "*dev<COMMIT_DISTANCE>*" \ | |
--token ${{ secrets.BOT_GITHUB_TOKEN }} \ | |
--re-upload |