用源代码位置注释ast树

asttokens的Python项目详细描述


https://img.shields.io/pypi/v/asttokens.svghttps://img.shields.io/pypi/pyversions/asttokens.svghttps://travis-ci.org/gristlabs/asttokens.svg?branch=masterhttps://readthedocs.org/projects/asttokens/badge/?version=latest

asttokens模块用标记的位置注释python抽象语法树(ast) 以及生成它们的源代码中的文本。

它使得使用逻辑ast节点的工具能够找到 生成这些节点,例如用于自动重构或突出显示。

安装

astTokens在pypi上可用:https://pypi.python.org/pypi/asttokens/

pip install asttokens

代码在github上:https://github.com/gristlabs/asttokens

api引用在这里:http://asttokens.readthedocs.io/en/latest/api-index.html

用法

astTokens同时适用于python2和python3。

astTokens可以注释由ast, 以及那些由astroid建造的。

下面是一个示例:

importasttokens,astsource="Robot('blue').walk(steps=10*n)"atok=asttokens.ASTTokens(source,parse=True)

标记树后,节点将获得.first_token.last_token属性,以及 ASTTokens对象提供了有用的方法:

attr_node=next(nforninast.walk(atok.tree)ifisinstance(n,ast.Attribute))print(atok.get_text(attr_node))start,end=attr_node.last_token.startpos,attr_node.last_token.endposprint(atok.text[:start]+'RUN'+atok.text[end:])

从而产生此输出:

Robot('blue').walk
Robot('blue').RUN(steps=10*n)

ASTTokens对象还提供了遍历和搜索组成 代码(或特定的ast节点),它比处理文本更有用、更强大 直接的。

测试

测试位于tests/子目录中。要运行所有测试,请运行:

nosetests

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何上传文件。HTML/Javascript格式的mp3文件并发送到Java后端   eclipse问题:使用Selenium WebDriver(java)从下拉列表中查找元素   java如何通过通知恢复应用程序   java Repast聚合数据集,但在Repast Simphony中分别针对每个实例   java为什么收到Http/1.1400错误请求?   java如何简单地检查请求体是否为空或请求体是否有空字段?   java JTable:如何避免重复行和聚合项目数量   java如何部署和访问Dropwizard应用程序   java找不到基本类weblogic。部署者   JavaSpringWebMVC互动程序从相同的定义扩展而来   javascript Xsl transformToDocument不适用于chrome浏览器,但适用于firefox   java创建存储泛型类型对象的ArrayList数组   如何在Java中禁用抛出异常或fillInStackTrace()   使用ConstraintValidator使用两种类型进行java自定义bean验证   java组织。百里香。例外情况。TemplateProcessingException:连接href