feat(python): New Python driver API #29
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
# This file is autogenerated by maturin v1.7.1 | |
# To update, run | |
# | |
# maturin generate-ci github -m bindings/python/lyric-py/Cargo.toml | |
# | |
name: Release Python | |
on: | |
push: | |
branches: | |
- main | |
- master | |
tags: | |
- '*' | |
pull_request: | |
workflow_dispatch: | |
permissions: | |
contents: read | |
concurrency: | |
group: ${{ github.event.number || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
linux: | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
matrix: | |
platform: | |
- runner: ubuntu-latest | |
target: x86_64 | |
# - runner: ubuntu-latest | |
# target: aarch64 | |
# - runner: ubuntu-latest | |
# target: armv7 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: 3.x | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.platform.target }} | |
args: --release --out dist --find-interpreter --manifest-path bindings/python/lyric-py/Cargo.toml | |
sccache: 'true' | |
# manylinux: auto | |
manylinux: ${{ matrix.platform.target == 'aarch64' && '2_24' || 'auto' }} | |
docker-options: | | |
-e PROTOC_ARCH=${{ matrix.platform.target }} | |
-e PROTOC=/usr/local/bin/protoc | |
before-script-linux: | | |
apt-get update && apt-get install -y unzip | |
PROTOC_VERSION="28.2" | |
if [ "$PROTOC_ARCH" = "i686" ]; then | |
PROTOC_ARCH="x86_32" | |
elif [ "$PROTOC_ARCH" = "aarch64" ]; then | |
PROTOC_ARCH="aarch_64" | |
elif [ "$PROTOC_ARCH" = "ppc64le" ]; then | |
PROTOC_ARCH="ppcle_64" | |
elif [ "$PROTOC_ARCH" = "s390x" ]; then | |
PROTOC_ARCH="s390_64" | |
fi | |
PROTOC_ZIP="protoc-${PROTOC_VERSION}-linux-${PROTOC_ARCH}.zip" | |
curl -OL "https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/${PROTOC_ZIP}" | |
unzip -o $PROTOC_ZIP -d /usr/local bin/protoc | |
unzip -o $PROTOC_ZIP -d /usr/local 'include/*' | |
rm -f $PROTOC_ZIP | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-linux-${{ matrix.platform.target }} | |
path: dist | |
musllinux: | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
matrix: | |
platform: | |
- runner: ubuntu-latest | |
target: x86_64 | |
# - runner: ubuntu-latest | |
# target: aarch64 | |
# - runner: ubuntu-latest | |
# target: armv7 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: 3.x | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.platform.target }} | |
args: --release --out dist --find-interpreter --manifest-path bindings/python/lyric-py/Cargo.toml | |
sccache: 'true' | |
manylinux: musllinux_1_2 | |
docker-options: | | |
-e PROTOC_ARCH=${{ matrix.platform.target }} | |
-e PROTOC=/usr/local/bin/protoc | |
before-script-linux: | | |
PROTOC_VERSION="28.2" | |
if [ "$PROTOC_ARCH" = "i686" ]; then | |
PROTOC_ARCH="x86_32" | |
elif [ "$PROTOC_ARCH" = "aarch64" ]; then | |
PROTOC_ARCH="aarch_64" | |
fi | |
PROTOC_ZIP="protoc-${PROTOC_VERSION}-linux-${PROTOC_ARCH}.zip" | |
curl -OL "https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/${PROTOC_ZIP}" | |
unzip -o $PROTOC_ZIP -d /usr/local bin/protoc | |
unzip -o $PROTOC_ZIP -d /usr/local 'include/*' | |
rm -f $PROTOC_ZIP | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-musllinux-${{ matrix.platform.target }} | |
path: dist | |
windows: | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
matrix: | |
platform: | |
- runner: windows-latest | |
target: x64 | |
# Remove the comment below to enable 32-bit Windows builds | |
# - runner: windows-latest | |
# target: x86 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: 3.x | |
architecture: ${{ matrix.platform.target }} | |
- name: Install Protobuf Compiler | |
run: | | |
choco install protoc | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.platform.target }} | |
args: --release --out dist --find-interpreter --manifest-path bindings/python/lyric-py/Cargo.toml | |
sccache: 'true' | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-windows-${{ matrix.platform.target }} | |
path: dist | |
macos: | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
matrix: | |
platform: | |
- runner: macos-12 | |
target: x86_64 | |
- runner: macos-14 | |
target: aarch64 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: 3.x | |
- name: Install Protobuf Compiler | |
run: | | |
brew install protobuf | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.platform.target }} | |
args: --release --out dist --find-interpreter --manifest-path bindings/python/lyric-py/Cargo.toml | |
sccache: 'true' | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-macos-${{ matrix.platform.target }} | |
path: dist | |
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 bindings/python/lyric-py/Cargo.toml | |
- name: Upload sdist | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-sdist | |
path: dist | |
release: | |
name: Release | |
runs-on: ubuntu-latest | |
# Only trigger on GitHub Release creation | |
if: github.event_name == 'release' && github.event.action == 'published' | |
needs: [linux, musllinux, windows, macos, sdist] | |
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 wheels-*/* | |
# Test the built wheels | |
test-wheels: | |
name: Test Wheels | |
runs-on: ubuntu-latest | |
if: github.event_name != 'release' | |
needs: [ linux, musllinux, windows, macos, sdist ] | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: wheels-* | |
merge-multiple: true | |
path: dist | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
# Install the built wheel | |
- name: Install built wheel | |
run: | | |
python -m pip install --find-links=dist lyric-py | |
# Some integration tests | |
# python -m pytest |