Since I am still a bit on the fence with the deprecation (see also
below), to mostly make the following Python integer conversions an
error (for now deprecation):

    np.uint8(-1)
    np.array(50000, dtype=np.int8)

I have created a Poll about the change in case anyone wants to give
feedback but formulate arguments in a mail:

    
https://discuss.scientific-python.org/t/deprecation-of-assigning-converting-out-of-bounds-python-integers/580

Cheers,

Sebastian


PS: One tangential reason why I am bringing it up, is that I am
struggling with the notion of "casting safety" for these Python
integers.  I will bring this up again also, but it is not directly
related.



On Tue, 2022-10-11 at 14:00 +0200, Sebastian Berg wrote:
> Hi all,
> 
> just to mention it, there is a PR ready on this:
> 
>     https://github.com/numpy/numpy/pull/22385
> 
> it necessecitates some changes to the NumPy test suite and will do
> similar at least for SciPy downstream
> I currently suspect we will give it a shot soon, but am not opposed
> at
> all with discussing especially allowing:
> 
>     np.uint8(-1)
> 
> i.e. using the negative range of the corresponding signed integer
> explicitly for the `np.uint8`, `np.uint16`.  But still disallow it
> for
> other operations like `np.array([-1], dtype=np.uint8)`.
> 
> As I said, my main interest is pushing NEP 50 related change:
> 
>     https://github.com/numpy/numpy/pull/21875
> 
> which this will simplify.  If this PR seems tricky to move forward,
> that is fine, but I would like to push that PR without the
> simplification.  (Decoupling this change from NEP 50 at some
> complexity
> cost.)
> 
> Cheers,
> 
> Sebastian
> 
> 
> 
> On Tue, 2022-10-04 at 17:24 +0200, Ralf Gommers wrote:
> > 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: sebast...@sipsolutions.net
> 
> 
> _______________________________________________
> 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: sebast...@sipsolutions.net


_______________________________________________
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

Reply via email to