键入astuparse是键入ast,正如键入astuparse是键入ast一样
typed-astunparse的Python项目详细描述
python 3抽象语法树(asts)的unparser,带有类型注释。
类型的astuparse是类型的ast的,因为astuparse是ast的。简而言之:python的解组 3个带有类型注释的抽象语法树(AST)。
内容
为什么创建此模块
内置的ast模块可以将python源代码解析为ast,但不能生成源代码 来自AST的代码。astuparse模块(使用模糊的重构版本 在正式的python存储库中找到的脚本)为本机 Python阿斯特。
但是,ast和astuparse模块都完全忽略
政治公众人物484。它们将它们视为所有其他注释,因此当您使用
compile()
,您的类型注释将丢失。在AST没有他们的位置,所以
显然,它们也不能被拆穿。
typed ast模块提供更新的ast,包括pep 484和 包含此类注释的python代码的解析器。
不幸的是,typed ast没有提供从ast返回类型为的源代码的任何方法 评论。这就是创建模块typed astuparse的原因:提供unparser 对于在类型的ast中定义的ast。
用法
从代码到ast到代码的往返示例:
importtyped_ast.ast3importtyped_astunparsecode='my_string = None # type: str'roundtrip=typed_astunparse.unparse(typed_ast.ast3.parse(code))print(roundtrip)
这将打印:
my_string=None# type: str
有关更多示例,请参见examples.ipynb笔记本。
安装
对于最简单的安装使用pip
:
pip3 install typed-astunparse
您也可以构建自己的版本:
git clone https://github.com/mbdevpl/typed-astunparse cd typed-astunparse pip3 install -U test_requirements.txt python3 -m unittest # make sure the tests pass python3 setup.py bdist_wheel pip3 install dist/*.whl
要求
python 3.5或更高版本。
在requirements.txt中指定的python库。
生成和运行测试还需要test_requirements.txt中列出的包。
在Linux、OS X和Windows上测试。
链接
此模块的扩展
如果您要扩展键入的astuparse并想分享原因, 请随意提交pull request 介绍你的项目。
horast:以人为本的ast
构建在type ast和type ast unparse之上,提供解析和unparsing 除了类型注释之外的任意注释。
谁在使用这个模块以及为什么
如果你在工作中使用键入的astuparse,并且你想分享原因, 请随意提交pull request 介绍你的项目。
static typing:直接使用typed ast unparse提供ast unparsing函数
参考文献
ast:
astuparse:
https://pypi.org/project/astunparse
PEP 483-类型提示理论:
PEP 484-键入提示:
PEP 3107-功能注释:
PEP 526-变量注释的语法:
键入ast: