<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Apr 28, 2019 at 5:02 AM Nathaniel Smith <<a href="mailto:njs@pobox.com">njs@pobox.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Sat, Apr 27, 2019 at 7:46 PM Stephan Hoyer <<a href="mailto:shoyer@gmail.com" target="_blank">shoyer@gmail.com</a>> wrote:<br>
> Worst, "__wrapped__" would be difficult to search for, because it already means something in Python (referring to functools.wrapped). At least "__numpy_implementation__" and "__skipping_array_function__" are both unique tokens without any existing meaning.<br>
<br>
It's not just functools.wrapped – there's definitely other code out<br>
there that reads/writes __wrapped__ attributes on arbitrary callables<br>
and tries to do something clever with it. Debian apparently has 182<br>
packages that contain the token __wrapped__ in their source code [1].<br>
There's a real risk that some of this code will think it knows what to<br>
do with numpy's __wrapped__ and be wrong, or that new code that's<br>
trying to skip __array_function__ dispatch will accidentally call<br>
someone else's __wrapped__ without realizing.<br></blockquote><div><br></div><div><br></div><div>Good point, I didn't think about that.</div><div><br></div>One other thought: the proposal in this thread is about skipping the override mechanism for numpy functions. NEP 18 reserves the freedom to swap out __array_function__ with __array_ufunc__ if we make something a ufunc. So __skipping_array_function__ is too limited a name, __skipping_override__ or similar would be better. And then make __array_ufunc__ respect it as well.</div><div class="gmail_quote"><br></div><div class="gmail_quote">Cheers,</div><div class="gmail_quote">Ralf</div><div class="gmail_quote"><br></div></div>