Skip to content

📦️Bumped to 0.1.13 #171

📦️Bumped to 0.1.13

📦️Bumped to 0.1.13 #171

Workflow file for this run

# This file is autogenerated by maturin v1.7.1
# To update, run
#
# maturin generate-ci github
#
name: CI
on:
push:
branches:
- main
- master
tags:
- "*"
pull_request:
workflow_dispatch:
permissions:
contents: write
env:
PYTHON_VERSION: "3.8"
CARGO_TERM_COLOR: always
jobs:
setup:
runs-on: ubuntu-latest
outputs:
should_run: ${{ steps.set_condition.outputs.should_run }}
steps:
- id: set_condition
run: |
if [[ "${{ github.ref_type }}" == "tag" ]] || [[ "${{ contains(github.event.head_commit.message, '📦️') }}" == "false" ]]; then
echo "should_run=true" >> $GITHUB_OUTPUT
else
echo "should_run=false" >> $GITHUB_OUTPUT
fi
merge:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Merge main into bench
run: |
git checkout main
git push origin main:bench --force
check:
runs-on: ubuntu-latest
needs: setup
if: ${{ needs.setup.outputs.should_run == 'true' }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Install check dependencies
run: pip install black mypy numpy pandas-stubs
- name: black
run: black . --check --diff
- name: mypy
run: mypy cfpyo3
test-py:
runs-on: ubuntu-latest
needs: setup
if: ${{ needs.setup.outputs.should_run == 'true' }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Build wheel
uses: PyO3/maturin-action@v1
with:
command: build
args: >
--manifest-path cfpyo3_rs_py/Cargo.toml
--out dist
sccache: "true"
- name: Install wheel
run: pip install dist/*.whl
- name: Install test dependencies
run: pip install pytest
- name: Run tests
run: pytest
test-rs:
runs-on: ubuntu-latest
needs: setup
if: ${{ needs.setup.outputs.should_run == 'true' }}
strategy:
matrix:
toolchain:
- stable
- beta
- nightly
features:
- "full"
- "bench-full"
steps:
- uses: actions/checkout@v4
- uses: conda-incubator/setup-miniconda@v2
with:
miniconda-version: "latest"
activate-environment: test
python-version: ${{ env.PYTHON_VERSION }}
- run: rustup update ${{ matrix.toolchain }} && rustup default ${{ matrix.toolchain }}
- run: cargo test -p cfpyo3_rs_core -F ${{ matrix.features }} --verbose
build-wheels:
needs: [test-py, test-rs]
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-13, windows-latest]
architecture: [x86-64, aarch64]
exclude:
- os: windows-latest
architecture: aarch64
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Set Rust target for aarch64
if: matrix.architecture == 'aarch64'
id: target
run: |
TARGET=${{ matrix.os == 'macos-13' && 'aarch64-apple-darwin' || 'aarch64-unknown-linux-gnu'}}
echo "target=$TARGET" >> $GITHUB_OUTPUT
- name: Build wheel
uses: PyO3/maturin-action@v1
with:
command: build
target: ${{ steps.target.outputs.target }}
args: >
--release
--manifest-path cfpyo3_rs_py/Cargo.toml
--out dist
manylinux: ${{ matrix.architecture == 'aarch64' && '2_24' || 'auto' }}
- name: Upload wheel
uses: actions/upload-artifact@v4
with:
name: wheel-${{ matrix.os }}-${{ matrix.architecture }}
path: dist/*.whl
sdist:
needs: [test-py, test-rs]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
command: sdist
args: >
--manifest-path cfpyo3_rs_py/Cargo.toml
--out dist
- name: Upload sdist
uses: actions/upload-artifact@v4
with:
name: wheel-sdist
path: dist
release-pypi:
name: Release to PyPI
runs-on: ubuntu-latest
needs: [build-wheels, sdist]
if: "${{ startsWith(github.ref, 'refs/tags/') }}"
steps:
- uses: actions/download-artifact@v4
- name: Publish to PyPI
uses: PyO3/maturin-action@v1
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
with:
command: upload
args: --non-interactive --skip-existing wheel-*/*
release-crates:
name: Release to crates.io
runs-on: ubuntu-latest
needs: [build-wheels, sdist]
if: "${{ startsWith(github.ref, 'refs/tags/') }}"
steps:
- uses: actions/checkout@v4
- uses: conda-incubator/setup-miniconda@v2
with:
miniconda-version: "latest"
activate-environment: test
python-version: ${{ env.PYTHON_VERSION }}
- run: rustup update stable && rustup default stable
- run: cargo publish --manifest-path cfpyo3_rs_core/Cargo.toml --token ${{ secrets.CRATES_TOKEN }}
- run: cargo publish --manifest-path cfpyo3_rs_bindings/Cargo.toml --token ${{ secrets.CRATES_TOKEN }}