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

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如何将jaxb插件扩展与gradlejaxbplugin一起使用   java Hibernate列表<Object[]>到特定对象   java使用多态性显示arraylist的输出   java水平堆叠卡,带有一定偏移量   java错误:找不到符号方法liesInt()   java客户机/服务器文件收发中的多线程流管理   在java中可以基于访问重载方法吗?   包含空元素的java排序数组   swing Java按钮/网格布局   java BottomNavigationView getmaxitemcount   java空指针异常字符串生成器   java Xamarin升级导致“类文件版本错误52.0,应为50.0”错误   java我正在尝试打印它,而不只是对每一行进行println   Tomcat7中的java是否需要复制上下文。将xml转换为conf/Catalina/locahost以使其生效   带有注入服务的java REST端点在何处引发自定义WebServiceException?   在Java中使用GPS数据   java如何将JFreeChart ChartPanel导出到包含添加的CrosshairOverlay的图像对象?   内置Eclipse期间的Java 8堆栈溢出   java在GWT编译的JavaScript中如何表示BigDecimal