You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Remove TypeType exception for abstract instantiation
If A is abstract, it's weird to me that we have a difference in the
following two calls:
```
from abc import abstractmethod, ABCMeta
class A(metaclass=ABCMeta):
@AbstractMethod
def __init__(self, a: int) -> None:
pass
def test_a(A_t: type[A]) -> None:
A_t(1)
A(1)
```
Mypy tries to then enforce soundness by preventing you from passing `A`
to a parameter of `type[A]`. But this is very unpopular, since there
are legitimate uses of `A` that have nothing to do with instantiation.
See #4717
As mentioned in
https://discuss.python.org/t/compatibility-of-protocol-class-object-with-type-t-and-type-any/48442/2
I think we should switch to disallowing instantiation of `type[Proto]` and
`type[Abstract]`.
This also makes tackling `__init__` unsoundness more tractable. If
people want unsound `__init__`, they can use `Callable[..., P]`.
0 commit comments