mypy 1.0 正式发布,Python 静态类型检查器


mypy 是 Python 静态类型检查器,旨在结合动态类型和静态类型的优点,将 Python 的表现力和便利性与强大的类型系统和编译时 (compile-time) 类型检查相结合,提供编译时的类型检查和高效地编译为原生代码,无需使用重量级和耗费 runtime 开销的 Python 虚拟机。

近日,mypy 正式发布了 1.0 版本,引入了新特性、优化了性能以及修复错误等。

主要变化

  • 采用新的版本号命名规则

由于 mypy 版本号已进入 1.0 阶段,因此开发团队决定切换到新的版本号命名规则,新规则将采用 x.y.z. 格式:

  • 如果功能版本包含影响大部分用户的重大向后不兼容性变更,则主版本号 (x) 会递增
  • 每个功能版本都会增加次要版本号 (y)
  • 当仅存在修复时,小版本号 (z) 会递增

详细说明。

  • 优化性能

团队介绍道,在检查 Dropbox 内部代码库时,他们发现 mypy 1.0 的速度比 mypy 0.991 快 40%。他们还设置了一个日常工作来衡量 mypy 最新开发版本的性能,以便更容易跟踪性能变化。

部分优化项包括:

  • 提升具备许多属性的类错误的性能
  • 加速 make_simplified_union
  • 针对语义分析器的微优化
  • 加速递归类型检查
  • 加速刷新类型变量
  • 通过避免嵌套函数优化子类型检查
  • 优化子类型检查中的类型参数检查

点此查看详情。

  • 支持"self"类型

现在有一个更简单的语法来声明 PEP 673 中引入的通用 self 类型:Self 类型。开发者不再需要定义类型变量来使用"self"类型,并且可以将它们与属性搭配使用。mypy 文档中的示例:

from typing import Self

class Friend:
other: Self | None = None

@classmethod
def make_pair(cls) -> tuple[Self, Self]:
a, b = cls(), cls()
a.other = b
b.other = a
return a, b

class SuperFriend(Friend):
pass

# a and b have the inferred type "SuperFriend", not "Friend"
a, b = SuperFriend.make_pair()

详细更新说明查看发布公告。


相關推薦

2022-08-10

SQLAlchemy 是 Python SQL 工具箱和对象关系映射器,它为应用程序开发人员提供了 SQL 的全部功能和灵活性。它提供了一整套知名的企业级持久性模式,旨在高效、高性能地访问数据库,并被适配为一种简单的 Pythonic 域语言。 SQLAlche

2023-02-12

IPython 是一个综合环境,可以帮助程序员或开发人员等高级计算机用户测试或探索各种功能。尽管 Python 附带了一个强大的交互式解释器,使用户无需在目标计算机上创建额外的文件即可运行测试,但它在用户与软件交互方面存

2022-10-15

队计划在 Beta 阶段完成大量测试,预计几个月后发布 2.0 正式版。 详情查看新功能介绍。 更新日志 | 下载地址  

2023-12-06

团队最新推出的开源项目,目标是为 PHP 引入 Python 生态,来弥补 PHP 生态的空缺和不足。phpy 使得 PHP 可以调用所有 Python 的包。 包括当下非常流行的 PyTorch、transformers、TensorFlow 

2023-10-18

定性、引入新的预览模式、引入 fix safety 等级,以及执行正式的版本控制策略。 新的预览模式 通过预览模式,用户可自行选择体验新功能——用于启用新规则、不稳定修复和实验性代码分析。 [tool.ruff] preview = true 引

2022-08-27

TypeScript 4.8 已正式发布。 自 Beta 和 RC 发布以来的变化 自 Beta 测试版发布以来,稳定版现已支持从自动导入中排除特定文件。测试版的公告没有提到围绕类型签名中未使用的解构别名 (destructuring aliases) 的破坏性变化。此外

2024-08-20

为用户提供更稳定、流畅的创新操作体验。 MoonBit自去年发布 alpha 版后,反响热烈。经过一年的高速迭代,MoonBit 到达了 beta 预览版的里程碑:在核心语言特性上,MoonBit媲美、甚至超越了大部分主流语言的1.0版本;语言特性的

2022-08-11

6 种不同的语言——包括中文。 近日,Astro 发布了 1.0 正式版。团队称 1.0 意味着 API 已达到稳定状态,并可用于生产环境。部分新特性: 图像优化:引入新的<Image />和<Picture />组件 支持 MDX:在 Markdown 中混合编

2023-04-04

ython 3.11.2,除了许多新特性和功能增强外,它还是第一个正式支持 WebAssembly 作为 PEP11 Tier 3 平台的版本。 据估计,Python 3.11 在原生执行 (native execution) 方面比 Python 3.10 快 10-60%,基准测试显示了与 WebAssembly runtime 相当的改进。

2022-05-26

NumPy 1.22.4 现已发布,这是一个维护版本,修复了在 1.22.3 版本之后发现的错误。此外,此版本的 wheels 是使用最近发布的 Cython 0.29.30 构建的,它应该可以修复报告的调试问题。 此版本支持的 Python 版本为 3.8-3.10。Mac wheels 

2022-03-14

提案的目的是让开发者能够运行用 TypeScript、Flow 或其他静态类型的 JavaScript 超集所编写的程序,而不需要转译。微软在公告中表示,新的语法将有效地起到注释作用,而不会改变代码的运行方式。 微软在提案中还表示,在过去

2022-09-21

性能计算机图形学设计的编程语言。 目前 Taichi v1.1.3 发布了,此版本带来大量改进,摘录如下: 模块 添加纹理接口到 C-API ( #5520 )  Bug修复 使用 MacOS 禁用 vkCmdWriteTimestamp ,以在 Vulkan 上启用测试 ( #

2022-12-04

PyCharm 2022.3 日前正式发布,新版本带来了全新的 Settings Sync(设置同步)解决方案、管理 Conda 软件包的新方法针对 pandas DataFrames 的增强用户体验。 用户体验 新的 Settings Sync(设置同步)解决方案 新的 Settings Sync(设置同步

2022-07-06

自 0.2 版以来(2020 年 12 月),有 5769 个提交被推送到 master 分支,有 1697 个 bug 被修复。从现在开始,Vlang 将每隔 4 个月做一次重大更新。 V 0.3 部分更新内容如下: 通过 C2V 进行 C 到 V 的转译: v translate file.c(演示视频,