问题标签 [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 - 我可以在转换为 dict 时省略的数据类中的可选参数吗?
我希望对某些字典执行静态类型检查( pylance
in )。vscode
“棘手”部分是我希望某些参数是可选的,并且根本不显示在字典中。我试过使用dataclasses
,TypedDict
但到目前为止没有运气。
这可以实现dataclasses
吗?我基本上只希望我的静态类型检查器 ( pylance
/ pyright
) 来检查我的字典,这就是我使用dataclasses
. 我也尝试过,TypedDict
但类型检查器的行为似乎不像我。他们总是要求我设置sub_orders
。
以下代码通过但pylance
不满意没有sub_orders
.
编辑
我已经添加了一个错误报告,pylance
因为这实际上可能是pylance
/pyright
python-3.x - “冻结”未定义Pylance(reportUndefinedVariable)
我在 VScode 上使用 pylance 来检查我的 Python 代码。数据类的冻结参数有问题:
Pylance 抱怨这个错误:"frozen" is not definedPylance (reportUndefinedVariable)
当我导航到 时dataclasses.pyi
,这是我看到的数据类:
所以看起来它没有选择正确的重载方法。反正要引导吗?
python - 类函数装饰器的正确类型
键入函数装饰器的正确方法是什么print_before
,以便包装函数具有正确的类型,但我不能在不起作用的类上使用装饰器?
谢谢你
python - 过滤器方法行为异常
我正在尝试将类型提示引入现有代码库,但是当我尝试键入查询时遇到了问题。
在我添加类型提示之前,动态过滤只是一个简单的问题:
但是,现在提示我收到此错误:
“无”类型的表达式不能分配给声明的类型“查询”
果然,filter
似乎返回None
:
(方法)过滤器:(*标准:未知)-> 无
我导航到源,看来该方法确实没有返回任何内容。
显然某处存在断开连接,因为分配None
到sub_query
应该会导致提示警告的错误,但我需要执行分配以使过滤真正起作用:
这是我第一次涉足 Python,希望得到一些关于这里发生了什么的指导!
neovim - 如何根据pyenv / virtualenv在neovim中为python语言服务器设置python解释器
我在 neovim (0.5) 中使用 pyright LSP。它可以工作,但似乎只选择标准 python 安装中可用的包。对于不在基本 python 中但在我的 pyenv 环境中的包,它不会自动完成。在 VSCode 中,这很容易通过选择解释器来完成。
如何在 Neovim 中设置 Pyright LSP 使用的虚拟环境或 pyenv 版本?
python - 我可以限制 Python 中子类的类型吗?
假设我想在集合和列表上定义包装类,以添加一些有用的方法,如下所示:
现在我可以打电话了:
但我也想拥有bloviate()
自己的实用方法:
所以我也可以这样做:
由于 subclassListGizmo
是一个列表,而 subclassSetGizmo
是一个集合,所以这个设置在实践中实际上工作得很好。但是静态类型检查器(如 pyright)不知道,所以它们(正确地)在这里显示错误:
有什么方法可以向 Python / pyright 表明,基本上,“所有实例AbstractGizmo
都保证在Union[Set, List]
”?这种语法逃脱了我。
(注意,当然在这个简单的例子中,我可以只定义bloviate()
每个子类来避免这个问题。实际上我有更多的方法和更多的包装子类,所以如果我不能将它们抽象为AbstractGizmo
.)
apache-beam - 如何正确输入 beam.Map 与 pyright
我有像这样的梁代码:
运行pyright它抱怨返回线:
现在 AFAIU 似乎梁没有提供足够的类型提示。作为 beam 的用户,有没有办法解决这个问题,以便 pyright 接受代码(不忽略类型错误)。
编辑:
我现在尝试:
好消息是,线路也temp =
没有return
任何错误。坏消息是它现在在 isinstance 线上抱怨:
不允许使用类型参数的 TypeVar 或泛型类型
编辑 2:
现在我解决了
IMO 仍然不是一个解决方案,因为我需要同时指定PCollection[Foo]
签名和演员表。