资源 | Github项目推荐 | 微软开源Python静态类型检查器Pyright
- 2019 年 10 月 31 日
- 筆記
微软最新开源Python静态类型检查器Pyright,比mypy快5倍
Python语言的静态类型检查器
创建Pyright是为了填补像 mypy 这样的现有Python类型检查器的漏洞。
Github项目地址:(点击链接可直接打开)
https://github.com/Microsoft/pyright
速度
Pyright通常比mypy和其他用Python编写的类型检查器快5倍或更多。它适用于大型Python源代码库。它可以在“监视”模式下运行,并在修改文件时执行快速增量更新。
没有Python环境的依赖
Pyright是用TypeScript编写的,在节点内运行。 它不需要安装Python环境或导入的第三方包。 当它使用节点作为其扩展运行时,与VS代码编辑器一起使用效果非常好。
可配置性
Pyright支持灵活配置,可以对设置进行精细控制。 可以为源库的不同子集指定不同的“执行环境”。 每个环境都可以指定不同的PYTHONPATH设置、python语言版本和平台目标。
类型检查功能
Pyright 支持:
- PEP 484 类型提示,包括泛型
- 变量注释的 PEP 526 语法
- PEP 544 结构子类型
- 函数返回值、实例变量、类变量和全局变量的类型推断
- 理解条件代码流构造的智能类型约束,如 if/else 语句
内置类型存根
Pyright包含来自 Typeshed 的stdlib类型存根的最新副本。 它可以配置为使用Typeshed类型存根的另一个(可能是更新的或修改过的)副本。 当然,它也适用于作为项目一部分的自定义类型存根文件。
命令行或语言服务
Pyright包括用于VS Code的命令行工具和语言服务器协议插件。
语言服务功能
Pyright提供以下的语言服务功能:
- 悬停工具提示显示类型信息
- 符号定义的链接
- 在编辑期间智能优先级排队“实时”反馈
文档
- 命令行选项
- 配置
- 入门
- Pyright内部
使用限制
Pyright目前仅提供对Python 3.0及更高版本的支持,且目前没有支持旧版本的计划。
FAQ
Q:Pyright和Microsoft Python VS Code插件有什么区别?
A:Python VS Code插件是VS Code的官方Python支持扩展。 它由Microsoft的工程师团队提供官方支持。 它支持各种功能,包括调试、linter插件、类型检查插件等等。 Pyright完全专注于类型检查。 这是一个没有专门团队的次要项目。
Q:Pyright和Microsoft Python语言服务器有什么区别?
A:Microsoft Python语言服务器是一种语言服务器协议(LSP)实现,可以和Microsoft Python VS Code插件配合使用,并由Microsoft工程师团队提供官方支持。 它还提供类型检查功能。 Pyright提供了与之重复的功能,但包括了一些独特的功能,如可配置性更高、命令行执行和更好的性能。
安装
你可以直接从VS Code安装最新发布的Pyright VS Code扩展版本。只需打开扩展程序面板并搜索 pyright 即可。
最新版本的命令行工具可以使用npm命令: npm i pyright 进行安装
全局安装:npm i -g pyright
运行命令行工具:npx pyright <options>
构建说明
要构建项目,请注意以下事项:
- 安装nodejs
- 在克隆源的主目录中打开终端窗口
- 执行 npm run install:all 来安装依赖项
- 执行 npm run build
构建VS Code扩展包,请注意以下事项:
- 步骤与以上部分相同,但是需要再加一个步骤:
执行 npm run package
生成的包(pyright-X.Y.Z.vsix)可以在客户端目录中找到。如需在VS Code中安装,请转到扩展面板,然后从菜单中选择“从VSIX安装…”,然后选择对应的包即可。