[3.13] gh-134718: Fix ast.dump() for empty non-default values (GH-134926) (GH-134936)

(cherry picked from commit cc344e8dd0)
This commit is contained in:
Serhiy Storchaka 2025-05-30 18:48:48 +03:00 committed by GitHub
parent 7fdc829bc2
commit 681856c194
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 24 additions and 12 deletions

View file

@ -151,18 +151,16 @@ def dump(
if value is None and getattr(cls, name, ...) is None:
keywords = True
continue
if (
not show_empty
and (value is None or value == [])
# Special cases:
# `Constant(value=None)` and `MatchSingleton(value=None)`
and not isinstance(node, (Constant, MatchSingleton))
):
args_buffer.append(repr(value))
continue
elif not keywords:
args.extend(args_buffer)
args_buffer = []
if not show_empty:
if value == []:
field_type = cls._field_types.get(name, object)
if getattr(field_type, '__origin__', ...) is list:
if not keywords:
args_buffer.append(repr(value))
continue
if not keywords:
args.extend(args_buffer)
args_buffer = []
value, simple = _format(value, level)
allsimple = allsimple and simple
if keywords:

View file

@ -1346,12 +1346,24 @@ Module(
full="MatchSingleton(value=None)",
)
check_node(
ast.MatchSingleton(value=[]),
empty="MatchSingleton(value=[])",
full="MatchSingleton(value=[])",
)
check_node(
ast.Constant(value=None),
empty="Constant(value=None)",
full="Constant(value=None)",
)
check_node(
ast.Constant(value=[]),
empty="Constant(value=[])",
full="Constant(value=[])",
)
check_node(
ast.Constant(value=""),
empty="Constant(value='')",

View file

@ -0,0 +1,2 @@
:func:`ast.dump` now only omits ``None`` and ``[]`` values if they are
default values.