Closed
Description
Bug report
Bug description:
In 3.13 we changed ast.dump()
to not show empty values (None
or the empty list) by default. However, this is based purely on the value of individual attributes:
>>> ast.dump(ast.Name(id="x"))
"Name(id='x', ctx=Load())"
>>> ast.dump(ast.Name(id=None))
'Name(ctx=Load())'
>>> ast.dump(ast.Name(id=[]))
'Name(ctx=Load())'
Instead, this logic should look at the node's _field_types
and use the same logic we use to determine whether to allow omitting the argument in calls to the constructor: elide None if the type is a union including None, elide []
if the type is a list, and elide Load()
if the type is an expr_context.
CPython versions tested on:
CPython main branch
Operating systems tested on:
No response