This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author BTaskaya
Recipients BTaskaya, benjamin.peterson, pablogsal, serhiy.storchaka
Date 2020-03-16.19:17:20
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <[email protected]>
In-reply-to
Content
For omitting some defaults, @serhiy.storchaka already added support to initialize some ast nodes with some default values (optional fields). An example;
>>> ast.Constant().kind is None
True

This isn't exactly a default value, but some kind of class attribute. I think we can push this one step further and initialize all kinds of default values (both optionals and sequences). An example;
>>> func = ast.FunctionDef("easy_func", ast.arguments(), body=[ast.Pass()])
>>> func = ast.fix_missing_locations(func)
>>> exec(compile(ast.Module(body=[func]), "<stdin>", "exec"))
>>> easy_func()

compared to this (other way around, compiler gives errors so does most of the ast based tool, including ast.unparser)
>>> func = ast.FunctionDef("easy_func", ast.arguments(posonlyargs=[], args=[], kwonlyargs=[], kw_defaults=[], defaults=[]), decorator_list=[], body=[ast.Pass()])
>>> func = ast.fix_missing_locations(func)
>>> exec(compile(ast.Module(body=[func], type_ignores=[]), "<stdin>", "exec"))
>>> easy_func()
History
Date User Action Args
2020-03-16 19:17:20BTaskayasetrecipients: + BTaskaya, benjamin.peterson, serhiy.storchaka, pablogsal
2020-03-16 19:17:20BTaskayasetmessageid: <[email protected]>
2020-03-16 19:17:20BTaskayalinkissue39981 messages
2020-03-16 19:17:20BTaskayacreate