diff --git a/numpy/typing/__init__.py b/numpy/typing/__init__.py index 8e758b26cb6f..0cf534bc01b6 100644 --- a/numpy/typing/__init__.py +++ b/numpy/typing/__init__.py @@ -161,7 +161,8 @@ # NOTE: The API section will be appended with additional entries # further down in this file -from typing import TYPE_CHECKING, List, Any +from numpy import ufunc +from typing import TYPE_CHECKING, List if TYPE_CHECKING: import sys @@ -364,14 +365,16 @@ class _8Bit(_16Bit): ... # type: ignore[misc] _GUFunc_Nin2_Nout1, ) else: - _UFunc_Nin1_Nout1 = Any - _UFunc_Nin2_Nout1 = Any - _UFunc_Nin1_Nout2 = Any - _UFunc_Nin2_Nout2 = Any - _GUFunc_Nin2_Nout1 = Any + # Declare the (type-check-only) ufunc subclasses as ufunc aliases during + # runtime; this helps autocompletion tools such as Jedi (numpy/numpy#19834) + _UFunc_Nin1_Nout1 = ufunc + _UFunc_Nin2_Nout1 = ufunc + _UFunc_Nin1_Nout2 = ufunc + _UFunc_Nin2_Nout2 = ufunc + _GUFunc_Nin2_Nout1 = ufunc # Clean up the namespace -del TYPE_CHECKING, final, List, Any +del TYPE_CHECKING, final, List, ufunc if __doc__ is not None: from ._add_docstring import _docstrings