首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过项目、文件、行忽略特定的Pyright类型检查?

如何通过项目、文件、行忽略特定的Pyright类型检查?
EN

Stack Overflow用户
提问于 2021-08-17 18:53:27
回答 1查看 3.8K关注 0票数 6

我找不到关于如何忽略一个或多个特定皮赖特检查的清晰文档:

  1. 在项目根目录处使用配置文件。
  2. 在文件、函数或方法的顶部。
  3. 每一条都是尾随的评论。

谢谢大家分享这些信息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-19 12:13:26

通常的类型内联注释(如# type: ignore )应该工作(查看详细信息),对于特定于pyright的配置,您可以在项目根中放置一个pyrightconfig.json。您可以找到可用的配置选项这里。它只是一个JSON文件,所以看起来如下所示:

代码语言:javascript
运行
复制
{
    "venvPath": "/home/username/.virtualenvs/",
    "venv": "myenv",
    "reportOptionalSubscript": false,
    "reportOptionalMemberAccess": false
}

编辑:

源代码中的配置可以是mypy支持的类型忽略语句.# type: ignore不是其他东西的位置持有者,它是字面上的。缩小范围并忽略特定错误(只能是mypy错误代码之一),如下所示:# type: ignore[error-code]

要使用注释中提到的import的具体示例,以下是两个变体:

代码语言:javascript
运行
复制
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导入到当前的命名空间中。以下互动会议应阐明这一点:

代码语言:javascript
运行
复制
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似乎还支持文件级和行级指令文档隐藏在“注释”下面。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68822660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档