Pretty print the output of python stdlib `ast.parse`.
Project description
astpretty
Pretty print the output of python stdlib ast.parse
.
astpretty is intended to be a replacement for ast.dump
.
Installation
pip install astpretty
Usage
astpretty
provides two api functions:
astpretty.pprint(node, indent=FOUR_SPACE_INDENT, show_offsets=True)
Print a representation of the ast node.
>>> astpretty.pprint(ast.parse('if x == y: y += 4').body[0])
If(
lineno=1,
col_offset=0,
test=Compare(
lineno=1,
col_offset=3,
left=Name(lineno=1, col_offset=3, id='x', ctx=Load()),
ops=[Eq()],
comparators=[Name(lineno=1, col_offset=8, id='y', ctx=Load())],
),
body=[
AugAssign(
lineno=1,
col_offset=11,
target=Name(lineno=1, col_offset=11, id='y', ctx=Store()),
op=Add(),
value=Num(lineno=1, col_offset=16, n=4),
),
],
orelse=[],
)
indent
allows control over the indentation string:
>>> astpretty.pprint(ast.parse('if x == y: y += 4').body[0], indent=' ')
If(
lineno=1,
col_offset=0,
test=Compare(
lineno=1,
col_offset=3,
left=Name(lineno=1, col_offset=3, id='x', ctx=Load()),
ops=[Eq()],
comparators=[Name(lineno=1, col_offset=8, id='y', ctx=Load())],
),
body=[
AugAssign(
lineno=1,
col_offset=11,
target=Name(lineno=1, col_offset=11, id='y', ctx=Store()),
op=Add(),
value=Num(lineno=1, col_offset=16, n=4),
),
],
orelse=[],
)
show_offsets
controls whether the output includes line / column information:
>>> astpretty.pprint(ast.parse('x += 5').body[0], show_offsets=False)
AugAssign(
target=Name(id='x', ctx=Store()),
op=Add(),
value=Num(n=5),
)
astpretty.pformat(node, indent=FOUR_SPACE_INDENT, show_offsets=True)
Return a string representation of the ast node.
Arguments are identical to astpretty.pprint
.
>>> astpretty.pformat(ast.parse('if x == y: y += 4').body[0])
"If(\n lineno=1,\n col_offset=0,\n test=Compare(\n lineno=1,\n col_offset=3,\n left=Name(lineno=1, col_offset=3, id='x', ctx=Load()),\n ops=[Eq()],\n comparators=[Name(lineno=1, col_offset=8, id='y', ctx=Load())],\n ),\n body=[\n AugAssign(\n lineno=1,\n col_offset=11,\n target=Name(lineno=1, col_offset=11, id='y', ctx=Store()),\n op=Add(),\n value=Num(lineno=1, col_offset=16, n=4),\n ),\n ],\n orelse=[],\n)"
Comparison with stdlib ast.dump
>>> print(ast.dump(ast.parse('if x == y: y += 4').body[0]))
If(test=Compare(left=Name(id='x', ctx=Load()), ops=[Eq()], comparators=[Name(id='y', ctx=Load())]), body=[AugAssign(target=Name(id='y', ctx=Store()), op=Add(), value=Num(n=4))], orelse=[])
typed-ast
support
astpretty
works with typed-ast!
For usage with typed-ast
make sure you have typed-ast
installed, a
convenient way to do this is with the typed
extra to astpretty
:
pip install astpretty[typed]
The apis above work equally well with the return values from the ast
modules
provided by typed_ast
:
>>> import astpretty
>>> from typed_ast import ast3
>>> astpretty.pprint(ast3.parse('x = 4 # type: int'))
Module(
body=[
Assign(
lineno=1,
col_offset=0,
targets=[Name(lineno=1, col_offset=0, id='x', ctx=Store())],
value=Num(lineno=1, col_offset=4, n=4),
type_comment='int',
),
],
type_ignores=[],
)
With typed-ast
installed, the commandline interface adds --typed-27
and
--typed-3
options for using the alternative ast parsers:
$ astpretty --typed-3 t.py
Module(
body=[
Assign(
lineno=1,
col_offset=0,
targets=[Name(lineno=1, col_offset=0, id='x', ctx=Store())],
value=Num(lineno=1, col_offset=4, n=4),
type_comment='int',
),
],
type_ignores=[],
)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file astpretty-3.0.0.tar.gz
.
File metadata
- Download URL: astpretty-3.0.0.tar.gz
- Upload date:
- Size: 4.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b08c95f32e5994454ea99882ff3c4a0afc8254c38998a0ed4b479dba448dc581 |
|
MD5 | 6af044f722f2f23de86d927e5ddf09ba |
|
BLAKE2b-256 | 2db6ffec7edce2a8315ef1acd4ae2e334ba428db2b2e8d7577a9aaf1e434034d |
Provenance
File details
Details for the file astpretty-3.0.0-py2.py3-none-any.whl
.
File metadata
- Download URL: astpretty-3.0.0-py2.py3-none-any.whl
- Upload date:
- Size: 4.9 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 15bfd47593667169485a1fa7938b8de9445b11057d6f2b6e214b2f70667f94b6 |
|
MD5 | 66e31d7ab88a11c1f78360d8c6c091e8 |
|
BLAKE2b-256 | 9f0a79fff71a08bc0cc427f0dfbd4cca62b60f7f277aae81b89b79e9b04d526d |