Instagram 开源用于 Python 3的MonkeyType 工具
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():
# ...
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ES的新特性
- PHP设计模式|观察者模式
- JavaScript 中 this 的错误认识、绑定规则、常见问题讲解
- 实践:SpringBoot实现定时任务的动态增删启停
- Java并发编程的艺术[3]
- R语言 | 根据数据框的顺序进行筛选
- 上帝视角看 TypeScript
- 一文 get 入门 canvas 的最佳路径
- Matlab系列之数组的基本操作
- Matlab系列之数组(矩阵)的生成
- R语言T检验的简单小例子
- ggplot2 修改图例的一些操作
- 实践:SpringBoot实现定时任务的动态增删启停
- Asp.Net Core API 需要认证时发生重定向的解决方法
- 在 Windows 系统上启用远程应用