比较手写存根和生成存根的分析工具,报告不一致
stubalyzer的Python项目详细描述
分析工具 比较手写的mypy存根和stubgen生成的存根。在
stubalyzer使为非类型化依赖项创建类型的过程更容易。 stubalyzer发现并报告的一些不一致性示例 如下所示:
- 手工制作和生成的存根具有不同的方法签名
- 生成的存根缺少函数/类成员
- 生成的类型比手工创建的类型更具体
如何使用?在
安装
使用以下命令安装stubalyzer:
$ pip install stubalyzer
如何运行
使用以下命令运行stubalyzer:
^{pr2}$输出
如果比较以零不一致而成功结束, stubalyzer将向stdout打印一条成功消息,同时 忽略消息。在
忽略消息包括忽略的失败数,它们是 在文件中声明为预期的不匹配。如果这个文件 如果未提供,则不会打印忽略消息。在
Successfully validated 68 stubs.
如果给定类型中存在不匹配,stubalyzer将打印一个列表 与结果消息的所有不一致,以及忽略 消息-如果有,类似于以下内容:
Symbol "vars.any_var" not found in generated stubs.
Types for functions.additional_args do not match:
Handwritten type: def (foo: builtins.int, bar: builtins.int) -> builtins.str
Reference type : def (foo: builtins.int) -> builtins.str
Failure: 33 of 68 stubs seem not to be valid.
2 more fail(s) were ignored, because they were defined in expected mismatches.
发展
以下部分包含有关如何设置和使用的说明 本项目的开发环境。在
开发设置
开发要求:
- 最新的Python版本(我们目前使用的是3.7)
- virtualenv和virtualenvwrapper
对于开发设置,请运行以下shell脚本:
$ ./dev/setup.sh
这将创建一个名为stubalyzer的虚拟环境并安装 项目依赖关系。安装脚本还创建一个.venv 文件,以便在使用 使用virtualenv自动激活。在
测试
使用pytest运行测试:
$ pytest
类型检查
使用Mypy执行类型检查:
$ mypy stubalyzer
代码格式
要设置预提交钩子以自动格式化文件,请创建 以下链接:
$ ln -sf ../../dev/pre-commit.sh .git/hooks/pre-commit
源代码使用black和isort格式化。这个 以下将格式化项目中的所有文件:
$ ./dev/fmt.sh
振动
使用flake8,在根目录中运行:
$ flake8
依赖管理
如果需要新的依赖项,请将它们添加到requirements.in和 setup.py,然后运行顶部指定的pip-compile命令 属于requirements.txt。在
文档
文档是用Sphinx编写的。在
首先安装要求:
$ pip install -r docs/requirements.txt
然后使用以下方法构建文档:
$cd doc; make html
输出将在docs/_build/html/index.html中。在
可以使用以下方法更新API文档:
$ ./dev/update-apidoc.sh
释放
Stubalyzer没有固定的发布时间表。 而是在需要时发布。在
要准备新版本,请运行以下命令并按照输出中的说明进行操作:
$ ./dev/release.sh <patch|minor|major>
- 项目
标签: