比较手写存根和生成存根的分析工具,报告不一致

stubalyzer的Python项目详细描述


Documentation Status

分析工具 比较手写的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)
  • virtualenvvirtualenvwrapper

对于开发设置,请运行以下shell脚本:

$ ./dev/setup.sh

这将创建一个名为stubalyzer的虚拟环境并安装 项目依赖关系。安装脚本还创建一个.venv 文件,以便在使用 使用virtualenv自动激活。在

测试

使用pytest运行测试:

$ pytest

类型检查

使用Mypy执行类型检查:

$ mypy stubalyzer

代码格式

要设置预提交钩子以自动格式化文件,请创建 以下链接:

$ ln -sf ../../dev/pre-commit.sh .git/hooks/pre-commit

源代码使用blackisort格式化。这个 以下将格式化项目中的所有文件:

$ ./dev/fmt.sh
{id10}$

振动

使用flake8,在根目录中运行:

$ flake8

依赖管理

如果需要新的依赖项,请将它们添加到requirements.insetup.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>

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

推荐PyPI第三方库


热门话题
java Apache Flink外部Jar   创建和强制转换对象数组时发生java错误   Java,添加数组   具有相同包结构和类的java JAR   java Jenkins未能构建Maven项目   java为什么一个forloop比另一个更快,尽管它们做的“一样”?   servlets在将“/”站点迁移到Java EE包时处理contextpath引用   无法解析java MavReplugin:2.21或其某个依赖项   泛型如何编写比较器来泛化Java中的两种类型的对象?   java Android Emulator未在netbeans上加载   多线程Java使用线程对数组中的数字求和:在同步块中使用新变量作为锁:差异   java如何在JSP/servlet中设置<input>标记的值?