问题标签 [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-typing - 如何显示和忽略 Pyright 错误代码
我正在使用 pyright 类型检查器,并且需要抑制警告,例如 numpy 类型存根不足以推断出正确的类型。这可以通过#type: ignore
注释来完成。但是,我希望任何其他问题仍能在同一行突出显示。例如,mypy
提供show_error_codes
选项提供错误代码,我可以将其附加到 type:ignore 注释以仅抑制此特定问题。
我在文档https://github.com/microsoft/pyright/blob/main/docs/configuration.md中找不到这样的选项。pyright 是否可以显示/忽略特定的错误代码?
python - Pyright 类型错误与 Flask 错误处理程序
我正在努力使用 Pyright 进行严格的类型检查,但我遇到了 Flask 错误处理程序的问题。我对类型提示还不够熟悉,无法知道这是否是我的代码、Pyright 或 Flask 的类型提示中的错误。
这是引起我问题的代码:
上面的代码在 VSCode 中生成了这种类型的错误:
我可以通过向我的错误处理程序添加显式返回类型来改进问题:
这将删除先前的错误并将其替换为以下错误:
所以我查看了 flask.typing.ResponseValue 类型。它是这样定义的联合类型:
作为一个实验,我flask.typing
在我的虚拟环境中修改了版本并添加str
了可能的值。这消除了所有错误。
为什么 str 和 AnyStr 在这里不兼容?在我看来, AnyStr 应该能够接受 str 值。
如果这不是我的代码的问题,是 Flask 还是 Pyright 问题?
谢谢!
python - 有没有办法在 pyright 中将变量标记为常量/不可更改?
我试过谷歌搜索,但我还没有找到一种方法来使用类型注释将变量标记为 pyright 中的常量。我认为常量类型更像是标量常量,而不是 C/C++ 关键字 const。
任何想法表示赞赏。
谢谢。
python - 签名中具有重叠类型提示的重载函数会导致 mypy 错误,但不会导致 pyright
以下面的代码示例为例:
基本思想是my_func
使用特定字符串调用if'bacon'
或'eggs'
返回类型应为float
. 如果使用任何其他字符串,则返回类型应为bool
.
直观地说,我希望在不太具体的注释之前首先检查更具体的注释 ( ) 。foo: SpecificStrings
: str
但是,当使用 键入检查此文件时mypy
,我收到一个错误:
t.py:6:错误:重载的函数签名 1 和 2 与不兼容的返回类型重叠
此外,当使用 进行类型检查时pyright
,没有发现错误。
似乎这可能是 中的错误、中mypy
的错误pyright
,或者可能是其他东西...... PEP484似乎没有表明在这种情况下应该是什么行为。
是否有另一种方法来键入这种情况,使其工作(也就是说,x
在y
上面的例子中,和被理解为它们各自的类型float
和bool
)与mypy
?
编辑:
有趣的是,使用Enum
而不是Literal
似乎是一种解决方法:
reveal_type()
在这种情况下,与 pyright 和 mypy 一起使用会显示正确的类型。
对我来说,这引出了另一个问题:为什么Enum
有效但无效Literal
?
然而,令人沮丧的是,PyCharm 并没有做同样的事情:
python-3.x - 修复 Pyright 错误:“Literal['Dispatch__'] 和“_T@filter”类型不支持运算符“in”
我有一行代码不断被 Pyright 标记,我不确定如何重写这行代码:
Pyright 说:
该代码按预期工作,所以我不确定它试图保护我免受什么侵害。
node.js - 如何在 ubuntu 20.04 上安装 pyright?
我想在我的 ubuntu 上安装 pyright。为此,我首先安装了 npm(最新版本):
但是当我安装一个 pyright 时,我得到了这些错误:
你能告诉我这是否可以以某种方式解决吗?
python - 让 pyright/PyCharm 识别装饰器设置的参数
我有以下装饰器函数(serialize_request
from的简化版本api-client-pydantic
),它应该用于将任意数量的pydantic
模型作为参数的函数。它使用传递给它的参数初始化这些模型,然后使用这些模型作为参数调用包装函数。
通过覆盖签名,像 ipython 这样的工具可以识别新参数并在弹出帮助中显示它们。例如,具有以下模型和功能:
但 pyright 无法识别它们并显示错误:
我不知道 PyCharm 在内部使用什么,但它也无法识别新参数。但它没有显示错误,它只接受任何有效参数,也没有任何参数:
现在,我的问题是,是否有某种方法可以让 pyright/PyCharm 和类似工具识别装饰器设置的那些“新”参数,并使它们表现得好像参数是直接在函数上设置的一样。