字节码和ast编程工具
meta的Python项目详细描述
元
一个纯python模块,包含一个用于操作和分析的框架 python抽象语法树和字节码。
示例
这将演示如何将python源代码带到代码对象,然后从python中再次返回:
importmeta,astsource=''' a = 1 b = 2 c = (a ** b) '''mod=ast.parse(source,'<nofile>','exec')code=compile(mod,'<nofile>','exec')mod2=meta.decompile(code)source2=meta.dump_python_source(mod2)assertsource==source2
这显示了depyc脚本。脚本编译自身,然后编译的脚本提取自身:
DEPYC_FILE=`python -c"import meta.scripts.depyc; print meta.scripts.depyc.__file__"` depyc $DEPYC_FILE --pyc > depycX.pyc python -m depycX depycX.pyc --python > depycX.py echo depycX.py
注释
- meta符合python3标准(大部分)
错误
- 解压缩程序尚不支持复杂的list/set/dict-comprehensions
测试
python -m unittest discover meta
test
版本控制
从版本1.0.0开始,meta跟随Semantic Versioning。 版本x.y.z表示:
- X是主要版本(向后不兼容),
- y是次要版本(向后兼容),并且
- z是修补程序版本(向后兼容的错误修复)。
在版本1.0.0之前,使用了自定义版本控制方案。