Re: [Numpy-discussion] defining a NumPy API standard?

2019-06-04 Thread Ralf Gommers
On Mon, Jun 3, 2019 at 7:56 PM Sebastian Berg 
wrote:

> On Sun, 2019-06-02 at 08:42 +0200, Ralf Gommers wrote:
> >
> >
> 
> > > >
> > >
> > > 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


[Numpy-discussion] Weekly Community Meeting -- June 5/ 2019

2019-06-04 Thread Tyler Reddy
Hi,

There will be a weekly community call on June 5/ 2019--anyone may join and
edit the work-in-progress meeting notes:
https://hackmd.io/5fKOqla6SIqKJMtB7w5Law?view

The conference call link should be in that document.

Best wishes,
Tyler
___
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] Weekly Community Meeting -- June 5/ 2019

2019-06-04 Thread Tyler Reddy
11 am Pacific Time

On Tue, 4 Jun 2019 at 16:14, Tyler Reddy  wrote:

> Hi,
>
> There will be a weekly community call on June 5/ 2019--anyone may join and
> edit the work-in-progress meeting notes:
> https://hackmd.io/5fKOqla6SIqKJMtB7w5Law?view
>
> The conference call link should be in that document.
>
> Best wishes,
> Tyler
>
___
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] defining a NumPy API standard?

2019-06-04 Thread Chris Barker
One little point here:



>   * np.ndarray.cumprod: low importance -> prefer np.multiply.accumulate
>>
>
I think that's and example of something that *should* be part of the numpy
API, but should be implemented as a mixin, based on np.multiply.accumulate.

As I'm a still confused about the goal here, that means that:

Users should still use `.cumprod`, but implementers of numpy-like packages
should implement `.multiply.accumulate`, and not directly `cumprod`, but
rather use the numpy ABC, or however it is implemented.

-CHB

-- 

Christopher Barker, Ph.D.
Oceanographer

Emergency Response Division
NOAA/NOS/OR&R(206) 526-6959   voice
7600 Sand Point Way NE   (206) 526-6329   fax
Seattle, WA  98115   (206) 526-6317   main reception

chris.bar...@noaa.gov
___
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion