4

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

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

提前感谢您分享此信息。

4

1 回答 1

3

通常的 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
于 2021-08-19T12:13:26.173 回答