On Mon, Apr 22, 2019 at 11:13 PM Stephan Hoyer <sho...@gmail.com> wrote:
>
>> On Mon, Apr 22, 2019 at 9:26 PM Nathaniel Smith <n...@pobox.com> wrote:
>>>
>>> Your last email didn't really clarify anything for me. I get that 
>>> np.func.__numpy_implementation__ is intended to have the semantics of 
>>> numpy's implementation of func, but that doesn't tell me much :-). And 
>>> also, that's exactly the definition of np.func, isn't it?
>
> My understanding of the protocol we came up with in NEP-18 is that every 
> NumPy function (that takes array-like arguments) now has two parts to its 
> implementation:
> 1. The NEP-18 part involving calling the dispatcher function, and checking 
> for/calling __array_function__ attributes on array-like arguments. This part 
> is documented in NEP-18.
> 2. The original function definition, which is called if either (a) no 
> __array_function__ attributes exist, or (b) the only __array_function__ 
> attribute is numpy.ndarray.__array_function__. This part is documented in the 
> docstring of the NumPy function.
>
> "__numpy_implementation__" provides a short-cut to (2) without (1). That's it.

OK, so the semantics are: the same as the normal function, except we
pretend that none of the arguments have an __array_function__
attribute?

That's much clearer to me than how you were phrasing it before :-).
Though now the name "__numpy_implementation__" doesn't seem very
evocative of what it does... numpy's dispatch sequence has changed a
lot in the past (mostly adding new coercion rules), and will probably
change in the future, and "__numpy_implementation__" doesn't give much
guidance about which parts of the dispatch sequence should be skipped
as "dispatch" and which should be included as "implementation". Maybe
something like __skipping_array_function__?

-n

-- 
Nathaniel J. Smith -- https://vorpus.org
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion

Reply via email to