在 VS Code 中抑制 Pylance 类型注释警告

Suppress Pylance type annotation warning in VS Code

在我工作的公司,我们使用类型注释来定义函数的预期 return 类型。大多数开发人员都在使用 PyCharm,但我更喜欢坚持使用 VS Code。

VS 代码中的以下行 IDE:

def example() -> [str]:

发出 Pylance 警告:

List expression not allowed in type annotation
  Use List[T] to indicate a list type or Union[T1, T2] to indicate a union typePylance

并希望我使用:

def example() -> List[str]

虽然解决这个问题需要我检查整个代码库并且不会被接受拉取请求。

这种类型注释在 Python 3.10 中是允许的(我不是 100% 确定),但在我们目前使用的 Python 3.7 中是不允许的。因为我可以接受这个警告,所以我想取消它。

Pylance 支持 PEP 484

A number of existing or potential use cases for function annotations exist, which are incompatible with type hinting. These may confuse a static type checker. However, since type hinting annotations have no runtime behavior (other than evaluation of the annotation expression and storing annotations in the _annotations_ attribute of the function object), this does not make the program incorrect -- it just may cause a type checker to emit spurious warnings or errors.

To mark portions of the program that should not be covered by type hinting, you can use one or more of the following:

a # type: ignore comment;
a @no_type_check decorator on a class or function;
a custom class or function decorator marked with @no_type_check_decorator.

或者,您可以为 Pyright 创建一个 pyrightconfig.json(因为这就是 Pylance 在下面使用的内容)或在项目的根目录中创建一个 pyproject.toml,并指定哪些类型要忽略的错误。您可以在出现错误消息的悬停小部件中查看错误类型。

pyrightconfig.json 示例:

{
        "reportGeneralTypeIssues": false,
}

pyproject.toml 示例:

[tool.pyright]
reportGeneralTypeIssues = false

有关更多信息,请参阅 Type Check Diagnostics Settings