Support Python 3.14, release 0.2.8, and simplify CI - #6
Conversation
There was a problem hiding this comment.
Pull request overview
This PR updates the project’s packaging/CI configuration to produce wheels for Python 3.14 and prepares the next release by bumping the project version.
Changes:
- Update scikit-build-core configuration key from
cmake.verbosetobuild.verbose. - Extend CI wheel builds to include CPython 3.14 (
cp314-*) and updatepypa/cibuildwheelfor the 3.13/3.14 wheel job. - Bump project version from
0.2.7to0.2.8.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
pyproject.toml |
Fixes scikit-build-core config key usage and bumps package version to 0.2.8. |
.github/workflows/build_wheels.yml |
Adds cp314-* wheels and updates cibuildwheel for the 3.13/3.14 build job. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
2111870 to
964f31f
Compare
|
Ready for your review @egull The python 3.14 build / test is currently failing and that's because it is an integration test with Green-Phys/green-mbtools. We are essentially in a loop of errors: MBTOOLS has IGEN as a dependency, so a fully tested Python 3.14 PyPI release for MBTOOLS requires a 3.14 release for IGEN and vice versa. The choice I make here is to ignore the failing 3.14 pipeline here. Next steps:
Alternative Solution I'm leaning toward: |
egull
left a comment
There was a problem hiding this comment.
Either strategy works. Don't overthink it
- Fix scikit-build option cmake.verbose -> build.verbose - Bump version 0.2.7 -> 0.2.8 for the next release - Build cp314 wheels: the cp313/cp314 job uses cibuildwheel v3.4.1, which ships CPython 3.14 as a stable default target (the cp38-cp312 job is unchanged, cibuildwheel v2.19.0) - Use manylinux_2_28 for the cp38-cp312 job (from pyproject.toml) instead of manylinux2014, whose HDF5 1.8.12 is rejected by current h5py - Drop the retired macos-13 (Intel) runner from the wheel matrix - Publish to PyPI only on a published GitHub Release (safer than uploading on any tag push); on: triggers and the upload_pypi if are consistent Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
green-igen was cloning green-mbtools and running its full suite as a downstream gate. That points the wrong way (a low-level dependency carrying its consumer's world), created a bootstrap cycle on new Python versions, and was non-reproducible. green-mbtools already covers this from the consumer side. Remove it; leave python-package.yml as a simple build/install smoke test across 3.9/3.12/3.14 (actions/setup-python v5), scaffolded for a future green-igen Python unit-test suite. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Summary
Add CPython 3.14 support, cut release
0.2.8, and simplify CI.Release / wheels (
build_wheels.yml,pyproject.toml)cmake.verbose→build.verbose.0.2.7→0.2.8.build_wheels_13) now usespypa/cibuildwheel@v3.4.1, which ships CPython 3.14 as a stable default target. The cp38–cp312 job (build_wheels) is unchanged (cibuildwheel@v2.19.0).manylinux2014image override on the cp38–cp312 job so it usesmanylinux_2_28frompyproject.toml, matching the cp313/cp314 job. (manylinux2014's HDF5 1.8.12 is rejected by current h5py; the Linux baseline is glibc 2.28.)release: [published], andupload_pypifires ongithub.event_name == 'release'—on:and theifare consistent (Copilot flagged the previous mismatch). Uploading on a deliberate Release is safer than on anyv*tag push.Testing (
python-package.yml)master). green-mbtools covers this from the consumer side.python-package.ymlas a simple build/install smoke test across 3.9 / 3.12 / 3.14 (actions/setup-python@v5), scaffolded for a future green-igen Python unit-test suite. green-igen's functional coverage today is the C++ctestintest.yaml.Notes
build_wheels.yml); theupload_pypijob publishes them to PyPI when a GitHub Release is published — independent of the smoke-test workflow. Wheels still build on every push/PR for CI (no upload).v0.2.8(e.g.gh release create v0.2.8), which triggers the build + upload.🤖 Generated with Claude Code