Hi Peter, thanks for writing that up!

On Mon, Aug 5, 2019 at 8:07 AM Peter Andreas Entschev <pe...@entschev.com>
wrote:

> Hi,
>
> we have a new proposal for the implementation of NumPy array duck
> typing [1] [2], following the high-level overview described in NEP-22
> [3].
>

A couple of high level comments:

Having __array__ give a TypeError is fine for libraries that want to
prevent unintentional coercion with, e.g., `np.asarray(my_ducktype)`.
However that leaves the obvious question of what the right way is to do
this intentionally. Would be good to recommend something, for example a
`numpy()` or `to_numpy()` method. Also, the NEP should make it clearer that
this is not the obviously correct thing to do, it only makes sense in cases
where coercion is very expensive, like CuPy and Sparse. For Dask for
example, coercion to a numpy array is perfectly reasonable.

The NEP currently does not say who this is meant for. Would you expect
libraries like SciPy to adopt it for example?

The NEP also (understandably) punts on the question of when something is a
valid duck array. If you want this to be widely used, that will need an
answer or at least some rough guidance though. For example, we would expect
a duck array to have a mean() method, but probably not a ptp() method. A
library author who wants to use np.duckarray() needs to know, because she
can't test with all existing and future duck array implementations.

An alternative to introducing np.duckarray() would be to just modify
np.asarray(). Of course this has backwards compatibility impact, but if
you're going to be raising a TypeError from __array__ then that impact is
there anyway. Note: I don't think this is necessarily a better idea,
because it may lead to less clear errors, but it's worth putting in the
alternatives section at least.

Cheers,
Ralf




> Would be great to get some comments on that.
>
> [1]
> https://github.com/numpy/numpy/blob/master/doc/neps/nep-0030-duck-array-protocol.rst
> [2] https://github.com/numpy/numpy/pull/14170
> [3] https://numpy.org/neps/nep-0022-ndarray-duck-typing-overview.html
>
> Best,
> Peter
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@python.org
> https://mail.python.org/mailman/listinfo/numpy-discussion
>
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion

Reply via email to