通常的 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
编辑3:
Pyright 似乎还支持文件级和行级指令,文档隐藏在“注释”下。简而言之,您可以要求 Pyright 忽略一行或忽略特定的 Pyright 错误,如下所示:
import missing_module import name # pyright: ignore
import missing_module import name # pyright: ignore[reportMissingImports]
您可以在配置文档中找到错误列表。
您可以通过将
#type: ignore
放在文件开头来忽略整个文件的类型。