微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用pyright正确键入beam.Map

如何解决如何使用pyright正确键入beam.Map

我的光束代码如下:


def foo(i: int) -> Foo:
  ...
class IntToFoo(beam.PTransform):
  def expand(self,pcoll: PCollection[int]) -> PCollection[Foo]:
    return pcoll | beam.Map(foo)

运行 pyright 它抱怨返回行:

Expression of type "PValue" cannot be assigned to return type "PCollection[Foo]"
  "PValue" is incompatible with "PCollection[Foo]

现在 AFAIU 似乎梁没有提供足够的类型提示。 作为 Beam 的用户,有没有办法解决这个问题,以便 pyright 接受代码(不忽略类型错误)。

编辑

我现在尝试:

    temp = pcoll | beam.Map(foo)
    assert isinstance(temp,PCollection[Foo])
    return temp

好消息是,temp =return 行都没有任何错误。坏消息是它现在在 isinstance 线上抱怨:

TypeVar 或泛型类型,不允许使用类型参数

编辑 2

现在我解决

temp = pcoll | beam.Map(foo)
return cast(PCollection[Foo],temp)

哪个 IMO 仍然不是解决方案,因为我需要同时指定 PCollection[Foo] 签名和演员表。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。