Bug Report
(A clear and concise description of what the bug is.)
To Reproduce
from math import isnan
from typing import TypeVar
V = TypeVar("V")
def assert_scalar_equal(s1: V, s2: V, /) -> None:
assert type(s1) is type(s2)
if type(s1) is float and type(s2) is float and isnan(s2):
assert isnan(s1)
else:
assert s1 == s2
Expected Behavior
This snippet should type check.
Actual Behavior
mypy.ini: No [mypy] section in config file
t.py:9: error: Argument 1 to "isnan" has incompatible type "V"; expected "SupportsFloat | SupportsIndex" [arg-type]
t.py:10: error: Argument 1 to "isnan" has incompatible type "V"; expected "SupportsFloat | SupportsIndex" [arg-type]
Found 2 errors in 1 file (checked 1 source file)
Even more minimal reprod:
from math import isnan
from typing import TypeVar
V = TypeVar("V")
def foo(s1: V, /) -> None:
if type(s1) is float:
assert isnan(s1)
mypy.ini: No [mypy] section in config file
t.py:9: error: Argument 1 to "isnan" has incompatible type "V"; expected "SupportsFloat | SupportsIndex" [arg-type]
Found 1 error in 1 file (checked 1 source file)
Your Environment
- Mypy version used: 2.0.0 or 2.1.0
- Mypy command-line flags: None
- Mypy configuration options from
mypy.ini (and other config files): None
- Python version used: tested 3.11.14 and 3.14.6
Bug Report
(A clear and concise description of what the bug is.)
To Reproduce
Expected Behavior
This snippet should type check.
Actual Behavior
Even more minimal reprod:
Your Environment
mypy.ini(and other config files): None