On Tue, 2022-11-29 at 14:51 -0700, Aaron Meurer wrote: > On Fri, Nov 25, 2022 at 9:36 AM Sebastian Berg > <sebast...@sipsolutions.net> wrote: > > > > Hi all, > > > > I would like to formally propose accepting NEP 51. Without any > > concern > > voiced, we will consider it accepted within 7 days. > >
<snip> > > * Clearly we can always adjust the printing conventions, e.g. > > whether > > to include the `np.` or whether NaN's should be `np.float64(nan)` > > or > > not. But bike-sheds happening now have a much better chance of > > being heard :). > > I always prefer things that have copy-pastability, so I would suggest > something like np.float64('nan'). It looks like the NEP already does > this for longdouble. It is a bit different for longdouble because for longdouble you should always put quotes anyway. Note that if we do that, we somewhat also have to do it also for: array([1.0, nan, 2.0]) which currently doesn't print quotes. But then we need to include the dtype in the output, or that doesn't round-trip anymore (even with defining `nan`). > > I'm assuming for float-64 and lower one can guarantee round-tripping > with the Python float literal. > > The "np." also helps for copy-pastability for standard usage so that > sounds fine too. It would be useful to allow it to be disabled or > customized. For example, some libraries reuse NumPy dtype objects so > they may want to replace "np." with their own library name, or just > omit it. It wasn't clear to me if something like this is already part > of the NEP or not. This changes printing of instances, classes always print as `numpy.uint8` and I am not planning on changing that. I added a way to format a scalars repr when the dtype is known (i.e. the same way as it would be when calling `repr(array)`) in the NEP. I didn't attach it to the scalar though, either way it feels a bit unwieldy, but I don't have a good idea for providing it and `str()` basically does this also. > > > > > 1. The current NEP states that we use `np.str_` and `np.bytes_`. > > There > > is some chance that the top-level names could be changed, in that > > case > > the representation would change accordingly. (I consider this an > > adjustment we can do without the NEP.) > > > > 2. To properly implement the NEP, we need to automate some of the > > documentation changes necessary. This should also enable > > downstream to > > do the same or at least have a blueprint as a starting point. > > (Help with this work is greatly appreciated, since it is its own > > small > > project to hook into the doctest utilities.) > > A reusable script would be nice, since many projects are going to > have > doctests broken by this. I think there also may already be some > existing tooling that just "fixes" doctests by making them match > their > output. Yeah, such a tool should be good enough in practice, do you know where to find it? Otherwise hacking a doctest helper seems very possible. - Sebastian > > Aaron Meurer > > > > > I plan on adding a brief note on about helping with doc updates to > > NEP > > when accepting it. Ross was planning to add a table of changed > > examples, although I don't think that is necessary for accepting. > > > > Cheers, > > > > Sebastian > > > > > > > > On Fri, 2022-10-28 at 10:54 +0200, Sebastian Berg wrote: > > > Hi all, > > > > > > As mentioned earlier, I would like to propose changing the > > > representation of scalars in NumPy. Discussion and ideas on > > > changes > > > are much appreciated! > > > > > > The main change is to show scalars as: > > > > > > * `np.float64(3.0)` instead of just `3.0` > > > * `np.True_` instead of `True` > > > * `np.void((3, 5), dtype=[('a', '<i8'), ('b', 'u1')])` instead of > > > `(3, 5)` > > > * Use `np.` rather than `numpy.` for datetime/timedelta. > > > > > > This way it is clear for users that they are dealing with NumPy > > > scalars > > > which behave different from Python scalars. > > > The `str()` that is given when using `print()` and the way arrays > > > are > > > shown will be unchanged. > > > > > > The NEP draft can be found here: > > > > > > https://numpy.org/neps/nep-0051-scalar-representation.html > > > > > > and it includes more details and related changes. > > > > > > The implementation is largely finished and can be found here: > > > > > > https://github.com/numpy/numpy/pull/22449 > > > > > > W are fairly late in the release cycle and the change should not > > > block > > > other things. So, the aim is to merge it early in the next > > > release > > > cycle. That way downstream has time to fix documentation is > > > wanted. > > > > > > Depending on how discussion goes, I hope to formally propose the > > > NEP > > > fairly soon, so that the merging the implementation doesn't need > > > to > > > wait on NEP approval. > > > > > > Cheers, > > > > > > Sebastian > > > > > > > > > > > > > > > On Thu, 2022-09-08 at 11:38 +0200, Sebastian Berg wrote: > > > > > > > > TL;DR: NumPy scalars representation is e.g. `34.3` instead of > > > > `float32(34.3)`. So the representation is missing the type > > > > information. What are your thoughts on changing that? > > > > > > > > > > > > Hi all, > > > > > > > > I am thinking about the next steps for NEP 50 (The NEP wants to > > > > fix > > > > the > > > > NumPy promotion rules, especially with respect to scalars): > > > > > > > > https://numpy.org/neps/nep-0050-scalar-promotion.html > > > > > > > > In relation to that, there was one point that Stéfan brought up > > > > previously. > > > > > > > > The NumPy scalars (representation) currently print as numbers: > > > > > > > > >>> np.float32(34.3) > > > > 34.3 > > > > >>> np.uint8(5) > > > > 5 > > > > > > > > That can already be confusing now. However, it gets more > > > > problematic > > > > if NEP 50 is introduced since the behavior between a Python > > > > `34.3` > > > > and > > > > `np.float32(34.3)` would differ more than it does now (please > > > > refer > > > > to > > > > the NEP). > > > > > > > > The change would be that we should print as: > > > > > > > > float64(34.3) (or similar?) > > > > > > > > This Email is mainly to ask for any feedback or concern on such > > > > a > > > > change. I suspect we may have to write a very brief NEP about > > > > it. > > > > > > > > If there is little concern, maybe we could move forward such a > > > > change > > > > promptly. Otherwise it could be moved forward together with > > > > NEP 50 > > > > and > > > > take effect in a "major" release [1]. > > > > > > > > Cheers, > > > > > > > > Sebastian > > > > > > > > > > > > > > > > [1] Note that for me, even a major release would hopefully not > > > > affect > > > > the majority of users or be very disruptive. > > > > > > > > _______________________________________________ > > > > 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: asmeu...@gmail.com > _______________________________________________ > 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