chore(deps)(deps): bump pyo3 from 0.23.5 to 0.28.2 #14
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: Python Bindings CI/CD | |
| on: | |
| push: | |
| branches: [main, develop, "claude/**"] | |
| paths: | |
| - "crates/terraphim_automata_py/**" | |
| - "crates/terraphim_automata/**" | |
| - "crates/terraphim_types/**" | |
| - ".github/workflows/python-bindings.yml" | |
| pull_request: | |
| branches: [main, develop] | |
| paths: | |
| - "crates/terraphim_automata_py/**" | |
| - "crates/terraphim_automata/**" | |
| - "crates/terraphim_types/**" | |
| - ".github/workflows/python-bindings.yml" | |
| release: | |
| types: [published] | |
| env: | |
| CARGO_TERM_COLOR: always | |
| RUST_BACKTRACE: 1 | |
| jobs: | |
| lint: | |
| name: Lint Python Code | |
| runs-on: [self-hosted, linux, x64] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v5 | |
| with: | |
| enable-cache: true | |
| - name: Install dependencies | |
| run: uv pip install --system black ruff mypy | |
| - name: Check formatting with Black | |
| working-directory: crates/terraphim_automata_py | |
| run: black --check python/ | |
| - name: Lint with Ruff | |
| working-directory: crates/terraphim_automata_py | |
| run: ruff check python/ | |
| - name: Type check with mypy | |
| working-directory: crates/terraphim_automata_py | |
| run: mypy python/terraphim_automata/ --ignore-missing-imports | |
| continue-on-error: true | |
| test: | |
| name: Test on ${{ matrix.os }} - Python ${{ matrix.python-version }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| python-version: ["3.9", "3.10", "3.11", "3.12"] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache Rust dependencies | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: "crates/terraphim_automata_py -> target" | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v5 | |
| with: | |
| enable-cache: true | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Setup virtual environment | |
| working-directory: crates/terraphim_automata_py | |
| shell: bash | |
| run: | | |
| unset CONDA_PREFIX | |
| uv venv | |
| if [[ "$RUNNER_OS" == "Windows" ]]; then | |
| source .venv/Scripts/activate | |
| else | |
| source .venv/bin/activate | |
| fi | |
| - name: Install maturin | |
| working-directory: crates/terraphim_automata_py | |
| shell: bash | |
| run: | | |
| if [[ "$RUNNER_OS" == "Windows" ]]; then | |
| source .venv/Scripts/activate | |
| else | |
| source .venv/bin/activate | |
| fi | |
| uv pip install maturin | |
| - name: Build Python package | |
| working-directory: crates/terraphim_automata_py | |
| shell: bash | |
| run: | | |
| if [[ "$RUNNER_OS" == "Windows" ]]; then | |
| source .venv/Scripts/activate | |
| else | |
| source .venv/bin/activate | |
| fi | |
| maturin develop | |
| - name: Install test dependencies | |
| working-directory: crates/terraphim_automata_py | |
| shell: bash | |
| run: | | |
| if [[ "$RUNNER_OS" == "Windows" ]]; then | |
| source .venv/Scripts/activate | |
| else | |
| source .venv/bin/activate | |
| fi | |
| uv pip install pytest pytest-cov | |
| - name: Run tests | |
| working-directory: crates/terraphim_automata_py | |
| shell: bash | |
| run: | | |
| if [[ "$RUNNER_OS" == "Windows" ]]; then | |
| source .venv/Scripts/activate | |
| else | |
| source .venv/bin/activate | |
| fi | |
| pytest python/tests/ -v --cov=terraphim_automata --cov-report=xml --cov-report=term | |
| - name: Upload coverage to Codecov | |
| if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.12' | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| files: crates/terraphim_automata_py/coverage.xml | |
| flags: python-bindings | |
| name: python-${{ matrix.python-version }} | |
| fail_ci_if_error: false | |
| continue-on-error: true | |
| benchmark: | |
| name: Benchmark Performance | |
| runs-on: [self-hosted, linux, x64] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache Rust dependencies | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: "crates/terraphim_automata_py -> target" | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v5 | |
| with: | |
| enable-cache: true | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Setup virtual environment | |
| working-directory: crates/terraphim_automata_py | |
| shell: bash | |
| run: | | |
| unset CONDA_PREFIX | |
| uv venv | |
| if [[ "$RUNNER_OS" == "Windows" ]]; then | |
| source .venv/Scripts/activate | |
| else | |
| source .venv/bin/activate | |
| fi | |
| - name: Install maturin | |
| working-directory: crates/terraphim_automata_py | |
| shell: bash | |
| run: | | |
| if [[ "$RUNNER_OS" == "Windows" ]]; then | |
| source .venv/Scripts/activate | |
| else | |
| source .venv/bin/activate | |
| fi | |
| uv pip install maturin | |
| - name: Build Python package (release mode) | |
| working-directory: crates/terraphim_automata_py | |
| shell: bash | |
| run: | | |
| if [[ "$RUNNER_OS" == "Windows" ]]; then | |
| source .venv/Scripts/activate | |
| else | |
| source .venv/bin/activate | |
| fi | |
| maturin develop --release | |
| - name: Install benchmark dependencies | |
| working-directory: crates/terraphim_automata_py | |
| shell: bash | |
| run: | | |
| if [[ "$RUNNER_OS" == "Windows" ]]; then | |
| source .venv/Scripts/activate | |
| else | |
| source .venv/bin/activate | |
| fi | |
| uv pip install pytest pytest-benchmark | |
| - name: Install Rust target for benchmarks | |
| if: matrix.os == 'ubuntu-latest' | |
| run: rustup target add x86_64-unknown-linux-gnu | |
| - name: Run benchmarks | |
| working-directory: crates/terraphim_automata_py | |
| shell: bash | |
| run: | | |
| if [[ "$RUNNER_OS" == "Windows" ]]; then | |
| source .venv/Scripts/activate | |
| else | |
| source .venv/bin/activate | |
| fi | |
| pytest python/benchmarks/ -v --benchmark-only \ | |
| --benchmark-json=benchmark-results.json \ | |
| --benchmark-columns=min,max,mean,stddev,median,ops | |
| - name: Store benchmark results | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: benchmark-results | |
| path: crates/terraphim_automata_py/benchmark-results.json | |
| build-wheels: | |
| name: Build wheels on ${{ matrix.os }} | |
| runs-on: ${{ matrix.os }} | |
| if: github.event_name == 'release' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v5 | |
| - name: Build wheels | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| working-directory: crates/terraphim_automata_py | |
| args: --release --out dist --find-interpreter | |
| sccache: "true" | |
| manylinux: auto | |
| - name: Upload wheels | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-${{ matrix.os }} | |
| path: crates/terraphim_automata_py/dist | |
| build-sdist: | |
| name: Build source distribution | |
| runs-on: [self-hosted, linux, x64] | |
| if: github.event_name == 'release' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build sdist | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| working-directory: crates/terraphim_automata_py | |
| command: sdist | |
| args: --out dist | |
| - name: Upload sdist | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: sdist | |
| path: crates/terraphim_automata_py/dist | |
| publish: | |
| name: Publish to PyPI | |
| runs-on: [self-hosted, linux, x64] | |
| if: github.event_name == 'release' | |
| needs: [lint, test, build-wheels, build-sdist] | |
| environment: | |
| name: pypi | |
| url: https://pypi.org/p/terraphim-automata | |
| permissions: | |
| id-token: write | |
| steps: | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| pattern: wheels-* | |
| path: dist | |
| merge-multiple: true | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: sdist | |
| path: dist | |
| - name: Publish to PyPI | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| command: upload | |
| args: --non-interactive --skip-existing dist/* |