On 1/29/2021 8:57 PM, Guido van Rossum wrote:
> On Fri, Jan 29, 2021 at 5:39 PM Terry Reedy <tjreedy@udel.edu
> <mailto:tjreedy@udel.edu>> wrote:
>
> Guido, thank you for the helpful discussion. I now think that we
> should
> just add 'end_lineno=None' at the end of the Function/Class __init__
> signatures. pyclbr makes one call to each to contruct the tree it
> returns, and the test functions make another call to each.
>
> If those are the only two calls to each, it hardly matters what they
> look like. If there are non-stdlib calls, it is not worth breaking
> them. And others might well localize their Function/Class calls within
> wrappers similar to _nest_function() and _nest_class().
>
>
> Okay, I wasn't quite ready to recommend this, but I agree that that's
> the most compatible solution. (Put a `*` before the optional arg so it
> must be specified as a keyword.)
I presume you mean immediately before 'end_lineno', as putting it before
all optional params would break positional passing.
> A more important pyclbr issue, I think, is that readline and
> readline_ex
> return a 'half node', a dict of children, instead of a Module node. It
> is a nuisance, such as when constructing IDLE's module browser
> tree. It
> is the same as if ast_parse were to return the body list of ast.Module
> instead of ast.Module itself. A readmodule() function could return a
> proper tree with a root Module node, with attributes file, name, lineno
> (1), end_lineno, and children.
>
> Sounds good. Thanks for caring about this very old module! (I am not
> 100% sure of its origins but I think it may have been written in
> Python's earliest years by one of my office mates, Sjoerd Mullender.)
Adding a new API would be an opportunity to 'do it right'. The test of
it being an improvement is if it allows simplification of the module
browser code.
--
Terry Jan Reedy
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-leave@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/KAQBTNC5R5IHHXKPUIVMKAPFTNIHE7BK/
Code of Conduct: http://python.org/psf/codeofconduct/