-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Closed as not planned
Labels
bugmypy got something wrongmypy got something wrong
Description
Bug Report
Mypy doesn't appear to handle generic parameters with default values correctly.
To Reproduce
from typing import TypeVar, reveal_type
import numpy as np
from numpy.typing import NBitBase, NDArray
T = TypeVar("T", bound=NBitBase)
def func(dtype: type[np.floating[T]] = np.float64) -> NDArray[np.floating[T]]: # error: Incompatible default for argument "dtype" (default has type "type[floating[Any]]", argument has type "type[floating[T]]") [assignment]
return np.empty(1, dtype)
reveal_type(func()) # Revealed type is "numpy.ndarray[Any, numpy.dtype[numpy.floating[<nothing>]]]"
reveal_type(func(np.float32)) # Revealed type is "numpy.ndarray[Any, numpy.dtype[numpy.floating[numpy._typing._32Bit]]]"Expected Behavior
scratch.py:11: note: Revealed type is "numpy.ndarray[Any, numpy.dtype[numpy.floating[numpy._typing._64Bit]]]"
scratch.py:12: note: Revealed type is "numpy.ndarray[Any, numpy.dtype[numpy.floating[numpy._typing._32Bit]]]"
Actual Behavior
scratch.py:8: error: Incompatible default for argument "dtype" (default has type "type[floating[Any]]", argument has type "type[floating[T]]") [assignment]
scratch.py:11: note: Revealed type is "numpy.ndarray[Any, numpy.dtype[numpy.floating[<nothing>]]]"
scratch.py:12: note: Revealed type is "numpy.ndarray[Any, numpy.dtype[numpy.floating[numpy._typing._32Bit]]]"
Found 1 error in 1 file (checked 1 source file)
Your Environment
- Mypy version used: 1.5.1
- Mypy command-line flags: none
- Mypy configuration options from
mypy.ini(and other config files): none - Python version used: 3.11.5
$ .venv/bin/pip freeze
mypy==1.5.1
mypy-extensions==1.0.0
numpy==1.26.0
typing_extensions==4.8.0
Metadata
Metadata
Assignees
Labels
bugmypy got something wrongmypy got something wrong