python - 抑制 VS Code 中的 Pylance 类型注释警告
问题描述
在我工作的公司,我们使用类型注释来定义函数的预期返回类型。大多数开发人员都在使用 PyCharm,但我更喜欢坚持使用 VS Code。
VS Code 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 # 类型:忽略评论;
类或函数上的 @no_type_check 装饰器;
用@no_type_check_decorator 标记的自定义类或函数装饰器。
或者,您可以在项目的根目录中创建一个pyrightconfig.json
for Pyright(因为这Pylance
是在下面使用的)或 a pyproject.toml
,并指定要忽略的错误类型。您可以在显示错误消息的悬停小部件中查看错误类型。
pyrightconfig.json
例子:
{
"reportGeneralTypeIssues": false,
}
pyproject.toml
例子:
[tool.pyright]
reportGeneralTypeIssues = false
有关更多信息,请参阅类型检查诊断设置。
推荐阅读
- javascript - 在 Fabric 上编写链码时,我是否仅限于链码存根定义的函数?
- docker - 将环境变量从主机传递到 docker
- javascript - 第一次测试失败后立即终止 Jest
- python-3.x - 是否可以托管一个调用 python 脚本来生成数据的闪亮应用程序?
- json - 如何在Swift中根据json id(意味着indexPath应该与json id匹配)从collectionView didSelectItemAt indexPath pushViewController
- java - Spring Data 未在 Neo4J 数据库中保存 @NodeEntity
- html - 如何更新保存在 Python/Flask Web 应用的静态文件夹下的 CSS 样式表?
- gcc - 升级 `arm-none-eabi-gcc` 后部分 `text` 将不适合
- sql - SQL 中的 JSON 数组 - 从 JSON 数组中提取多个值
- azure - Azure 数据工厂管道到压缩 Parquet 文件中:“java.lang.OutOfMemoryError:Java heap space”