-
-
Notifications
You must be signed in to change notification settings - Fork 2.9k
TypeVar
not narrowed when using isinstance
or issubclass
on final
classes
#12163
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
subclasscheck
on type
of genericisinstance
or issubclass
isinstance
or issubclass
TypeVar
not narrowed when using isinstance
or issubclass
TypeVar
not narrowed when using isinstance
or issubclass
TypeVar
not narrowed when using isinstance
or issubclass
on final
classes
Here is the minified version: from typing import final
@final
class A: ...
class B: ...
a: A
assert isinstance(a, B)
reveal_type(a) # note: Revealed type is "__main__.<subclass of "A" and "B">"
print("hi") # no unreachable error |
This issue is probably the same reason for this error here? import typing
class A: ...
@typing.final
class AA(A): ...
T = typing.TypeVar("T", bound=A)
def test(x: T) -> T:
if isinstance(x, AA):
return AA() # error: Incompatible return value type (got "AA", expected "T")
raise NotImplementedError() The expected return type within the Using |
…16330) Fixes #15148 I think it also fixes the [initial bug](#12163 (comment)) reported in #12163 (this is why I added a TypeVar test case) but not [this bug](#12163 (comment)) reported later in the same issue.
Fixed in #16330, released with mypy v1.8.0 |
https://mypy-play.net/?mypy=master&python=3.10&flags=show-error-codes%2Callow-redefinition%2Cstrict%2Ccheck-untyped-defs%2Cdisallow-any-decorated%2Cdisallow-any-expr%2Cdisallow-any-explicit%2Cdisallow-any-generics%2Cdisallow-any-unimported%2Cdisallow-incomplete-defs%2Cdisallow-subclassing-any%2Cdisallow-untyped-calls%2Cdisallow-untyped-decorators%2Cdisallow-untyped-defs%2Cno-implicit-optional%2Cno-implicit-reexport%2Cstrict-equality%2Cwarn-incomplete-stub%2Cwarn-redundant-casts%2Cwarn-return-any%2Cwarn-unreachable%2Cwarn-unused-configs%2Cwarn-unused-ignores&gist=43b6f21a9c890c7da5e41e2591b321b0
(the error messages are wrong due to #11536)
The text was updated successfully, but these errors were encountered: