Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/capi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ on:
branches-ignore:
- pycli
- bump-pyo3-version
- update-wheels-actions

defaults:
run:
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/msrv.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ on:
branches-ignore:
- pycli
- bump-pyo3-version
- update-wheels-actions

env:
CARGO_TERM_COLOR: always
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ on:
push:
branches-ignore:
- pycli
- update-wheels-actions

jobs:
test:
Expand Down
153 changes: 153 additions & 0 deletions .github/workflows/release-wheels.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
name: Release Python wheels

# for available runner images see: https://github.com/actions/runner-images

on:
push:
tags:
- 'v[0-9]+*'
workflow_dispatch:

jobs:
wheels-linux:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: ubuntu-22.04
target: x86_64
manylinux: 2_17
#- runner: ubuntu-22.04
# target: x86
#- runner: ubuntu-22.04
# target: aarch64
#- runner: ubuntu-22.04
# target: armv7
#- runner: ubuntu-22.04
# target: s390x
#- runner: ubuntu-22.04
# target: ppc64le
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: 3.x
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --interpreter python3.8 python3.9 python3.10 python3.11 python3.12 python3.13 python3.14 pypy3.9 pypy3.10 pypy3.11 --manifest-path pineappl_py/Cargo.toml
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
manylinux: ${{ matrix.platform.manylinux }}
- name: Upload wheels
uses: actions/upload-artifact@v5
with:
name: ${{ github.job }}-${{ matrix.platform.target }}
path: dist

wheels-macos:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: macos-15-intel
target: x86_64
- runner: macos-latest
target: aarch64
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: 3.x
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --interpreter python3.7 python3.8 python3.9 python3.10 python3.11 python3.12 python3.13 python3.14 pypy3.9 pypy3.10 --manifest-path pineappl_py/Cargo.toml
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
- name: Upload wheels
uses: actions/upload-artifact@v5
with:
name: ${{ github.job }}-${{ matrix.platform.target }}
path: dist

wheels-sdist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist --manifest-path pineappl_py/Cargo.toml
- name: Upload sdist
uses: actions/upload-artifact@v5
with:
name: ${{ github.job }}
path: dist

wheels-windows:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: windows-2025
target: x64
python_arch: x64
# - runner: windows-latest
# target: x86
# python_arch: x86
# - runner: windows-11-arm
# target: aarch64
# python_arch: arm64
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: 3.13
architecture: ${{ matrix.platform.python_arch }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
# Python 3.7, 3.8, 3.9, PyPy 3.9 and 3.10 don't seem to work on Windows and fail with
# Interpreters ["CPython 3.7", "PyPy 3.9", "PyPy 3.10"] were found in maturin's bundled sysconfig, but compiling for Windows without an interpreter requires PyO3's `generate-import-lib` feature
# even though the interpreters were installed
args: --release --out dist --interpreter python3.10 python3.11 python3.12 python3.13 python3.14 --manifest-path pineappl_py/Cargo.toml
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
- name: Upload wheels
uses: actions/upload-artifact@v5
with:
name: ${{ github.job }}-${{ matrix.platform.target }}
path: dist

release-wheels:
name: Publish wheels
runs-on: ubuntu-latest
if: "startsWith(github.ref, 'refs/tags/')"
needs:
- wheels-linux
- wheels-macos
- wheels-sdist
- wheels-windows
permissions:
# Use to sign the release artifacts
id-token: write
# Used to upload release artifacts
contents: write
# Used to generate artifact attestation
attestations: write
steps:
- uses: actions/download-artifact@v6
- name: Generate artifact attestation
uses: actions/attest-build-provenance@v3
with:
subject-path: 'wheels-*/*'
- name: Install uv
if: ${{ startsWith(github.ref, 'refs/tags/') }}
uses: astral-sh/setup-uv@v7
- name: Publish to PyPI
if: ${{ startsWith(github.ref, 'refs/tags/') }}
run: uv publish 'wheels-*/*'
env:
UV_PUBLISH_TOKEN: ${{ secrets.PYPI_TOKEN }}
136 changes: 3 additions & 133 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ name: Release

on:
push:
branches-ignore:
- update-wheels-actions
tags:
- 'v[0-9]+*'
workflow_dispatch:

env:
# this is make the `gh` binary work
# make the `gh` binary work
GH_TOKEN: ${{ github.token }}

jobs:
Expand Down Expand Up @@ -338,117 +340,6 @@ jobs:
cd ../pineappl_cli
cargo publish

wheels-linux:
runs-on: ubuntu-latest
strategy:
matrix:
target: [x86_64]
steps:
- uses: actions/checkout@v4
# for Linux the wheels are built in a container, so we don't need the `setup-python` action
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
# `--find-interpreter` is needed to generate wheels for *all* Python versions
args: --release --out dist --find-interpreter --manifest-path pineappl_py/Cargo.toml
sccache: 'true'
manylinux: auto
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: ${{ github.job }}-${{ matrix.target }}
path: dist

wheels-macos:
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: macos-15-intel
target: x86_64
- os: macos-15
target: aarch64
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
# WARNING: be careful with the ordering - the last version is the default one. Apparently
# maturin doesn't find all Python versions when one chooses a PyPy version instead of
# CPython as default
python-version: |
pypy3.8
pypy3.9
pypy3.10
3.8
3.9
3.11
3.12
3.13
3.10
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter --manifest-path pineappl_py/Cargo.toml
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: ${{ github.job }}-${{ matrix.target }}
path: dist

wheels-sdist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist --manifest-path pineappl_py/Cargo.toml
- name: Upload sdist
uses: actions/upload-artifact@v4
with:
name: ${{ github.job }}
path: dist

wheels-windows:
runs-on: windows-latest
strategy:
matrix:
target: [x64]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
# WARNING: be careful with the ordering - the last version is the default one. Apparently
# maturin doesn't find all Python versions when one chooses a PyPy version instead of
# CPython as default
python-version: |
pypy3.8
pypy3.9
pypy3.10
3.7
3.8
3.9
3.11
3.12
3.13
3.10
architecture: ${{ matrix.target }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter --manifest-path pineappl_py/Cargo.toml
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: ${{ github.job }}-${{ matrix.target }}
path: dist

release-cli-wheels:
runs-on: ubuntu-latest
if: "startsWith(github.ref, 'refs/tags/')"
Expand All @@ -467,24 +358,3 @@ jobs:
with:
command: upload
args: --skip-existing *

release-wheels:
runs-on: ubuntu-latest
if: "startsWith(github.ref, 'refs/tags/')"
needs:
- wheels-linux
- wheels-macos
- wheels-sdist
- wheels-windows
steps:
- uses: actions/download-artifact@v4
with:
pattern: "wheels-*"
merge-multiple: true
- name: Publish to PyPI
uses: PyO3/maturin-action@v1
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
with:
command: upload
args: --skip-existing *
1 change: 1 addition & 0 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ on:
branches-ignore:
- pycli
- bump-pyo3-version
- update-wheels-actions

defaults:
run:
Expand Down
8 changes: 6 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## Added

- added support for the Python 3.14 on macOS (ARM64/x86)

## Removed

- removed support for Python 3.7 for macOS (ARM64) due to removed runner on
Github
- removed support for the following Python versions due to unresolved issue in
maturin action on Windows (x86): Python 3.7, 3.8, 3.9

## [1.3.2] - 21/02/2026

Expand Down
Loading
Loading