123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- Metadata-Version: 2.1
- Name: asttokens
- Version: 2.4.1
- Summary: Annotate AST trees with source code positions
- Home-page: https://github.com/gristlabs/asttokens
- Author: Dmitry Sagalovskiy, Grist Labs
- Author-email: dmitry@getgrist.com
- License: Apache 2.0
- Keywords: code,ast,parse,tokenize,refactor
- Classifier: Development Status :: 5 - Production/Stable
- Classifier: Intended Audience :: Developers
- Classifier: Topic :: Software Development :: Libraries :: Python Modules
- Classifier: Topic :: Software Development :: Code Generators
- Classifier: Topic :: Software Development :: Compilers
- Classifier: Topic :: Software Development :: Interpreters
- Classifier: Topic :: Software Development :: Pre-processors
- Classifier: Environment :: Console
- Classifier: Operating System :: OS Independent
- Classifier: Programming Language :: Python :: 2
- Classifier: Programming Language :: Python :: 2.7
- Classifier: Programming Language :: Python :: 3
- Classifier: Programming Language :: Python :: 3.5
- Classifier: Programming Language :: Python :: 3.6
- Classifier: Programming Language :: Python :: 3.7
- Classifier: Programming Language :: Python :: 3.8
- Classifier: Programming Language :: Python :: 3.9
- Classifier: Programming Language :: Python :: 3.10
- Classifier: Programming Language :: Python :: 3.11
- Classifier: Programming Language :: Python :: 3.12
- Classifier: Programming Language :: Python :: Implementation :: CPython
- Classifier: Programming Language :: Python :: Implementation :: PyPy
- License-File: LICENSE
- Requires-Dist: six >=1.12.0
- Requires-Dist: typing ; python_version < "3.5"
- Provides-Extra: astroid
- Requires-Dist: astroid <2,>=1 ; (python_version < "3") and extra == 'astroid'
- Requires-Dist: astroid <4,>=2 ; (python_version >= "3") and extra == 'astroid'
- Provides-Extra: test
- Requires-Dist: pytest ; extra == 'test'
- Requires-Dist: astroid <2,>=1 ; (python_version < "3") and extra == 'test'
- Requires-Dist: astroid <4,>=2 ; (python_version >= "3") and extra == 'test'
- ASTTokens
- =========
- .. image:: https://img.shields.io/pypi/v/asttokens.svg
- :target: https://pypi.python.org/pypi/asttokens/
- .. image:: https://img.shields.io/pypi/pyversions/asttokens.svg
- :target: https://pypi.python.org/pypi/asttokens/
- .. image:: https://github.com/gristlabs/asttokens/actions/workflows/build-and-test.yml/badge.svg
- :target: https://github.com/gristlabs/asttokens/actions/workflows/build-and-test.yml
- .. image:: https://readthedocs.org/projects/asttokens/badge/?version=latest
- :target: http://asttokens.readthedocs.io/en/latest/index.html
- .. image:: https://coveralls.io/repos/github/gristlabs/asttokens/badge.svg
- :target: https://coveralls.io/github/gristlabs/asttokens
- .. Start of user-guide
- The ``asttokens`` module annotates Python abstract syntax trees (ASTs) with the positions of tokens
- and text in the source code that generated them.
- It makes it possible for tools that work with logical AST nodes to find the particular text that
- resulted in those nodes, for example for automated refactoring or highlighting.
- Installation
- ------------
- asttokens is available on PyPI: https://pypi.python.org/pypi/asttokens/::
- pip install asttokens
- The code is on GitHub: https://github.com/gristlabs/asttokens.
- The API Reference is here: http://asttokens.readthedocs.io/en/latest/api-index.html.
- Usage
- -----
- ASTTokens works with both Python2 and Python3.
- ASTTokens can annotate both trees built by `ast <https://docs.python.org/2/library/ast.html>`_,
- AND those built by `astroid <https://github.com/PyCQA/astroid>`_.
- Here's an example:
- .. code-block:: python
- import asttokens, ast
- source = "Robot('blue').walk(steps=10*n)"
- atok = asttokens.ASTTokens(source, parse=True)
- Once the tree has been marked, nodes get ``.first_token``, ``.last_token`` attributes, and
- the ``ASTTokens`` object offers helpful methods:
- .. code-block:: python
- attr_node = next(n for n in ast.walk(atok.tree) if isinstance(n, ast.Attribute))
- print(atok.get_text(attr_node))
- start, end = attr_node.last_token.startpos, attr_node.last_token.endpos
- print(atok.text[:start] + 'RUN' + atok.text[end:])
- Which produces this output:
- .. code-block:: text
- Robot('blue').walk
- Robot('blue').RUN(steps=10*n)
- The ``ASTTokens`` object also offers methods to walk and search the list of tokens that make up
- the code (or a particular AST node), which is more useful and powerful than dealing with the text
- directly.
- Contribute
- ----------
- To contribute:
- 1. Fork this repository, and clone your fork.
- 2. Install the package with test dependencies (ideally in a virtualenv) with::
- pip install -e '.[test]'
- 3. Run tests in your current interpreter with the command ``pytest`` or ``python -m pytest``.
- 4. Run tests across all supported interpreters with the ``tox`` command. You will need to have the interpreters installed separately. We recommend ``pyenv`` for that. Use ``tox -p auto`` to run the tests in parallel.
- 5. By default certain tests which take a very long time to run are skipped, but they are run on travis CI. To run them locally, set the environment variable ``ASTTOKENS_SLOW_TESTS``. For example run ``ASTTOKENS_SLOW_TESTS=1 tox`` to run the full suite of tests.
|