微软新开源的 Python 静态类型检查器

Python开发者 Python开发者 昨天

(给Python开发者加星标,提升Python技能


原创整理:Python开发者(id:PythonCoder)

昨天 GitHub 每日趋势榜中,又出现了一个微软新开源的项目:


https://github.com/Microsoft/pyright


微软称,创建 PyRight 项目,是为了解决现有 Python 静态类型检查器(比如 mypy)中的不足。




速度


PyRight 通常比 mypy 和其他用 Python 编写的类型检查器快 5 倍或更多。它适用于大型 Python 源代码库。它可以在“监视(Watch)”模式下运行,并在修改文件时执行快速增量更新。


不依赖于 Python 环境


PyRight 是用 TypeScript 编写的,在 node 中运行。它不需要安装 Python 环境或导入的第三方包。当与用 node 作为扩展运行时的 VS Code 编辑器一起使用时,这特别实用。


可配置性


PyRight 支持灵活的配置,提供对设置的粒度控制。可以为源库的不同子集指定不同的“执行环境”。每个环境都可以指定不同的 PYTHONPATH 设置、Python 语言版本和平台目标。


类型检查功能


PyRight 支持:

  • PEP 484 类型提示,包括泛型

  • PEP 526 变量注释的语法

  • PEP 544 结构子类型

  • 函数返回值、实例变量、类变量和全局变量的类型推断

  • 理解条件代码流结构(如if/else语句)的智能类型约束


命令行或语言服务


PyRight 包括了命令行工具,还有用于 VS Code 的语言服务器协议插件。


语言服务特性


PyRight 提供了以下语言服务功能:

  • 显示类型信息的悬停工具提示

  • 指向符号定义的链接

  • 智能优先级排队“实时”反馈期间编辑


局限


PyRight 目前仅支持 Python 3.x,不计划支持 2.x。