<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Aug 14, 2014 at 7:08 AM, Christian Heimes <span dir="ltr"><<a href="mailto:christian@python.org" target="_blank">christian@python.org</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div id=":pw" class="a3s" style="overflow:hidden">As I tried to explain earlier neither users nor tools are able to<br>


analyze code like builtin types and functions. Exception annotations<br>
could help IDEs to figure out what kind of exception could be raised.<br>
Does it sound better to you?</div></blockquote></div><br></div><div class="gmail_extra">It does, but it remains that annotations about exceptions will probably be inconsistent or incomplete:<br><ol><li>If the function is changed, the annotation will remain valid even if the mentioned exceptions are not raised (this is the typical doc-comment problem).<br>

</li><li>The annotation cannot be validated unless the raisables of called functions (objects, actually) are analysed.<br></li></ol></div><div class="gmail_extra">Dealing with #2 means going the Java way and promoting incorrect exception handlers throughout.<br>

<br></div><div class="gmail_extra">Not dealing with #2 means that the annotations are for documentation purposes only, so the same information can go in the doc-comment.<br><br></div><div class="gmail_extra">This situation is unlike that for the proposed type signatures, because the intent for those is that they are strictly verified (with mypy or some other).<br>

<br></div><div class="gmail_extra">In short, an exceptions signature would amount to: <br><br>"This function may or may not raise the listed exceptions, and it may also raise other exceptions not in the list.".<br>

<br></div><div class="gmail_extra">Yet, #2 can be dealt with by not being strict, and issuing warnings when things seem broken, taking note that the Python callables that can raise exceptions are not only functions and methods, but anything for which callable(o)==True.<br>

</div><div class="gmail_extra"><br></div><div class="gmail_extra">Cheers,<br clear="all"></div><div class="gmail_extra"><br>-- <br><span style="color:rgb(0,102,0)">Juancarlo </span><b style="color:rgb(0,102,0)">AƱez</b>
</div></div>