feat: add experimental explore mode #2303
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: | |
| branches: [main] | |
| pull_request: | |
| jobs: | |
| audit: | |
| name: Security Audit | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 | |
| - name: Install Rust (stable) | |
| uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # stable | |
| with: | |
| toolchain: stable | |
| - name: Run cargo-audit | |
| uses: rustsec/audit-check@e9159ac5f7d7d873ce074ca134da2f445c0a4a61 # v1 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| args: --deny warnings | |
| build-test: | |
| name: Build and test (deny warnings) - ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 | |
| - name: Install Rust (stable) | |
| uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # stable | |
| with: | |
| toolchain: stable | |
| - name: Build all targets | |
| env: | |
| RUSTFLAGS: >- | |
| -D dead_code | |
| -D unused_imports | |
| -D unused_mut | |
| -D unused_variables | |
| -D unused_assignments | |
| -D unused_parens | |
| -W unreachable_pub | |
| -D unused_must_use | |
| -D unused_features | |
| run: cargo build --all-targets --all-features --locked | |
| - name: Run tests | |
| run: cargo test --all-targets --all-features --locked | |
| - name: Run tests (release) on macOS | |
| if: matrix.os == 'macos-latest' | |
| run: cargo test --all-targets --all-features --release --locked | |
| clippy: | |
| name: Pre-commit (Clippy + fmt) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 | |
| - name: Install Rust (stable) with clippy | |
| uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # stable | |
| with: | |
| toolchain: stable | |
| components: clippy | |
| - name: Install Python | |
| uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6 | |
| with: | |
| python-version: '3.12' | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@61cb8a9741eeb8a550a1b8544337180c0fc8476b # v7 | |
| with: | |
| python-version: '3.12' | |
| - name: Sync Python deps for hooks | |
| run: uv sync --group dev --locked | |
| - name: Install pre-commit | |
| run: pip install pre-commit | |
| - name: Run pre-commit on all files | |
| env: | |
| RUSTFLAGS: >- | |
| -D dead_code | |
| -D unused_imports | |
| -D unused_mut | |
| -D unused_variables | |
| -W unreachable_pub | |
| -D unused_must_use | |
| -D unused_features | |
| run: pre-commit run --all-files | |
| fmt: | |
| name: Check formatting | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 | |
| - name: Install Rust (stable) with rustfmt | |
| uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # stable | |
| with: | |
| toolchain: stable | |
| components: rustfmt | |
| - name: Verify rustfmt (79 cols) | |
| run: cargo fmt --all -- --check | |
| # Release handled by release-plz workflow | |
| python-tests: | |
| name: Python bindings (pytest) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 | |
| - name: Install Python | |
| uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@61cb8a9741eeb8a550a1b8544337180c0fc8476b # v7 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| env: | |
| UV_PYTHON_DOWNLOADS: "0" # rely on setup-python interpreter; avoid uv downloads | |
| - name: Sync Python deps (dev) | |
| run: | | |
| uv sync --group dev --locked | |
| - name: Show Ruff version | |
| run: uv run --no-sync ruff --version | |
| - name: Ruff lint | |
| run: uv run --no-sync ruff check --config pyproject.toml . | |
| - name: Ruff format check | |
| run: uv run --no-sync ruff format --config pyproject.toml --check . | |
| - name: Build extension (maturin develop) | |
| run: uv run --no-sync maturin develop -r | |
| - name: Run pytest | |
| run: uv run --no-sync pytest -q |