从采样的生产类型生成类型注释

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

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

要求

monkeytype需要python 3.6+和 重新键入 库(用于应用类型 代码文件存根)。它只生成python 3类型注释(没有类型 注释)。

安装

使用pip安装monkeytype

pip install MonkeyType

MonkeyType的工作原理

monkeytype使用python提供的钩子插入 函数调用、函数返回和生成器生成,并记录 参数/返回值/屈服值。

它基于这些数据生成 存根文件,并可以使用 重新键入 来应用这些文件。 将文件直接存根到代码。

有关详细信息,请参见完整文档。

故障排除

检查您的问题是否在常见问题列表中提到

许可证

MonkeyType是BSD授权的。

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

推荐PyPI第三方库


热门话题
两个不同类中的java trycatch NullPointerException错误   java在安卓 studio中使用Eclipse类?   java Python在Android上的限制是什么?   java无法找到或加载主类com。太阳工具。javac。主hadoop mapreduce   json Java jersey客户端使用JsonArray的JsonArray   Java Swing GUI隐藏输入   java readobject方法引发ClassNotFoundException   java Transactional不会在Spring引导中使用数据JPA回滚已检查的异常   java如何返回通用枚举的枚举元素列表?   java中一种多线程负载平衡线程池   java运行。bat将无法正确打开命令提示符   java为什么C++给了你拥有非新分配对象的选项?   java Weka未找到主类错误   java SSL检查绕过SSLSocketFactory   Java8函数组合和