Skip to content

TYP: np.[a]round improved shape-typing - #32241

Merged
charris merged 1 commit into
numpy:mainfrom
jorenham:typing/around/improved-shape-typing
Aug 10, 2026
Merged

charris merged 1 commit into
numpy:mainfrom
jorenham:typing/around/improved-shape-typing

Conversation

@jorenham

Copy link
Copy Markdown
Member

np.around (a.k.a. np.round) is now also shape-type-aware in case of (nested) sequences for the 1d/2d cases, and no longer erases shape-types of bool arrays. This also resolves the incompatible overlapping overloads, towards #27032.


Fully written by me, audited as kinda-high-value shape-typing improvement by AI (see https://gist.github.com/jorenham/36c78602a7ca866ddb2a917de48ccdd0).

@jorenham jorenham added this to the 2.6.0 Release milestone Aug 10, 2026
@github-actions

Copy link
Copy Markdown

Diff from mypy_primer, showing the effect of this PR on type check results on a corpus of open source code:

colour (https://github.com/colour-science/colour)
+ colour/io/image.py:350: error: Incompatible return value type (got "Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | str | _NestedSequence[complex | bytes | str]", expected "ndarray[tuple[Any, ...], dtype[signedinteger[_8Bit] | signedinteger[_16Bit] | signedinteger[_32Bit] | signedinteger[_64Bit] | unsignedinteger[_8Bit] | unsignedinteger[_16Bit] | unsignedinteger[_32Bit] | unsignedinteger[_64Bit] | floating[_16Bit] | floating[_32Bit] | float64]]")  [return-value]
- colour/colorimetry/spectrum.py:418: error: Argument 1 to "around" has incompatible type "Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | bytes | str | _NestedSequence[complex | bytes | str]"; expected "complex | number[Any, Any] | numpy.bool[builtins.bool] | object_"  [arg-type]
+ colour/colorimetry/spectrum.py:418: error: Argument 1 to "around" has incompatible type "Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | bytes | str | _NestedSequence[complex | bytes | str]"; expected "complex"  [arg-type]

static-frame (https://github.com/static-frame/static-frame)
+ static_frame/core/type_blocks.py:1633: error: Unused "type: ignore" comment  [unused-ignore]

optuna (https://github.com/optuna/optuna)
  ./optuna/study/_multi_objective.py:182: error: INTERNAL ERROR -- Please try using mypy master on GitHub:

@jorenham

Copy link
Copy Markdown
Member Author

RE: the new mypy_primer errors:

  • colour: the new mypy error (src) is accurate, because an ArrayLike is broader than NDArrayReal, and a: ArrayLike can therefore not be returned from a function with NDArrayReal as return type.
  • static-frame: this apparently resolves a previously-ignored error; nice
  • optuna: unrelated mypy bug

@charris
charris merged commit 5799ed4 into numpy:main Aug 10, 2026
15 checks passed
@charris

charris commented Aug 10, 2026

Copy link
Copy Markdown
Member

Thanks Joren.

@jorenham
jorenham deleted the typing/around/improved-shape-typing branch August 10, 2026 23:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants