Как правильно набрать beam.Map с помощью pyright
У меня есть код луча, например:
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 кажется, что луч не обеспечивает достаточного хинтинга типов. Есть ли способ обойти это как пользователь луча, чтобы mypy принимал код (без игнорирования ошибки типа).
РЕДАКТИРОВАТЬ :
Я сейчас попробовал:
temp = pcoll | beam.Map(foo)
assert isinstance(temp, PCollection[Foo])
return temp
Хорошие новости тоже
temp =
ни
return
в строке есть ошибки. Плохая новость в том, что теперь он жалуется на строку isinstance:
TypeVar или универсальный тип с недопустимыми аргументами типа