Description
Feature
Add an option to reveal_type()
to format the type in the same way as error messages. Something like reveal_type(variable, format="short")
or similar API.
Pitch
Example (based on a bug in numpy 2.2):
import numpy as np
from numpy.typing import NDArray
def multiply(image: NDArray[np.float64], factor: float) -> NDArray[np.float64]:
reveal_type(image * factor)
return image * factor
results in
test.py:7: note: Revealed type is "numpy.ndarray[builtins.tuple[builtins.int, ...], numpy.dtype[numpy.floating[Any]]]"
test.py:8: error: Incompatible return value type (got "ndarray[tuple[int, ...], dtype[floating[Any]]]", expected "ndarray[tuple[int, ...], dtype[float64]]") [return-value]
The error is a numpy bug, and not the point of this request. My point is that the type formatting in reveal_type()
is different than in the error message, which makes debugging harder. Compare
numpy.ndarray[builtins.tuple[builtins.int, ...], numpy.dtype[numpy.floating[Any]]]
ndarray[tuple[int, ...], dtype[floating[Any]]]
I would like to be able to get reveal_type()
to display the type in the same way. Form a quick look, it seems that the error message uses format_type_distinctly()
whereas reveal_type()
uses the str representation. I assume the this is done intentionally and we don't want to change this by default (if that's not the case, could we just change it?). Therefore. I propose to make this configurable through an optional parameter.