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
_______________________________________________ Python-3000 mailing list [email protected] http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com
