From 814d687c7df3e0c60036943b68ece13f9f19dfef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Batuhan=20Ta=C5=9Fkaya?= <47358913+isidentical@users.noreply.github.com> Date: Mon, 16 Dec 2019 21:23:27 +0300 Subject: [PATCH] bpo-38348: Extend command line options of ast parsing tool (GH-16540) Add -i and --indent (indentation level), and --no-type-comments (type comments) command line options to ast parsing tool. --- Doc/library/ast.rst | 9 +++++++++ Lib/ast.py | 8 ++++++-- .../Library/2019-10-02-18-15-28.bpo-38348._-5eq2.rst | 2 ++ 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2019-10-02-18-15-28.bpo-38348._-5eq2.rst diff --git a/Doc/library/ast.rst b/Doc/library/ast.rst index a7e0729b902..baf563f5d78 100644 --- a/Doc/library/ast.rst +++ b/Doc/library/ast.rst @@ -381,10 +381,19 @@ The following options are accepted: Specify what kind of code must be compiled, like the *mode* argument in :func:`parse`. +.. cmdoption:: --no-type-comments + + Don't parse type comments. + .. cmdoption:: -a, --include-attributes Include attributes such as line numbers and column offsets. +.. cmdoption:: -i + --indent + + Indentation of nodes in AST (number of spaces). + If :file:`infile` is specified its contents are parsed to AST and dumped to stdout. Otherwise, the content is read from stdin. diff --git a/Lib/ast.py b/Lib/ast.py index 13ae9e0a70e..ee3f74358ee 100644 --- a/Lib/ast.py +++ b/Lib/ast.py @@ -1258,15 +1258,19 @@ def main(): parser.add_argument('-m', '--mode', default='exec', choices=('exec', 'single', 'eval', 'func_type'), help='specify what kind of code must be parsed') + parser.add_argument('--no-type-comments', default=True, action='store_false', + help="don't add information about type comments") parser.add_argument('-a', '--include-attributes', action='store_true', help='include attributes such as line numbers and ' 'column offsets') + parser.add_argument('-i', '--indent', type=int, default=3, + help='indentation of nodes (number of spaces)') args = parser.parse_args() with args.infile as infile: source = infile.read() - tree = parse(source, args.infile.name, args.mode, type_comments=True) - print(dump(tree, include_attributes=args.include_attributes, indent=3)) + tree = parse(source, args.infile.name, args.mode, type_comments=args.no_type_comments) + print(dump(tree, include_attributes=args.include_attributes, indent=args.indent)) if __name__ == '__main__': main() diff --git a/Misc/NEWS.d/next/Library/2019-10-02-18-15-28.bpo-38348._-5eq2.rst b/Misc/NEWS.d/next/Library/2019-10-02-18-15-28.bpo-38348._-5eq2.rst new file mode 100644 index 00000000000..5ca72dea977 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-10-02-18-15-28.bpo-38348._-5eq2.rst @@ -0,0 +1,2 @@ +Add ``-i`` and ``--indent`` (indentation level), and ``--no-type-comments`` +(type comments) command line options to ast parsing tool.