MonkeyType-通过收集运行时类型生成静态类型注释的python库

MonkeyType收集函数参数和返回值的运行时类型,并可以基于运行时收集的类型自动生成存根文件,甚至可以将草稿类型注释直接添加到Python代码中。

可读性和静态分析是向代码添加类型注释的主要动机。在许多Python样式指南中已经很常见的是在其文档字符串中记录函数的参数和返回类型。批注是提供此文档的一种标准化方法,它还允许类型检查器(例如mypy)进行静态分析。

有关Python类型注释的动机和设计的更多信息,请参见 PEP 483和PEP 484。

使用

MonkeyType需要Python 3.6+和libcst库(用于将类型存根应用于代码文件)。它仅生成Python 3类型注释(无类型注释)。

使用pip可以快速安装MonkeyType,如果您只需要下载MonkeyType的源代码文件,也可以通过网盘下载。

示例

例如,在some/module.py中有下面一段代码:

def add(a, b):        return a + b

现在,我们导入myscript.py:

from some.module import addadd(1, 2)

现在,我们要推断的类型标注add在some/module.py运行myscript.py有MonkeyType。一种方法是运行:

$ monkeytype run myscript.py

默认情况下,这会将调用跟踪转储到monkeytype.sqlite3当前工作目录中文件中的SQLite数据库中 。然后,您可以使用该 monkeytype命令为模块生成存根文件,或将类型注释直接应用于代码。

运行 monkeytype stub some.module 将输出一个存根:

def add(a: int, b: int) -> int: ...

MonkeyType如何运作

MonkeyType使用Python提供的sys.setprofile钩子来插入函数调用,函数返回和生成器产量,并记录参数/返回值/产量值的类型。

它根据这些数据生成存根文件,并且可以使用libcst将这些存根文件直接应用于代码。

(0)

相关推荐