你如何忽略项目、文件、行的特定 Pyright 类型检查?
How do you ignore specific Pyright type checks by project, file, line?
我找不到关于如何忽略一项或多项特定 Pyright 检查的明确文档:
- 使用项目根目录下的配置文件。
- 在文件、函数或方法的顶部。
- 每行作为尾随评论。
提前感谢您分享此信息。
通常的 mypy in-line 注释,如 # type: ignore
应该可以工作(see details), and for pyright
specific config, you can put a pyrightconfig.json
in your project root. You can find available config options here。它只是一个 JSON 文件,所以它看起来像这样:
{
"venvPath": "/home/username/.virtualenvs/",
"venv": "myenv",
"reportOptionalSubscript": false,
"reportOptionalMemberAccess": false
}
编辑:
In-source 配置只能作为 mypy
支持的 type-ignore 语句。 # 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
文档的 link 以及从那里编辑的 list of error codes link 中都讨论了这些内容。
pyright
特定配置只能在项目范围内,通过在 pyproject.toml
文件的 [tool.pyright]
部分中指定它们,或者像上面那样创建 pyrightconfig.json
在您的 top-level 项目目录中。
编辑2:
OP 在评论中提出了如何找到与 pyright 配置选项对应的 mypy error-codes 的问题。不幸的是,除了通读文档以及对语言的一些理解之外,没有简单的方法;例如在 from os import name
的情况下, Python 实际上是将模块 object os
的属性 os.name
导入当前命名空间。下面的互动 session 应该清楚这一点:
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
我找不到关于如何忽略一项或多项特定 Pyright 检查的明确文档:
- 使用项目根目录下的配置文件。
- 在文件、函数或方法的顶部。
- 每行作为尾随评论。
提前感谢您分享此信息。
通常的 mypy in-line 注释,如 # type: ignore
应该可以工作(see details), and for pyright
specific config, you can put a pyrightconfig.json
in your project root. You can find available config options here。它只是一个 JSON 文件,所以它看起来像这样:
{
"venvPath": "/home/username/.virtualenvs/",
"venv": "myenv",
"reportOptionalSubscript": false,
"reportOptionalMemberAccess": false
}
编辑:
In-source 配置只能作为 mypy
支持的 type-ignore 语句。 # 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
文档的 link 以及从那里编辑的 list of error codes link 中都讨论了这些内容。
pyright
特定配置只能在项目范围内,通过在 pyproject.toml
文件的 [tool.pyright]
部分中指定它们,或者像上面那样创建 pyrightconfig.json
在您的 top-level 项目目录中。
编辑2:
OP 在评论中提出了如何找到与 pyright 配置选项对应的 mypy error-codes 的问题。不幸的是,除了通读文档以及对语言的一些理解之外,没有简单的方法;例如在 from os import name
的情况下, Python 实际上是将模块 object os
的属性 os.name
导入当前命名空间。下面的互动 session 应该清楚这一点:
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