Skip to main content

An AST unparser for Python

Project description

https://badge.fury.io/py/astunparse.png https://travis-ci.org/simonpercivall/astunparse.png?branch=master https://readthedocs.org/projects/astunparse/badge/

An AST unparser for Python.

This is a factored out version of unparse found in the Python source distribution; under Demo/parser in Python 2 and under Tools/parser in Python 3.

Basic example:

import inspect
import ast
import astunparse

# get back the source code
astunparse.unparse(ast.parse(inspect.getsource(ast)))

# get a pretty-printed dump of the AST
astunparse.dump(ast.parse(inspect.getsource(ast)))

This library is single-source compatible with Python 2.6 through Python 3.5. It is authored by the Python core developers; I have simply merged the Python 2.7 and the Python 3.5 source and test suites, and added a wrapper. This factoring out is to provide a library implementation that supports both versions.

Added to this is a pretty-printing dump utility function.

The test suite both runs specific tests and also roundtrips much of the standard library.

Extensions and Alternatives

Similar projects include:

None of these roundtrip much of the standard library and fail several of the basic tests in the test_unparse test suite.

This library uses mature and core maintained code instead of trying to patch existing libraries. The unparse and the test_unparse modules are under the PSF license.

Extensions include:

  • typed-astunparse: extends astunparse to support type annotations.

Features

  • unparses Python AST.

  • pretty-prints AST.

Changelog

Here’s the recent changes to AST Unparser.

1.6.3 - 2019-12-22

  • Add full support for Python 3.8

1.6.2 - 2019-01-19

  • Add support for the Constant node in Python 3.8

  • Add tests to the sdist

1.6.1 - 2018-10-03

  • Fix the roundtripping of very complex f-strings.

1.6.0 - 2018-09-30

  • Python 3.7 compatibility

1.5.0 - 2017-02-05

  • Python 3.6 compatibility

  • bugfix: correct argparser option type

1.4.0 - 2016-06-24

  • Support for the async keyword

  • Support for unparsing “Interactive” and “Expression” nodes

1.3.0 - 2016-01-17

  • Python 3.5 compatibility

1.2.0 - 2014-04-03

  • Python 2.6 through 3.4 compatibility

  • A new function dump is added to return a pretty-printed version of the AST. It’s also available when running python -m astunparse as the --dump argument.

1.1.0 - 2014-04-01

  • unparse will return the source code for an AST. It is pretty feature-complete, and round-trips the stdlib, and is compatible with Python 2.7 and Python 3.4.

    Running python -m astunparse will print the round-tripped source for any python files given as argument.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

astunparse-1.6.3.tar.gz (18.3 kB view details)

Uploaded Source

Built Distribution

astunparse-1.6.3-py2.py3-none-any.whl (12.7 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file astunparse-1.6.3.tar.gz.

File metadata

  • Download URL: astunparse-1.6.3.tar.gz
  • Upload date:
  • Size: 18.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.5

File hashes

Hashes for astunparse-1.6.3.tar.gz
Algorithm Hash digest
SHA256 5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872
MD5 2cea4d8e49beba7684bac890e73d6a40
BLAKE2b-256 f3af4182184d3c338792894f34a62672919db7ca008c89abee9b564dd34d8029

See more details on using hashes here.

Provenance

File details

Details for the file astunparse-1.6.3-py2.py3-none-any.whl.

File metadata

  • Download URL: astunparse-1.6.3-py2.py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.5

File hashes

Hashes for astunparse-1.6.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c2652417f2c8b5bb325c885ae329bdf3f86424075c4fd1a128674bc6fba4b8e8
MD5 d24e46166555fe1917398f6d7c016dad
BLAKE2b-256 2b0313dde6512ad7b4557eb792fbcf0c653af6076b81e5941d36ec61f7ce6028

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page