Skip to content

⬆️ Update runners and prek checks#833

Merged
denialhaag merged 7 commits intomainfrom
update-dependencies
Jan 30, 2026
Merged

⬆️ Update runners and prek checks#833
denialhaag merged 7 commits intomainfrom
update-dependencies

Conversation

@denialhaag
Copy link
Member

@denialhaag denialhaag commented Jan 30, 2026

Description

This PR updates the CI to use macos-15 instead of macos-14 and windows-2025 instead of windows-2022. It furthermore updates .pre-commit-config.yml to make use of prek's priority feature.

Checklist:

  • The pull request only contains commits that are focused and relevant to this change.
  • I have added appropriate tests that cover the new/changed functionality.
  • I have updated the documentation to reflect these changes.
  • I have added entries to the changelog for any noteworthy additions, changes, fixes, or removals.
  • I have added migration instructions to the upgrade guide (if needed).
  • The changes follow the project's style guidelines and introduce no new warnings.
  • The changes are fully tested and pass the CI checks.
  • I have reviewed my own code changes.

@denialhaag denialhaag self-assigned this Jan 30, 2026
@denialhaag denialhaag added dependencies Pull requests that update a dependency file continuous integration Anything related to the CI setup pre-commit Pull requests that update pre-commit checks labels Jan 30, 2026
@github-project-automation github-project-automation bot moved this to In Progress in MQT Verification Jan 30, 2026
@codecov
Copy link

codecov bot commented Jan 30, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@denialhaag denialhaag requested a review from burgholzer January 30, 2026 15:18
Copy link
Member

@burgholzer burgholzer left a comment

Choose a reason for hiding this comment

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

LGTM besides two small details.

Co-authored-by: Lukas Burgholzer <burgholzer@me.com>
Signed-off-by: Daniel Haag <121057143+denialhaag@users.noreply.github.com>
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 30, 2026

📝 Walkthrough

Summary by CodeRabbit

  • Chores
    • Updated CI workflows to use macOS 15 (including Intel) and Windows 2025 runners; removed older images
    • Switched several job runners from ubuntu-latest to ubuntu-slim
    • Rewrote and reorganized pre-commit hooks into prioritized execution phases
    • Tightened nanobind version constraint and expanded static-analysis ignore rules

✏️ Tip: You can customize this high-level summary in your review settings.

Walkthrough

This PR updates CI runner matrices (adding macos-15/macos-15-intel and windows-2025, removing macos-14/windows-2022), swaps several lightweight jobs from ubuntu-latest to ubuntu-slim, restructures .pre-commit-config.yaml into prioritized phases with new hooks, and tightens the nanobind version in pyproject.toml.

Changes

Cohort / File(s) Summary
CI/CD Workflow Runner Updates
.github/workflows/cd.yml, .github/workflows/ci.yml, .github/workflows/upstream.yml
Replace macos-14 → macos-15 (and add macos-15-intel) and windows-2022 → windows-2025 across job matrices and include entries; adjust per-job runs-on values.
Lightweight Job Runner Changes
.github/workflows/release-drafter.yml, .github/workflows/templating.yml
Switch runner image from ubuntu-latest to ubuntu-slim for the update_release_draft and render-template jobs.
Pre-commit Configuration Restructuring
.pre-commit-config.yaml
Large rewrite introducing priority-based phases (Priority 0–2+), new grouped hooks (validate-pyproject, check-jsonschema, uv-lock, bibtex-tidy, clang-format, cmake-format, prettier, ruff-format/check, etc.), adjusted hook attributes, and removal/deprecation of many legacy hooks.
Dependency & Config Update
pyproject.toml
Tighten nanobind requirement from >=2.10.2 to ~=2.10.2; add PC170 to ignore list (rST-related).

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~40 minutes

Possibly related PRs

Suggested reviewers

  • burgholzer

Poem

🐰 Hops and clicks through CI so bright,

macOS fifteen and Windows new in sight.
Slim ubuntu speeds the flow,
Hooks in order, linters glow,
Nanobind tightened — code takes flight! 🥕

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title partially describes the changeset; it mentions updating runners and prek checks, but uses emoji and an abbreviation ('prek') that may not be immediately clear to all reviewers scanning PR history.
Description check ✅ Passed The description covers the main changes (CI runner updates and pre-commit configuration updates) but most non-critical checklist items are marked as not applicable rather than completed, which aligns with the nature of infrastructure/configuration changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch update-dependencies

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
pyproject.toml (1)

10-15: ⚠️ Potential issue | 🟡 Minor

Add comment documenting the nanobind constraint rationale.

The constraint nanobind~=2.10.2 is appropriate: nanobind 2.11.0 (released Jan 29, 2026) includes an ABI bump to version 18 and requires rebuilds of dependent extension modules. Since qcec depends on mqt.core (which also uses nanobind), mismatched ABI versions would break cross-module type sharing. However, add a comment explaining this incompatibility (e.g., # ABI incompatible with nanobind 2.11.0+) so future maintainers understand the rationale before considering upgrades.

Apply the same documentation to the [dependency-groups] build section (lines 365–368).

.pre-commit-config.yaml (1)

3-153: ⚠️ Potential issue | 🟡 Minor

Confirm that priority field validation works in your CI environment.

The priority field is a prek-only feature and is not supported by upstream pre-commit (versions through 2025). Your .pre-commit-config.yaml uses priority throughout and is explicitly designed for prek (as shown in the comments and documented in docs/installation.md). However, your config also includes a ci: section configured for pre-commit.ci, which uses standard pre-commit and does not recognize the priority field.

While your documentation correctly recommends prek for local development, you should verify that:

  1. Your CI workflows use prek (not standard pre-commit)
  2. OR pre-commit.ci is properly configured to skip hooks or ignore unknown fields without failing validation
🤖 Fix all issues with AI agents
In @.github/workflows/cd.yml:
- Around line 40-42: The workflow uses runs-on: ubuntu-slim for the "🚀 Deploy
to PyPI" job which may lack build tooling; either switch the job's runs-on value
to ubuntu-latest or ensure you install required tools by adding a setup step
(e.g., actions/setup-python and explicit pip/build/toolchain installs) before
the build/publish steps—update the .github/workflows/cd.yml job named "🚀 Deploy
to PyPI" to use the safer runner or include those installation steps so PyPI
deployment succeeds.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

continuous integration Anything related to the CI setup dependencies Pull requests that update a dependency file pre-commit Pull requests that update pre-commit checks

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants