On Mon, Jun 3, 2019 at 7:56 PM Sebastian Berg <sebast...@sipsolutions.net>
wrote:

> On Sun, 2019-06-02 at 08:42 +0200, Ralf Gommers wrote:
> >
> >
> <snip>
> > > >
> > >
> > > This sounds like a restructuring or factorization of the API, in
> > > order to make it smaller, and thus easier to learn and use.
> > > It may start with the docs, by paying more attention to the "core"
> > > or important functions and methods, and noting the deprecated, or
> > > not frequently used, or not important functions. This could also
> > > help the satellite projects, which use NumPy API as an example, and
> > > may also be influenced by them and their decisions.
> > >
> >
> >  Indeed. It will help restructure our docs. Perhaps not the reference
> > guide (not sure yet), but definitely the user guide and other high-
> > level docs we (or third parties) may want to create.
> >
>
> Trying to follow the discussion, there seems to be various ideas? Do I
> understand it right that the original proposal was much like doing a
> list of:
>
>   * np.ndarray.cumprod: low importance -> prefer np.multiply.accumulate
>   * np.ravel_multi_index: low importance, but distinct feature
>

Indeed. Certainly no more than that was my idea.


> Maybe with added groups such as "transpose-like" and "reshape-like"
> functions?
> This would be based on 1. "Experience" and 2. usage statistics. This
> seems mostly a task for 2-3 people to then throw out there for
> discussion.
> There will be some very difficult/impossible calls, since in the end
> Nathaniel is right, we do not quite know the question we want to
> answer. But for a huge part of the API it may not be problematic?
>

Agreed, won't be problematic.


>
> Then there is an idea of providing better mixins (and tests).
> This could be made easier by the first idea, for prioritization.
> Although, the first idea is probably not really necessary to kick this
> off at all. The interesting parts to me seem likely how to best solve
> testing of the mixins and numpy-api-duplicators in general.
>
> Implementing a growing set of mixin seems likely fairly straight
> forwrad (although maybe much easier to approach if there is a list from
> the first project)?


Indeed. I think there's actually 3 levels here (at least):
1. function name: high/low importance or some such simple classification
2. function signature and behavior: is the behavior optimal, what would be
change, etc.
3. making duck arrays and subclasses that rely on all those functions and
their behavior easier to implemement/use

Mixins are a specific answer to (3). And it's unclear if they're the best
answer (could be, I don't know - please don't start a discussion on that
here). Either way, working on (3) will be helped by having a better sense
of (1) and (2).

Also think about effort: (2) is at least an order of magnitude more work
than (1), and (3) likely even more work than (2).


> And, once we have a start, maybe we can rely on the
> array-like implementors to be the main developers (limiting us mostly
> to review).
>
>
> The last part would be probably for users and consumers of array-likes.
> This largely overlaps, but comes closer to the problem of "standard".
> If we have a list of functions that we tend to see as more or less
> important, it may be interesting for downstream projects to restrict
> themselves to simplify interoperability e.g. with dask.
>
> Maybe we do not have to draw a strict line though? How plausible would
> it be to set up a list (best auto-updating) saying nothing but:
>
> `np.concatenate` supported by: dask, jax, cupy
>

That's probably not that hard, and I agree it would be quite useful. The
namespaces of each of those libraries is probably not the same, but with
dir() and some strings and lists you'll get a long way here I think.


>
> I am not sure if this is helpful, but it feels to me that the first
> part is what Ralf was thinking of? Just to kick of such a a "living
> document".


Indeed.

I could maybe help with providing the second pair of eyes
> for a first iteration there, Ralf.


Awesome, thanks Sebastian.

Cheers,
Ralf


The last list I would actually find
> interesting myself, but not sure how easy it would be to approach it?
>
> Best,
>
> Sebastian
>
>
> > Ralf
> > _______________________________________________
> > 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
>
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion

Reply via email to