Это не вводящее в заблуждение предупреждение, и не следует игнорировать , выполнение вашего кода в настоящий момент приведет к сбою:
$ python3.8 t.py
Traceback (most recent call last):
File "t.py", line 1, in <module>
def f(b: B) -> None:
NameError: name 'B' is not defined
У вас есть два варианта, чтобы исправить это, одинэто явно использовать предварительное объявление (заключая имя в кавычки):
def f(b: 'B') -> None:
pass
class B():
pass
время выполнения:
$ python3.8 t.py
$ flake8 t.py
Или использовать from __future__ import annotations
(новое в python3.7):
from __future__ import annotations
def f(b: B) -> None:
pass
class B():
pass
ПРИМЕЧАНИЕ : я использую flake8 3.7.x, который также улучшил обработку форвардных аннотаций и комментариев типа