[Numpy-discussion] proposed changes to array printing in 1.14

Sebastian Berg sebastian at sipsolutions.net
Fri Jun 30 04:11:40 EDT 2017


On Fri, 2017-06-30 at 17:55 +1000, Juan Nunez-Iglesias wrote:
> To reiterate my point on a previous thread, I don't think this should
> happen until NumPy 2.0. This *will* break a massive number of
> doctests, and what's worse, it will do so in a way that makes it
> difficult to support doctesting for both 1.13 and 1.14. I don't see a
> big enough benefit to these changes to justify breaking everyone's
> tests before an API-breaking version bump.
> 

Just so we are on the same page, nobody is planning a NumPy 2.0, so
insisting on not changing anything until a possible NumPy 2.0 is almost
like saying it should never happen. Of course we could enmass
deprecations and at some point do many at once and call it 2.0, but I
am not sure that helps anyone, when compared to saying that we do
deprecations for 1-2 years at least, and longer if someone complains.

The question is, do you really see a big advantage in fixing a
gazillion tests at once over doing a small part of the fixes one after
another? The "big step" thing did not work too well for Python 3....

- Sebastian


> On 30 Jun 2017, 6:42 AM +1000, Marten van Kerkwijk
> <m.h.vankerkwijk at gmail.com>, wrote:
> > To add to Allan's message: point (2), the printing of 0-d arrays,
> > is
> > the one that is the most important in the sense that it rectifies a
> > really strange situation, where the printing cannot be logically
> > controlled by the same mechanism that controls >=1-d arrays (see
> > PR).
> > 
> > While point 3 can also be considered a bug fix, 1 & 4 are at some
> > level matters of taste; my own reason for supporting their
> > implementation now is that the 0-d arrays already forces me (or,
> > specifically, astropy) to rewrite quite a few doctests, and I'd
> > rather
> > have everything in one go -- in this respect, it is a pity that
> > this
> > is separate from the earlier change in printing for structured
> > arrays
> > (which was also much for the better, but broke a lot of doctests).
> > 
> > -- Marten
> > 
> > 
> > 
> > On Thu, Jun 29, 2017 at 3:38 PM, Allan Haldane <allanhaldane at gmail.
> > com> wrote:
> > > Hello all,
> > > 
> > > There are various updates to array printing in preparation for
> > > numpy
> > > 1.14. See https://github.com/numpy/numpy/pull/9139/
> > > 
> > > Some are quite likely to break other projects' doc-tests which
> > > expect a
> > > particular str or repr of arrays, so I'd like to warn the list in
> > > case
> > > anyone has opinions.
> > > 
> > > The current proposed changes, from most to least painful by my
> > > reckoning, are:
> > > 
> > > 1.
> > > For float arrays, an extra space previously used for the sign
> > > position
> > > will now be omitted in many cases. Eg, `repr(arange(4.))` will
> > > now
> > > return 'array([0., 1., 2., 3.])' instead of 'array([ 0., 1., 2.,
> > > 3.])'.
> > > 
> > > 2.
> > > The printing of 0d arrays is overhauled. This is a bit finicky to
> > > describe, please see the release note in the PR. As an example of
> > > the
> > > effect of this, the `repr(np.array(0.))` now prints as
> > > 'array(0.)`
> > > instead of 'array(0.0)'. Also the repr of 0d datetime arrays is
> > > now like
> > > "array('2005-04-04', dtype='datetime64[D]')" instead of
> > > "array(datetime.date(2005, 4, 4), dtype='datetime64[D]')".
> > > 
> > > 3.
> > > User-defined dtypes which did not properly implement their `repr`
> > > (and
> > > `str`) should do so now. Otherwise it now falls back to
> > > `object.__repr__`, which will return something ugly like
> > > `<mytype object at 0x7f37f1b4e918>`. (Previously you could depend
> > > on
> > > only implementing the `item` method and the repr of that would be
> > > printed. But no longer, because this risks infinite recursions.).
> > > 
> > > 4.
> > > Bool arrays of size 1 with a 'True' value will now omit a space,
> > > so that
> > > `repr(array([True]))` is now 'array([True])' instead of
> > > 'array([ True])'.
> > > 
> > > Allan
> > > _______________________________________________
> > > NumPy-Discussion mailing list
> > > NumPy-Discussion at python.org
> > > https://mail.python.org/mailman/listinfo/numpy-discussion
> >  _______________________________________________
> > NumPy-Discussion mailing list
> > NumPy-Discussion at python.org
> > https://mail.python.org/mailman/listinfo/numpy-discussion
> 
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at python.org
> https://mail.python.org/mailman/listinfo/numpy-discussion
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: This is a digitally signed message part
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20170630/2e037113/attachment.sig>


More information about the NumPy-Discussion mailing list