Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。
速度
Pyright是一个针对大型Python源代码库的快速类型检查器。它可以在“监视(watch)”模式下运行,并在文件修改后执行快速增量更新。
不依赖于Python环境
Pyright不需要Python环境或导入安装的的第三方包。
可配置性
Pyright支持配置文件,它们可以通过设置来提供精细控制。不同的“执行环境”可以在源代码库中关联子目录。每个环境都可以指定不同的模块搜索路径、python语言版本和目标平台。
类型检查特性
Pyright 支持:
PEP 484 类型提示,包括泛型
PEP 544结构化的子类型
函数返回值、实例变量、类变量和全局变量的类型推断
理解条件代码流结构(如if/else语句)的智能类型约束
内置类型存根
Pyright包含来自Typeshed的stdlib类型存根的最新副本。可以通过配置使其使用另一个Typeshed类型存根副本(可能是最近的或修改过的)。当然,它也可以与作为项目一部分的自定义类型存根文件一起运行。
命令行工具或VS Code扩展
Pyright包括一个命令行工具和一个用于VSCode的语言服务器协议插件。
文档
限制
Pyright目前仅提供对Python 3.0及更新版本的支持。目前还没有支持旧版本的计划。
Pyright项目还在进行中。类型检查功能还没有完全实现。有关未完成功能的列表,请参考下面的TODO列表。
常见问题
答: Python VS Code插件是VS Code的官方Python支持扩展。它由微软的一个工程师团队正式支持。它支持各种各样的特性,包括调试、linter插件、类型检查插件等等。Pyright完全专注于类型检查。这是一个没有专门团队的次要项目。
答: Microsoft Python语言服务器是一个语言服务器协议 (LSP)实现,它与Microsoft Python VS Code插件一起工作,并由Microsoft的一个工程师团队正式支持。它还提供了类型检查功能。Pyright提供了重叠的功能,但也包含一些独特的特性,比如更具可配置性、命令行执行和更好的性能。
安装
您可以直接从VSCode中安装Pyright VS Code扩展的最新发布版本。只需打开extensions面板并搜索pyright。
您可以通过npm来安装命令行工具的最新版本:npm i pyright
要全局安装它,请执行:npm i -g pyright
要运行命令行工具,请执行:npx pyright
待办事项
Pyright是一个正在进行中的项目。以下功能尚未完成。如果您想对这些领域做出贡献,请联系repo的维护人员。
对生成器的类型分析支持
协同程序的类型分析支持
对async(异步)函数和lambda的类型分析支持
验证await/async一致性
支持注释中的旧式类型注解
处理代码中的许多TODO注释
更好地处理函数装饰器(不在类型检查上浪费时间)
为类型检查器添加更多测试
验证所有抽象方法都被重载
提供将以下划线开头的实例变量和方法视为私有的switch(开关)
验证魔术函数的参数
在可能的情况下,为lambda合成(synthesize)TypeVar参数并返回类型
验证子类中重写的方法与基类方法具有相同的签名
验证异常类是否继承自Exception基类
添加对在子类中申明的基于方法参数类型的子类型变量的推理支持
在所有声明的方法之间验证子类类型变量的一致性
添加对var-arg参数类型提示的支持
添加对NoReturn类型的支持
将对只读值 (如None, True, False,__debug__)的赋值标记为错误
改进对属性的支持——使用描述符协议建模,检测缺失的的setter
将数字代码添加到诊断和配置机制中,用于按代码禁用错误
贡献
本项目欢迎各方面的贡献和建议。大多数贡献需要您同意贡献者许可协议(CLA),来声明您有权(实际上也确实有权)授予我们使用您的贡献的权利。详情请访问https://cla.microsoft.com。
当您提交一个推送请求时,CLA-机器人将会自动确定您是否需要提供一个CLA并适当地修饰PR(例如,标签、说明)。您只需遵循机器人提供的指示即可。使用我们的CLA,在我们所有repo(源码仓库)中,您只需要执行这一次。
本项目已采用微软开源行为守则。如需更多信息,请查看行为准则FAQ,或者您也可以联系opencode@microsoft.com来反馈问题或进行评论。英文原文:https://github.com/Microsoft/pyright
译者:好酒不上头