Skip to content

fix: cap requires-python below 3.13 so uv stops selecting an interpreter with no wheels - #142

Merged
Osayi-ANL merged 1 commit into
mainfrom
fix/python-version-cap
Aug 28, 2026
Merged

fix: cap requires-python below 3.13 so uv stops selecting an interpreter with no wheels#142
Osayi-ANL merged 1 commit into
mainfrom
fix/python-version-cap

Conversation

@Osayi-ANL

Copy link
Copy Markdown
Collaborator

Problem

A fresh install on macOS fails for every edition — bitshuffle is a base dependency, not part of any extra.

pyproject.toml had requires-python = ">=3.11" with no upper bound, so uv selected Python 3.14. No prebuilt bitshuffle exists for it, so the install fell back to a source build:

building 'bitshuffle.ext' extension
clang ... -std=c99 -O3 -ffast-math -fPIC -march=native
clang: error: unsupported argument 'native' to option '-march='

bitshuffle's setup.py emits -march=native when platform.machine() is x86_64, which clang rejects for the universal2 -arch arm64 -arch x86_64 build.

Why <3.13 and not <3.14

bitshuffle 0.5.2 is the latest release (2024-09-26). Its wheel coverage:

Linux macOS Windows
cp311 yes NO NO
cp312 yes yes NO
cp313 NO NO NO
cp314 NO NO NO

3.13 has no wheel on any platform, so capping at <3.14 would still permit an interpreter that forces a source build. xrayutilities 1.7.10 (pinned) similarly has no cp314 wheel.

Change

  • requires-python>=3.11,<3.13
  • version → 1.0.6
  • uv.lock regenerated; package set unchanged, only resolution branches for the excluded versions removed

Verification

$ uv lock --check
Resolved 299 packages in 2ms

$ uv sync --python 3.13 --dry-run
error: The requested interpreter resolved to Python 3.13.13, which is
incompatible with the project's Python requirement: `>=3.11, <3.13`

$ uv sync --python 3.12 --dry-run
 + bitshuffle==0.5.2
 + xrayutilities==1.7.10

Clean install from a fresh clone on Linux (uv sync --extra full): Python 3.12.13 selected, no source builds, all imports load including pvaccess and epics, 454 passed in 157s.

Notes

  • The upper bound previously existed as <3.12 and was removed in Restructure to src/dashpva/ package layout with tests and install improvements #67 during the src/ layout restructure.
  • CI (add: github actions ci #141) does not cover this: ubuntu-24.04 only, matrix of 3.11/3.12 only, and uv sync --locked installs from the lockfile rather than re-selecting an interpreter.
  • macOS cannot be added to the CI matrix today — bitshuffle has never published an arm64 macOS wheel, so macos-14/macos-15 runners fail at install on every Python. Replacing it with hdf5plugin (already a dependency, same bitshuffle+LZ4 codec, wheels everywhere) would unblock that; only compress_lz4/decompress_lz4 in four files use it. Out of scope here.

… or cp314 wheel on any platform and no macOS wheel outside cp39/cp310/cp312, so uv selected 3.14 on macOS and fell through to a source build that dies on clang rejecting -march=native

change: bump version to 1.0.6
@Osayi-ANL
Osayi-ANL requested a review from pecomyint August 28, 2026 16:46
@Osayi-ANL
Osayi-ANL merged commit 393fd8a into main Aug 28, 2026
3 checks passed
@Osayi-ANL
Osayi-ANL deleted the fix/python-version-cap branch August 28, 2026 17:30
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.

2 participants