Skip to content

feat: support Python 3.13t #2047

feat: support Python 3.13t

feat: support Python 3.13t #2047

Workflow file for this run

name: Tests
on:
workflow_dispatch:
pull_request:
push:
branches:
- master
- develop
env:
FORCE_COLOR: 3
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
clang-tidy:
name: Clang-Tidy
runs-on: ubuntu-latest
container: silkeh/clang:18-bookworm
steps:
- name: Install requirements
run: apt-get update && apt-get install -y python3-dev python3-pip git
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- name: Install extra requirements
run: python3 -m pip install setuptools_scm --break-system-packages
- name: Configure
run: cmake -S. -Bbuild -DCMAKE_CXX_CLANG_TIDY="$(which clang-tidy);--warnings-as-errors=*"
- name: Build
run: cmake --build build -j 4
pylint:
runs-on: ubuntu-latest
name: PyLint
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- name: Run PyLint
run: pipx run nox[uv] -s pylint -- --output-format=github
cmake:
name: CMake 🐍 ${{ matrix.python-version }}
runs-on: ubuntu-latest
env:
PIP_ONLY_BINARY: numpy
strategy:
fail-fast: false
matrix:
python-version: ["3.9", "3.13", "pypy3.9"]
include:
- python-version: "3.8"
cmake-extras: "-DCMAKE_CXX_STANDARD=17"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- uses: rui314/setup-mold@v1
- uses: yezz123/setup-uv@v4
- uses: hendrikmuhs/ccache-action@v1.2
with:
key: ${{ matrix.python-version }}
create-symlink: true
- name: Install NumPy pre-release
if: matrix.python-version == '3.13'
run: uv pip install --system "numpy>=2.1.0rc1"
- name: Install python tools
run: uv pip install --system -r dev-requirements.txt pytest-github-actions-annotate-failures
env:
PYO3_USE_ABI3_FORWARD_COMPATIBILITY: 1
- name: Configure
run: cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Debug -DBOOST_HISTOGRAM_ERRORS=ON ${{ matrix.cmake-extras }}
- name: Build
run: cmake --build build -j 4
- name: Test
working-directory: ./build
run: python -m pytest -ra
build_wheels:
name: ${{ matrix.only }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
only: cp313t-manylinux_x86_64
- os: ubuntu-latest
only: cp313-manylinux_x86_64
- os: windows-2019
only: cp38-win32
- os: windows-2019
only: cp37-win_amd64
- os: macos-13
only: cp39-macosx_x86_64
- os: macos-14
only: cp39-macosx_arm64
steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
- uses: yezz123/setup-uv@v4
- uses: pypa/cibuildwheel@v2.20
with:
only: "${{ matrix.only }}"
env:
CIBW_BUILD_VERBOSITY: 1
- uses: actions/upload-artifact@v4
with:
path: wheelhouse/*
name: test-wheels-${{ strategy.job-index }}
- name: Check wheels
run: pipx run twine check wheelhouse/*
shell: bash
pass:
if: always()
needs: [clang-tidy, pylint, cmake, build_wheels]
runs-on: ubuntu-latest
steps:
- uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}