Skip to content

ci: skip musllinux and drop in-build wheel tests in release workflow - #314

Merged
jonasteuwen merged 11 commits into
mainfrom
fix/release
Aug 7, 2026
Merged

ci: skip musllinux and drop in-build wheel tests in release workflow#314
jonasteuwen merged 11 commits into
mainfrom
fix/release

Conversation

@jonasteuwen

Copy link
Copy Markdown
Contributor

PyTorch ships no musllinux wheels, so a musllinux direct wheel is not installable; skip it. Also drop cibuildwheel's in-build test, which would pip install the wheel with its full runtime stack (torch + CUDA wheels) just to run numpy-only native smoke tests. The dedicated smoke-wheels job already exercises the abi3 wheels with --no-deps on 3.12 and 3.13.

PyTorch ships no musllinux wheels, so a musllinux `direct` wheel is not
installable; skip it. Also drop cibuildwheel's in-build test, which would
`pip install` the wheel with its full runtime stack (torch + CUDA wheels)
just to run numpy-only native smoke tests. The dedicated smoke-wheels job
already exercises the abi3 wheels with --no-deps on 3.12 and 3.13.

Co-authored-by: Cursor <cursoragent@cursor.com>
@codecov

codecov Bot commented Aug 6, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 84.74%. Comparing base (cfa5fa8) to head (be47839).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #314   +/-   ##
=======================================
  Coverage   84.74%   84.74%           
=======================================
  Files         110      110           
  Lines       10152    10152           
=======================================
  Hits         8603     8603           
  Misses       1549     1549           

☔ View full report in Codecov by Harness.
📢 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.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

The nanobind WrapDB subproject links the version-specific python3XY import
library, so the Windows "abi3" wheel built on 3.12 imports python312.dll and
fails to load on 3.13+ (DLL load failed). Build per-version wheels on Windows
with -Dpython.allow_limited_api=false; keep a single abi3 wheel on Linux/macOS.
PyPI's description renderer disables the reStructuredText `raw` directive, so
`twine check` (verify-metadata) rejected every artifact during publishing.
Replace the raw HTML logo, badge bar, nav links, and figure with native RST
(image/figure directives and badge substitutions) so the long_description
renders on PyPI while still looking right on GitHub.

Co-authored-by: Cursor <cursoragent@cursor.com>
jonasteuwen and others added 3 commits August 7, 2026 09:41
The `direct` name on PyPI is taken, so publish under `direct-recon`. Only the
distribution name changes; the import package stays `direct` (install_subdir),
so `pip install direct-recon` then `import direct`. Update uv's
no-build-isolation-package to the new distribution name, the wheel smoke-install
name, the metadata-version test lookup, the PyPI install docs, and uv.lock.

Co-authored-by: Cursor <cursoragent@cursor.com>
Surface `pip install direct-recon` as a first-class installation path (right
after the recommended uv flow) instead of burying it inside the conda steps,
clarifying that the import package is still `direct` and covering the editable
install variant.

Co-authored-by: Cursor <cursoragent@cursor.com>
Add `pip install direct-recon` as the primary install (uv shown for
development) and a PyPI version badge, noting the import package stays `direct`.

Co-authored-by: Cursor <cursoragent@cursor.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR updates the release CI to avoid producing/installing unusable musllinux wheels and to move wheel validation out of cibuildwheel’s in-build test step into the dedicated smoke test job. It also renames the PyPI distribution to direct-recon (while keeping the import package name direct) and updates docs/tests accordingly.

Changes:

  • Adjust release workflow wheel build matrix (abi3 on Linux/macOS; per-Python-version on Windows), skip musllinux, and drop cibuildwheel in-build wheel tests in favor of the existing smoke-wheels job.
  • Rename the project’s distribution name to direct-recon and update metadata/version test and install docs to match.
  • Regenerate uv.lock (including adding sys_platform != 'ios' markers to some CUDA-related deps).

Reviewed changes

Copilot reviewed 5 out of 6 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
uv.lock Updates locked dependencies and markers; reflects the renamed editable project entry.
tests/version_test.py Updates the installed-metadata version check to use direct-recon.
README.rst Switches to pure RST header/badges and documents pip install direct-recon.
pyproject.toml Renames the distribution to direct-recon and updates uv no-build-isolation package name.
installation.rst Adds/updates PyPI install instructions for direct-recon.
.github/workflows/release.yml Skips musllinux, removes in-build wheel tests, adds Windows per-version wheel build, and relies on smoke-wheels for validation.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread pyproject.toml
Comment on lines 5 to 9
[project]
name = "direct"
# Distribution name on PyPI. The import package is still `direct` (see
# meson.build / install_subdir), so `pip install direct-recon` then `import direct`.
name = "direct-recon"
description = "DIRECT - Deep Image REConsTruction - is a deep learning framework for MRI reconstruction."

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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Could you clarify what change you want in this thread—update the PR title/description, or revert/split the packaging rename changes?

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.

apply suggestion

Comment thread .github/workflows/release.yml
Comment thread installation.rst Outdated
Comment on lines +66 to +68
``DIRECT`` is published to PyPI as ``direct-recon`` (the import package is still
``direct``). On the supported platforms this fetches a prebuilt ``abi3`` wheel,
so nothing is compiled:

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.

@copilot apply the suggestion

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Updated in e7f8932. The installation docs now state that PyPI installs prebuilt wheels, with abi3 on Linux/macOS and Python-version-specific wheels on Windows.

Comment thread .github/workflows/release.yml
Bump the version across pyproject.toml, meson.build, direct/__init__.py, and
uv.lock (kept in sync by tests/version_test.py).

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: georgeyiasemis <71031687+georgeyiasemis@users.noreply.github.com>
Copilot AI and others added 2 commits August 7, 2026 11:11
Co-authored-by: georgeyiasemis <71031687+georgeyiasemis@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: George Yiasemis <georgeyiasemis@hotmail.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 7 out of 8 changed files in this pull request and generated no new comments.

Suppressed comments (3)

.github/workflows/release.yml:104

  • The musllinux-skip rationale references a direct-recon wheel, but this repository/package is direct (and the rest of the workflow uses direct). This looks like a leftover name and makes the comment misleading.
          # Skip musllinux: PyTorch (a hard runtime dependency) publishes no
          # musllinux wheels, so a musllinux `direct-recon` wheel is not installable.
          CIBW_SKIP: "*-musllinux*"

pyproject.toml:80

  • The comment on no-build-isolation-package says it matches the distribution name "not the import package", but in this project they’re the same (direct). As written, it reads contradictory and can confuse future maintainers about what value is expected here.
# Build `direct` against the already-synced `build` group instead of an
# isolated build environment. Without this, meson-python's editable install
# records the absolute path of the isolated build env's `ninja`, which uv later
# deletes, breaking `import direct` on the next run. Matches the distribution
# name in `[project] name`, not the import package.

installation.rst:68

  • This section states that installing from PyPI fetches a prebuilt abi3 wheel. The release workflow builds per-version wheels on Windows, so the statement is inaccurate there. Rephrase to avoid implying Windows wheels are abi3.
``DIRECT`` is published to PyPI as ``direct``. On the supported platforms this
fetches a prebuilt ``abi3`` wheel, so nothing is compiled:

Co-authored-by: georgeyiasemis <71031687+georgeyiasemis@users.noreply.github.com>
@jonasteuwen
jonasteuwen merged commit d111258 into main Aug 7, 2026
5 checks passed
@jonasteuwen
jonasteuwen deleted the fix/release branch August 7, 2026 13:05
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.

4 participants