ci: skip musllinux and drop in-build wheel tests in release workflow - #314
Conversation
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 Report✅ All modified and coverable lines are covered by tests. 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. 🚀 New features to boost your workflow:
|
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>
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>
There was a problem hiding this comment.
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-reconand update metadata/version test and install docs to match. - Regenerate
uv.lock(including addingsys_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.
| [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." |
There was a problem hiding this comment.
Could you clarify what change you want in this thread—update the PR title/description, or revert/split the packaging rename changes?
| ``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: |
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>
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>
There was a problem hiding this comment.
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-reconwheel, but this repository/package isdirect(and the rest of the workflow usesdirect). 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-packagesays 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
abi3wheel. The release workflow builds per-version wheels on Windows, so the statement is inaccurate there. Rephrase to avoid implying Windows wheels areabi3.
``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>
PyTorch ships no musllinux wheels, so a musllinux
directwheel is not installable; skip it. Also drop cibuildwheel's in-build test, which wouldpip installthe 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.