Skip to content

🎨 Improved usability of the on-the-fly SiDB gate library #2213

🎨 Improved usability of the on-the-fly SiDB gate library

🎨 Improved usability of the on-the-fly SiDB gate library #2213

# this file is heavily based on https://github.com/cda-tum/qmap/blob/main/.github/workflows/deploy.yml
name: 🐍 • Packaging
on:
release:
types: [published]
merge_group:
push:
branches: ["main"]
paths:
- "bindings/pyfiction/**"
- "**/*.py"
- "**/*.hpp"
- "**/*.cpp"
- "**/*.cmake"
- "**/CMakeLists.txt"
- "libs/**"
- ".github/workflows/pyfiction-pypi-deployment.yml"
pull_request:
branches: ["main"]
paths:
- "bindings/pyfiction/**"
- "**/*.py"
- "**/*.hpp"
- "**/*.cpp"
- "**/*.cmake"
- "**/CMakeLists.txt"
- "libs/**"
- ".github/workflows/pyfiction-pypi-deployment.yml"
workflow_dispatch:
workflow_run:
workflows: ["pyfiction Docstring Generator"]
types:
- completed
permissions:
attestations: write
contents: read
id-token: write
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
env:
Z3_VERSION: 4.13.0
jobs:
build_sdist:
name: 📦 Build Source Distribution
runs-on: ubuntu-latest
steps:
- name: Clone respository
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Install the latest version of uv
uses: astral-sh/setup-uv@v5
with:
version: "latest"
enable-cache: true
- name: Build sdist
run: uv build --sdist
- name: Check metadata
run: uvx twine check dist/*
- name: Upload sdist as an artifact
uses: actions/upload-artifact@v4
with:
name: cibw-sdist
path: dist/*.tar.gz
overwrite: true
build_wheels:
name: 🛞 Wheels for ${{ matrix.runs-on }}
runs-on: ${{ matrix.runs-on }}
strategy:
fail-fast: false
matrix:
runs-on: [ubuntu-latest, macos-13, macos-14, windows-latest]
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Set up MSVC development environment (Windows only)
uses: ilammy/msvc-dev-cmd@v1
- name: Setup ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: "${{matrix.config.os}}-pyfiction"
save: true
max-size: 10G
# on Linux, the action does not work because it can't install to the manylinux container
- if: runner.os != 'Linux'
name: Install Z3
uses: cda-tum/setup-z3@v1
with:
version: ${{ env.Z3_VERSION }}
- if: runner.os == 'Linux'
name: Setup mold
uses: rui314/setup-mold@v1
- name: Install the latest version of uv
uses: astral-sh/setup-uv@v5
with:
version: "latest"
enable-cache: true
- name: Build wheels
uses: pypa/cibuildwheel@v2.22
- name: Upload wheel as an artifact
uses: actions/upload-artifact@v4
with:
name: cibw-wheels-${{ matrix.config.os }}-${{ matrix.config.arch }}-${{ matrix.python }}
path: ./wheelhouse/*.whl
overwrite: true
publish_to_pypi:
needs: [build_wheels, build_sdist]
runs-on: ubuntu-latest
name: 🚀 Publish to PyPI
if: github.event_name == 'release' && github.event.action == 'published'
steps:
- name: Download the previously stored artifacts
uses: actions/download-artifact@v4
with:
pattern: cibw-*
path: dist
merge-multiple: true
- name: Generate artifact attestation for sdist and wheel(s)
uses: actions/attest-build-provenance@v2
with:
subject-path: "dist/*"
- name: Deploy to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_DEPLOY_TOKEN }}
attestations: true
skip-existing: true
verbose: true