问题标签 [pyright]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4883 浏览

python - 如何从 CLI 安装和运行 Pyright 而不是使用 VS Code?

我想开始在我团队的项目中使用Pyright 。我已经安装了 Visual Studio Code 插件,并且可以在我工作时在我的编辑器中看到类型错误。但我希望能够将它作为我们测试套件的一部分自动运行,包括在我们的 CI 服务器上,而 VS Code 插件无法做到这一点。我需要安装它并将其用作独立的命令行工具。

Pyright 的文档说它有一个命令行界面,但唯一的安装和构建说明是针对 Visual Studio Code 扩展的,并且安装并没有添加pyright可执行文件:

如何从命令行在我的 Python 项目上安装和运行 Pyright?

0 投票
2 回答
6349 浏览

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

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

# pyright: disable-- 不起作用

0 投票
2 回答
18760 浏览

python - 在 pyright 中修复“无法解析导入 [模块]”

我使用 pyright 进行类型检查,我也使用 pytest 在 Visual Studio Code 中进行测试。我的测试的文件夹结构是在包 root 中有一个 'test' 子文件夹。例如

我正在组织这样的事情,因为会有很多包裹,我想让事情井井有条。在pytest里面我有

Pytest 能够发现测试并正常运行它们,因为它具有调整其sys.path(或某些东西)的特殊能力。但是,pyright 只会抱怨它无法导入模块, Import 'MyPackage.MyModule' could not be resolvedpyright (reportMissingImports). 这是有道理的,但是有什么方法可以解决这个问题,无论是在 pyright 还是在 Visual Studio Code 设置中,以阻止这种抱怨?

0 投票
2 回答
6989 浏览

python - Python:如何按值为 bool 参数编写 typing.overload 装饰器

我想问的示例代码如下。
互联网上的示例都没有尝试像这样重载参数值。
其中一个参数是 bool 值,我想重载一个基于 bool 值而不是通常的参数类型的方法。

上述示例代码中的重载代码是否正确?你能给出一个提到这种重载的例子/博客/来源吗,因为我在 Python 文档和pep-484
中找不到任何东西

我发现一种可能的方法是typing.Literal使用最新的 python 文档(因为 python v3.8)

但是我还不能迁移到 python 3.8,因为我正在处理仍然在 python 3.6 上的生产代码,很快就会升级到 3.7。
因此,我仍在寻找有关如何在 python 3.6 中实现这一点的答案

0 投票
4 回答
2662 浏览

python - 如何将 python 类型注释添加到烧瓶全局上下文 g?

我有一个装饰器,它将用户添加到烧瓶全局上下文 g 中:

当我在控制器中访问 g.user 时,我希望知道 g.user 的类型(用户)。我怎样才能做到这一点?(我正在使用 pyright)

0 投票
1 回答
379 浏览

python-3.x - Python 类型提示和标准库的问题

以下代码按预期工作,但 os.path.join 在 VSCode 中使用 pyright 会产生类型错误,如图所示。

我想我理解问题的直接原因,但认为它不应该发生。鉴于此,我有一些问题:

  1. 这是编写此代码的惯用方式吗?
  2. 是 tempfile、os、pyright 还是我的问题?
  3. 如果我无法升级 Python,抑制错误的最佳(即最不笨重)方法是什么?
0 投票
1 回答
3599 浏览

visual-studio-code - 如何为 PyRight 设置根目录?

我在 VSCode 中有一个 Python 项目。它的结构

conftest.py有进口

我的任务是设置src为根文件夹,否则我会收到警告Import 'app.main' could not be resolved

0 投票
5 回答
58688 浏览

python - Pyright 报告的“导入无法解决”

在此处输入图像描述

我刚刚开始使用Pyright。在运行良好的文件上运行它会出现很多错误。

这个问题类似,但指的是自己的模块。

例如Import "numpy" could not be resolved. 这是什么意思,我该如何解决?

0 投票
0 回答
361 浏览

python - 改变函数参数的类型提示装饰器

我正在创建一个装饰器,我希望typehint保留它。但是,我需要稍微改变返回类型。如果您的修饰函数签名与原始函数签名相同, Mypy 文档包含有关如何执行此操作的信息,但如果返回类型被更改,我不确定如何执行此操作。

例如,这是我的原始功能:

它有签名(int) -> Awaitable[int]

这是我的使用方法:

当我在t_wrap编辑器中查看使用 pyright 或类似工具的类型时,它是(*args, **kwargs) -> int,而不是(int) -> int.

我的装饰器功能如下:

我缺少的是如何处理...- 我想定义 aTypeVar A来表示参数列表,但我不知道如何处理。

0 投票
1 回答
2856 浏览

python - 如何解决来自pyright的“类型部分未知”警告?

我正在通过 pyright 使用严格的类型检查。

当我有一个返回 pytorch 的方法时DataLoader,pyright 会抱怨我的类型定义:

声明的返回类型“DataLoader[Unknown]”部分未知 Pyright (reportUnknownVariableType)

看一下 pytorch 的类型存根DataLoader(简化为重要部分):

据我所知,泛型类型T_co应该DataLoader__init__数据集参数定义。

Pyright 还抱怨我的Dataset类型定义:

参数“数据集”的类型部分未知 参数类型为“数据集 [未知]” Pyright (reportUnknownParameterType)

看一下Dataset类型存根:

向我表明类型应该由__getitem__.

我的数据集的类型签名__getitem__如下所示:

基于此,我期望Dataset并被DataLoader推断为Dataset[Tuple[Tensor, Tensor]]DataLoader[Tuple[Tensor, Tensor]]但事实并非如此。

我的猜测是 pyright 无法在这里静态推断类型。

我以为我可以像这样定义自己的类型签名:

但这实际上导致我的python脚本崩溃:

TypeError:“类型”对象不可下标

如何正确定义Datasetand的类型DataLoader