Skip to content

fix: type check with numpy 2.5.4 isscalar stubs - #1031

Open
MaykThewessen wants to merge 1 commit into
PyPSA:masterfrom
MaykThewessen:fix/mypy-numpy-isscalar
Open

MaykThewessen wants to merge 1 commit into
PyPSA:masterfrom
MaykThewessen:fix/mypy-numpy-isscalar

Conversation

@MaykThewessen

Copy link
Copy Markdown
Contributor

Note

AI-assisted. Claude found the cause and wrote the fix, and ran the checks listed below. I reviewed the diff.

Changes proposed in this Pull Request

"Check types" fails on every new CI run since numpy 2.5.4 (linopy/expressions.py:1278: No overload variant of "__add__" ... matches argument type "Number"). numpy 2.5.4 added numbers.Number to the TypeIs of np.isscalar, and xarray's DataArray.__add__ does not accept Number. This casts the scalar in the legacy _add_constant branch to float | np.number, the scalar members of ConstantLike. No runtime change. This unblocks #1021, #1022, #1024 and #1025, among others.

Checklist

  • AI-generated content is marked (see AGENTS.md).
  • Code changes are sufficiently documented; i.e. new functions contain docstrings and further explanations may be given in doc.
  • Unit tests for new features were added (if applicable).
  • A note for the release notes doc/release_notes.rst of the upcoming release is included.
  • I consent to the release of this PR's code under the MIT license.
What was checked (AI-generated)
  • The failing CI job installed numpy 2.5.4; the last passing one (2026-10-10) had 2.5.3. Other versions (mypy 2.4.0, pandas 3.0.6, xarray 2026.9.0) are the same.
  • Reproduced with numpy 2.5.4 and mypy 2.4.0; with the cast, linopy/expressions.py type-checks under numpy 2.5.3 and 2.5.4.
  • test/test_linear_expression.py passes.

🤖 Generated with Claude Code

numpy 2.5.4 widened the TypeIs of np.isscalar to include numbers.Number,
which xarray's DataArray.__add__ does not accept, so mypy fails on the
legacy scalar branch of _add_constant. Cast to the scalar members of
ConstantLike; no runtime change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codspeed

codspeed Bot commented Oct 12, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 181 untouched benchmarks
⏩ 181 skipped benchmarks1


Comparing MaykThewessen:fix/mypy-numpy-isscalar (7dc40b1) with master (2d6aaf9)

Open in CodSpeed

Footnotes

  1. 181 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩

MaykThewessen added a commit to MaykThewessen/linopy that referenced this pull request Oct 12, 2026
MaykThewessen added a commit to MaykThewessen/linopy that referenced this pull request Oct 12, 2026
MaykThewessen added a commit to MaykThewessen/linopy that referenced this pull request Oct 12, 2026
MaykThewessen added a commit to MaykThewessen/linopy that referenced this pull request Oct 12, 2026

This branch has not been deployed

No deployments
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