Instagram 宣布将其 MonkeyType 工具开源。它是通过运行时跟踪类型自动将类型注释添加到您的 Python 3 代码的工具。
授权协议:BSD
开发语言:Python
操作系统:跨平台
该公司拥有数百名工程师,编译了超过一百万行代码。它不断地在生产环境中添加新的代码,所以公司需要一种方法来使开发人员更容易阅读和理解代码,同时减少潜在的错误代码。
“在 MonkeyType 的帮助下,我们已经在代码库中对三分之一的功能进行了注释,而且我们已经看到了类型检查会捕获更多的错误。”Instagram 基础设施团队工程师 Carl Meyer 在一篇文章中写道。
使用
在 MonkeyType 可以告诉我们任何有用的东西之前,我们需要让它跟踪一些函数调用。最简单的方法是 monkeytype run 在 MonkeyType 跟踪下运行任何 Python 脚本。例如,您可以在 MonkeyType 下轻松运行您的测试套件:
$ monkeytype run runtests.py
或者:
monkeytype run `which pytest`
当你的测试运行时,MonkeyType检查每个函数调用的参数类型和返回/ yield类型,并将它们记录在数据库中。(默认情况下,它将它们保存在本地SQLite数据库中,但像MonkeyType一样,这是可配置的。)
当然,你的测试套件可能不提供最好的类型信息 - 有时候测试使用的是假类型,而不是真正的类型,我们发现很多情况下类型检查显示我们的测试意外地从生产中传入不同的类型。
因此,如果您不想基于测试套件进行注释,则可以记录生产运行时的调用跟踪。对于这个用例,MonkeyType提供了一个上下文管理器API:
from monkeytype import trace
with trace():
# ...
领取专属 10元无门槛券
私享最新 技术干货