用源代码位置注释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第三方库


热门话题
java如何在wicket中创建元素<a>   java如何将字节/整数转换为十六进制以雕刻文件   javajavafx:为什么不管我传递给'textArea'的是什么类型的'changeListener'都无法编译。getKeyPressedProperty()。addListener`   java自定义Listview性能不佳,Listview项名称从数据库转换   单元测试java。lang.AssertionError:响应内容   java如何使用highchart缩放条形图?   RouterFunction中的java Why谓词字段。DefaultRouterFunction<T extends ServerResponse>类获取DefaultErrorWebExceptionHandler?   java我可以用Map<String,Integer>覆盖Map<Integer,Integer>吗?   java Log4j文件已创建但为空   java无法解析JavaCV中的导入   Sun PKCS11实现的java 64位替代方案   java Hibernate与JDO makeTransient的等价物是什么   java从嵌套的switch语句退出到外部switch语句   java Android保留一个位图作为更改色调、对比度、饱和度等的源   java Mule ESB 3.5创建ws-client时出错   java数组循环将自身乘以1024   java数据库自动更新失败   java递归ConcurrentHashMap。ComputeFabSent()调用永远不会终止。Bug还是“功能”?   java是否为调用方方法中正在处理的异常执行hibernate回滚事务?