Add additional exception information #176
This file contains hidden or 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
| name: CI | |
| on: [push, pull_request] | |
| # Automatically cancel previous runs of this workflow on the same branch | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| linux: | |
| # Skip building pull requests from the same repository | |
| if: ${{ github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository) }} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| target: [x86_64, aarch64] | |
| fail-fast: false | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: 'true' | |
| - name: Update pyproject.toml version | |
| if: ${{ startsWith(github.ref, 'refs/tags/') }} | |
| shell: bash | |
| run: | | |
| # Extract version from tag (strip 'v' prefix if present) | |
| VERSION=${GITHUB_REF#refs/tags/} | |
| VERSION=${VERSION#v} | |
| echo "Extracted version: $VERSION" | |
| # Update version in pyproject.toml (works on both GNU and BSD sed) | |
| sed -i.bak "s/^version = .*/version = \"$VERSION\"/" pyproject.toml | |
| rm pyproject.toml.bak | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v6 | |
| with: | |
| version: "0.9.3" | |
| # NOTE: On Linux we need to manually export LD_LIBRARY_PATH | |
| - name: Set up Python | |
| run: | | |
| uv python install --default | |
| LIBDIR=$(python -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))") | |
| echo "LD_LIBRARY_PATH=${LIBDIR}:${LD_LIBRARY_PATH}" >> $GITHUB_ENV | |
| - name: Run Python tests | |
| run: uv run pytest -v | |
| - name: Run Rust tests | |
| run: cargo run | |
| - name: Clean Rust build cache | |
| run: cargo clean | |
| - name: Build wheels | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| target: ${{ matrix.target }} | |
| args: --release --out dist --find-interpreter | |
| manylinux: auto | |
| - name: Upload wheels | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-linux-${{ matrix.target }} | |
| path: dist | |
| windows: | |
| # Skip building pull requests from the same repository | |
| if: ${{ github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository) }} | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: 'true' | |
| - name: Update pyproject.toml version | |
| if: ${{ startsWith(github.ref, 'refs/tags/') }} | |
| shell: bash | |
| run: | | |
| # Extract version from tag (strip 'v' prefix if present) | |
| VERSION=${GITHUB_REF#refs/tags/} | |
| VERSION=${VERSION#v} | |
| echo "Extracted version: $VERSION" | |
| # Update version in pyproject.toml (works on both GNU and BSD sed) | |
| sed -i.bak "s/^version = .*/version = \"$VERSION\"/" pyproject.toml | |
| rm pyproject.toml.bak | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v7 | |
| with: | |
| version: "0.9.3" | |
| - name: Set up Python | |
| run: uv python install --default | |
| - name: Run Rust tests | |
| run: cargo run | |
| - name: Build wheels | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| target: x64 | |
| args: --release --out dist --find-interpreter | |
| - name: Run Python tests | |
| run: uv run pytest -v | |
| - name: Upload wheels | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-windows-x64 | |
| path: dist | |
| macos: | |
| # Skip building pull requests from the same repository | |
| if: ${{ github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository) }} | |
| runs-on: macos-latest | |
| strategy: | |
| matrix: | |
| target: [x86_64, aarch64] | |
| fail-fast: false | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: 'true' | |
| - name: Update pyproject.toml version | |
| if: ${{ startsWith(github.ref, 'refs/tags/') }} | |
| shell: bash | |
| run: | | |
| # Extract version from tag (strip 'v' prefix if present) | |
| VERSION=${GITHUB_REF#refs/tags/} | |
| VERSION=${VERSION#v} | |
| echo "Extracted version: $VERSION" | |
| # Update version in pyproject.toml (works on both GNU and BSD sed) | |
| sed -i.bak "s/^version = .*/version = \"$VERSION\"/" pyproject.toml | |
| rm pyproject.toml.bak | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v7 | |
| with: | |
| version: "0.9.3" | |
| - name: Set up Python | |
| run: uv python install --default | |
| - name: Run Rust tests | |
| if: matrix.target == 'aarch64' | |
| run: cargo run --release | |
| - name: Build wheels | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| target: ${{ matrix.target }} | |
| args: --release --out dist --find-interpreter | |
| - name: Run Python tests | |
| if: matrix.target == 'aarch64' | |
| run: uv run pytest -v | |
| - name: Upload wheels | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-macos-${{ matrix.target }} | |
| path: dist | |
| sdist: | |
| # Skip building pull requests from the same repository | |
| if: ${{ github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository) }} | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: 'true' | |
| - name: Update pyproject.toml version | |
| if: ${{ startsWith(github.ref, 'refs/tags/') }} | |
| shell: bash | |
| run: | | |
| # Extract version from tag (strip 'v' prefix if present) | |
| VERSION=${GITHUB_REF#refs/tags/} | |
| VERSION=${VERSION#v} | |
| echo "Extracted version: $VERSION" | |
| # Update version in pyproject.toml (works on both GNU and BSD sed) | |
| sed -i.bak "s/^version = .*/version = \"$VERSION\"/" pyproject.toml | |
| rm pyproject.toml.bak | |
| - name: Build sdist | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| command: sdist | |
| args: --out dist | |
| - name: Upload sdist | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-sdist | |
| path: dist | |
| release: | |
| if: ${{ startsWith(github.ref, 'refs/tags/') }} | |
| runs-on: ubuntu-latest | |
| needs: [linux, windows, macos, sdist] | |
| permissions: | |
| contents: write | |
| discussions: write | |
| id-token: write | |
| steps: | |
| - name: Download wheels | |
| uses: actions/download-artifact@v5 | |
| with: | |
| pattern: wheels-* | |
| merge-multiple: true | |
| path: dist | |
| - name: Publish to PyPI | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| command: upload | |
| args: --non-interactive --skip-existing dist/* | |
| - name: Release | |
| uses: softprops/action-gh-release@6da8fa9354ddfdc4aeace5fc48d7f679b5214090 # v2.4.1 | |
| with: | |
| generate_release_notes: true | |
| files: dist/* | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |