Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prepare release #168

Merged
merged 6 commits into from
Feb 12, 2025
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
235 changes: 154 additions & 81 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# This file is autogenerated by maturin v1.1.0
# This file is autogenerated by maturin v1.8.2
# To update, run
#
# maturin generate-ci --pytest github
# maturin generate-ci --pytest --platform all --zig github
#
name: CI

Expand All @@ -11,7 +11,7 @@ on:
- main
- master
tags:
- '*'
- "*"
pull_request:
workflow_dispatch:

Expand All @@ -20,74 +20,150 @@ permissions:

jobs:
linux:
runs-on: ubuntu-latest
runs-on: ${{ matrix.platform.runner }}
strategy:
fail-fast: false
matrix:
# If you update the targets here, be sure to also update the
# download-artifact step in the release job!
target: [x86_64, aarch64]
# pytensor is currently giving me issues on the other targets...
#target: [x86_64, aarch64, s390x, ppc64le]
platform:
- runner: ubuntu-22.04
target: x86_64
- runner: ubuntu-22.04
target: aarch64
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
python-version: "3.12"
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter
manylinux: 2_28
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter --zig
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
manylinux: auto
before-script-linux: |
dnf install -y clang-libs clang || apt install llvm-dev libclang-dev clang

dnf install -y clang-libs clang || sudo apt install llvm-dev libclang-dev clang
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: linux-${{ matrix.target }}-wheels
name: wheels-linux-${{ matrix.platform.target }}
path: dist
- name: pytest
if: ${{ startsWith(matrix.target, 'x86_64') }}
if: ${{ startsWith(matrix.platform.target, 'x86_64') }}
shell: bash
run: |
set -e
pip install --find-links dist --force-reinstall 'nutpie[all]'
pip install --find-links dist --force-reinstall --no-deps --no-index 'nutpie[all]'
pip install pytest
python3 -m venv .venv
source .venv/bin/activate
uv pip install 'nutpie[all]' --find-links dist --force-reinstall
uv pip install pytest
pytest
- name: pytest
if: ${{ !startsWith(matrix.target, 'x86') }}
uses: uraimo/run-on-arch-action@v2.8.1
if: ${{ !startsWith(matrix.platform.target, 'x86') && matrix.platform.target != 'ppc64' }}
uses: uraimo/run-on-arch-action@v2
with:
arch: ${{ matrix.target }}
arch: ${{ matrix.platform.target }}
distro: ubuntu22.04
githubToken: ${{ github.token }}
install: |
apt-get update
apt-get install -y --no-install-recommends python3 python3-pip build-essential libhdf5-dev python3-dev pkg-config curl
pip3 install -U pip pytest
apt-get install -y --no-install-recommends python3 python3-pip curl make clang build-essential python3-dev
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
run: |
set -e
pip3 install --find-links dist --force-reinstall 'nutpie[all]'
pip3 install 'nutpie[all]' --find-links dist --no-deps --no-index --force-reinstall
source $HOME/.local/bin/env
uv pip install --system -U pip pytest
uv pip install --system 'nutpie[all]' --find-links dist --force-reinstall
pytest

# pyarrow doesn't currently seem to work on musllinux
#musllinux:
# runs-on: ${{ matrix.platform.runner }}
# strategy:
# fail-fast: false
# matrix:
# platform:
# - runner: ubuntu-22.04
# target: x86_64
# - runner: ubuntu-22.04
# target: aarch64
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-python@v5
# with:
# python-version: "3.12"
# - name: Install uv
# uses: astral-sh/setup-uv@v5
# - name: Build wheels
# uses: PyO3/maturin-action@v1
# with:
# target: ${{ matrix.platform.target }}
# args: --release --out dist --find-interpreter
# sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
# manylinux: musllinux_1_2
# before-script-linux: |
# dnf install -y clang-libs clang || apt install llvm-dev libclang-dev clang
# - name: Upload wheels
# uses: actions/upload-artifact@v4
# with:
# name: wheels-musllinux-${{ matrix.platform.target }}
# path: dist
# - name: pytest
# if: ${{ startsWith(matrix.platform.target, 'x86_64') }}
# uses: addnab/docker-run-action@v3
# with:
# image: alpine:latest
# options: -v ${{ github.workspace }}:/io -w /io
# run: |
# set -e
# apk add py3-pip py3-virtualenv curl make clang
# curl -LsSf https://astral.sh/uv/install.sh | sh
# source $HOME/.local/bin/env
# python3 -m virtualenv .venv
# source .venv/bin/activate
# # No numba packages for alpine
# uv pip install 'nutpie[stan]' --find-links dist --force-reinstall
# uv pip install pytest
# pytest
# - name: pytest
# if: ${{ !startsWith(matrix.platform.target, 'x86') }}
# uses: uraimo/run-on-arch-action@v2
# with:
# arch: ${{ matrix.platform.target }}
# distro: alpine_latest
# githubToken: ${{ github.token }}
# install: |
# apk add py3-virtualenv curl make clang
# curl -LsSf https://astral.sh/uv/install.sh | sh
# source $HOME/.local/bin/env
# run: |
# set -e
# python3 -m virtualenv .venv
# source $HOME/.local/bin/env
# source .venv/bin/activate
# uv pip install pytest
# # No numba packages for alpine
# uv pip install 'nutpie[stan]' --find-links dist --force-reinstall
# pytest

