On 19 Mar, 2013, at 10:24, Larry Hastings <la...@hastings.org> wrote:
> 
> 
>>> We'd want one more mild hack: the DSL will support positional 
>>> parameters, and inspect.Signature supports positional parameters, so 
>>> it'd be nice to render that information.  But we can't represent that in 
>>> Python syntax (or at least not yet!), so we can't let ast.parse see it. 
>>> My suggestion: run it through ast.parse, and if it throws a SyntaxError 
>>> see if the problem was a slash.  If it was, remove the slash, reprocess 
>>> through ast.parse, and remember that all parameters are positional-only 
>>> (and barf if there are kwonly, args, or kwargs). 
>> 
>> It will be simpler to use some one-character separator which shouldn't be 
>> used unquoted in the signature. I.e. LF.
> 
> I had trouble understanding what you're suggesting.  What I think you're 
> saying is, "normally these generated strings won't have LF in them.  So let's 
> use LF as a harmless extra character that means 'this is a positional-only 
> signature'."
> 
> At one point Guido suggested / as syntax for exactly this case.  And while 
> the LF approach is simpler programmatically, removing the slash and reparsing 
> isn't terribly complicated; this part will be in Python, after all.  
> Meanwhile, I suggest that for human readability the slash is way more 
> obvious--having a LF in the string mean this is awfully subtle.

You could also add the slash to the start of the signature, for example 
"/(arg1, arg2)", that way the positional only can be detected without trying to 
parse it first and removing a slash at the start is easier than removing it 
somewhere along a signature with arbitrary default values, such as "(arg1='/', 
arg2=4 /) -> 'arg1/arg2'".  The disadvantage is that you can't specify that 
only some of the arguments are positional-only, but that's not supported by 
PyArg_Parse... anyway.

Ronald

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to