Closed
Description
Feature or enhancement
Proposal:
I often use ast.parse
in the terminal to explore what the AST looks like:
>>> ast.parse("x = 3")
<ast.Module object at 0x105450b50>
But I have to remember to use ast.dump()
to get useful output:
>>> ast.dump(ast.parse("x = 3"))
"Module(body=[Assign(targets=[Name(id='x', ctx=Store())], value=Constant(value=3))], type_ignores=[])"
It would be nice if the default repr() of AST nodes was more like the output of ast.dump()
, so it's easier to see at a glance how it works.
One concern would be around the size of the output:
>>> from pathlib import Path
>>> import typing
>>> typing_py = Path(typing.__file__).read_text()
>>> len(ast.dump(ast.parse(typing_py)))
304244
As a middle ground, we could limit the depth of the AST provided in the repr(), e.g. to 2 levels, and also the number of list elements provided.
The repr() of a module's AST might then look something like:
Module(body=[Expr(value=Constant(...)), ..., Assign(targets=[Name(...)], value=Constant(...))], type_ignores=[])
Has this already been discussed elsewhere?
This is a minor feature, which does not need previous discussion elsewhere
Links to previous discussion of this feature:
No response