Metadata-Version: 1.2
Name: xylem
Version: 0.9.0
Summary: Convert Python Abstract Syntax Trees to readable source code
Home-page: https://github.com/arantonitis/xylem
Author: Ariel Antonitis
Author-email: arant@mit.edu
License: MIT
Description: .. |pypi| image:: https://img.shields.io/pypi/v/xylem.svg
        .. _pypi: https://pypi.python.org/pypi/xylem
        .. |license| image:: https://img.shields.io/github/license/arantonitis/xylem.svg
        .. _license: https://github.com/arantonitis/xylem/tree/master/LICENSE
        
        Xylem
        *****
        |pypi|_ |license|_
        
        Convert Python Abstract Syntax Trees (ASTs) to readable source code.
        
        Xylem is useful for when you want to make dynamic changes to Python code/ASTs, but also need to write those changes back as source code.
        
        It's also very small (~600 lines), and pure-Python, and produces (mostly) readable source code.
        
        In writing this, I made heavy use of the unofficial AST documentation at `Green Tree Snakes`_.
        
        .. _Green Tree Snakes: https://greentreesnakes.readthedocs.io
        
        Installation
        ============
        Xylem will work on Python 3.4 or later. I'll eventually get around to testing it on Python 2.7-3.3.
        
        From PyPI
        ---------
        Install Xylem by running ``pip3 install xylem`` from the command line.
        
        .. note::
        
           On some Linux systems, installation may require running pip with root permissions, or running ``pip3 install xylem --user``. The latter may require exporting `~/.local/bin` to PATH.
           
        From GitHub
        -----------
        Clone or download the `git repo`_, navigate to the directory, and run::
        
            python3 setup.py sdist
            cd dist
            pip3 install xylem-<version>.tar.gz
            
        .. _git repo: https://github.com/arantonitis/xylem
        
        Usage
        =====
        ``to_source`` is likely the only method you'll need to use:
        
        .. code-block:: python
        
            >>> from xylem import to_source
            >>> import ast
            >>> tree = ast.parse("print('hello world')")
            >>> ast.dump(tree)
            "Module(body=[Expr(value=Call(func=Name(id='print', ctx=Load()), args=[Str(s='Hello world')], keywords=[]))])"
            >>> to_source(tree)
            "print('hello world')"
        
        ``compare_ast`` may also be useful for determining if two ASTs are functionally equivalent.
        
        Development
        ===========
        Xylem versioning functions on a ``MAJOR.MINOR.PATCH.[DEVELOP]`` model. Only stable, non development releases will be published to PyPI. Because Xylem is still a beta project, the ``MAJOR`` increment will be 0. Minor increments represent new features. Patch increments represent problems fixed with existing features.
        
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Code Generators
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Requires-Python: >=3.4
