I have a function that takes a matplotlib 3D axis:
from mpl_toolkits.mplot3d.axes3d import Axes3D
def plot(ax: Axes3D):
pass
I know how to add a type hint for a 2D axis. Just ax: plt.Axes
works perfectly. However, with this mpl_toolkits.mplot3d.axes3d.Axes3D
, pylance complains that:
Expected type expression but received (...) -> Unknown Pylance
Sadly, there is no plt.Axes3D
equivalent to plt.Axes
.
I verified that mpl_toolkits.mplot3d.axes3d.Axes3D
works as expected. The following code does not give an error:
fig = plt.figure()
Axes3D(fig)
I went to the definition of Axes3D
and found that the problem is the @_docstring.interpd
decorator. If I remove it, the pylance warning goes away. The @_api.define_aliases
seems to be fine.
I am using python 3.10.12 and matplotlib 3.8.0
Edit: The motivation for the type being Axes3D
and not Axes
is that otherwise pylance shows a diagnostic that Axes
has no method set_zlabel()
, etc.
from Type hints for matplotlib Axes3D
No comments:
Post a Comment