I’m not sure I fully understand what you’re trying to do here. It looks odd that you’re “wrapping” a function that returns a non-None value but then discarding the return value and returning None instead.
Does this meet your needs?
def my_wraps[**P](
inner: Callable[P, Any]
) -> Callable[[Callable[..., None]], Callable[P, None]]:
def impl(x: Callable[..., None]) -> Callable[P, None]:
return inner
return impl
@my_wraps(inner)
def wrapper(*args: Any, **kwargs: Any) -> None:
inner(*args, **kwargs)
return