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
{{ message }}
Repository navigation
issubclass(...) causes a TypeVar to become a Union, leading to false positives #11163
The presence of issubclass(...) in the code sample that follows causes arg to take on type Union[T, Type[object]]. This change in type leads to false positives, as demonstrated below.
fromtypingimportTypeVarT=TypeVar('T')
deffunction(arg: T) ->T:
ifisinstance(arg, type) andissubclass(arg, Exception):
raiseRuntimeErrorreturnarg# error: Incompatible return value type (got "Union[T, Type[object]]", expected "T") [return-value]
Expected Behavior
No errors should be reported. Testing the type of a variable should not change the type of the variable as seen outside the controlled code blocks (if/else).
Actual Behavior
The type of arg is changed, leading to a false positive as noted in the code sample above.
Your Environment
Mypy version used: 0.910 [edit: verified with 1.9.0]
Mypy command-line flags: (none necessary)
Mypy configuration options from mypy.ini (and other config files): (none)
Python version used: 3.8.3 from pyenv [edit: verified with 3.10]
Operating system and version: macOS 10.14 with homebrew
Activity
Narrow type variable bounds in binder (python#19183)