Metadata-Version: 2.0
Name: horast
Version: 0.2.0.dev2
Summary: human-oriented ast parser/unparser
Home-page: https://mbdevpl.github.io/
Author: Mateusz Bysiek
Author-email: mb@mbdev.pl
License: Apache License 2.0
Download-URL: https://github.com/mbdevpl/horast
Keywords: ast,parsing,unparsing,comments
Platform: UNKNOWN
Classifier: Development Status :: 1 - Planning
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Natural Language :: English
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Education
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Software Development :: Code Generators
Classifier: Topic :: Software Development :: Compilers
Classifier: Topic :: Software Development :: Pre-processors
Classifier: Topic :: Utilities
Requires-Python: >=3.4
Requires-Dist: asttokens
Requires-Dist: typed-ast (>=1.1.0)
Requires-Dist: typed-astunparse
Requires-Dist: version-query
Requires-Dist: typing (>=3.5); python_version < "3.5"

.. role:: python(code)
    :language: python


horast
======

.. image:: https://img.shields.io/pypi/v/horast.svg
    :target: https://pypi.python.org/pypi/horast
    :alt: package version from PyPI

.. image:: https://travis-ci.org/mbdevpl/horast.svg?branch=master
    :target: https://travis-ci.org/mbdevpl/horast
    :alt: build status from Travis CI

.. image:: https://ci.appveyor.com/api/projects/status/github/mbdevpl/horast?svg=true
    :target: https://ci.appveyor.com/project/mbdevpl/horast
    :alt: build status from AppVeyor

.. image:: https://api.codacy.com/project/badge/Grade/33195093bb1b448bb9a5368b3507d615
    :target: https://www.codacy.com/app/mbdevpl/horast
    :alt: grade from Codacy

.. image:: https://coveralls.io/repos/github/mbdevpl/horast/badge.svg?branch=master
    :target: https://coveralls.io/github/mbdevpl/horast
    :alt: test coverage from Coveralls

.. image:: https://img.shields.io/pypi/l/horast.svg
    :target: https://github.com/mbdevpl/horast/blob/master/NOTICE
    :alt: license

Attempt at a human-oriented abstract syntax tree (AST) parser/unparser for Python 3.

This package provides new AST node types which inherit from nodes in typed_ast.ast3 module.
Additionally, it provides implementation of parser and unparser for the extended ASTs.

Simple example of how to use this package:

.. code:: python

    from horast import parse, unparse

    tree = parse("""a = 1  # a equals one after this""")
    print(unparse())
    # this will print the code with original comment

More examples in `<examples.ipynb>`_.

technical details
-----------------

Parser is based on built-in tokenize module and typed_ast.ast3.parse() function.

Unparser is essentially an extension of Unparser class from typed_astunparse package.

Nodes provided and handled by horast are listed below.


Comment
~~~~~~~

Full line as well as end-of-line comments are parsed/unparsed correctly when they are outside
of multi-line expressions.

Currently, handling of comments within multi-line expressions is implemented only partially.


Docstring
~~~~~~~~~

To do.


requirements
------------

CPython >= 3.4.

Python libraries as specified in `<requirements.txt>`_.

Building and running tests additionally requires packages listed in `<dev_requirements.txt>`_.


