<html xmlns="http://www.w3.org/1999/xhtml"><head> <title></title> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> </head> <body style="font-family:Helvetica;color:#000000;font-size:13px;"><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div id="CanaryBody"><div><div>On Thursday, Sep 13, 2018 at 7:30 PM, Stephan Hoyer <<a href="mailto:shoyer@gmail.com">shoyer@gmail.com</a>> wrote:</div></div></div><div id="CanaryBody"><div><div><div dir="ltr"><div>On Sat, Sep 8, 2018 at 7:12 PM Charles R Harris <<a href="mailto:charlesr.harris@gmail.com">charlesr.harris@gmail.com</a>> wrote:</div></div></div></div></div><div id="CanaryBody"><div><div><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-left: 0.8ex; padding-left: 1ex;"><div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Wed, Aug 1, 2018 at 6:27 PM Stephan Hoyer <<a href="mailto:shoyer@gmail.com" target="_blank">shoyer@gmail.com</a>> wrote:</div></div></div></blockquote></div></div></div></div></div><div id="CanaryBody"><div><div><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-left: 0.8ex; padding-left: 1ex;"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-left: 0.8ex; padding-left: 1ex;"><div dir="ltr">I propose to accept NEP-18, "A dispatch mechanism for NumPy’s high level array functions":</div></blockquote></div></div></blockquote></div></div></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-left: 0.8ex; padding-left: 1ex;"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-left: 0.8ex; padding-left: 1ex;"><div dir="ltr"><div><a href="http://www.numpy.org/neps/nep-0018-array-function-protocol.html" target="_blank">http://www.numpy.org/neps/nep-0018-array-function-protocol.html</a></div></div></blockquote></div></div></blockquote></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-left: 0.8ex; padding-left: 1ex;"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-left: 0.8ex; padding-left: 1ex;"><div dir="ltr"><div><div><br></div></div></div></blockquote></div></div></blockquote></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-left: 0.8ex; padding-left: 1ex;"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-left: 0.8ex; padding-left: 1ex;"><div dir="ltr"><div><div><div>Since the last round of discussion, we added a new section on "Callable objects generated at runtime" clarifying that to handle such objects is out of scope for the initial proposal in the NEP.</div></div></div></div></blockquote></div></div></blockquote></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-left: 0.8ex; padding-left: 1ex;"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-left: 0.8ex; padding-left: 1ex;"><div dir="ltr"><br></div></blockquote></div></div></blockquote></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-left: 0.8ex; padding-left: 1ex;"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-left: 0.8ex; padding-left: 1ex;"><div dir="ltr">If there are no substantive objections within 7 days from this email, then the NEP will be accepted; see NEP 0 for more details.</div></blockquote></div></div></blockquote></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-left: 0.8ex; padding-left: 1ex;"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-left: 0.8ex; padding-left: 1ex;"><div dir="ltr"><br></div></blockquote></div></div></blockquote></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-left: 0.8ex; padding-left: 1ex;"><div dir="ltr"><div class="gmail_quote"><div><br></div></div></div></blockquote></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-left: 0.8ex; padding-left: 1ex;"><div dir="ltr"><div class="gmail_quote"><div>I've merged the PR. What next?</div></div></div></blockquote></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-left: 0.8ex; padding-left: 1ex;"><div dir="ltr"><div class="gmail_quote"><div><br></div></div></div></blockquote></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-left: 0.8ex; padding-left: 1ex;"><div dir="ltr"><div class="gmail_quote"><div>Chuck </div></div></div></blockquote></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><div><br></div></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><div>I rolled back Chuck's merge of the "Acceptance" PR for this NEP because (1) it was not clear that if had reached consensus and (2) I still wanted to make a few changes based on this discussion.</div></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><div><br></div></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><div>I have now drafted these revisions to the NEP to clarify its stance around backwards compatibility, and the type of the "types" argument: <a href="https://github.com/numpy/numpy/pull/11943">https://github.com/numpy/numpy/pull/11943</a></div></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><div> </div></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><div>I have *not* included any form of the explicit "end-user opt-in" requested by Nathaniel. I don't think it is warranted based on the scope of anticipated future changes; see my earlier post [1] for details. Nobody has seriously suggested that we would release this functionality and later eliminate the ability to override NumPy functions entirely in the future.</div></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><div><br></div></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><div>Of course, requiring an onerous explicit opt-in would be fine while this feature is initially under development, and until we are sure that checks for overriding arbitrary NumPy functions are fast enough to be generally viable. In particular, we should verify that __array_function__ does not meaningfully impact performance for major downstream components of the SciPy stack. But I think running standard benchmark suites (e.g., with ASV) and user testing of release candidates would be enough.</div></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><div><br></div></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><div>If you have still have major objections to this version of proposal, please raise them unambiguously -- preferably with an formal veto [2].</div></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><div><br></div></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><div>Best,</div></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><div>Stephan</div></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><div><br></div></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><div>[1] <a href="https://mail.python.org/pipermail/numpy-discussion/2018-August/078669.html">https://mail.python.org/pipermail/numpy-discussion/2018-August/078669.html</a></div></div></div></div><div id="CanaryBody"><div dir="ltr"><div class="gmail_quote"><div>[2] <a href="https://docs.scipy.org/doc/numpy/dev/governance/governance.html">https://docs.scipy.org/doc/numpy/dev/governance/governance.html</a></div></div></div></div><div id="CanaryBody">_______________________________________________ </div><div id="CanaryBody">NumPy-Discussion mailing list </div><div id="CanaryBody">NumPy-Discussion@python.org </div><div id="CanaryBody">https://mail.python.org/mailman/listinfo/numpy-discussion </div></blockquote><div id="CanaryBody"><p></p><p></p><p></p><p> </p> <div></div><div>+1 from me. The edits are readable and clean, and a good compromise.</div> <p></p> <p></p> <p></p> <p></p> </div> <div id="CanarySig"><p></p><p></p><p></p><p> </p> <div> <div style="font-family:Helvetica;color:#000;font-size:13px;">Best Regards,<div>Hameer Abbasi</div></div> </div></div> <img id="E0E33894420CB621346969106FF58F72" width="1px" src="http://pixels.canarymail.io:8100/track/977C99C0645380AF45E168B4CDA443F5_E0E33894420CB621346969106FF58F72.png" height="1px"></body></html>