我找不到关于如何忽略一项或多项特定Pyright检查的明确文档:
- 在项目的根目录中使用配置文件。
- 在文件、函数或方法的顶部。
- 每个线作为尾随注释。
提前感谢您分享此信息。
通常的 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
特定的配置只能是项目范围的,可以通过在文件的一个[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