Mypy 0.740 发布,Python 静态类型检查工具

afterer
 afterer
发布于 2019年10月21日
收藏 3

Mypy 0.740 已经发布了,此版本包括许多特性、错误修复和 library stub 更新。Mypy 是处于实验性阶段的 Python 静态类型检查器,旨在结合动态类型和静态类型的优点,将 Python 的表现力和便利性与强大的类型系统和编译时(compile-time)类型检查相结合,提供编译时的类型检查和高效地编译为原生代码,无需使用重量级和耗费 runtime 开销的 Python 虚拟机。更新内容如下:

str.format 调用的类型检查 

在此版本中,对字符串文本的 format 方法的调用将根据格式字符串语法的规则(format string syntax)和格式规范 mini 语言进行类型检查。同时修复了 % 格式的部分错误问题,并允许字节和字符串之间的错误交互。下面是 Mypy 现在可以捕捉到的一些错误:

  • 无效的格式字符串语法
  • 无效的转换类型或说明符
  • 不正确的参数或字段名
  • 数字格式的类型不匹配
  • 索引或属性表达式中的类型错误

改进 check_untyped_defs

此版本中,在使用 check_untyped_defs 时,能够正确地给出对象的类型,对非类型化方法进行更好的检查。此外,禁止在非类型化函数中分配空集合(即data=[ ] )造成的大多数“needs type annotation”错误。

严格处理上下文管理器对象

Mypy 0.730 增加了对使用从  __exit__ 返回类型中使用文字类型的支持,以确定 with 语句是否有可能隐藏异常,这可能影响 Mypy 在 with 语句之后是否认为代码是可访问的。为了更好地定位由此引起的问题的来源,当声明的 __exit__ 方法返回布尔但始终返回 false 时,Mypy 会报出错误。

其他的改进和 bug 修复

  • 为 pathlib.Path.open 提供更好的类型
  • 将 __class_getitem__ 作为一个隐式类方法,类似于 __init_subclass__
  • att.s 支持 eq 和 order 参数
  • 修复 Mypy 守护进程中的崩溃
  • 修复与__getattr__ 和 __call__ 相关的崩溃
  • 修复增量模式崩溃

除了上述的更新内容,还其他内容,详情请查看发布主页

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:Mypy 0.740 发布,Python 静态类型检查工具
加载中

最新评论(1

邪恶胖子
邪恶胖子
准备4.0集成到标准库吗
返回顶部
顶部