[Python-Dev] [Python-checkins] peps: Update for 436, explicitly supporting positional parameters forever, amen.

Guido van Rossum guido at python.org
Mon Mar 18 19:04:39 CET 2013


On Mon, Mar 18, 2013 at 8:57 AM, Nick Coghlan <ncoghlan at gmail.com> wrote:
> On Mon, Mar 18, 2013 at 1:47 AM, larry.hastings
> <python-checkins at python.org> wrote:
>>  Notes / TBD
>>  ===========
>>
>> +* The DSL currently makes no provision for specifying per-parameter
>> +  type annotations.  This is something explicitly supported in Python;
>> +  it should be supported for builtins too, once we have reflection support.
>> +
>> +  It seems to me that the syntax for parameter lines--dictated by
>> +  Guido--suggests conversion functions are themselves type annotations.
>> +  This makes intuitive sense.  But my thought experiments in how to
>> +  convert the conversion function specification into a per-parameter
>> +  type annotation ranged from obnoxious to toxic; I don't think that
>> +  line of thinking will bear fruit.
>> +
>> +  Instead, I think wee need to add a new syntax allowing functions
>> +  to explicitly specify a per-parameter type annotation.  The problem:
>> +  what should that syntax be?  I've only had one idea so far, and I
>> +  don't find it all that appealing: allow a optional second colon
>> +  on the parameter line, and the type annotation would be specified...
>> +  somewhere, either between the first and second colons, or between
>> +  the second colon and the (optional) default.
>> +
>> +  Also, I don't think this could specify any arbitrary Python value.
>> +  I suspect it would suffer heavy restrictions on what types and
>> +  literals it could use.  Perhaps the best solution would be to
>> +  store the exact string in static data, and have Python evaluate
>> +  it on demand?  If so, it would be safest to restrict it to Python
>> +  literal syntax, permitting no function calls (even to builtins).
>> +
>
> I think the hack we're using for the default-as-shown-in-Python will
> work here as well: use the converter parameterisation notation.
>
> Then "pydefault" (I think that is a better name than the current
> "default") and "pynote" would control what is shown for the conversion
> in the first line of the docstring and in any future introspection
> support. If either is not given, then the C default would be passed
> through as the Python default and the annotation would be left blank.

Right. In fact, I think the decision of what (if anything) should be
put in the annotation should be up to the converter class. It can be a
specific method on the converter object.

-- 
--Guido van Rossum (python.org/~guido)


More information about the Python-Dev mailing list