问题标签 [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.
python - 如何从 CLI 安装和运行 Pyright 而不是使用 VS Code?
我想开始在我团队的项目中使用Pyright 。我已经安装了 Visual Studio Code 插件,并且可以在我工作时在我的编辑器中看到类型错误。但我希望能够将它作为我们测试套件的一部分自动运行,包括在我们的 CI 服务器上,而 VS Code 插件无法做到这一点。我需要安装它并将其用作独立的命令行工具。
Pyright 的文档说它有一个命令行界面,但唯一的安装和构建说明是针对 Visual Studio Code 扩展的,并且安装并没有添加pyright
可执行文件:
如何从命令行在我的 Python 项目上安装和运行 Pyright?
python - 是否可以忽略对一行的 pyright 检查?
我需要忽略对一行的 pyright 检查。有什么特别的评论吗?
# pyright: disable
-- 不起作用
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 设置中,以阻止这种抱怨?
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 中实现这一点的答案
python - 如何将 python 类型注释添加到烧瓶全局上下文 g?
我有一个装饰器,它将用户添加到烧瓶全局上下文 g 中:
当我在控制器中访问 g.user 时,我希望知道 g.user 的类型(用户)。我怎样才能做到这一点?(我正在使用 pyright)
python-3.x - Python 类型提示和标准库的问题
以下代码按预期工作,但 os.path.join 在 VSCode 中使用 pyright 会产生类型错误,如图所示。
我想我理解问题的直接原因,但认为它不应该发生。鉴于此,我有一些问题:
- 这是编写此代码的惯用方式吗?
- 是 tempfile、os、pyright 还是我的问题?
- 如果我无法升级 Python,抑制错误的最佳(即最不笨重)方法是什么?
visual-studio-code - 如何为 PyRight 设置根目录?
我在 VSCode 中有一个 Python 项目。它的结构
conftest.py
有进口
我的任务是设置src
为根文件夹,否则我会收到警告Import 'app.main' could not be resolved
python - 改变函数参数的类型提示装饰器
我正在创建一个装饰器,我希望typehint
保留它。但是,我需要稍微改变返回类型。如果您的修饰函数签名与原始函数签名相同, Mypy 文档包含有关如何执行此操作的信息,但如果返回类型被更改,我不确定如何执行此操作。
例如,这是我的原始功能:
它有签名(int) -> Awaitable[int]
。
这是我的使用方法:
当我在t_wrap
编辑器中查看使用 pyright 或类似工具的类型时,它是(*args, **kwargs) -> int
,而不是(int) -> int
.
我的装饰器功能如下:
我缺少的是如何处理...
- 我想定义 aTypeVar
A
来表示参数列表,但我不知道如何处理。
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:“类型”对象不可下标
如何正确定义Dataset
and的类型DataLoader
?