On Apr 11, 2007, at 4:01 AM, Tobias Ivarsson wrote:
I am just curiously wondering about the plans for introducing function annotations (PEP 3107). I could not find any information about this in the PEP, neither when I searched the mail archives. The way I see it this feature could be quite interesting to introduce as early as possible since I believe that there are quite a few tools that could benefit from this today. I could for example see Jython using function annotations for declaring methods that are supposed to be accessible from java code. This is done via annotations in the doc string today, and would be a lot clearer using function annotations. Jython could implement this use of function annotations without python supporting it, but that would make the code incompatible between python and Jython, which would be highly unfortunate. Therefore i propose that python adds support for function annotations in version 2.6 via from __future__ import function_annotations This would make the change as compatible as for example @decorators or the with-statement.
Function annotations PEP is accepted and code has been checked in to p3yk. I don't think there would be much support for the syntax in 2.6, but I could be wrong. A more palatable compatibility strategy may be to introduce a decorator that sets function.__annotations__, so that these two function definitions would have equivalent annotations:
@annotate(int, int, returns=int)
... def gcd1(m, n): ... etc
def gcd2(m: int, n: int) -> int:
It's easier for a decorator to be compatible with run-time semantics, and more likely to avoid syntax questions, than embedding the annotattions in docstrings. Source code conversion (2to3) could change the @annotate decorator form to the in-line function form. Tools could be written to use either annotation set.
What do y'all think?