Description
Proposal: hold a high-level inter-library meeting to sort out roadblocks in the duck-array wrapping efforts.
Whilst trying to get dask, pint and xarray all working nicely together, I couldn't help but notice there are important issues which conclude with a shared sentiment that "we just need to make a decision as to what wraps what" but since then have had essentially no codified consensus, and hence no progress for the past year. Multiply-nested duck-array wrapping is complicated and involves a lot of separate libraries (as this graph of potential wrappings shows), but could be an amazingly powerful feature!
I suggest that as asynchronous discussion hasn't moved this forward, we should instead hold a (hopefully one-off) meeting to make these high-level design decisions.
I'm happy to arrange the meeting, but for this to work we ideally need attendees who understand the issues from the perspective of each of the main libraries involved - some suggestions:
- xarray (@shoyer and @keewis)
- dask (@mrocklin?)
- pint (@jthielen)
- cupy? (@jacobtomlinson?)
- sparse? (@crusaderky?)
- pytorch?? (@rgommers??)
Possible Agenda (please suggest additions!):
- Which libraries should wrap which other libraries
- Repo/NEP/etc. for standardizing wrapping order and other future decisions
- Outstanding issues to tackle first
Background reading
- Basic idea of the numpy dispatch mechanism explained in a blog post
- @jthielen 's excellent overview comment, with links to relevant NEP's
- Pint's technical commentary on array type support
Some related issues (there are many more - please add)
- UserWarning when wrapping pint & dask arrays together #5559
- Consistent Handling of Type Casting Hierarchy #3950
- Design: nested _meta dask/dask#5329
- reprs of nested duck arrays dask/dask#6637
- calling methods on wrapped duck arrays dask/dask#6636
- construction of and interactions between different types of nested duck arrays dask/dask#6635