问题标签 [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 投票
0 回答
77 浏览

python - VScode 在 scipy stats 中找不到模块规范

有一个名为的 scipy.stats 模块,norm但 VScode 似乎没有找到它。

在此处输入图像描述.

我知道这个非常相似的问题,但我无法根据那里给出的答案解决我的问题。

Scipy 安装在 Conda 环境中。

使用 VScode 1.61.2 和 Conda 4.10.3。

0 投票
0 回答
182 浏览

python - Python Typing:如何处理子类中具有不同元素类型的列表类型提示?

我试图了解类型提示在 Python 中是如何工作的——尤其是在儿童类中。我在处理一个项目时遇到了这个问题,并且能够在一个示例中重新创建该问题,如下所示。

环境:

  • 蟒蛇:3.9.7
  • 我的:0.910
  • 操作系统:Ubuntu 20.04

示例代码:

我不明白如何解决这个问题:

BList我在课堂上收到以下 Pyright 错误super().__init__(elements)

我还在 mypy 中收到以下错误消息:

将继续努力,但任何建议/反馈将不胜感激。感谢您的时间!

0 投票
1 回答
56 浏览

python - 解包对象属性时是否可以维护类型信息?

想象一下,我有一个对象,它是一个类的实例,如下所示:

我使用dataclasses是为了方便,但在这个问题的上下文中,没有要求类是dataclass.

通常,如果我想解包这样一个对象的属性,我必须实现__iter__,例如如下:

但是,从像pyright这样的静态类型检查器的角度来看,我现在已经丢失了 and 的任何类型信息barbaz它只能推断是 type Anyiter我可以通过手动创建元组参数来稍微改进:

但是我仍然没有特定的类型barand baz。我可以注释bar然后直接baz使用dataclasses.astuple如下:

但这需要可读性较差的多级列表理解,例如

也把我绑在dataclasses.

显然,这一切都不是不可克服的。如果我想使用类型检查器,我不能使用解包语法,但如果有一种干净的方法可以做到这一点,我真的很想这样做。

如果当前无法使用通用方法,则可以接受特定于dataclasses或更好的答案。attrs

0 投票
0 回答
78 浏览

python - Pyright 严格的类型检查模式在 Sublime Text 4.0 中不起作用

我已经在 Sublime Text 4 中安装了 LSP 和 LSP-pyright 并包含"python.analysis.typeCheckingMode": "strict"LSP-pyright.sublime-settings文件中,但是Pyright当我编写以下代码时仍然不会引发任何类型错误:

补充一点,似乎基本的类型检查模式仍然有效,因为代码

让 Pyright 加注reportMissingImports。那么问题似乎是什么?

0 投票
1 回答
1014 浏览

neovim - Neovim 内置 LSP 显示没有可用于 Python 文件的代码操作

当我打开一个 python 文件时,诊断似乎工作正常。然后我导航到出现诊断错误的行,按快捷方式调用代码操作(在我的情况下为“<space>ca”),我收到一条消息“没有可用的代码操作”。我尝试针对不同的错误运行它,例如以下错误:

到目前为止,我已经尝试了两个 LSP 服务器:pyright 和 pylsp,它们都给了我相同的“没有可用的代码操作”

我看到了一个类似的问题,但是 JavaScript在这里问,它建议安装一个插件,但这对我不起作用。

0 投票
0 回答
135 浏览

python - 为什么 Python 泛型类型别名对此类型检查函数无效?

我有一个 Python 函数用作运行时检查,以确保对象是元组中至少一个类的实例。它有效,我的类型检查器(pyright)正确地从参数推断返回类型:

但是,当我尝试将模式Union[Type[T], Tuple[T, ...]]分解为类型别名时,它会破坏类型推断:

为什么我不能在这里使用类型别名?

0 投票
1 回答
68 浏览

python - Python 类型检查:Literal[False]、重载和 NoReturn

我有以下(键入)Python 函数:

Pyright 类型检查器抱怨:

我对此感到困惑——Pyright 显然无法确定check如果条件为False. 我怎样才能按摩它以使其发挥作用?

0 投票
0 回答
32 浏览

python - Pyright 为实现类型的自定义类提供“关键”建议。映射

在编写如下所示的简单 python 程序时,pyright可以检测到我的地图中有键 1、2、3,以及后来使用[ ]符号添加的 10、11。

我可以为自定义类型实现相同类型的推断,例如以下?

我知道这pyright实际上不会运行我的代码,但我想知道上述是否可行,或者是否也为自定义类公开了与内置映射中相同的技巧。

0 投票
0 回答
50 浏览

python-typing - Python类型:存根优先于库源吗?

我将我的代码分成多个包,这些包可以通过 PyPI 安装。为了进行完整的类型检查,我想在本地和 CI 中使用 pyright / pylance。

为 python 库记录类型的推荐方法是什么?我目前在源代码中部分注释类型。我必须提供存根吗?我收到类似Stub file not foundvscode 的警告。此外,我不太确定如何将 pyright 指向 CI 中依赖项的代码/环境。

具体问题:

  1. 如果我希望用户能够访问打字,那么 python 库是否必须使用存根?
  2. 如果两者都有类型,存根是否优先于库的源代码?
0 投票
0 回答
235 浏览

python - `pyright` LSP 可以导航到不同的模块吗?

pyrightgoto 定义命令应该跳转到不同的模块吗?

我像这样导入python类from a.b.c import Foo

当我的光标打开a = Foo()并且我调用lua vim.lsp.buf.definition()nvim 时,它只会跳转到文件的顶部,但不会按照定义进入另一个模块。在顶部导入上执行相同的命令无济于事。

我在我的 init.vim 中使用以下脚本来设置root_dir