如何忽略项目、文件、行的特定 Pyright 类型检查?

问题描述 投票:0回答:2

我无法找到关于如何忽略一项或多项特定 Pyright 检查的明确文档:

  1. 使用项目根目录下的配置文件。
  2. 位于文件、函数或方法的顶部。
  3. 每个行作为尾随注释。

预先感谢您分享此信息。

python pyright
2个回答
12
投票

通常的 mypy 内联注释(如

# type: ignore
)应该可以工作(查看详细信息),对于
pyright
特定配置,您可以将
pyrightconfig.json
放在项目根目录中。您可以在此处找到可用的配置选项。它只是一个 JSON 文件,所以看起来像这样:

{
    "venvPath": "/home/username/.virtualenvs/",
    "venv": "myenv",
    "reportOptionalSubscript": false,
    "reportOptionalMemberAccess": false
}

编辑:

源内配置可以是

mypy
支持的类型忽略语句。
# type: ignore
不是其他东西的占位符,它是字面意思。要缩小范围并忽略特定错误(它只能是
mypy
错误代码之一),如下所示:
# type: ignore[error-code]

要使用评论中提到的

import
的具体示例,这里有两个变体:

from os import non_existent  # type: ignore[attr-defined]

from missing_module import name  # type: ignore

这一切都在我提供的

mypy
文档的链接中进行了讨论,以及从那里链接的错误代码列表

pyright
特定配置只能在项目范围内(请参阅EDIT3),可以通过在
[tool.pyright]
文件中的
pyproject.toml
部分中指定它们,或者通过在顶部创建一个像上面一样的
pyrightconfig.json
-级别项目目录。

编辑2:

在评论中,OP提出了如何查找与pyright配置选项相对应的mypy错误代码的问题。不幸的是,除了彻底阅读文档并了解该语言之外,没有简单的方法;例如在

from os import name
的情况下,Python 实际上是将模块对象
os.name
的属性
os
导入到当前命名空间中。下面的互动会议应该可以清楚地说明这一点:

In [1]: import os

In [2]: type(os)
Out[2]: module

In [3]: locals()["curdir"]
-------------------------------------------------------------------
KeyError                          Traceback (most recent call last)
<ipython-input-3-a31c5782bef1> in <module>
----> 1 locals()["curdir"]

KeyError: 'curdir'

In [4]: from os import curdir

In [5]: locals()["curdir"]
Out[5]: '.'

In [6]: os.curdir == curdir
Out[6]: True

编辑3

Pyright 似乎还支持文件级和行级指令,文档隐藏在“注释”下。简而言之,您可以要求 Pyright 忽略一行或忽略特定的 Pyright 错误,如下所示:

import missing_module import name # pyright: ignore
import missing_module import name # pyright: ignore[reportMissingImports]

您可以在配置文档中找到错误列表。


0
投票

您可以通过将

#type: ignore
放在文件开头来忽略整个文件的类型。

© www.soinside.com 2019 - 2024. All rights reserved.