Skip to content

Build the release on Python 3.14 - #103

Open
mmacferrin wants to merge 1 commit into
mainfrom
ci-unpin-publish-python
Open

Build the release on Python 3.14#103
mmacferrin wants to merge 1 commit into
mainfrom
ci-unpin-publish-python

Conversation

@mmacferrin

@mmacferrin mmacferrin commented Sep 3, 2026

Copy link
Copy Markdown
Collaborator

The 3.13 pin in publish-to-pypi.yml was there because fiona, pulled in via globato, had no cp314 wheels, and building it from source needed the GDAL headers this workflow no longer installs.

That rationale is stale. globato has dropped fiona in favor of pyogrio, and geopandas has defaulted to pyogrio since 1.0, so fiona is no longer anywhere in the dependency tree. A wheels-only resolve of the full runtime and test dependency set against cp314/manylinux comes back clean — every compiled dependency (numpy, scipy, pandas, shapely, pyproj, rasterio, pyogrio, h5py, netCDF4, numexpr, tables, matplotlib, lxml) ships a cp314 wheel, and globato, transformez, fetchez and geopandas are pure Python. Nothing has to build from source.

What this does and does not change

IVERT is pure Python (hatchling, no C or Cython sources), so the built wheel is py3-none-any regardless of the interpreter here — this does not change the artifact. What it does change is the interpreter the Test built package step runs on, moving that smoke test to the newest release the test matrix covers.

Validation

This workflow triggers on pull_request, and pypi-publish is gated behind if: github.event_name == 'release'. So this PR runs the build job end to end — wheel build, full dependency install, import ivert, ivert --version — on 3.14, while publishing nothing.

Related

#102 adds 3.14 to the pytest matrix for the same reason. The two do not overlap: #102 does not touch this file, so they will not conflict. Until both land, main will briefly have a test matrix covering 3.14 and a release build on 3.13, which is harmless.


🔍 Docs preview: https://ivert--103.org.readthedocs.build/en/103/

The 3.13 pin was there because fiona, pulled in via globato, had no cp314
wheels and building it from source needed GDAL headers this workflow does
not install. globato has since dropped fiona for pyogrio, and geopandas has
defaulted to pyogrio since 1.0, so fiona is no longer in the tree at all.

IVERT is pure Python, so this does not change the built wheel, which is
py3-none-any either way. It moves the "Test built package" smoke test onto
the newest interpreter the test matrix covers.
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