Skip to content

[pull] main from numpy:main#566

Merged
pull[bot] merged 4 commits intoishandutta2007:mainfrom
numpy:main
Mar 6, 2026
Merged

[pull] main from numpy:main#566
pull[bot] merged 4 commits intoishandutta2007:mainfrom
numpy:main

Conversation

@pull
Copy link

@pull pull bot commented Mar 6, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

SpecLad and others added 4 commits March 6, 2026 11:24
Since NumPy 2.0, code like the following will cause a scalar value to be truncated:

    >>> np.where([False], np.array([1], dtype=np.uint8), 1000)
    array([232], dtype=uint8)

(in NumPy 1.x, it would instead output a uint16 array)

This is dangerous, and inconsistent with other NumPy functions, e.g.:

    >>> np.multiply(np.array([1], dtype=np.uint8), 1000)
    Traceback (most recent call last):
      File "<python-input-3>", line 1, in <module>
        np.multiply(np.array([1], dtype=np.uint8), 1000)
        ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    OverflowError: Python integer 1000 out of bounds for uint8

Use `npy_update_operand_for_scalar` to bring the behavior of `where` in line with other functions.
Co-authored-by: Sebastian Berg <sebastian@sipsolutions.net>
Refactor things (slightly) to use a pattern of PyArray_DTypeFromObject 
and NPY_DT_CALL_ensure_canonical to avoid relying on type numbers (except for final BLAS
dispatching).
This is because type numbers are not reliable representation for user dtypes (and in general
for parametric ones).

A future iteration may want to use normal promotion (but this very subtly changes things
for empty list inputs).


Co-authored-by: Sebastian Berg <sebastian@sipsolutions.net>
Co-authored-by: Sebastian Berg <sebastian@sipsolutions.net>
@pull pull bot locked and limited conversation to collaborators Mar 6, 2026
@pull pull bot added the ⤵️ pull label Mar 6, 2026
@pull pull bot merged commit a6ce1e7 into ishandutta2007:main Mar 6, 2026
40 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants