Skip to content

MAINT: build Python 3.14 wheels; fix to_anndata for anndata 0.13 - #1005

Merged
wasade merged 2 commits into
masterfrom
build/cp314-wheels
Oct 3, 2026
Merged

wasade merged 2 commits into
masterfrom
build/cp314-wheels

Conversation

@wasade

@wasade wasade commented Oct 3, 2026 •

Copy link
Copy Markdown
Member

Prep for 2.1.18. This PR has two commits.

1. Build cp314 wheels

#1004 upgraded cibuildwheel to v3.4.1, but [tool.cibuildwheel] build in pyproject.toml still listed cp39–cp313. As a result, no cp314 wheels were built. 2.1.17 on PyPI has none, and a release cut from current master wouldn't have any either.

This commit adds cp314-* to the build selector. cibuildwheel==3.4.1 --print-build-identifiers now lists cp314 on all five targets: manylinux x86_64/aarch64, macOS x86_64/arm64, and win_amd64. Free-threaded cp314t builds stay excluded.

2. Fix Table.to_anndata for anndata >= 0.13

anndata 0.13.0 (July 2026) removed the dtype argument to AnnData(). With it, to_anndata() raises TypeError. Master last passed CI on June 1, before that release. CI for this PR was the first run to pick up anndata 0.13.4, and it failed test_to_anndata_{dense,sparse,metadata}.

This commit casts the matrix before constructing the AnnData object. Verified:

  • anndata 0.13.4: full suite passes (381 passed, 4 skipped).
  • anndata 0.12.19: the anndata tests pass, and the dtype= FutureWarning that older anndata emitted is gone.
  • The source table's matrix is not mutated.

Note: the to_anndata docstring example's repr gains a layers: None (.X) line under anndata 0.13. CI doesn't run doctests, so it isn't changed here.

Why a 2.1.18 release rather than adding wheels to 2.1.17

2.1.17 calls np.in1d, which NumPy 2.4 removed (#1003). Built from the 2.1.17 tag on Python 3.14 with NumPy 2.5.3, the test suite fails 5 tests in the HDF5 ID-subsetting paths (from_hdf5(ids=...), biom subset-table). cibuildwheel's test step would reject those wheels. Master already has the fix from #1000.

Release notes

  • The wheel build produced 30 wheels: cp39–cp314 on each of the 5 targets. cibuildwheel 3.x builds on the manylinux_2_28 image, but auditwheel still tags the Linux wheels manylinux_2_5 (x86_64) and manylinux2014 (aarch64), so they remain installable on older glibc.
  • Once 2.1.18 is published, it resolves Numpy 2.4: in1d replaced by isin #1003.

🤖 Generated with Claude Code

#1004 upgraded cibuildwheel to a version that supports 3.14, but the
build selector in pyproject.toml still listed cp39-cp313, so no cp314
wheels were produced. Add cp314-* to the selector.

Also note the in1d -> isin fix (#1003) in the ChangeLog.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
anndata 0.13.0 removed the dtype argument to AnnData(), so
Table.to_anndata() raised TypeError. Cast the matrix before
constructing the AnnData object instead. This also removes the
FutureWarning older anndata versions emitted for dtype=.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@wasade wasade changed the title MAINT: build Python 3.14 wheels MAINT: build Python 3.14 wheels; fix to_anndata for anndata 0.13 Oct 3, 2026
@wasade
wasade merged commit a056bd8 into master Oct 3, 2026
70 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.

Numpy 2.4: in1d replaced by isin

1 participant