Skip to content

Raise lower bounds to NumPy 2 capable releases - #3510

Open
C-Achard wants to merge 22 commits into
cy/more-granular-canaryfrom
cy/bump-lower-bounds
Open

C-Achard wants to merge 22 commits into
cy/more-granular-canaryfrom
cy/bump-lower-bounds

Conversation

@C-Achard

@C-Achard C-Achard commented Sep 11, 2026

Copy link
Copy Markdown
Collaborator

Motivation

#3499 removes the numpy<2 upper bound, but several dependencies still have a np1-only lower bound.

Dep From To py3.10 resolves py3.12 resolves
matplotlib >=3.3,!=3.7,!=3.7.1 >=3.9 3.10.9 3.11.1
pycocotools (unpinned) >=2.0.8 2.0.11 2.0.11
scikit-image >=0.17 >=0.24 0.25.2 0.26.0
scipy >=1.9 >=1.13 1.15.3 1.18.1
statsmodels >=0.11 >=0.14.2 0.15.0 0.15.0
tables >3.8 >=3.10.1 3.10.1 3.11.1

Re: tables

tables 3.10.0 still declares numpy<2,>=1.20.0; the cap lifts in 3.10.1. It cannot go higher either as 3.10.2+ requires Python ≥3.11.

Not changed here


Note: If we want to narrow this as much as possible, we could limit to tables and scipy as they are the ones with numpy upper bounds.

@C-Achard
C-Achard added this pull request to stack #3511 September 11, 2026 12:53
@C-Achard C-Achard self-assigned this Sep 11, 2026
@C-Achard C-Achard added the dependencies Pull requests that update a dependency file label Sep 11, 2026
@C-Achard
C-Achard requested a lite review from Copilot September 11, 2026 13:01

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No unresolved blocking issues were identified.

Pull request overview

Raises dependency minimums to NumPy 2-compatible releases and refreshes the lockfile.

Changes:

  • Updates six dependency lower bounds.
  • Regenerates Python/platform-specific resolutions in uv.lock.
File summaries
File Summary
pyproject.toml Raises direct dependency lower bounds.
uv.lock Records updated dependency resolutions and markers.
Review details
  • Files reviewed: 1/2 changed files
  • Comments generated: 0
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

deruyter92 and others added 18 commits September 14, 2026 10:49
Add the missing comma between the `matplotlib` and `numpy-1` matrix entries in `.github/workflows/intelligent-testing.yml` so the GitHub Actions matrix parses correctly.
Broaden the intelligent-testing workflow to include strict dependency-resolution checks for Python 3.10 and 3.12, plus NumPy 1/2 and Matplotlib upgrade variants. This improves compatibility coverage and validates resolver behavior beyond the previous narrower matrix.
Restore exclusion of matplotlib 3.7 and 3.7.1 from the base dependencies, and drop the redundant numpy cap from the `tf-cu12` extra because TensorFlow 2.18 already declares the required numpy range.
Add a `strict_cells` workflow input and use it to make only `matrix.strict` canary lanes fail the job outright. The intelligent testing workflow now enables strict cells for pushes and same-repo PRs while keeping fork PRs non-blocking, and the reporting step skips annotations for lanes that already fail normally.
@C-Achard
C-Achard force-pushed the cy/more-granular-canary branch from bc6d9b7 to a12c9c6 Compare September 14, 2026 09:29
@C-Achard
C-Achard force-pushed the cy/bump-lower-bounds branch from 835a08c to c2fd015 Compare September 14, 2026 09:29
@deruyter92
deruyter92 removed this pull request from stack #3511 September 14, 2026 09:38
@deruyter92
deruyter92 added this pull request to stack #3515 September 14, 2026 09:38

@deruyter92 deruyter92 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As a product decision (force a more modern stack) I see a good value of this PR.

But to me this sounds entirely separate from the discussion on numpy in the associated PRs. The goal in those PRs is to support numpy 2.0 for broad compatibility, not to make sure that users don't end up with numpy 1.x.

To me the benefits from enforcing a modern stack right now do not feel like they outweigh the restrictive downsides: if our users work with old other scientific software, it might be helpful to keep the lower-bounds low for flexibility, unless we really can't support.

maybe we should add a test lane first with pip resolution=lowest-direct to test if our codebase contains unsupported usage. In that case we need to update the lower-bounds. If not necessary, I wouldn't maybe for now.

@C-Achard do you agree?

@C-Achard

C-Achard commented Sep 14, 2026

Copy link
Copy Markdown
Collaborator Author

@deruyter92 Yes totally! Sorry if it sounds like it's tightly coupled to the other PRs, it isn't.

@deruyter92
deruyter92 force-pushed the cy/more-granular-canary branch from ddace9a to d476967 Compare September 14, 2026 11:36
@deruyter92
deruyter92 removed this pull request from stack #3515 September 14, 2026 11:38
An error occurred while trying to automatically change base from cy/more-granular-canary to cy/fix-numpy2-unpin-issues September 14, 2026 13:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants