[Python-3000] Draft pre-PEP: function annotations
paul at prescod.net
Mon Aug 14 22:20:54 CEST 2006
On 8/14/06, Collin Winter <collinw at gmail.com> wrote:
> The way I read this, it forces (more or less) each
> annotation-consuming library to invent new ways to spell Python's
> built-in types.
I think that this is related to your other question. What if an annotation
consuming library wanted to use Python's built-in types nested within their
own top-level structures.
def foo(a: xxx([x, y, z])): ...
I would say that the innermost list has its semantics (as metadata) defined
by "xxx", not raw Python. That's the only reasonable thing.
> "This implies that the interpretation of built-in types would be
> > by Python's developers and documented in Python's documentation.
> The inherent difficulty in defining a standard interpretation for
> these types is what motivated me to leave this up to the authors of
> annotation consumers.
There are three issues: first, we need to RESERVE the types for
standardization by Guido and crew. Second, we can decide to do the
standardization at any point. Third, we absolutely need a standard for
multiple independent annotations on a parameter. Using lists is a
no-brainer. So let's do that.
If you have an idea, though, feel free to propose something concrete.
Yes, my proposal is here:
> "In Python 3000, semantics will be attached to the following types:
> > of type string (or subtype of string) are to be used for documentation
> > (though they are not necessarily the exclusive source of documentation
> > the type). Objects of type list (or subtype of list) are to be used for
> > attaching multiple independent annotations."
> Does this mean all lists "are to be used for attaching multiple
> independent annotations", or just top-level lists (ie, "def foo(a: [x,
> y])" indicates two independent annotations)? What does "def foo(a: [x,
> [y, z]])" indicate?
I meant only top-level lists. I hadn't thought through nesting.
def foo(a: [x, y, [a, b, c]]): ...
This should probably be just handled recursively or disallowed. I don't feel
strongly either way.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Python-3000