windows:
runs-on: windows-latest
runs-on: ${{ matrix.platform.runner }}
strategy:
fail-fast: false
matrix:
# If you update the targets here, be sure to also update the
# download-artifact step in the release job!
target: [x64]
platform:
- runner: windows-latest
target: x64
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
architecture: ${{ matrix.target }}
python-version: "3.12"
architecture: ${{ matrix.platform.target }}
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Install LLVM and Clang
uses: KyleMayes/install-llvm-action@v2
with:
Expand All @@ -102,59 +178,63 @@ jobs:
env:
LIBCLANG_PATH: ${{ runner.temp }}/llvm/lib
with:
target: ${{ matrix.target }}
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
sccache: 'true'
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: windows-${{ matrix.target }}-wheels
name: wheels-windows-${{ matrix.platform.target }}
path: dist
- name: pytest
if: ${{ !startsWith(matrix.target, 'aarch64') }}
if: ${{ !startsWith(matrix.platform.target, 'aarch64') }}
shell: bash
run: |
set -e
pip install "nutpie[all]" --find-links dist --force-reinstall
pip install --find-links dist --force-reinstall --no-deps --no-index 'nutpie[all]'
pip install pytest
python3 -m venv .venv
source .venv/Scripts/activate
uv pip install "nutpie[all]" --find-links dist --force-reinstall
uv pip install pytest
pytest

macos:
runs-on: macos-latest
runs-on: ${{ matrix.platform.runner }}
strategy:
fail-fast: false
matrix:
# If you update the targets here, be sure to also update the
# download-artifact step in the release job!
target: [x86_64, aarch64]
platform:
- runner: macos-13
target: x86_64
- runner: macos-14
target: aarch64
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
python-version: "3.12"
- name: Install uv
uses: astral-sh/setup-uv@v5
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
sccache: 'true'
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: macos-${{ matrix.target }}-wheels
name: wheels-macos-${{ matrix.platform.target }}
path: dist
- name: pytest
if: ${{ startsWith(matrix.target, 'aarch64') }}
shell: bash
run: |
set -e
pip install 'nutpie[all]' --find-links dist --force-reinstall
pip install --find-links dist --force-reinstall --no-deps --no-index 'nutpie[all]'
pip install pytest
python3 -m venv .venv
source .venv/bin/activate
uv pip install 'nutpie[all]' --find-links dist --force-reinstall
uv pip install pytest
pytest

sdist:
Expand All @@ -169,45 +249,38 @@ jobs:
- name: Upload sdist
uses: actions/upload-artifact@v4
with:
name: sdist
name: wheels-sdist
path: dist

release:
name: Release
runs-on: ubuntu-latest
if: "startsWith(github.ref, 'refs/tags/')"
if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
needs: [linux, windows, macos, sdist]
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:
# Combine all the wheels and sdists into a single directory
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: linux-x86_64-wheels
path: dist
- uses: actions/download-artifact@v4
with:
name: linux-aarch64-wheels
path: dist
- uses: actions/download-artifact@v4
- name: Generate artifact attestation
uses: actions/attest-build-provenance@v1
with:
name: windows-x64-wheels
path: dist
- uses: actions/download-artifact@v4
with:
name: macos-x86_64-wheels
path: dist
- uses: actions/download-artifact@v4
with:
name: macos-aarch64-wheels
path: dist
- uses: actions/download-artifact@v4
with:
name: sdist
path: dist
subject-path: "wheels-*/*"
- name: Publish to PyPI
if: ${{ startsWith(github.ref, 'refs/tags/') }}
uses: PyO3/maturin-action@v1
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
with:
command: upload
args: --skip-existing dist/*
args: --non-interactive --skip-existing wheels-*/*
- name: Upload to GitHub Release
uses: softprops/action-gh-release@v1
with:
files: |
wasm-wheels/*.whl
prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') }}
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ ci:

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
rev: v5.0.0
hooks:
- id: debug-statements
- id: check-merge-conflict
Expand All @@ -16,7 +16,7 @@ repos:
- id: trailing-whitespace

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.5.6
rev: v0.9.6
hooks:
- id: ruff
args: ["--fix", "--output-format=full"]
Expand Down
Loading
Loading