从采样的生产类型生成类型注释
MonkeyType的Python项目详细描述
monkeytype
monkeytype收集函数参数和返回值的运行时类型,以及 可以自动生成存根文件,甚至可以添加草稿类型批注 基于运行时收集的类型直接指向您的python代码。
示例
例如,some/module.py最初包含:
def add(a, b): return a + b
而myscript.py包含:
from some.module import add add(1, 2)
现在我们想通过 使用monkeytype运行myscript.py。一种方法是运行:
$ monkeytype run myscript.py
默认情况下,这将把调用跟踪转储到文件中的sqlite数据库中 当前工作目录中的monkeytype.sqlite3。然后你可以使用 monkeytype 为模块生成存根文件或应用类型的命令 直接向代码添加批注。
运行monkeytype stub some.module将输出stub:
def add(a: int, b: int) -> int: ...
运行monkeytype apply some.module将把some/module.py修改为:
def add(a: int, b: int) -> int: return a + b
这个例子展示了 MunKyType。使用monkeytype,很容易添加注释 反映您在运行时使用的具体类型,但这些注释可能不会 始终匹配功能的全部预期功能。例如, 添加 能够处理比整数更多的类型。类似地,monkeytype 可能生成一个具体的 列表 注释,其中一个抽象的 序列 或 iterable 更合适。monkeytype的注释是 信息初稿,由开发人员检查和更正。
动机
可读性和静态分析是添加类型的主要动机 代码注释。这在许多python风格的指南中已经很常见了 在docstring中记录函数的参数和返回类型; 注释是提供此文档的标准化方法,它还 允许类型检查器进行静态分析,例如 mypy
要求
monkeytype需要python 3.6+和 重新键入 库(用于应用类型 代码文件存根)。它只生成python 3类型注释(没有类型 注释)。
安装
使用pip安装monkeytype
pip install MonkeyType
MonkeyType的工作原理
monkeytype使用python提供的钩子插入 函数调用、函数返回和生成器生成,并记录 参数/返回值/屈服值。
它基于这些数据生成 存根文件,并可以使用 重新键入 来应用这些文件。 将文件直接存根到代码。
有关详细信息,请参见完整文档。
故障排除
检查您的问题是否在常见问题列表中提到
许可证
MonkeyType是BSD授权的。