from __future__ import annotations
from typing import Callable
class Foo: ...
def foo[**P, T](fn: Callable[P, T] & type[T]): ...
foo(Foo) # error
Argument 1 to "foo" has incompatible type "type[Foo]"; expected "(*Never, **Never) -> Never & type[Never]" [arg-type]