Skip to content

Remove Python 3.8 Support and Add 3.13 Support #2402

Remove Python 3.8 Support and Add 3.13 Support

Remove Python 3.8 Support and Add 3.13 Support #2402

Workflow file for this run

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
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.name }}
cancel-in-progress: true
strategy:
fail-fast: false
matrix:
include:
# NOTE config below with "upload-wheels: true" specifies that wheels should be uploaded as an artifact
- { name: linux-python3.9-minimum , test-tox-env: pytest-py39-minimum , python-ver: "3.9" , os: ubuntu-latest }
- { name: linux-python3.12 , test-tox-env: pytest-py312-pinned , python-ver: "3.12", os: ubuntu-latest }
- { name: linux-python3.12-upgraded , test-tox-env: pytest-py312-upgraded , python-ver: "3.12", os: ubuntu-latest , upload-wheels: true }
- { name: windows-python3.9-minimum , test-tox-env: pytest-py39-minimum , python-ver: "3.9" , os: windows-latest }
- { name: windows-python3.12-upgraded , test-tox-env: pytest-py312-upgraded , python-ver: "3.12", os: windows-latest }
- { name: macos-python3.9-minimum , test-tox-env: pytest-py39-minimum , python-ver: "3.9" , os: macos-13 }
- { name: macos-python3.12-upgraded , test-tox-env: pytest-py312-upgraded , python-ver: "3.12", os: macos-latest }
steps:
- name: Checkout repo with submodules
uses: actions/checkout@v4
with:
submodules: 'recursive'
fetch-depth: 0 # tags are required 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 build
ls -1 dist
- name: Test installation from a wheel
run: |
tox -e wheelinstall --installpkg dist/*-none-any.whl
- name: Test installation from a source distribution
run: |
tox -e wheelinstall --installpkg dist/*.tar.gz
- 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
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.name }}
cancel-in-progress: true
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.12-upgraded , test-tox-env: gallery-py312-upgraded , python-ver: "3.12", 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.12-upgraded , test-tox-env: gallery-py312-upgraded , python-ver: "3.12", os: windows-latest }
steps:
- name: Checkout repo with submodules
uses: actions/checkout@v4
with:
submodules: 'recursive'
fetch-depth: 0 # tags are required 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}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.name }}
cancel-in-progress: true
strategy:
fail-fast: false
matrix:
include:
- { name: conda-linux-python3.9-minimum , test-tox-env: pytest-py39-minimum , python-ver: "3.9" , os: ubuntu-latest }
- { name: conda-linux-python3.12-upgraded , test-tox-env: pytest-py312-upgraded , python-ver: "3.12", os: ubuntu-latest }
steps:
- name: Checkout repo with submodules
uses: actions/checkout@v4
with:
submodules: 'recursive'
fetch-depth: 0 # tags are required to determine the version
- name: Set up Conda
uses: conda-incubator/setup-miniconda@v3
with:
auto-update-conda: true
python-version: ${{ matrix.python-ver }}
channels: conda-forge
- name: Install build dependencies
run: |
conda config --set always_yes yes --set changeps1 no
conda info
conda install -c conda-forge "tox>=4"
- name: Conda reporting
run: |
conda info
conda config --show-sources
conda list --show-channel-urls
# NOTE tox installs packages from PyPI not conda-forge...
- name: Run tox tests
run: |
tox -e ${{ matrix.test-tox-env }}
- name: Build wheel and source distribution
run: |
tox -e build
ls -1 dist
- name: Test installation from a wheel
run: |
tox -e wheelinstall --installpkg dist/*-none-any.whl
- name: Test installation from a source distribution
run: |
tox -e wheelinstall --installpkg dist/*.tar.gz
deploy-dev:
name: Deploy pre-release from dev
needs: [run-tests, run-gallery-tests, run-tests-on-conda]
if: ${{ github.event_name == 'push' }}
runs-on: ubuntu-latest
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
steps:
- name: Checkout repo with submodules
uses: actions/checkout@v4
with:
submodules: 'recursive'
fetch-depth: 0 # tags are required to determine the version
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- 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 hdmf-dev/hdmf \
--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
run-ros3-tests:
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash -l {0} # necessary for conda
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.name }}
cancel-in-progress: true
strategy:
fail-fast: false
matrix:
include:
- { name: linux-python3.12-ros3 , python-ver: "3.12", os: ubuntu-latest }
steps:
- name: Checkout repo with submodules
uses: actions/checkout@v4
with:
submodules: 'recursive'
fetch-depth: 0 # tags are required 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 .
pip list
- name: Conda reporting
run: |
conda info
conda config --show-sources
conda list --show-channel-urls
- name: Run ros3 tests # TODO include gallery tests after they are written
run: |
pytest tests/unit/test_io_hdf5_streaming.py