from __future__ import annotations from typing import Callable from mypy.plugin import ClassDefContext, Plugin from mypy.plugins.common import add_method from mypy.types import NoneType class AddOverrideMethodPlugin(Plugin): def get_class_decorator_hook_2(self, fullname: str) -> Callable[[ClassDefContext], bool] | None: if fullname == "__main__.inject_foo": return add_extra_methods_hook return None def add_extra_methods_hook(ctx: ClassDefContext) -> bool: add_method(ctx, "foo_implicit", [], NoneType()) return True def plugin(version: str) -> type[AddOverrideMethodPlugin]: return AddOverrideMethodPlugin