是否可以忽略一行的pyright检查?

Max*_*ock 10 python pyright

我需要忽略一行的pyright检查。有什么特别的评论吗?

def create_slog(group: SLogGroup, data: Optional[dict] = None):
    SLog.insert_one(SLog(group=group, data=data))  # pyright: disable
Run Code Online (Sandbox Code Playgroud)

# pyright: disable -- 不起作用

Jas*_*sha 47

正如已接受的答案中提到的,使用# type: ignore评论是有效的。

foo: int = "123"  # type: ignore
Run Code Online (Sandbox Code Playgroud)

但是,正如该答案的评论中提到的,使用# type: ignore可能会与其他类型检查器(例如 mypy)发生冲突。为了解决这个问题,Pyright 现在支持# pyright: ignore评论(mypy 不会接受)。此处记录了这一点。

foo: int = "123"  # pyright: ignore
Run Code Online (Sandbox Code Playgroud)

注释pyright: ignore后可以跟以逗号分隔的应忽略的特定 Pyright 规则列表:

foo: int = "123"  # pyright: ignore [reportPrivateUsage, reportGeneralTypeIssues]
Run Code Online (Sandbox Code Playgroud)

同时,将以下注释添加到模块顶部将禁用对整个文件列出的规则的检查:

# pyright: reportUndefinedVariable=false, reportGeneralTypeIssues=false
Run Code Online (Sandbox Code Playgroud)

Pyright文档中的注释表示“通常此注释位于代码文件的顶部或顶部附近,独占一行”。


hi2*_*euk 17

是的,它是“# type: ignore”,例如:

try:
    return int(maybe_digits_string)    # type: ignore
except Exception:
    return None
Run Code Online (Sandbox Code Playgroud)

  • 我遇到一种情况,“mypy”可以正确理解我的注释,但“pyright”却不能。有没有办法只为“pyright”设置指令?我想真正的解决方案是向 Pyright 提交错误报告。 (4认同)
  • 另外,“# type:ignore”是标准的,其他等效的检查器也会尊重它,所以这绝对是正确的选择。 (3认同)