发布于 2021-08-19 12:13:26
通常的类型内联注释(如# 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
特定的配置只能通过在pyproject.toml
文件中的[tool.pyright]
部分中指定它们,或者通过在顶级项目目录中创建类似于上面的pyrightconfig.json
来实现。
EDIT2:
在注释中,OP提出了如何找到对应于pyright配置选项的类型错误代码的问题。不幸的是,除了彻底阅读文档以及对语言有一定的理解之外,没有什么简单的方法;例如,在from os import name
的例子中,Python实际上是将模块对象os
的属性os.name
导入到当前的命名空间中。以下互动会议应阐明这一点:
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
EDIT3
Pyright似乎还支持文件级和行级指令文档隐藏在“注释”下面。。
https://stackoverflow.com/questions/68822660
复制相似问题