On Thu, Sep 29, 2022 at 10:10 AM Sebastian Berg <sebast...@sipsolutions.net> wrote:
> On Wed, 2022-09-28 at 16:44 -0700, Stefan van der Walt wrote: > > Hi Sebastian, > > > > On Wed, Sep 28, 2022, at 12:11, Sebastian Berg wrote: > > > np.array([1, 2], dtype="uint8") + (-1) > > > > > > which currently returns an "int16" array must raise an error. This > > > is > > > because we want to return a uint8 array but the -1 cannot be > > > represented well by -1. > > > > Did you mean: the -1 is not representable in uint8? > > Sorry yes. With NEP 50, we do not look at the value (initially) so > determine that the operation must be handled as: > > uint8 + uint8 -> uint8 > > We then try to convert the -1 to uint8. That conversion would raise an > error, because previously the result was an int16. > (This is to prevent silent unexpected result changes and seemed like > the more reasonable behavior.) > > On the other hand, assignments like: > > uint8_arr[0] = -1 > np.array([-1], dtype=np.uint8) > > do happily convert the -1 to `uint8`, currently. If we keep allowing > these, we have two slightly different conversions: one that fails and > one that does not. > > This is fine, but maybe we actually want it to always fail in the > future? > It seems better to always raise an exception indeed. So if it simplifies your PR to do that now, I'd say go for it. Cheers, Ralf
_______________________________________________ NumPy-Discussion mailing list -- numpy-discussion@python.org To unsubscribe send an email to numpy-discussion-le...@python.org https://mail.python.org/mailman3/lists/numpy-discussion.python.org/ Member address: arch...@mail-archive.com