【Python 第三方库】pyright

2024-01-25 00:00:00

目录:

pyright 模块介绍

pyright 模块是由微软开发的静态代码检查工具,能在代码运行前识别出类型错误,类似前端的 Typescript。
例如,当函数期望接收浮点数却传入字符串时,Pyright会立即提示类型错误。

安装依赖:

$ pip install pyright -i https://pypi.tuna.tsinghua.edu.cn/simple

如果使用 VS Code,可以安装 Pylance 插件,内置了 Pyright 引擎。

配置主要通过项目根目录的 pyrightconfig.json 文件实现:

{
  "include": ["src"],
  "exclude": ["**/__pycache__", "tests"],
  "typeCheckingMode": "basic",
  "reportMissingImports": true,
  "pythonVersion": "3.8"
}

基础类型检查

# 函数参数和返回值类型检查
def calculate_discount(price: float, discount: float) -> float:
    return price * (1 - discount)

# Pyright会检测到类型错误
result = calculate_discount("100", 0.1)  # 错误:字符串不能赋值给float参数

另一个常见错误是函数声明了返回值类型但实际未返回:

def greeting(age: int) -> str:
    print("hello")  # 缺少return语句
    # Pyright报错:Function with declared type of str must return value

如何关闭检查

  1. 在 VS Code 安装了 Pylance/BasedPyright 插件,找到插件右键禁用就不会再检查了。

  2. 在一行代码末尾加 # pyright: ignore[规则名称] 可以禁用 Pyright 对当前行的检查,将鼠标挪到报错的代码上面可以看到规则名称

await db.zhaotab_checkin_activities.insert_many(docs)   # pyright: ignore[reportUnusedCallResult]
  1. 在文件第一行加 # pyright: 规则名称=false 可以禁用 Pyright 对该文件的检查
# pyright: reportUnusedCallResult=false

# ....

monorepo

对于 monorepo 项目结构,如下所示,只有根目录下的 pyrightconfig.json 才会生效。

|-- myapp
    |-- myapp-python
        |-- pyrightconfig.json  <-- 不生效
    |-- myapp-frontend
    |-- pyrightconfig.json   <-- 生效

返回首页

本文总阅读量  次
皖ICP备17026209号-3
总访问量: 
总访客量: