Skip to content

Run each Python project's checks as parallel steps - #679

Merged
nikobockerman merged 1 commit into
mainfrom
checks-python-parallel-steps
Aug 30, 2026
Merged

Run each Python project's checks as parallel steps#679
nikobockerman merged 1 commit into
mainfrom
checks-python-parallel-steps

Conversation

@nikobockerman

Copy link
Copy Markdown
Owner

mypy, pyright and pytest each had a job of their own, per project, so the same checkout and cache restore was paid six times to run about 12s of checks. Move each project's three checks into one job of parallel steps, as was done for the root checks.

The two projects keep a job each rather than sharing one. They are checked independently: aoc-main's checks do not need solvers/python, and solvers/python's checks do not need aoc-main. Sharing a job would also mean sharing a uv cache entry, so aoc-main would miss cache whenever solvers/python's lockfile changed, and a broken sync in one project would block the other's type checks.

With the checks consolidated, ci-python-project holds nothing but a parameter that no longer varies anything, so it is removed along with the mise-uv-task wrapper it was the last caller of. Its remaining jobs move up to ci.yaml: python-run.yaml is called directly, and the uv-cache job becomes a top level job named for its runner like its aoc-main siblings. The conditionals that skipped both of those for aoc-main go with it.

mypy, pyright and pytest each had a job of their own, per project, so
the same checkout and cache restore was paid six times to run about 12s
of checks. Move each project's three checks into one job of parallel
steps, as was done for the root checks.

The two projects keep a job each rather than sharing one. They are
checked independently: aoc-main's checks do not need solvers/python, and
solvers/python's checks do not need aoc-main. Sharing a job would also
mean sharing a uv cache entry, so aoc-main would miss cache whenever
solvers/python's lockfile changed, and a broken sync in one project
would block the other's type checks.

With the checks consolidated, ci-python-project holds nothing but a
parameter that no longer varies anything, so it is removed along with
the mise-uv-task wrapper it was the last caller of. Its remaining jobs
move up to ci.yaml: python-run.yaml is called directly, and the uv-cache
job becomes a top level job named for its runner like its aoc-main
siblings. The conditionals that skipped both of those for aoc-main go
with it.
Copilot AI lite review requested due to automatic review settings August 30, 2026 11:30

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The workflow refactor cleanly removes the unused reusable workflow and updates all references while preserving the intended cache separation and job dependencies.

Pull request overview

This PR refactors the GitHub Actions CI configuration to reduce duplicated setup work by consolidating each Python project’s checks (mypy, pyright, pytest) into a single job that runs them as parallel steps, while keeping aoc-main and solvers/python isolated for caching and failure containment.

Changes:

  • Replaces the per-project ci-python-project reusable workflow with direct calls to checks-python.yaml plus a dedicated python-run.yaml job for the Python solvers.
  • Adds a dedicated uv cache prepare job for solvers/python on Ubuntu to avoid cache key coupling with aoc-main.
  • Updates the top-level “alls-green” aggregator to depend on the new job structure.
File summaries
File Description
.github/workflows/ci.yaml Rewires CI job graph to use per-project check workflows + separate solver run, and adds a dedicated uv cache job for solvers/python.
.github/workflows/ci-python-project.yaml Removes the now-unnecessary reusable workflow that previously wrapped cache + per-check jobs.
.github/workflows/checks-python.yaml Changes from “single task runner” to a consolidated per-project checks workflow running mypy/pyright/pytest as parallel steps.
Review details
  • Files reviewed: 3/3 changed files
  • Comments generated: 0
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@nikobockerman
nikobockerman merged commit 6fe28f8 into main Aug 30, 2026
39 checks passed
@nikobockerman
nikobockerman deleted the checks-python-parallel-steps branch August 30, 2026 17:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants