Проблемы с печатью в PyCharm
У меня есть следующая функция:
def clock(dimS: Tuple[int] =(0)) -> Generator[Tuple[int], None, None]:
""" Produce coordinates """
itr = 0
dim = len(dimS)
maxItr = np.prod(dimS)
if (dim < 1):
raise ValueError(
'function clock expected positive number of dimensions, received: 0'
)
while itr < maxItr:
c = []
ind = itr
# build coordinate
for i in range(dim):
s = dimS[dim - i - 1]
g = ind % s
ind //= s # update
c.append(g)
itr += 1
yield tuple(reversed(c))
Я использую PyCharm для редактирования моего кода (очень нравится). Это говорит мне тип Generator[Tuple[int], None, None]
ожидалось, но вместо got no return
? Когда я изменяю это на Generator[Tuple[int], None, bool]
и добавить строку return True
как в примере документации, IDE выделяет True
и говорит мне Expected Generator[Tuple[int], None, bool], got bool
, Как это исправить?
Вот более простой пример, который делает то же самое:
from typing import Generator
def foo(i: int =0) -> Generator[int, None, None]:
while True:
i += 1
yield i
Это подчеркивает Generator[int, None, None]
и говорит мне got no return
,
1 ответ
mypy
принимает ваш образец ввода без проблем. Это проблема с PyCharm от того, что кажется.
Просматривая систему отслеживания ошибок для JetBrains, я обнаружил проблему, касающуюся того, что вы испытываете, см. Подсказку типа возврата, перепутанную с типом "Генератор".