Return type у classmethod в наследуемом классе
Имеется следующий код.
@dataclass
class A:
x: int,
y: str,
@classmethod
def _build_class(cls, x: int, y: str) -> Union['A', 'B']:
return cls(x, y)
@classmethod
def build(cls, x: int, y: str) -> 'A':
return cls._build_class(cls, x, y)
@dataclass
class B(A):
@classmethod
def build(cls, x: int, y: str) -> 'B'
new_y = "Hello"
return cls._build_class(cls, x, new_y)
При проверке mypy ругается на то, что return type метода _build_class() не совпадает с return type методов builď() в классах A и B.
Вопрос: какой должен быть return type у _build_class(), учитывая то, что метод должен возвращать или объект класса А, или объект класса B, (в зависимости от класса, внутри которого он был вызван)?