[Numpy-discussion] Proposal to accept NEP-18, __array_function__ protocol

Stephan Hoyer shoyer at gmail.com
Thu Aug 23 11:35:04 EDT 2018


On Tue, Aug 21, 2018 at 6:57 PM Nathaniel Smith <njs at pobox.com> wrote:

> I mean, the idea of the envvar is to be a temporary measure enable
> devs to experiment with a provisional feature, while being awkward
> enough that people don't build lots of stuff assuming its there. It
> doesn't have to 100% supported in every environment.
>

My understanding of the idea of the envvar is to obtain informed consent
from NumPy users, e.g., "I understand that this is a unsupported
experimental feature that may be removed in the future without warning."

It's pretty important for me personally that's it's possible to use this in
a flexible set of environments, and in particular to have something that
works in my preferred notebook environment. How else are we going to test
this?

Every limitation that we put into the experimental version of this feature
decreases the likelihood that it gets used enough to know if it's even a
viable solution. If it's too awkward, nobody's even going to bother testing
it, and this whole effort will fall flat on its face.


> > I'm in complete agreement that only authors of end-user applications
> should
> > invoke this option, but just because something is technically possible
> > doesn't mean that people will actually do it or that we need to support
> that
> > use case :).
>
> I didn't say "authors of end-user applications", I said "end-users" :-).
>

These are mostly the same for NumPy, but I do disagree with you here.
Ultimately we have to trust application developers to make the right
choices for their tools. If they are willing to accept that maintenance
burden of either (1) potentially being stuck on NumPy 1.16 forever or (2)
needing to rewrite their code, that's their tradeoff to make. It's a little
preposterous to force this decision onto end-users, who may not even know a
tool is written in NumPy.


> That said, I dunno. My intuition is that if we have a function call
> like this then libraries that define __array_function__ will merrily
> call it in their package __init__ and it accomplishes nothing, but
> maybe I'm being too cynical and untrusting.


People can do lots of dumb things in Python (e.g., monkeypatching) -- the
language doesn't stop them. Fortunately this mostly isn't a problem.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20180823/787d94a5/attachment.html>


More information about the NumPy-Discussion mailing list