#560: a value-parity oracle for harmonize(), and the two bugs it foun… #235
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
| # Merge gate (Tier 1): PRs and pushes to master only. | |
| # ``essential`` is the fast signal; ``full`` runs the whole linux suite and is | |
| # the intended required check (issue #530 — four non-essential test failures | |
| # once landed on master through the essential-only gate). | |
| # Full conda / pip matrix runs in ci-scheduled.yml (Tier 3). | |
| name: CI | |
| on: | |
| pull_request: | |
| branches: [master] | |
| paths-ignore: | |
| - "docs/**" | |
| - "paper/**" | |
| - ".issueflows/01-current-issues/**" | |
| - ".issueflows/02-partly-solved-issues/**" | |
| - ".issueflows/03-solved-issues/**" | |
| - ".issueflows/04-designs-and-guides/**" | |
| - "graphify-out/**" | |
| - "**/*.md" | |
| push: | |
| branches: [master] | |
| paths-ignore: | |
| - "docs/**" | |
| - "paper/**" | |
| - ".issueflows/01-current-issues/**" | |
| - ".issueflows/02-partly-solved-issues/**" | |
| - ".issueflows/03-solved-issues/**" | |
| - ".issueflows/04-designs-and-guides/**" | |
| - "graphify-out/**" | |
| - "**/*.md" | |
| workflow_dispatch: | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| essential: | |
| name: essential (linux / uv) | |
| runs-on: ubuntu-latest | |
| env: | |
| UV_NO_SOURCES: 1 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: astral-sh/setup-uv@v5 | |
| with: | |
| version: "latest" | |
| - name: Install system dependencies | |
| run: sudo apt-get update && sudo apt-get install -y mdbtools | |
| - run: uv python install 3.13 | |
| - name: Sync dependencies (PyPI cellpycore only) | |
| run: uv sync | |
| - name: Run essential tests | |
| # No plotutils ignore: the summary-plot suite was excluded because it | |
| # "needs a display", but it selects the Agg backend itself and runs | |
| # headless fine. The exclusion was hiding real breakage (#567). | |
| env: | |
| MPLBACKEND: Agg | |
| run: uv run pytest -m essential | |
| - name: Run cellpy setup | |
| run: uv run cellpy setup --silent | |
| - name: Run cellpy check | |
| run: uv run cellpy info --check | |
| full: | |
| name: full (linux / uv) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 25 | |
| env: | |
| UV_NO_SOURCES: 1 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: astral-sh/setup-uv@v5 | |
| with: | |
| version: "latest" | |
| - name: Install system dependencies | |
| run: sudo apt-get update && sudo apt-get install -y mdbtools | |
| - run: uv python install 3.13 | |
| - name: Sync dependencies (PyPI cellpycore only, with plotting extras) | |
| # --extra batch pulls in plotly/seaborn so the collector/plotter code | |
| # paths actually execute under test (they were never exercised in CI | |
| # before — the flip's curve-consumer migration needs this net). | |
| run: uv sync --extra batch | |
| - name: Run the full test suite | |
| # The gate that catches non-essential regressions (issue #530). The | |
| # plotutils exclusion is gone (#567): with --extra batch this job has | |
| # plotly and seaborn, so it is the only place the figure menu actually | |
| # renders. Agg keeps matplotlib headless. | |
| env: | |
| MPLBACKEND: Agg | |
| run: uv run pytest |