Skip to content

Build binary wheels for PyPI releases - #67

Merged
virgesmith merged 3 commits into
mainfrom
ci/build-wheels
Aug 29, 2026
Merged

Build binary wheels for PyPI releases#67
virgesmith merged 3 commits into
mainfrom
ci/build-wheels

Conversation

@virgesmith

@virgesmith virgesmith commented Aug 28, 2026

Copy link
Copy Markdown
Owner

The release workflow only ever built an sdist, so every pip install humanleague from PyPI had to compile the nanobind extension from source — which needs a toolchain, CMake and nanobind on the user's machine.

Changes

  • wheels jobcibuildwheel across ubuntu-latest, windows-latest and macos-latest, uploading one artifact per platform.
  • sdist jobuv build --sdist, unchanged in substance, just split out so it runs in parallel.
  • deploy job — now needs: [wheels, sdist] and downloads their artifacts instead of building anything itself, then publishes the lot.
  • workflow_dispatch trigger so the wheel build can be exercised without cutting a release. deploy is guarded with if: startsWith(github.ref, 'refs/tags/v'), so a manual run builds and uploads artifacts but does not publish.
  • Removed the zip examples steps. They packaged an examples/ directory that does not exist in the repo and never has (git log -- examples is empty, and it isn't gitignored), so zip -r examples.zip examples/ would exit non-zero. Because they sat in deploy after uv publish, a tagged release would have published to PyPI and then gone red.

Open item

There is no [tool.cibuildwheel] section in pyproject.toml. The comment above the setup-uv step explains that build-frontend = "build[uv]" needs uv on the runner, but no such setting exists in the repo — cibuildwheel will use its default pip-based frontend, making that step redundant. Either add the config the comment assumes, or drop the comment and the step.

Worth doing a workflow_dispatch run on this branch before merging — that exercises wheels and sdist end to end while the tag guard keeps deploy from firing.

🤖 Generated with Claude Code

@codecov

codecov Bot commented Aug 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.68%. Comparing base (01786ba) to head (c4b81ff).

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #67   +/-   ##
=======================================
  Coverage   94.68%   94.68%           
=======================================
  Files          26       26           
  Lines        1035     1035           
=======================================
  Hits          980      980           
  Misses         55       55           

☔ 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.

virgesmith added a commit that referenced this pull request Aug 28, 2026
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
virgesmith and others added 3 commits August 28, 2026 19:49
The release workflow only built an sdist, so every install from PyPI compiled
the extension from source. Add cibuildwheel jobs for linux-x86_64,
windows-amd64 and macos-arm64 plus a separate sdist job, and have deploy
collect their artifacts rather than building anything itself.

Adds a workflow_dispatch trigger so the wheel build can be exercised on demand;
deploy is guarded on refs/tags/v* so a manual run builds without publishing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
They packaged an examples/ directory that does not exist in the repo, so the
step would fail - after uv publish had already run, leaving a tagged release
published but the workflow red.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@virgesmith
virgesmith merged commit 0787e92 into main Aug 29, 2026
18 checks passed
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.

1 participant