diff --git a/src/numpy-stubs/__init__.pyi b/src/numpy-stubs/__init__.pyi index 08922b3b..07a50741 100644 --- a/src/numpy-stubs/__init__.pyi +++ b/src/numpy-stubs/__init__.pyi @@ -588,6 +588,7 @@ _IntegerT = TypeVar("_IntegerT", bound=integer) _SignedIntegerT = TypeVar("_SignedIntegerT", bound=signedinteger) _UnsignedIntegerT = TypeVar("_UnsignedIntegerT", bound=unsignedinteger) _CharT = TypeVar("_CharT", bound=character) +_IntegralT = TypeVar("_IntegralT", bound=bool_ | number | object_) _NBitT = TypeVar("_NBitT", bound=NBitBase, default=Any) _NBitT1 = TypeVar("_NBitT1", bound=NBitBase, default=Any) @@ -611,6 +612,8 @@ _DT64ItemT = TypeVar("_DT64ItemT", bound=dt.date | int | None) _DT64ItemT_co = TypeVar("_DT64ItemT_co", bound=dt.date | int | None, default=dt.date | int | None, covariant=True) _TD64UnitT = TypeVar("_TD64UnitT", bound=_TD64Unit, default=_TD64Unit) +_Array1D: TypeAlias = ndarray[tuple[int], dtype[_ScalarT]] + ### # Type Aliases (for internal use only) @@ -2531,8 +2534,9 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DTypeT_co]): @overload def __imul__(self: NDArray[object_], rhs: object, /) -> ndarray[_ShapeT_co, _DTypeT_co]: ... - # TODO(jorenham): Support the "1d @ 1d -> scalar" case - # https://github.com/numpy/numtype/issues/197 + # + @overload + def __matmul__(self: _Array1D[_IntegralT], rhs: _Array1D[_IntegralT], /) -> _IntegralT: ... # type: ignore[overload-overlap] # pyright: ignore[reportOverlappingOverload] @overload def __matmul__(self: NDArray[_NumberT], rhs: _ArrayLikeBool_co, /) -> NDArray[_NumberT]: ... @overload