[Python-3000] Draft pre-PEP: function annotations (original) (raw)
Paul Prescod paul at prescod.net
Mon Aug 14 22:20:54 CEST 2006
- Previous message: [Python-3000] Draft pre-PEP: function annotations
- Next message: [Python-3000] Draft pre-PEP: function annotations
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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 controlled > 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: objects > of type string (or subtype of string) are to be used for documentation > (though they are not necessarily the exclusive source of documentation about > 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.
Paul Prescod -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.python.org/pipermail/python-3000/attachments/20060814/ff1b6d61/attachment.html
- Previous message: [Python-3000] Draft pre-PEP: function annotations
- Next message: [Python-3000] Draft pre-PEP: function annotations
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]