繁体   English   中英

VS Code 中的 Surpress Pylance 类型注释警告

[英]Surpress Pylance type annotation warning in VS Code

在我工作的公司,我们使用类型注释来定义来自 function 的预期返回类型。 大多数开发人员都在使用 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]

虽然解决这个问题需要我在整个代码库中使用 go 并且不会被拉取请求接受。

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

Pylance 支持PEP 484

存在许多 function 注释的现有或潜在用例,它们与类型提示不兼容。 这些可能会混淆 static 类型检查器。 但是,由于类型提示注释没有运行时行为(除了评估注释表达式并将注释存储在 function 对象的 _ annotations _ 属性中),这不会使程序不正确——它只是可能导致类型检查器发出虚假的警告或错误。

要标记不应被类型提示覆盖的程序部分,您可以使用以下一项或多项:

a # 类型:忽略评论;
class 或 function 上的 @no_type_check 装饰器;
一个自定义的 class 或 function 装饰器,标有@no_type_check_decorator。

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

pyrightconfig.json示例:

{
        "reportGeneralTypeIssues": false,
}

pyproject.toml示例:

[tool.pyright]
reportGeneralTypeIssues = false

有关更多信息,请参阅类型检查诊断设置

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM