Skip to content

chore: Use pyvista/setup-headless-display-action for setup display#1367

Merged
Czaki merged 1 commit intodevelopfrom
modernize_workflows
Mar 19, 2026
Merged

chore: Use pyvista/setup-headless-display-action for setup display#1367
Czaki merged 1 commit intodevelopfrom
modernize_workflows

Conversation

@Czaki
Copy link
Collaborator

@Czaki Czaki commented Mar 19, 2026

use astral-sh/setup-uv to setup uv instead of manual setup uv

Summary by Sourcery

Update CI workflows to use a unified headless display setup and streamline Python/uv environment management for testing and releases.

CI:

  • Replace platform-specific OpenGL and Qt setup with pyvista/setup-headless-display-action configured for Qt and herbstluftwm across test and release workflows.
  • Simplify test and bundle execution steps by running commands directly in the job steps instead of via aganders3/headless-gui.
  • Switch prerelease testing workflow to install and activate uv using astral-sh/setup-uv with Python 3.12 instead of manually creating and activating a virtual environment.

Summary by CodeRabbit

  • Chores
    • Updated continuous integration workflows to streamline display and environment setup processes across multiple testing and build pipelines.

Note: This release contains infrastructure and tooling improvements with no user-facing functionality changes.

use `astral-sh/setup-uv` to setup uv instead of manual setup uv
@Czaki Czaki added this to the 0.16.5 milestone Mar 19, 2026
@sourcery-ai
Copy link
Contributor

sourcery-ai bot commented Mar 19, 2026

Reviewer's Guide

This PR updates several GitHub Actions workflows to standardize headless display setup using pyvista/setup-headless-display-action and simplifies test execution by running commands directly instead of via aganders3/headless-gui, while also switching to astral-sh/setup-uv for UV and Python environment setup in the prerelease tests workflow.

File-Level Changes

Change Details Files
Standardize headless display setup across workflows using pyvista/setup-headless-display-action with Qt and a window manager.
  • Replace Windows-specific OpenGL installation and tlambert03/setup-qt-libs with pyvista/setup-headless-display-action configured with qt: true and wm: herbstluftwm in relevant jobs
  • Use the same headless display action and configuration in test_prereleases, make_release, and test_napari_repo workflows to unify CI configuration
.github/workflows/test_prereleases.yml
.github/workflows/make_release.yml
.github/workflows/test_napari_repo.yml
Simplify test execution by removing aganders3/headless-gui and running test commands directly in workflow steps.
  • In test_prereleases and make_release workflows, remove uses: aganders3/headless-gui and instead specify the test commands directly via run with the same timeouts and environment variables
  • Apply the same direct run approach for tox-based tests and bundle tests across affected jobs
.github/workflows/test_prereleases.yml
.github/workflows/make_release.yml
.github/workflows/test_napari_repo.yml
Use astral-sh/setup-uv to manage uv and Python setup for prerelease PyInstaller build tests.
  • Replace actions/setup-python plus manual pip install uv and uv venv steps with astral-sh/setup-uv configured to activate the environment and use Python 3.12
  • Remove explicit virtual environment activation and rely on the environment provided by setup-uv for subsequent uv pip commands and PyInstaller invocation
.github/workflows/test_prereleases.yml

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 19, 2026

📝 Walkthrough

Walkthrough

Three GitHub Actions workflows are updated to replace Windows-specific OpenGL setup and aganders3/headless-gui action wrappers with pyvista/setup-headless-display-action. Commands are executed directly instead of through action wrappers. Python toolchain setup in one workflow is modernized using astral-sh/setup-uv.

Changes

Cohort / File(s) Summary
Headless Display & Test Execution Updates
.github/workflows/make_release.yml, .github/workflows/test_napari_repo.yml, .github/workflows/test_prereleases.yml
Replaced Windows-specific OpenGL installation steps and Qt setup with unified pyvista/setup-headless-display-action (with qt: true and wm: herbstluftwm). Removed aganders3/headless-gui@v2 action wrapper and updated test commands to execute directly.
Python Toolchain Setup
.github/workflows/test_prereleases.yml
Replaced actions/setup-python@v6 with manual uv installation and venv activation with astral-sh/setup-uv@v7 configured for Python 3.12, removing explicit activation commands.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested labels

skip check PR title

Poem

🐰 The workflows hop anew,
Old actions fade from view,
With pyvista's headless grace,
And uv in its rightful place,
CI pipelines run true! ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: replacing manual display setup steps across multiple workflows with the pyvista/setup-headless-display-action, which is the primary focus of the 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
  • Commit unit tests in branch modernize_workflows
📝 Coding Plan
  • Generate coding plan for human review comments

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.

Tip

You can get early access to new features in CodeRabbit.

Enable the early_access setting to enable early access features such as new models, tools, and more.

@sonarqubecloud
Copy link

Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

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

Hey - I've reviewed your changes and they look great!


Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@Czaki Czaki added the skip check PR title skip spellcheking PR title label Mar 19, 2026
@codecov
Copy link

codecov bot commented Mar 19, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.12%. Comparing base (37eac5c) to head (b13daa5).
⚠️ Report is 1 commits behind head on develop.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #1367      +/-   ##
===========================================
- Coverage    93.13%   93.12%   -0.02%     
===========================================
  Files          211      211              
  Lines        33272    33272              
===========================================
- Hits         30988    30983       -5     
- Misses        2284     2289       +5     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

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: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/make_release.yml:
- Around line 38-43: The "Setup headless display" step using
pyvista/setup-headless-display-action (qt: true, wm: herbstluftwm) runs on
non-Linux matrix OSes and will fail; restrict that step to Linux by adding a
conditional (for example using if: runner.os == 'Linux' or if: matrix.os ==
'ubuntu-latest') to the step so the pyvista/setup-headless-display-action runs
only on Linux runners.

In @.github/workflows/test_prereleases.yml:
- Around line 65-69: The "Setup headless display" step using
pyvista/setup-headless-display-action with wm: herbstluftwm is Linux-specific
and must be skipped on non-Linux runners; update that step (the step named
"Setup headless display" that uses pyvista/setup-headless-display-action and
sets wm: herbstluftwm) to include a conditional guard (e.g., an if: that checks
runner.os == 'Linux' or matrix.os matches a Linux label) so the step only runs
on Linux matrix legs.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 8c9d5042-446f-410b-bf92-a56a7f8a8430

📥 Commits

Reviewing files that changed from the base of the PR and between 37eac5c and b13daa5.

📒 Files selected for processing (3)
  • .github/workflows/make_release.yml
  • .github/workflows/test_napari_repo.yml
  • .github/workflows/test_prereleases.yml

@Czaki Czaki merged commit 979f440 into develop Mar 19, 2026
74 of 78 checks passed
@Czaki Czaki deleted the modernize_workflows branch March 19, 2026 10:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip check PR title skip spellcheking PR title

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant