It looks like we should start preparing the transition to __numpy_ufunc__ (see e.g. numpy/numpy#4709 (comment)) since it will replace __array_prepare__ etc. in the long term.
@mhvk @mdboom - are either of you interested in trying to investigate this?