chore(deps)(deps): bump tempfile from 3.26.0 to 3.27.0 #190
Workflow file for this run
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: | |
| - name: Pre-checkout cleanup | |
| run: | | |
| sudo rm -rf "${{ github.workspace }}/target" "${{ github.workspace }}/desktop/dist" "${{ github.workspace }}/desktop/node_modules" "${{ github.workspace }}/terraphim_server/dist" 2>/dev/null || true | |
| - uses: actions/checkout@v6 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v7 | |
| with: | |
| enable-cache: true | |
| - name: Setup virtual environment | |
| working-directory: crates/terraphim_automata_py | |
| run: | | |
| unset CONDA_PREFIX | |
| uv venv | |
| if [[ "$RUNNER_OS" == "Windows" ]]; then | |
| source .venv/Scripts/activate | |
| else | |
| source .venv/bin/activate | |
| fi | |
| uv pip install black ruff mypy | |
| - name: Fix Black formatting | |
| working-directory: crates/terraphim_automata_py | |
| run: | | |
| if [[ "$RUNNER_OS" == "Windows" ]]; then | |
| source .venv/Scripts/activate | |
| else | |
| source .venv/bin/activate | |
| fi | |
| black python/ | |
| continue-on-error: false | |
| - name: Lint with Ruff | |
| working-directory: crates/terraphim_automata_py | |
| run: | | |
| if [[ "$RUNNER_OS" == "Windows" ]]; then | |
| source .venv/Scripts/activate | |
| else | |
| source .venv/bin/activate | |
| fi | |
| ruff check python/ | |
| - name: Type check with mypy | |
| working-directory: crates/terraphim_automata_py | |
| run: | | |
| if [[ "$RUNNER_OS" == "Windows" ]]; then | |
| source .venv/Scripts/activate | |
| else | |
| source .venv/bin/activate | |
| fi | |
| 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@v6 | |
| - 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@v7 | |
| 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@v6 | |
| - 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@v7 | |
| 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 pytest-cov | |
| - name: Install Rust target for benchmarks | |
| run: | | |
| rustup target add x86_64-unknown-linux-gnu | |
| rustup target add x86_64-unknown-linux-musl | |
| - 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 | |
| # Override addopts (removes coverage flags) and python_files (adds benchmark_ pattern) | |
| pytest python/benchmarks/ -v --benchmark-only \ | |
| --benchmark-json=benchmark-results.json \ | |
| --benchmark-columns=min,max,mean,stddev,median,ops \ | |
| -o "addopts=" -o "python_files=benchmark_*.py test_*.py" | |
| - name: Store benchmark results | |
| uses: actions/upload-artifact@v5 | |
| 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@v6 | |
| - name: Set up Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v7 | |
| - 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@v5 | |
| 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@v6 | |
| - 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@v5 | |
| 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/* |