def annotate_overrides(cls):
    """
    Copy annotations of overridden methods.
    """
bases = cls.mro()[1:]
for name, method in getmembers(cls, _is_method_override):
    for base in bases:
        if hasattr(base, name):
            break
else:
    raise RuntimeError('method {!r} not found in bases of {!r}'.format(name,
        cls))
base_method = getattr(base, name)
method.__annotations__ = base_method.__annotations__.copy()
return cls
How to type annotate overrided methods in a subclass?