Skip to content

feat: support numpy >= 1.26 (lower the floor from >= 2.0)#41

Merged
yipjunkai merged 1 commit into
mainfrom
chore/numpy-floor-1.26
Jun 14, 2026
Merged

feat: support numpy >= 1.26 (lower the floor from >= 2.0)#41
yipjunkai merged 1 commit into
mainfrom
chore/numpy-floor-1.26

Conversation

@yipjunkai

Copy link
Copy Markdown
Owner

What

Lowers the numpy floor from >=2.0 to >=1.26 and adds a CI job that proves the floor.

Why

rust-numpy (0.28) binds numpy's C-API at runtime, so the single abi3 wheel pyvolr already ships works across numpy 1.26 .. 2.x from one build. The >=2.0 floor was stricter than the code requires and locked out users still on numpy 1.x — common in the older py_vollib stacks pyvolr targets as a drop-in.

1.26 is the last numpy 1.x line and covers Python 3.9–3.12; on 3.13+ the resolver naturally picks numpy 2.x (1.26 has no 3.13 wheels), so the floor is a true lower bound, not a cap.

Changes

  • pyproject.toml: numpy>=1.26 (+ rationale comment).
  • uv.lock: re-locked — one-line constraint change; resolved versions unchanged (dev still gets 2.x).
  • .github/workflows/ci.yml: new test-numpy-floor job — builds, forces numpy==1.26.*, asserts the downgrade actually took (no silent 2.x-by-stealth), runs the full suite. Added to the ci-passed aggregate.

De-risk

Built against numpy 1.26.4 locally and ran the suite: 133 passed, 1 skipped (the skip is the py_vollib differential, import-skipped as usual). actionlint clean; uv lock --check clean.

⚠️ Version note

This is committed as feat: because lowering a dependency floor is a backward-compatible compatibility expansion (semver-minor). That means it re-targets the open release PR (#36) from 0.1.50.2.0. If you'd rather ship it as a 0.1.5 patch, say so and I'll re-label the commit fix: (a 1-line amend) before you merge the release.

🤖 Generated with Claude Code

rust-numpy binds numpy's C-API at runtime, so the single abi3 wheel already
works across numpy 1.26..2.x from one build — the >= 2.0 floor was stricter than
necessary and locked out users still on numpy 1.x stacks (common in the
py_vollib userbase pyvolr targets as a drop-in).

Lowers the pyproject floor to >= 1.26 (the last 1.x line; covers py3.9-3.12),
re-locks, and adds a test-numpy-floor CI job that builds, forces numpy down to
the floor, asserts the downgrade took (no silent 2.x-by-stealth), and runs the
full suite — so the declared floor is proven, not assumed. Verified locally:
133 passed against numpy 1.26.4.
@yipjunkai yipjunkai merged commit 5c16cc0 into main Jun 14, 2026
28 of 29 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