Support the stable ABI for all supported CPython versions #1586
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: Tests | |
on: | |
workflow_dispatch: | |
pull_request: | |
push: | |
branches: | |
- master | |
- stable | |
- v* | |
concurrency: | |
group: test-${{ github.ref }} | |
cancel-in-progress: false | |
jobs: | |
# This is the "main" test suite, which tests a large number of different | |
# versions of default compilers and Python versions in GitHub Actions. | |
standard: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: ['ubuntu-latest', 'windows-2022', 'macos-13'] | |
python: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13.0-alpha.3', 'pypy3.9-v7.3.15', 'pypy3.10-v7.3.15'] | |
name: "Python ${{ matrix.python }} / ${{ matrix.os }}" | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Setup Python ${{ matrix.python }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python }} | |
cache: 'pip' | |
- name: Install the latest CMake | |
uses: lukka/get-cmake@latest | |
- name: Install Eigen | |
if: matrix.os == 'ubuntu-latest' | |
run: sudo apt-get -y install libeigen3-dev | |
- name: Install PyTest | |
run: | | |
python -m pip install pytest pytest-github-actions-annotate-failures typing_extensions | |
- name: Install NumPy | |
if: ${{ !startsWith(matrix.python, 'pypy') && !contains(matrix.python, 'alpha') }} | |
run: | | |
python -m pip install numpy scipy | |
- name: Configure Unstable ABI | |
run: > | |
cmake -S . -B build -DNB_TEST_SHARED_BUILD="$(python3 -c 'import sys; print(int(sys.version_info.minor>=11))')" | |
- name: Build C++ Unstable ABI | |
run: cmake --build build -j 2 | |
- name: Run tests Unstable ABI | |
run: > | |
cd build; | |
python -m pytest | |
- name: Configure Stable ABI | |
if: ${{ !startsWith(matrix.python, 'pypy') && !contains(matrix.python, 'alpha') }} | |
run: > | |
cmake -S . -B build -DNB_TEST_STABLE_ABI=current -DNB_TEST_SHARED_BUILD="$(python3 -c 'import sys; print(int(sys.version_info.minor>=11))')" | |
- name: Build C++ Stable ABI | |
if: ${{ !startsWith(matrix.python, 'pypy') && !contains(matrix.python, 'alpha') }} | |
run: cmake --build build -j 2 | |
- name: Run tests Stable ABI | |
if: ${{ !startsWith(matrix.python, 'pypy') && !contains(matrix.python, 'alpha') }} | |
run: > | |
cd build; | |
python -m pytest | |
- name: Configure Stable ABI 3.8 | |
if: ${{ matrix.python != 3.8 && !startsWith(matrix.python, 'pypy') && !contains(matrix.python, 'alpha') }} | |
run: > | |
cmake -S . -B build -DNB_TEST_STABLE_ABI=ON -DNB_TEST_SHARED_BUILD="$(python3 -c 'import sys; print(int(sys.version_info.minor>=11))')" | |
- name: Build C++ Stable ABI 3.8 | |
if: ${{ matrix.python != 3.8 && !startsWith(matrix.python, 'pypy') && !contains(matrix.python, 'alpha') }} | |
run: cmake --build build -j 2 | |
# Currently testing with older versions of the stable ABI fails because of differences in type names | |
# - name: Run tests Stable ABI 3.8 | |
# if: ${{ matrix.python != 3.8 && !startsWith(matrix.python, 'pypy') && !contains(matrix.python, 'alpha') }} | |
# run: > | |
# cd build; | |
# python -m pytest |