如何解决如何使用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 举报,一经查实,本站将立刻删除。