diff --git a/src/numpy-stubs/__init__.pyi b/src/numpy-stubs/__init__.pyi index 0a6ffe6e..97686ff9 100644 --- a/src/numpy-stubs/__init__.pyi +++ b/src/numpy-stubs/__init__.pyi @@ -685,9 +685,7 @@ _FlexItemT_co = TypeVar( covariant=True, ) _CharacterItemT_co = TypeVar("_CharacterItemT_co", bound=bytes | str, default=bytes | str, covariant=True) -_TD64ItemT = TypeVar("_TD64ItemT", bound=dt.timedelta | int | None) _TD64ItemT_co = TypeVar("_TD64ItemT_co", bound=dt.timedelta | int | None, default=dt.timedelta | int | None, covariant=True) -_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) @@ -786,6 +784,12 @@ _ToUInteger32: TypeAlias = uint32 | _ToUInteger16 _ToFloating64: TypeAlias = _nt.floating64 | _nt.floating32 | _nt.floating16 _ToCFloating64: TypeAlias = _nt.cfloating64 | _nt.cfloating32 +_CoFloat16: TypeAlias = int | _nt.JustFloat | _nt.CanArray0D[float16 | _nt.co_integer8] +_CoFloat32: TypeAlias = int | _nt.JustFloat | _nt.CanArray0D[float32 | float16 | _nt.co_integer16] +_CoFloat64: TypeAlias = float | _nt.CanArray0D[float64 | float32 | float16 | _nt.co_integer] +_CoComplex64: TypeAlias = int | _nt.JustFloat | _nt.JustComplex | _nt.CanArray0D[complex64 | float32 | float16 | _nt.co_integer16] +_CoComplex128: TypeAlias = complex | _nt.CanArray0D[complex128 | complex64 | float64 | float32 | float16 | _nt.co_integer] + _ArrayUInt_co: TypeAlias = NDArray[_nt.co_uint64] _ArrayInt_co: TypeAlias = NDArray[_nt.co_int64] _ArrayInteger_co: TypeAlias = NDArray[_nt.co_integer] @@ -3950,21 +3954,21 @@ class generic(_ArrayOrScalarCommon, Generic[_ItemT_co]): # @overload - def __eq__(self, other: _ScalarLike_co, /) -> bool_: ... + def __eq__(self, other: _nt.ToGeneric_0d, /) -> bool_: ... @overload - def __eq__(self, other: ndarray[_ShapeT, dtype], /) -> ndarray[_ShapeT, dtype[bool_]]: ... + def __eq__(self, other: ndarray[_ShapeT, Any], /) -> ndarray[_ShapeT, dtype[bool_]]: ... @overload - def __eq__(self, other: _NestedSequence[ArrayLike], /) -> NDArray[bool_]: ... + def __eq__(self, other: _nt.ToGeneric_1nd, /) -> NDArray[bool_]: ... @overload def __eq__(self, other: object, /) -> Any: ... # @overload - def __ne__(self, other: _ScalarLike_co, /) -> bool_: ... + def __ne__(self, other: _nt.ToGeneric_0d, /) -> bool_: ... @overload - def __ne__(self, other: ndarray[_ShapeT, dtype], /) -> ndarray[_ShapeT, dtype[bool_]]: ... + def __ne__(self, other: ndarray[_ShapeT, Any], /) -> ndarray[_ShapeT, dtype[bool_]]: ... @overload - def __ne__(self, other: _NestedSequence[ArrayLike], /) -> NDArray[bool_]: ... + def __ne__(self, other: _nt.ToGeneric_1nd, /) -> NDArray[bool_]: ... @overload def __ne__(self, other: object, /) -> Any: ... @@ -4293,7 +4297,7 @@ class generic(_ArrayOrScalarCommon, Generic[_ItemT_co]): def dtype(self) -> dtype[Self]: ... class number( - _NumericComparisonMixin[_NumberLike_co, _nt.CoComplex_nd], + _NumericComparisonMixin[_nt.CoComplex_0d, _nt.CoComplex_1nd], generic[_NumberItemT_co], Generic[_BitT, _NumberItemT_co], ): @@ -4411,86 +4415,85 @@ class inexact(number[_BitT, _InexactItemT_co], Generic[_BitT, _InexactItemT_co]) def __rdivmod__(self: inexact[Any, float], x: Any, /) -> _2Tuple[floating | integer]: ... class floating(_RealMixin, _RoundMixin, inexact[_BitT, float]): + @override def __init__(self, value: _ConvertibleToFloat | None = ..., /) -> None: ... - - # @override def __abs__(self, /) -> Self: ... # @overload @abc.abstractmethod - def __add__(self, x: _nt.CoFloating_0d, /) -> floating: ... + def __add__(self, x: _nt.CoFloat64_0d, /) -> floating: ... @overload @abc.abstractmethod - def __add__(self, x: _nt.JustComplex, /) -> complexfloating: ... + def __add__(self, x: _nt.ToComplex64_0d | _nt.ToComplex128_0d, /) -> complexfloating: ... @overload @abc.abstractmethod def __radd__(self, x: _nt.CoFloating_0d, /) -> floating: ... @overload @abc.abstractmethod - def __radd__(self, x: _nt.JustComplex, /) -> complexfloating: ... + def __radd__(self, x: _nt.ToComplex64_0d | _nt.ToComplex128_0d, /) -> complexfloating: ... # keep in sync with `__add__` @overload @abc.abstractmethod - def __sub__(self, x: _nt.CoFloating_0d, /) -> floating: ... + def __sub__(self, x: _nt.CoFloat64_0d, /) -> floating: ... @overload @abc.abstractmethod - def __sub__(self, x: _nt.JustComplex, /) -> complexfloating: ... + def __sub__(self, x: _nt.ToComplex64_0d | _nt.ToComplex128_0d, /) -> complexfloating: ... @overload @abc.abstractmethod def __rsub__(self, x: _nt.CoFloating_0d, /) -> floating: ... @overload @abc.abstractmethod - def __rsub__(self, x: _nt.JustComplex, /) -> complexfloating: ... + def __rsub__(self, x: _nt.ToComplex64_0d | _nt.ToComplex128_0d, /) -> complexfloating: ... # keep in sync with `__add__` @overload @abc.abstractmethod - def __mul__(self, x: _nt.CoFloating_0d, /) -> floating: ... + def __mul__(self, x: _nt.CoFloat64_0d, /) -> floating: ... @overload @abc.abstractmethod - def __mul__(self, x: _nt.JustComplex, /) -> complexfloating: ... + def __mul__(self, x: _nt.ToComplex64_0d | _nt.ToComplex128_0d, /) -> complexfloating: ... @overload @abc.abstractmethod def __rmul__(self, x: _nt.CoFloating_0d, /) -> floating: ... @overload @abc.abstractmethod - def __rmul__(self, x: _nt.JustComplex, /) -> complexfloating: ... + def __rmul__(self, x: _nt.ToComplex64_0d | _nt.ToComplex128_0d, /) -> complexfloating: ... # keep in sync with `__add__ @overload @abc.abstractmethod - def __pow__(self, x: _nt.CoFloating_0d, mod: None = None, /) -> floating: ... + def __pow__(self, x: _nt.CoFloat64_0d, mod: None = None, /) -> floating: ... @overload @abc.abstractmethod - def __pow__(self, x: _nt.JustComplex, mod: None = None, /) -> complexfloating: ... + def __pow__(self, x: _nt.ToComplex64_0d | _nt.ToComplex128_0d, mod: None = None, /) -> complexfloating: ... @overload @abc.abstractmethod def __rpow__(self, x: _nt.CoFloating_0d, mod: None = None, /) -> floating: ... @overload @abc.abstractmethod - def __rpow__(self, x: _nt.JustComplex, mod: None = None, /) -> complexfloating: ... + def __rpow__(self, x: _nt.ToComplex64_0d | _nt.ToComplex128_0d, mod: None = None, /) -> complexfloating: ... # keep in sync with `__add__` @overload @abc.abstractmethod - def __truediv__(self, x: _nt.CoFloating_0d, /) -> floating: ... + def __truediv__(self, x: _nt.CoFloat64_0d, /) -> floating: ... @overload @abc.abstractmethod - def __truediv__(self, x: _nt.JustComplex, /) -> complexfloating: ... + def __truediv__(self, x: _nt.ToComplex64_0d | _nt.ToComplex128_0d, /) -> complexfloating: ... @overload @abc.abstractmethod def __rtruediv__(self, x: _nt.CoFloating_0d, /) -> floating: ... @overload @abc.abstractmethod - def __rtruediv__(self, x: _nt.JustComplex, /) -> complexfloating: ... + def __rtruediv__(self, x: _nt.ToComplex64_0d | _nt.ToComplex128_0d, /) -> complexfloating: ... # keep in sync with `__truediv__` (minus the complex overload) @override @abc.abstractmethod - def __floordiv__(self, x: _nt.CoFloating_0d, /) -> floating: ... + def __floordiv__(self, x: _nt.CoFloat64_0d, /) -> floating: ... @override @abc.abstractmethod def __rfloordiv__(self, x: _nt.CoFloating_0d, /) -> floating: ... @@ -4498,7 +4501,7 @@ class floating(_RealMixin, _RoundMixin, inexact[_BitT, float]): # keep in sync with `__floordiv__` @override @abc.abstractmethod - def __mod__(self, x: _nt.CoFloating_0d, /) -> floating: ... + def __mod__(self, x: _nt.CoFloat64_0d, /) -> floating: ... @override @abc.abstractmethod def __rmod__(self, x: _nt.CoFloating_0d, /) -> floating: ... @@ -4506,11 +4509,134 @@ class floating(_RealMixin, _RoundMixin, inexact[_BitT, float]): # keep in sync with `__mod__` @override @abc.abstractmethod - def __divmod__(self, x: _nt.CoFloating_0d, /) -> _2Tuple[floating]: ... + def __divmod__(self, x: _nt.CoFloat64_0d, /) -> _2Tuple[floating]: ... @override @abc.abstractmethod def __rdivmod__(self, x: _nt.CoFloating_0d, /) -> _2Tuple[floating]: ... +# The main reason for `complexfloating` having two typevars is cosmetic. +# It is used to clarify why `complex128`s precision is `_64Bit`, the latter +# describing the two 64 bit floats representing its real and imaginary component +class complexfloating(inexact[_BitT1, complex], Generic[_BitT1, _BitT2]): + @overload + def __init__(self, real: _ConvertibleToComplex | None = 0, /) -> None: ... + @overload + def __init__(self, real: _ToReal = 0, imag: _ToImag = 0, /) -> None: ... + + # + @property + @abc.abstractmethod + @override + def real(self) -> floating[_BitT1]: ... + @property + @abc.abstractmethod + @override + def imag(self) -> floating[_BitT2]: ... + + # + @abc.abstractmethod + @override + def __abs__(self, /) -> floating[_BitT1]: ... + + # + @abc.abstractmethod + @overload + def __add__(self, x: _CoComplex64, /) -> Self: ... + @abc.abstractmethod + @overload + def __add__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complexfloating: ... + + # keep in sync with `__add__` + @abc.abstractmethod + @overload + def __radd__(self, x: _CoComplex64, /) -> Self: ... + @abc.abstractmethod + @overload + def __radd__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complexfloating: ... + + # keep in sync with `__add__` + @abc.abstractmethod + @overload + def __sub__(self, x: _CoComplex64, /) -> Self: ... + @abc.abstractmethod + @overload + def __sub__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complexfloating: ... + + # keep in sync with `__add__` + @abc.abstractmethod + @overload + def __rsub__(self, x: _CoComplex64, /) -> Self: ... + @abc.abstractmethod + @overload + def __rsub__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complexfloating: ... + + # keep in sync with `__add__` + @abc.abstractmethod + @overload + def __mul__(self, x: _CoComplex64, /) -> Self: ... + @abc.abstractmethod + @overload + def __mul__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complexfloating: ... + + # keep in sync with `__add__` + @abc.abstractmethod + @overload + def __rmul__(self, x: _CoComplex64, /) -> Self: ... + @abc.abstractmethod + @overload + def __rmul__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complexfloating: ... + + # keep in sync with `__add__` + @abc.abstractmethod + @overload + def __pow__(self, x: _CoComplex64, mod: None = None, /) -> Self: ... + @abc.abstractmethod + @overload + def __pow__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], mod: None = None, /) -> complexfloating: ... + + # keep in sync with `__add__` + @abc.abstractmethod + @overload + def __rpow__(self, x: _CoComplex64, mod: None = None, /) -> Self: ... + @abc.abstractmethod + @overload + def __rpow__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], mod: None = None, /) -> complexfloating: ... + + # keep in sync with `__add__` + @abc.abstractmethod + @overload + def __truediv__(self, x: _CoComplex64, /) -> Self: ... + @abc.abstractmethod + @overload + def __truediv__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complexfloating: ... + + # keep in sync with `__radd__` + @abc.abstractmethod + @overload + def __rtruediv__(self, x: _CoComplex64, /) -> Self: ... + @abc.abstractmethod + @overload + def __rtruediv__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complexfloating: ... + + # NOTE: Without these, mypy will use the `misc` error code instead of `opererator` + # when attempting to floordiv a complex + @override + def __floordiv__(self, x: Never, /) -> Never: ... + @override + def __rfloordiv__(self, x: Never, /) -> Never: ... + @override + def __mod__(self, x: Never, /) -> Never: ... + @override + def __rmod__(self, x: Never, /) -> Never: ... + @override + def __divmod__(self, x: Never, /) -> Never: ... + @override + def __rdivmod__(self, x: Never, /) -> Never: ... + + # + @deprecated("The Python built-in `round` is deprecated for complex scalars, and will raise a `TypeError` in a future release") + def __round__(self, /, ndigits: CanIndex | None = None) -> Self: ... + # NOTE: Naming it `bool_` results in less unreadable type-checker output class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @property @@ -4552,11 +4678,11 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __eq__(self, other: _ToTrue, /) -> Self: ... @overload - def __eq__(self, other: _ScalarLike_co, /) -> bool_: ... + def __eq__(self, other: _nt.ToGeneric_0d, /) -> bool_: ... @overload - def __eq__(self, other: ndarray[_ShapeT, dtype], /) -> ndarray[_ShapeT, dtype[bool_]]: ... + def __eq__(self, other: ndarray[_ShapeT, Any], /) -> ndarray[_ShapeT, dtype[bool_]]: ... @overload - def __eq__(self, other: _NestedSequence[ArrayLike], /) -> NDArray[bool_]: ... + def __eq__(self, other: _nt.ToGeneric_1nd, /) -> NDArray[bool_]: ... @overload def __eq__(self, other: object, /) -> Any: ... # pyright: ignore[reportIncompatibleMethodOverride] @@ -4568,11 +4694,11 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __ne__(self, other: _ToFalse, /) -> Self: ... @overload - def __ne__(self, other: _ScalarLike_co, /) -> bool_: ... + def __ne__(self, other: _nt.ToGeneric_0d, /) -> bool_: ... @overload - def __ne__(self, other: ndarray[_ShapeT, dtype], /) -> ndarray[_ShapeT, dtype[bool_]]: ... + def __ne__(self, other: ndarray[_ShapeT, Any], /) -> ndarray[_ShapeT, dtype[bool_]]: ... @overload - def __ne__(self, other: _NestedSequence[ArrayLike], /) -> NDArray[bool_]: ... + def __ne__(self, other: _nt.ToGeneric_1nd, /) -> NDArray[bool_]: ... @overload def __ne__(self, other: object, /) -> Any: ... # pyright: ignore[reportIncompatibleMethodOverride] @@ -4586,9 +4712,7 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __lt__(self, x: _nt.CoComplex_0d, /) -> bool_: ... @overload - def __lt__(self, x: _nt.CoComplex_1nd | _NestedSequence[_CanLE], /) -> NDArray[bool_]: ... - @overload - def __lt__(self, x: _CanLE, /) -> bool_: ... + def __lt__(self, x: _nt.CoComplex_1nd, /) -> NDArray[bool_]: ... # @overload @@ -4600,9 +4724,7 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __le__(self, x: _nt.CoComplex_0d, /) -> bool_: ... @overload - def __le__(self, x: _nt.CoComplex_1nd | _NestedSequence[_CanLE], /) -> NDArray[bool_]: ... - @overload - def __le__(self, x: _CanLE, /) -> bool_: ... + def __le__(self, x: _nt.CoComplex_1nd, /) -> NDArray[bool_]: ... # @overload @@ -4614,9 +4736,7 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __gt__(self, x: _nt.CoComplex_0d, /) -> bool_: ... @overload - def __gt__(self, x: _nt.CoComplex_1nd | _NestedSequence[_CanLE], /) -> NDArray[bool_]: ... - @overload - def __gt__(self, x: _CanLE, /) -> bool_: ... + def __gt__(self, x: _nt.CoComplex_1nd, /) -> NDArray[bool_]: ... # @overload @@ -4628,9 +4748,7 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __ge__(self, x: _nt.CoComplex_0d, /) -> bool_: ... @overload - def __ge__(self, x: _nt.CoComplex_1nd | _NestedSequence[_CanLE], /) -> NDArray[bool_]: ... - @overload - def __ge__(self, x: _CanLE, /) -> bool_: ... + def __ge__(self, x: _nt.CoComplex_1nd, /) -> NDArray[bool_]: ... # def __abs__(self, /) -> Self: ... @@ -4647,11 +4765,11 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __add__(self, x: py_bool | bool_, /) -> bool_: ... @overload - def __add__(self, x: _nt.ToIntP_0d, /) -> intp: ... + def __add__(self, x: _nt.JustInt, /) -> intp: ... @overload - def __add__(self, x: _nt.ToFloat64_0d, /) -> float64: ... + def __add__(self, x: _nt.JustFloat, /) -> float64: ... @overload - def __add__(self, x: _nt.ToComplex128_0d, /) -> complex128: ... + def __add__(self, x: _nt.JustComplex, /) -> complex128: ... # @overload @@ -4665,31 +4783,31 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __radd__(self, x: py_bool, /) -> bool_: ... @overload - def __radd__(self, x: _nt.ToIntP_0d, /) -> intp: ... + def __radd__(self, x: _nt.JustInt, /) -> intp: ... @overload - def __radd__(self, x: _nt.ToFloat64_0d, /) -> float64: ... + def __radd__(self, x: _nt.JustFloat, /) -> float64: ... @overload - def __radd__(self, x: _nt.ToComplex128_0d, /) -> complex128: ... + def __radd__(self, x: _nt.JustComplex, /) -> complex128: ... # @overload def __sub__(self, x: _NumberT, /) -> _NumberT: ... @overload - def __sub__(self, x: _nt.ToIntP_0d, /) -> intp: ... + def __sub__(self, x: _nt.JustInt, /) -> intp: ... @overload - def __sub__(self, x: _nt.ToFloat64_0d, /) -> float64: ... + def __sub__(self, x: _nt.JustFloat, /) -> float64: ... @overload - def __sub__(self, x: _nt.ToComplex128_0d, /) -> complex128: ... + def __sub__(self, x: _nt.JustComplex, /) -> complex128: ... # @overload def __rsub__(self, x: _NumberT, /) -> _NumberT: ... @overload - def __rsub__(self, x: _nt.ToIntP_0d, /) -> intp: ... + def __rsub__(self, x: _nt.JustInt, /) -> intp: ... @overload - def __rsub__(self, x: _nt.ToFloat64_0d, /) -> float64: ... + def __rsub__(self, x: _nt.JustFloat, /) -> float64: ... @overload - def __rsub__(self, x: _nt.ToComplex128_0d, /) -> complex128: ... + def __rsub__(self, x: _nt.JustComplex, /) -> complex128: ... # NOTE: same boolean logic as __and__ @overload @@ -4703,11 +4821,11 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __mul__(self, x: py_bool | bool_, /) -> bool_: ... @overload - def __mul__(self, x: _nt.ToIntP_0d, /) -> intp: ... + def __mul__(self, x: _nt.JustInt, /) -> intp: ... @overload - def __mul__(self, x: _nt.ToFloat64_0d, /) -> float64: ... + def __mul__(self, x: _nt.JustFloat, /) -> float64: ... @overload - def __mul__(self, x: _nt.ToComplex128_0d, /) -> complex128: ... + def __mul__(self, x: _nt.JustComplex, /) -> complex128: ... # @overload @@ -4721,11 +4839,11 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __rmul__(self, x: py_bool, /) -> bool_: ... @overload - def __rmul__(self, x: _nt.ToIntP_0d, /) -> intp: ... + def __rmul__(self, x: _nt.JustInt, /) -> intp: ... @overload - def __rmul__(self, x: _nt.ToFloat64_0d, /) -> float64: ... + def __rmul__(self, x: _nt.JustFloat, /) -> float64: ... @overload - def __rmul__(self, x: _nt.ToComplex128_0d, /) -> complex128: ... + def __rmul__(self, x: _nt.JustComplex, /) -> complex128: ... # @overload @@ -4733,11 +4851,11 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __pow__(self, x: py_bool | bool_, mod: None = None, /) -> int8: ... @overload - def __pow__(self, x: _nt.ToIntP_0d, mod: None = None, /) -> intp: ... + def __pow__(self, x: _nt.JustInt, mod: None = None, /) -> intp: ... @overload - def __pow__(self, x: _nt.ToFloat64_0d, mod: None = None, /) -> float64: ... + def __pow__(self, x: _nt.JustFloat, mod: None = None, /) -> float64: ... @overload - def __pow__(self, x: _nt.ToComplex128_0d, mod: None = None, /) -> complex128: ... + def __pow__(self, x: _nt.JustComplex, mod: None = None, /) -> complex128: ... # @overload @@ -4745,27 +4863,27 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __rpow__(self, x: py_bool, mod: None = None, /) -> int8: ... @overload - def __rpow__(self, x: _nt.ToIntP_0d, mod: None = None, /) -> intp: ... + def __rpow__(self, x: _nt.JustInt, mod: None = None, /) -> intp: ... @overload - def __rpow__(self, x: _nt.ToFloat64_0d, mod: None = None, /) -> float64: ... + def __rpow__(self, x: _nt.JustFloat, mod: None = None, /) -> float64: ... @overload - def __rpow__(self, x: _nt.ToComplex128_0d, mod: None = None, /) -> complex128: ... + def __rpow__(self, x: _nt.JustComplex, mod: None = None, /) -> complex128: ... # @overload def __truediv__(self, x: _InexactT, /) -> _InexactT: ... @overload - def __truediv__(self, x: _nt.CoFloat64_0d, /) -> float64: ... + def __truediv__(self, x: _CoFloat64, /) -> float64: ... @overload - def __truediv__(self, x: _nt.ToComplex128_0d, /) -> complex128: ... + def __truediv__(self, x: _nt.JustComplex, /) -> complex128: ... # @overload def __rtruediv__(self, x: _InexactT, /) -> _InexactT: ... @overload - def __rtruediv__(self, x: _nt.CoFloat64_0d, /) -> float64: ... + def __rtruediv__(self, x: _CoFloat64, /) -> float64: ... @overload - def __rtruediv__(self, x: _nt.ToComplex128_0d, /) -> complex128: ... + def __rtruediv__(self, x: _nt.JustComplex, /) -> complex128: ... # @overload @@ -4773,9 +4891,9 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __floordiv__(self, x: py_bool | bool_, /) -> int8: ... @overload - def __floordiv__(self, x: _nt.ToIntP_0d, /) -> intp: ... + def __floordiv__(self, x: _nt.JustInt, /) -> intp: ... @overload - def __floordiv__(self, x: _nt.ToFloat64_0d, /) -> float64: ... + def __floordiv__(self, x: _nt.JustFloat, /) -> float64: ... # @overload @@ -4783,9 +4901,9 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __rfloordiv__(self, x: py_bool, /) -> int8: ... @overload - def __rfloordiv__(self, x: _nt.ToIntP_0d, /) -> intp: ... + def __rfloordiv__(self, x: _nt.JustInt, /) -> intp: ... @overload - def __rfloordiv__(self, x: _nt.ToFloat64_0d, /) -> float64: ... + def __rfloordiv__(self, x: _nt.JustFloat, /) -> float64: ... # keep in sync with __floordiv__ @overload @@ -4793,9 +4911,9 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __mod__(self, x: py_bool | bool_, /) -> int8: ... @overload - def __mod__(self, x: _nt.ToIntP_0d, /) -> intp: ... + def __mod__(self, x: _nt.JustInt, /) -> intp: ... @overload - def __mod__(self, x: _nt.ToFloat64_0d, /) -> float64: ... + def __mod__(self, x: _nt.JustFloat, /) -> float64: ... # keep in sync with __rfloordiv__ @overload @@ -4803,9 +4921,9 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __rmod__(self, x: py_bool, /) -> int8: ... @overload - def __rmod__(self, x: _nt.ToIntP_0d, /) -> intp: ... + def __rmod__(self, x: _nt.JustInt, /) -> intp: ... @overload - def __rmod__(self, x: _nt.ToFloat64_0d, /) -> float64: ... + def __rmod__(self, x: _nt.JustFloat, /) -> float64: ... # keep in sync with __mod__ @overload @@ -4813,9 +4931,9 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __divmod__(self, x: py_bool | bool_, /) -> _2Tuple[int8]: ... @overload - def __divmod__(self, x: _nt.ToIntP_0d, /) -> _2Tuple[intp]: ... + def __divmod__(self, x: _nt.JustInt, /) -> _2Tuple[intp]: ... @overload - def __divmod__(self, x: _nt.ToFloat64_0d, /) -> _2Tuple[float64]: ... + def __divmod__(self, x: _nt.JustFloat, /) -> _2Tuple[float64]: ... # keep in sync with __rmod__ @overload @@ -4823,9 +4941,9 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __rdivmod__(self, x: py_bool, /) -> _2Tuple[int8]: ... @overload - def __rdivmod__(self, x: _nt.ToIntP_0d, /) -> _2Tuple[intp]: ... + def __rdivmod__(self, x: _nt.JustInt, /) -> _2Tuple[intp]: ... @overload - def __rdivmod__(self, x: _nt.ToFloat64_0d, /) -> _2Tuple[float64]: ... + def __rdivmod__(self, x: _nt.JustFloat, /) -> _2Tuple[float64]: ... # @overload @@ -4833,7 +4951,7 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __lshift__(self, x: py_bool | bool_, /) -> int8: ... @overload - def __lshift__(self, x: _nt.ToIntP_0d, /) -> intp: ... + def __lshift__(self, x: _nt.JustInt, /) -> intp: ... # @overload @@ -4841,7 +4959,7 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __rlshift__(self, x: py_bool, /) -> int8: ... @overload - def __rlshift__(self, x: _nt.ToIntP_0d, /) -> intp: ... + def __rlshift__(self, x: _nt.JustInt, /) -> intp: ... # keep in sync with __lshift__ @overload @@ -4849,7 +4967,7 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __rshift__(self, x: py_bool | bool_, /) -> int8: ... @overload - def __rshift__(self, x: _nt.ToIntP_0d, /) -> intp: ... + def __rshift__(self, x: _nt.JustInt, /) -> intp: ... # keep in sync with __rlshift__ @overload @@ -4857,7 +4975,7 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __rrshift__(self, x: py_bool, /) -> int8: ... @overload - def __rrshift__(self, x: _nt.ToIntP_0d, /) -> intp: ... + def __rrshift__(self, x: _nt.JustInt, /) -> intp: ... # @overload @@ -4879,7 +4997,7 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __and__(self, x: _IntegerT, /) -> _IntegerT: ... @overload - def __and__(self, x: _nt.ToIntP_0d, /) -> intp: ... + def __and__(self, x: _nt.JustInt, /) -> intp: ... # @overload @@ -4893,7 +5011,7 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __rand__(self, x: _IntegerT, /) -> _IntegerT: ... @overload - def __rand__(self, x: _nt.ToIntP_0d, /) -> intp: ... + def __rand__(self, x: _nt.JustInt, /) -> intp: ... # @overload @@ -4907,7 +5025,7 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __xor__(self, x: _IntegerT, /) -> _IntegerT: ... @overload - def __xor__(self, x: _nt.ToIntP_0d, /) -> intp: ... + def __xor__(self, x: _nt.JustInt, /) -> intp: ... # @overload @@ -4921,7 +5039,7 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __rxor__(self, x: _IntegerT, /) -> _IntegerT: ... @overload - def __rxor__(self, x: _nt.ToIntP_0d, /) -> intp: ... + def __rxor__(self, x: _nt.JustInt, /) -> intp: ... # @overload @@ -4935,7 +5053,7 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __or__(self, x: _IntegerT, /) -> _IntegerT: ... @overload - def __or__(self, x: _nt.ToIntP_0d, /) -> intp: ... + def __or__(self, x: _nt.JustInt, /) -> intp: ... # @overload @@ -4949,7 +5067,7 @@ class bool_(generic[_BoolItemT_co], Generic[_BoolItemT_co]): @overload def __ror__(self, x: _IntegerT, /) -> _IntegerT: ... @overload - def __ror__(self, x: _nt.ToIntP_0d, /) -> intp: ... + def __ror__(self, x: _nt.JustInt, /) -> intp: ... bool = bool_ @@ -5092,9 +5210,9 @@ class signedinteger(integer[_BitT]): # TODO(jorenham): These don't exist here; move to concrete subtypes once we have them # https://github.com/numpy/numtype/issues/136 - def __index__(self, /) -> int: ... @override def __hash__(self, /) -> int: ... + def __index__(self, /) -> int: ... def bit_count(self, /) -> int: ... # @@ -5113,9 +5231,9 @@ class signedinteger(integer[_BitT]): @overload def __add__(self: int8, x: _SignedIntegerT, /) -> _SignedIntegerT: ... @overload - def __add__(self, x: _nt.ToFloat64_0d, /) -> float64: ... + def __add__(self, x: _nt.JustFloat, /) -> float64: ... @overload - def __add__(self, x: _nt.ToComplex128_0d, /) -> complex128: ... + def __add__(self, x: _nt.JustComplex, /) -> complex128: ... # keep in sync with __add__ @overload @@ -5133,9 +5251,9 @@ class signedinteger(integer[_BitT]): @overload def __sub__(self: int8, x: _SignedIntegerT, /) -> _SignedIntegerT: ... @overload - def __sub__(self, x: _nt.ToFloat64_0d, /) -> float64: ... + def __sub__(self, x: _nt.JustFloat, /) -> float64: ... @overload - def __sub__(self, x: _nt.ToComplex128_0d, /) -> complex128: ... + def __sub__(self, x: _nt.JustComplex, /) -> complex128: ... # keep in sync with __add__ @overload @@ -5153,9 +5271,9 @@ class signedinteger(integer[_BitT]): @overload def __mul__(self: int8, x: _SignedIntegerT, /) -> _SignedIntegerT: ... @overload - def __mul__(self, x: _nt.ToFloat64_0d, /) -> float64: ... + def __mul__(self, x: _nt.JustFloat, /) -> float64: ... @overload - def __mul__(self, x: _nt.ToComplex128_0d, /) -> complex128: ... + def __mul__(self, x: _nt.JustComplex, /) -> complex128: ... # keep in sync with __add__ @overload @@ -5173,9 +5291,9 @@ class signedinteger(integer[_BitT]): @overload def __pow__(self: int8, x: _SignedIntegerT, mod: None = None, /) -> _SignedIntegerT: ... @overload - def __pow__(self, x: _nt.ToFloat64_0d, mod: None = None, /) -> float64: ... + def __pow__(self, x: _nt.JustFloat, mod: None = None, /) -> float64: ... @overload - def __pow__(self, x: _nt.ToComplex128_0d, mod: None = None, /) -> complex128: ... + def __pow__(self, x: _nt.JustComplex, mod: None = None, /) -> complex128: ... # keep in sync with __add__ (minus complex) @overload @@ -5193,7 +5311,7 @@ class signedinteger(integer[_BitT]): @overload def __floordiv__(self: int8, x: _SignedIntegerT, /) -> _SignedIntegerT: ... @overload - def __floordiv__(self, x: _nt.ToFloat64_0d, /) -> float64: ... + def __floordiv__(self, x: _nt.JustFloat, /) -> float64: ... # @overload # type: ignore[override] @@ -5201,8 +5319,6 @@ class signedinteger(integer[_BitT]): @overload def __mod__(self, x: int64, /) -> int64: ... @overload - def __mod__(self: int64, x: _ToFloating64, /) -> float64: ... - @overload def __mod__(self: int64, x: signedinteger, /) -> int64: ... @overload def __mod__(self: int32, x: _ToSInteger32, /) -> int32: ... @@ -5213,7 +5329,7 @@ class signedinteger(integer[_BitT]): @overload def __mod__(self: int8, x: int16, /) -> int16: ... @overload - def __mod__(self, x: _nt.ToFloat64_0d, /) -> float64: ... + def __mod__(self, x: _nt.JustFloat, /) -> float64: ... @overload def __mod__(self, x: signedinteger, /) -> signedinteger: ... # pyright: ignore[reportIncompatibleMethodOverride] @@ -5223,8 +5339,6 @@ class signedinteger(integer[_BitT]): @overload def __divmod__(self, x: int64, /) -> _2Tuple[int64]: ... @overload - def __divmod__(self: int64, x: _ToFloating64, /) -> _2Tuple[float64]: ... - @overload def __divmod__(self: int64, x: signedinteger, /) -> _2Tuple[int64]: ... @overload def __divmod__(self: int32, x: _ToSInteger32, /) -> _2Tuple[int32]: ... @@ -5235,9 +5349,9 @@ class signedinteger(integer[_BitT]): @overload def __divmod__(self: int8, x: int16, /) -> _2Tuple[int16]: ... @overload - def __divmod__(self, x: int | signedinteger, /) -> _2Tuple[signedinteger]: ... + def __divmod__(self, x: _nt.JustFloat, /) -> _2Tuple[float64]: ... @overload - def __divmod__(self, x: _nt.ToFloat64_0d, /) -> _2Tuple[float64]: ... # pyright: ignore[reportIncompatibleMethodOverride] + def __divmod__(self, x: signedinteger, /) -> _2Tuple[signedinteger]: ... # pyright: ignore[reportIncompatibleMethodOverride] # @overload # type: ignore[override] @@ -5367,8 +5481,6 @@ class unsignedinteger(integer[_BitT]): @overload def __add__(self, x: uint64, /) -> uint64: ... @overload - def __add__(self: uint64 | uint32, x: _ToFloating64, /) -> float64: ... - @overload def __add__(self: uint64, x: signedinteger, /) -> float64: ... @overload def __add__(self: uint64, x: unsignedinteger | bool_, /) -> uint64: ... @@ -5387,27 +5499,19 @@ class unsignedinteger(integer[_BitT]): @overload def __add__(self: uint16, x: _ToUInteger16, /) -> uint16: ... @overload - def __add__(self: uint8, x: float16, /) -> float16: ... - @overload def __add__(self: uint8, x: _UnsignedIntegerT, /) -> _UnsignedIntegerT: ... @overload def __add__(self: uint8, x: _ToSInteger16, /) -> int16: ... @overload - def __add__(self, x: _nt.ToFloat64_0d, /) -> float64: ... - @overload - def __add__(self, x: _nt.ToComplex128_0d, /) -> complex128: ... - @overload - def __add__(self, x: datetime64[_DT64ItemT], /) -> datetime64[_DT64ItemT]: ... + def __add__(self, x: _nt.JustFloat, /) -> float64: ... @overload - def __add__(self, x: timedelta64[_TD64ItemT], /) -> timedelta64[_TD64ItemT]: ... + def __add__(self, x: _nt.JustComplex, /) -> complex128: ... @overload def __add__(self, x: unsignedinteger, /) -> unsignedinteger: ... @overload def __add__(self, x: signedinteger, /) -> float64 | signedinteger: ... @overload def __add__(self, x: integer, /) -> float64 | integer: ... - @overload - def __add__(self, x: object_, /) -> object_: ... # @overload @@ -5425,19 +5529,13 @@ class unsignedinteger(integer[_BitT]): @overload def __radd__(self, x: int, /) -> Self: ... @overload - def __radd__(self, x: _nt.ToFloat64_0d, /) -> float64: ... - @overload - def __radd__(self, x: _nt.ToComplex128_0d, /) -> complex128: ... - @overload - def __radd__(self, x: datetime64[_DT64ItemT], /) -> datetime64[_DT64ItemT]: ... + def __radd__(self, x: _nt.JustFloat, /) -> float64: ... @overload - def __radd__(self, x: timedelta64[_TD64ItemT], /) -> timedelta64[_TD64ItemT]: ... + def __radd__(self, x: _nt.JustComplex, /) -> complex128: ... @overload def __radd__(self, x: signedinteger, /) -> float64 | signedinteger: ... @overload - def __radd__(self, x: integer, /) -> float64 | integer: ... - @overload - def __radd__(self, x: object_, /) -> object_: ... # pyright: ignore[reportIncompatibleMethodOverride] + def __radd__(self, x: integer, /) -> float64 | integer: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with __add__ @overload @@ -5467,19 +5565,15 @@ class unsignedinteger(integer[_BitT]): @overload def __sub__(self: uint8, x: _ToSInteger16, /) -> int16: ... @overload - def __sub__(self, x: _nt.ToFloat64_0d, /) -> float64: ... - @overload - def __sub__(self, x: _nt.ToComplex128_0d, /) -> complex128: ... + def __sub__(self, x: _nt.JustFloat, /) -> float64: ... @overload - def __sub__(self, x: timedelta64[_TD64ItemT], /) -> timedelta64[_TD64ItemT]: ... + def __sub__(self, x: _nt.JustComplex, /) -> complex128: ... @overload def __sub__(self, x: unsignedinteger, /) -> unsignedinteger: ... @overload def __sub__(self, x: signedinteger, /) -> float64 | signedinteger: ... @overload def __sub__(self, x: integer, /) -> float64 | integer: ... - @overload - def __sub__(self, x: object_, /) -> object_: ... # keep in sync with __radd__ @overload @@ -5497,19 +5591,13 @@ class unsignedinteger(integer[_BitT]): @overload def __rsub__(self, x: int, /) -> Self: ... @overload - def __rsub__(self, x: _nt.ToFloat64_0d, /) -> float64: ... - @overload - def __rsub__(self, x: _nt.ToComplex128_0d, /) -> complex128: ... - @overload - def __rsub__(self, x: datetime64[_DT64ItemT], /) -> datetime64[_DT64ItemT]: ... + def __rsub__(self, x: _nt.JustFloat, /) -> float64: ... @overload - def __rsub__(self, x: timedelta64[_TD64ItemT], /) -> timedelta64[_TD64ItemT]: ... + def __rsub__(self, x: _nt.JustComplex, /) -> complex128: ... @overload def __rsub__(self, x: signedinteger, /) -> float64 | signedinteger: ... @overload - def __rsub__(self, x: integer, /) -> float64 | integer: ... - @overload - def __rsub__(self, x: object_, /) -> object_: ... # pyright: ignore[reportIncompatibleMethodOverride] + def __rsub__(self, x: integer, /) -> float64 | integer: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with __add__ @overload @@ -5539,11 +5627,9 @@ class unsignedinteger(integer[_BitT]): @overload def __mul__(self: uint8, x: _ToSInteger16, /) -> int16: ... @overload - def __mul__(self, x: _nt.ToFloat64_0d, /) -> float64: ... + def __mul__(self, x: _nt.JustFloat, /) -> float64: ... @overload - def __mul__(self, x: _nt.ToComplex128_0d, /) -> complex128: ... - @overload - def __mul__(self, x: timedelta64[_TD64ItemT], /) -> timedelta64[_TD64ItemT]: ... + def __mul__(self, x: _nt.JustComplex, /) -> complex128: ... @overload def __mul__(self, x: unsignedinteger, /) -> unsignedinteger: ... @overload @@ -5569,11 +5655,9 @@ class unsignedinteger(integer[_BitT]): @overload def __rmul__(self, x: int, /) -> Self: ... @overload - def __rmul__(self, x: _nt.ToFloat64_0d, /) -> float64: ... - @overload - def __rmul__(self, x: _nt.ToComplex128_0d, /) -> complex128: ... + def __rmul__(self, x: _nt.JustFloat, /) -> float64: ... @overload - def __rmul__(self, x: timedelta64[_TD64ItemT], /) -> timedelta64[_TD64ItemT]: ... + def __rmul__(self, x: _nt.JustComplex, /) -> complex128: ... @overload def __rmul__(self, x: signedinteger, /) -> float64 | signedinteger: ... @overload @@ -5581,7 +5665,7 @@ class unsignedinteger(integer[_BitT]): @overload def __rmul__(self, x: object_, /) -> object_: ... # pyright: ignore[reportIncompatibleMethodOverride] - # keep in sync with __mul__ (minus the timedeltaa64) + # keep in sync with __mul__ @overload def __pow__(self, x: Self | int | uint8 | bool_, mod: None = None, /) -> Self: ... @overload @@ -5609,17 +5693,15 @@ class unsignedinteger(integer[_BitT]): @overload def __pow__(self: uint8, x: _ToSInteger16, mod: None = None, /) -> int16: ... @overload - def __pow__(self, x: _nt.ToFloat64_0d, mod: None = None, /) -> float64: ... + def __pow__(self, x: _nt.JustFloat, mod: None = None, /) -> float64: ... @overload - def __pow__(self, x: _nt.ToComplex128_0d, mod: None = None, /) -> complex128: ... + def __pow__(self, x: _nt.JustComplex, mod: None = None, /) -> complex128: ... @overload def __pow__(self, x: unsignedinteger, mod: None = None, /) -> unsignedinteger: ... @overload def __pow__(self, x: signedinteger, mod: None = None, /) -> float64 | signedinteger: ... @overload def __pow__(self, x: integer, mod: None = None, /) -> float64 | integer: ... - @overload - def __pow__(self, x: object_, mod: None = None, /) -> object_: ... # keep in sync with __rmul__ (minus the timedeltaa64) @overload @@ -5637,15 +5719,13 @@ class unsignedinteger(integer[_BitT]): @overload def __rpow__(self, x: int, mod: None = None, /) -> Self: ... @overload - def __rpow__(self, x: _nt.ToFloat64_0d, mod: None = None, /) -> float64: ... + def __rpow__(self, x: _nt.JustFloat, mod: None = None, /) -> float64: ... @overload - def __rpow__(self, x: _nt.ToComplex128_0d, mod: None = None, /) -> complex128: ... + def __rpow__(self, x: _nt.JustComplex, mod: None = None, /) -> complex128: ... @overload def __rpow__(self, x: signedinteger, mod: None = None, /) -> float64 | signedinteger: ... @overload - def __rpow__(self, x: integer, mod: None = None, /) -> float64 | integer: ... - @overload - def __rpow__(self, x: object_, mod: None = None, /) -> object_: ... # pyright: ignore[reportIncompatibleMethodOverride] + def __rpow__(self, x: integer, mod: None = None, /) -> float64 | integer: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with __pow__ (minus the complex overloads) @overload @@ -5675,15 +5755,13 @@ class unsignedinteger(integer[_BitT]): @overload def __floordiv__(self: uint8, x: _ToSInteger16, /) -> int16: ... @overload - def __floordiv__(self, x: _nt.ToFloat64_0d, /) -> float64: ... + def __floordiv__(self, x: _nt.JustFloat, /) -> float64: ... @overload def __floordiv__(self, x: unsignedinteger, /) -> unsignedinteger: ... @overload def __floordiv__(self, x: signedinteger, /) -> float64 | signedinteger: ... @overload def __floordiv__(self, x: integer, /) -> float64 | integer: ... - @overload - def __floordiv__(self, x: object_, /) -> object_: ... # keep in sync with __rpow__ (minus the complex overloads) @overload # type: ignore[override] @@ -5701,13 +5779,11 @@ class unsignedinteger(integer[_BitT]): @overload def __rfloordiv__(self, x: int, /) -> Self: ... @overload - def __rfloordiv__(self, x: _nt.ToFloat64_0d, /) -> _nt.ToFloat64_0d: ... + def __rfloordiv__(self, x: _nt.JustFloat, /) -> _nt.ToFloat64_0d: ... @overload def __rfloordiv__(self, x: signedinteger, /) -> float64 | signedinteger: ... @overload - def __rfloordiv__(self, x: integer, /) -> float64 | integer: ... - @overload - def __rfloordiv__(self, x: object_, /) -> object_: ... # pyright: ignore[reportIncompatibleMethodOverride] + def __rfloordiv__(self, x: integer, /) -> float64 | integer: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with __floordiv__ @overload # type: ignore[override] @@ -5743,9 +5819,7 @@ class unsignedinteger(integer[_BitT]): @overload def __mod__(self, x: integer, /) -> float64 | integer: ... @overload - def __mod__(self, x: _nt.ToFloat64_0d, /) -> float64: ... - @overload - def __mod__(self, x: object_, /) -> object_: ... # pyright: ignore[reportIncompatibleMethodOverride] + def __mod__(self, x: _nt.JustFloat, /) -> float64: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with __rfloordiv__ @overload @@ -5769,7 +5843,7 @@ class unsignedinteger(integer[_BitT]): @overload def __rmod__(self, x: int, /) -> Self: ... @overload - def __rmod__(self, x: _nt.ToFloat64_0d, /) -> float64: ... # pyright: ignore[reportIncompatibleMethodOverride] + def __rmod__(self, x: _nt.JustFloat, /) -> float64: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__mod__` (minus `object_`) @overload # type: ignore[override] @@ -5805,7 +5879,7 @@ class unsignedinteger(integer[_BitT]): @overload def __divmod__(self, x: integer, /) -> _2Tuple[float64] | _2Tuple[integer]: ... @overload - def __divmod__(self, x: _nt.ToFloat64_0d, /) -> _2Tuple[float64]: ... # pyright: ignore[reportIncompatibleMethodOverride] + def __divmod__(self, x: _nt.JustFloat, /) -> _2Tuple[float64]: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__rmod__` (minus `object_`) @overload @@ -5827,7 +5901,7 @@ class unsignedinteger(integer[_BitT]): @overload def __rdivmod__(self, x: int, /) -> _2Tuple[Self]: ... @overload - def __rdivmod__(self, x: _nt.ToFloat64_0d, /) -> _2Tuple[float64]: ... # pyright: ignore[reportIncompatibleMethodOverride] + def __rdivmod__(self, x: _nt.JustFloat, /) -> _2Tuple[float64]: ... # pyright: ignore[reportIncompatibleMethodOverride] # @overload # type: ignore[override] @@ -6109,7 +6183,7 @@ class float16(floating[_n._16]): # TODO(jorenham): Figure out the LSP violation @overload # type: ignore[override] - def __add__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float16], /) -> Self: ... # type: ignore[overload-overlap] + def __add__(self, x: _CoFloat16, /) -> Self: ... # type: ignore[overload-overlap] @overload def __add__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... @overload @@ -6118,8 +6192,8 @@ class float16(floating[_n._16]): def __add__(self, x: _nt.JustComplex, /) -> complex64: ... # pyright: ignore[reportIncompatibleMethodOverride] # - @overload - def __radd__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float16], /) -> Self: ... # type: ignore[overload-overlap] + @overload # type: ignore[override] + def __radd__(self, x: _CoFloat16, /) -> Self: ... # type: ignore[overload-overlap] @overload def __radd__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... @overload @@ -6129,7 +6203,7 @@ class float16(floating[_n._16]): # keep in sync with `__add__` @overload # type: ignore[override] - def __sub__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float16], /) -> Self: ... # type: ignore[overload-overlap] + def __sub__(self, x: _CoFloat16, /) -> Self: ... # type: ignore[overload-overlap] @overload def __sub__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... @overload @@ -6138,8 +6212,8 @@ class float16(floating[_n._16]): def __sub__(self, x: _nt.JustComplex, /) -> complex64: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__radd__` - @overload - def __rsub__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float16], /) -> Self: ... # type: ignore[overload-overlap] + @overload # type: ignore[override] + def __rsub__(self, x: _CoFloat16, /) -> Self: ... # type: ignore[overload-overlap] @overload def __rsub__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... @overload @@ -6149,7 +6223,7 @@ class float16(floating[_n._16]): # keep in sync with `__add__` @overload # type: ignore[override] - def __mul__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float16], /) -> Self: ... # type: ignore[overload-overlap] + def __mul__(self, x: _CoFloat16, /) -> Self: ... # type: ignore[overload-overlap] @overload def __mul__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... @overload @@ -6158,8 +6232,8 @@ class float16(floating[_n._16]): def __mul__(self, x: _nt.JustComplex, /) -> complex64: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__radd__` - @overload - def __rmul__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float16], /) -> Self: ... # type: ignore[overload-overlap] + @overload # type: ignore[override] + def __rmul__(self, x: _CoFloat16, /) -> Self: ... # type: ignore[overload-overlap] @overload def __rmul__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... @overload @@ -6169,7 +6243,7 @@ class float16(floating[_n._16]): # keep in sync with `__add__` @overload # type: ignore[override] - def __pow__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float16], k: None = None, /) -> Self: ... # type: ignore[overload-overlap] + def __pow__(self, x: _CoFloat16, k: None = None, /) -> Self: ... # type: ignore[overload-overlap] @overload def __pow__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], k: None = None, /) -> float64: ... @overload @@ -6178,8 +6252,8 @@ class float16(floating[_n._16]): def __pow__(self, x: _nt.JustComplex, k: None = None, /) -> complex64: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__radd__` - @overload - def __rpow__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float16], k: None = None, /) -> Self: ... # type: ignore[overload-overlap] + @overload # type: ignore[override] + def __rpow__(self, x: _CoFloat16, k: None = None, /) -> Self: ... # type: ignore[overload-overlap] @overload def __rpow__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], k: None = None, /) -> float64: ... @overload @@ -6189,7 +6263,7 @@ class float16(floating[_n._16]): # keep in sync with `__add__` @overload # type: ignore[override] - def __truediv__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float16], /) -> Self: ... # type: ignore[overload-overlap] + def __truediv__(self, x: _CoFloat16, /) -> Self: ... # type: ignore[overload-overlap] @overload def __truediv__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... @overload @@ -6198,8 +6272,8 @@ class float16(floating[_n._16]): def __truediv__(self, x: _nt.JustComplex, /) -> complex64: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__radd__` - @overload - def __rtruediv__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float16], /) -> Self: ... # type: ignore[overload-overlap] + @overload # type: ignore[override] + def __rtruediv__(self, x: _CoFloat16, /) -> Self: ... # type: ignore[overload-overlap] @overload def __rtruediv__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... @overload @@ -6209,51 +6283,51 @@ class float16(floating[_n._16]): # keep in sync with `__truediv__`, minus the complex overload @overload # type: ignore[override] - def __floordiv__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float16], /) -> Self: ... # type: ignore[overload-overlap] + def __floordiv__(self, x: _CoFloat16, /) -> Self: ... # type: ignore[overload-overlap] @overload def __floordiv__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... @overload - def __floordiv__(self, x: _nt.CanArray0D[_nt.integer16], /) -> float32: ... + def __floordiv__(self, x: _nt.CanArray0D[_nt.integer16], /) -> float32: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__rtruediv__`, minus the complex overload - @overload - def __rfloordiv__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float16], /) -> Self: ... # type: ignore[overload-overlap] + @overload # type: ignore[override] + def __rfloordiv__(self, x: _CoFloat16, /) -> Self: ... # type: ignore[overload-overlap] @overload def __rfloordiv__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... @overload - def __rfloordiv__(self, x: _nt.CanArray0D[_nt.integer16], /) -> float32: ... + def __rfloordiv__(self, x: _nt.CanArray0D[_nt.integer16], /) -> float32: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__floordiv__` @overload # type: ignore[override] - def __mod__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float16], /) -> Self: ... # type: ignore[overload-overlap] + def __mod__(self, x: _CoFloat16, /) -> Self: ... # type: ignore[overload-overlap] @overload def __mod__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... @overload - def __mod__(self, x: _nt.CanArray0D[_nt.integer16], /) -> float32: ... + def __mod__(self, x: _nt.CanArray0D[_nt.integer16], /) -> float32: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__rfloordiv__` - @overload - def __rmod__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float16], /) -> Self: ... # type: ignore[overload-overlap] + @overload # type: ignore[override] + def __rmod__(self, x: _CoFloat16, /) -> Self: ... # type: ignore[overload-overlap] @overload def __rmod__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... @overload - def __rmod__(self, x: _nt.CanArray0D[_nt.integer16], /) -> float32: ... + def __rmod__(self, x: _nt.CanArray0D[_nt.integer16], /) -> float32: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__mod__` @overload # type: ignore[override] - def __divmod__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float16], /) -> _2Tuple[Self]: ... # type: ignore[overload-overlap] + def __divmod__(self, x: _CoFloat16, /) -> _2Tuple[Self]: ... # type: ignore[overload-overlap] @overload def __divmod__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> _2Tuple[float64]: ... @overload - def __divmod__(self, x: _nt.CanArray0D[_nt.integer16], /) -> _2Tuple[float32]: ... + def __divmod__(self, x: _nt.CanArray0D[_nt.integer16], /) -> _2Tuple[float32]: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__rmod__` - @overload - def __rdivmod__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float16], /) -> _2Tuple[Self]: ... # type: ignore[overload-overlap] + @overload # type: ignore[override] + def __rdivmod__(self, x: _CoFloat16, /) -> _2Tuple[Self]: ... # type: ignore[overload-overlap] @overload def __rdivmod__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> _2Tuple[float64]: ... @overload - def __rdivmod__(self, x: _nt.CanArray0D[_nt.integer16], /) -> _2Tuple[float32]: ... + def __rdivmod__(self, x: _nt.CanArray0D[_nt.integer16], /) -> _2Tuple[float32]: ... # pyright: ignore[reportIncompatibleMethodOverride] class float32(floating[_n._32]): @property @@ -6271,15 +6345,15 @@ class float32(floating[_n._32]): # @overload # type: ignore[override] - def __add__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float32], /) -> Self: ... # type: ignore[overload-overlap] + def __add__(self, x: _CoFloat32, /) -> Self: ... # type: ignore[overload-overlap] @overload def __add__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... @overload def __add__(self, x: _nt.JustComplex, /) -> complex64: ... # pyright: ignore[reportIncompatibleMethodOverride] # - @overload - def __radd__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float32], /) -> Self: ... # type: ignore[overload-overlap] + @overload # type: ignore[override] + def __radd__(self, x: _CoFloat32, /) -> Self: ... # type: ignore[overload-overlap] @overload def __radd__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... @overload @@ -6287,15 +6361,15 @@ class float32(floating[_n._32]): # keep in sync with __add__ @overload # type: ignore[override] - def __sub__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float32], /) -> Self: ... # type: ignore[overload-overlap] + def __sub__(self, x: _CoFloat32, /) -> Self: ... # type: ignore[overload-overlap] @overload def __sub__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... @overload def __sub__(self, x: _nt.JustComplex, /) -> complex64: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with __add__ - @overload - def __rsub__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float32], /) -> Self: ... # type: ignore[overload-overlap] + @overload # type: ignore[override] + def __rsub__(self, x: _CoFloat32, /) -> Self: ... # type: ignore[overload-overlap] @overload def __rsub__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... @overload @@ -6303,15 +6377,15 @@ class float32(floating[_n._32]): # keep in sync with __add__ @overload # type: ignore[override] - def __mul__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float32], /) -> Self: ... # type: ignore[overload-overlap] + def __mul__(self, x: _CoFloat32, /) -> Self: ... # type: ignore[overload-overlap] @overload def __mul__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... @overload def __mul__(self, x: _nt.JustComplex, /) -> complex64: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with __add__ - @overload - def __rmul__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float32], /) -> Self: ... # type: ignore[overload-overlap] + @overload # type: ignore[override] + def __rmul__(self, x: _CoFloat32, /) -> Self: ... # type: ignore[overload-overlap] @overload def __rmul__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... @overload @@ -6319,15 +6393,15 @@ class float32(floating[_n._32]): # keep in sync with __add__ @overload # type: ignore[override] - def __pow__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float32], mod: None = None, /) -> Self: ... # type: ignore[overload-overlap] + def __pow__(self, x: _CoFloat32, mod: None = None, /) -> Self: ... # type: ignore[overload-overlap] @overload def __pow__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], mod: None = None, /) -> float64: ... @overload def __pow__(self, x: _nt.JustComplex, mod: None = None, /) -> complex64: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with __add__ - @overload - def __rpow__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float32], mod: None = None, /) -> Self: ... # type: ignore[overload-overlap] + @overload # type: ignore[override] + def __rpow__(self, x: _CoFloat32, mod: None = None, /) -> Self: ... # type: ignore[overload-overlap] @overload def __rpow__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], mod: None = None, /) -> float64: ... @overload @@ -6335,15 +6409,15 @@ class float32(floating[_n._32]): # keep in sync with __add__ @overload # type: ignore[override] - def __truediv__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float32], /) -> Self: ... # type: ignore[overload-overlap] + def __truediv__(self, x: _CoFloat32, /) -> Self: ... # type: ignore[overload-overlap] @overload def __truediv__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... @overload def __truediv__(self, x: _nt.JustComplex, /) -> complex64: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with __add__ - @overload - def __rtruediv__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float32], /) -> Self: ... # type: ignore[overload-overlap] + @overload # type: ignore[override] + def __rtruediv__(self, x: _CoFloat32, /) -> Self: ... # type: ignore[overload-overlap] @overload def __rtruediv__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... @overload @@ -6351,33 +6425,33 @@ class float32(floating[_n._32]): # keep in sync with __truediv__ (minus the complex overload) @overload # type: ignore[override] - def __floordiv__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float32], /) -> Self: ... # type: ignore[overload-overlap] + def __floordiv__(self, x: _CoFloat32, /) -> Self: ... # type: ignore[overload-overlap] @overload - def __floordiv__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... - @overload - def __rfloordiv__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float32], /) -> Self: ... # type: ignore[overload-overlap] + def __floordiv__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... # pyright: ignore[reportIncompatibleMethodOverride] + @overload # type: ignore[override] + def __rfloordiv__(self, x: _CoFloat32, /) -> Self: ... # type: ignore[overload-overlap] @overload - def __rfloordiv__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... + def __rfloordiv__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with __floordiv__ @overload # type: ignore[override] - def __mod__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float32], /) -> Self: ... # type: ignore[overload-overlap] - @overload - def __mod__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... + def __mod__(self, x: _CoFloat32, /) -> Self: ... # type: ignore[overload-overlap] @overload - def __rmod__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float32], /) -> Self: ... # type: ignore[overload-overlap] + def __mod__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... # pyright: ignore[reportIncompatibleMethodOverride] + @overload # type: ignore[override] + def __rmod__(self, x: _CoFloat32, /) -> Self: ... # type: ignore[overload-overlap] @overload - def __rmod__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... + def __rmod__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> float64: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with __mod__ @overload # type: ignore[override] - def __divmod__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float32], /) -> _2Tuple[Self]: ... # type: ignore[overload-overlap] - @overload - def __divmod__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> _2Tuple[float64]: ... + def __divmod__(self, x: _CoFloat32, /) -> _2Tuple[Self]: ... # type: ignore[overload-overlap] @overload - def __rdivmod__(self, x: int | _nt.JustFloat | _nt.CanArray0D[_nt.co_float32], /) -> _2Tuple[Self]: ... # type: ignore[overload-overlap] + def __divmod__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> _2Tuple[float64]: ... # pyright: ignore[reportIncompatibleMethodOverride] + @overload # type: ignore[override] + def __rdivmod__(self, x: _CoFloat32, /) -> _2Tuple[Self]: ... # type: ignore[overload-overlap] @overload - def __rdivmod__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> _2Tuple[float64]: ... + def __rdivmod__(self, x: _nt.CanArray0D[_nt.integer64 | _nt.integer32], /) -> _2Tuple[float64]: ... # pyright: ignore[reportIncompatibleMethodOverride] class float64(floating[_n._64], float): # type: ignore[misc] def __new__(cls, x: _ConvertibleToFloat | None = 0, /) -> Self: ... @@ -6410,73 +6484,73 @@ class float64(floating[_n._64], float): # type: ignore[misc] @override def as_integer_ratio(self, /) -> tuple[int, int]: ... - # + # TODO(jorenham): figure out these LSP violations @overload # type: ignore[override] - def __add__(self, x: _nt.CoFloat64_0d, /) -> Self: ... - @overload - def __add__(self, x: _nt.JustComplex, /) -> complex128: ... + def __add__(self, x: _CoFloat64, /) -> Self: ... @overload - def __radd__(self, x: _nt.CoFloat64_0d, /) -> Self: ... + def __add__(self, x: _nt.JustComplex, /) -> complex128: ... # pyright: ignore[reportIncompatibleMethodOverride] + @overload # type: ignore[override] + def __radd__(self, x: _CoFloat64, /) -> Self: ... @overload - def __radd__(self, x: _nt.JustComplex, /) -> complex128: ... + def __radd__(self, x: _nt.JustComplex, /) -> complex128: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__add__` @overload # type: ignore[override] - def __sub__(self, x: _nt.CoFloat64_0d, /) -> Self: ... - @overload - def __sub__(self, x: _nt.JustComplex, /) -> complex128: ... + def __sub__(self, x: _CoFloat64, /) -> Self: ... @overload - def __rsub__(self, x: _nt.CoFloat64_0d, /) -> Self: ... + def __sub__(self, x: _nt.JustComplex, /) -> complex128: ... # pyright: ignore[reportIncompatibleMethodOverride] + @overload # type: ignore[override] + def __rsub__(self, x: _CoFloat64, /) -> Self: ... @overload - def __rsub__(self, x: _nt.JustComplex, /) -> complex128: ... + def __rsub__(self, x: _nt.JustComplex, /) -> complex128: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__add__` @overload # type: ignore[override] - def __mul__(self, x: _nt.CoFloat64_0d, /) -> Self: ... + def __mul__(self, x: _CoFloat64, /) -> Self: ... @overload - def __mul__(self, x: _nt.JustComplex, /) -> complex128: ... - @overload - def __rmul__(self, x: _nt.CoFloat64_0d, /) -> Self: ... + def __mul__(self, x: _nt.JustComplex, /) -> complex128: ... # pyright: ignore[reportIncompatibleMethodOverride] + @overload # type: ignore[override] + def __rmul__(self, x: _CoFloat64, /) -> Self: ... @overload - def __rmul__(self, x: _nt.JustComplex, /) -> complex128: ... + def __rmul__(self, x: _nt.JustComplex, /) -> complex128: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__add__` @overload # type: ignore[override] - def __pow__(self, x: _nt.CoFloat64_0d, k: None = None, /) -> Self: ... - @overload - def __pow__(self, x: _nt.JustComplex, k: None = None, /) -> complex128: ... # pyright: ignore[reportIncompatibleMethodOverride] + def __pow__(self, x: _CoFloat64, mod: None = None, /) -> Self: ... @overload - def __rpow__(self, x: _nt.CoFloat64_0d, k: None = None, /) -> Self: ... + def __pow__(self, x: _nt.JustComplex, mod: None = None, /) -> complex128: ... # pyright: ignore[reportIncompatibleMethodOverride] + @overload # type: ignore[override] + def __rpow__(self, x: _CoFloat64, mod: None = None, /) -> Self: ... @overload - def __rpow__(self, x: _nt.JustComplex, k: None = None, /) -> complex128: ... # pyright: ignore[reportIncompatibleMethodOverride] + def __rpow__(self, x: _nt.JustComplex, mod: None = None, /) -> complex128: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__add__` @overload # type: ignore[override] - def __truediv__(self, x: _nt.CoFloat64_0d, /) -> Self: ... + def __truediv__(self, x: _CoFloat64, /) -> Self: ... @overload - def __truediv__(self, x: _nt.JustComplex, /) -> complex128: ... - @overload - def __rtruediv__(self, x: _nt.CoFloat64_0d, /) -> Self: ... + def __truediv__(self, x: _nt.JustComplex, /) -> complex128: ... # pyright: ignore[reportIncompatibleMethodOverride] + @overload # type: ignore[override] + def __rtruediv__(self, x: _CoFloat64, /) -> Self: ... @overload - def __rtruediv__(self, x: _nt.JustComplex, /) -> complex128: ... + def __rtruediv__(self, x: _nt.JustComplex, /) -> complex128: ... # pyright: ignore[reportIncompatibleMethodOverride] # @override - def __floordiv__(self, x: _nt.CoFloat64_0d, /) -> Self: ... + def __floordiv__(self, x: _CoFloat64, /) -> Self: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] @override - def __rfloordiv__(self, x: _nt.CoFloat64_0d, /) -> Self: ... + def __rfloordiv__(self, x: _CoFloat64, /) -> Self: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] # @override - def __mod__(self, x: _nt.CoFloat64_0d, /) -> Self: ... + def __mod__(self, x: _CoFloat64, /) -> Self: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] @override - def __rmod__(self, x: _nt.CoFloat64_0d, /) -> Self: ... + def __rmod__(self, x: _CoFloat64, /) -> Self: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] # @override - def __divmod__(self, x: _nt.CoFloat64_0d, /) -> _2Tuple[Self]: ... + def __divmod__(self, x: _CoFloat64, /) -> _2Tuple[Self]: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] @override - def __rdivmod__(self, x: _nt.CoFloat64_0d, /) -> _2Tuple[Self]: ... + def __rdivmod__(self, x: _CoFloat64, /) -> _2Tuple[Self]: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] half = float16 single = float32 @@ -6508,51 +6582,51 @@ class longdouble(floating[_n._64L]): @overload def __add__(self, x: _nt.CoFloating_0d, /) -> Self: ... @overload - def __add__(self, x: _nt.JustComplex, /) -> clongdouble: ... + def __add__(self, x: _nt.ToComplex_0d, /) -> clongdouble: ... @overload def __radd__(self, x: _nt.CoFloating_0d, /) -> Self: ... @overload - def __radd__(self, x: _nt.JustComplex, /) -> clongdouble: ... + def __radd__(self, x: _nt.ToComplex_0d, /) -> clongdouble: ... # @overload def __sub__(self, x: _nt.CoFloating_0d, /) -> Self: ... @overload - def __sub__(self, x: _nt.JustComplex, /) -> clongdouble: ... + def __sub__(self, x: _nt.ToComplex_0d, /) -> clongdouble: ... @overload def __rsub__(self, x: _nt.CoFloating_0d, /) -> Self: ... @overload - def __rsub__(self, x: _nt.JustComplex, /) -> clongdouble: ... + def __rsub__(self, x: _nt.ToComplex_0d, /) -> clongdouble: ... # @overload def __mul__(self, x: _nt.CoFloating_0d, /) -> Self: ... @overload - def __mul__(self, x: _nt.JustComplex, /) -> clongdouble: ... + def __mul__(self, x: _nt.ToComplex_0d, /) -> clongdouble: ... @overload def __rmul__(self, x: _nt.CoFloating_0d, /) -> Self: ... @overload - def __rmul__(self, x: _nt.JustComplex, /) -> clongdouble: ... + def __rmul__(self, x: _nt.ToComplex_0d, /) -> clongdouble: ... # @overload def __pow__(self, x: _nt.CoFloating_0d, mod: None = None, /) -> Self: ... @overload - def __pow__(self, x: _nt.JustComplex, mod: None = None, /) -> clongdouble: ... + def __pow__(self, x: _nt.ToComplex_0d, mod: None = None, /) -> clongdouble: ... @overload def __rpow__(self, x: _nt.CoFloating_0d, mod: None = None, /) -> Self: ... @overload - def __rpow__(self, x: _nt.JustComplex, mod: None = None, /) -> clongdouble: ... + def __rpow__(self, x: _nt.ToComplex_0d, mod: None = None, /) -> clongdouble: ... # @overload def __truediv__(self, x: _nt.CoFloating_0d, /) -> Self: ... @overload - def __truediv__(self, x: _nt.JustComplex, /) -> clongdouble: ... + def __truediv__(self, x: _nt.ToComplex_0d, /) -> clongdouble: ... @overload def __rtruediv__(self, x: _nt.CoFloating_0d, /) -> Self: ... @overload - def __rtruediv__(self, x: _nt.JustComplex, /) -> clongdouble: ... + def __rtruediv__(self, x: _nt.ToComplex_0d, /) -> clongdouble: ... # @override @@ -6575,189 +6649,6 @@ class longdouble(floating[_n._64L]): float96 = longdouble float128 = longdouble -# The main reason for `complexfloating` having two typevars is cosmetic. -# It is used to clarify why `complex128`s precision is `_64Bit`, the latter -# describing the two 64 bit floats representing its real and imaginary component -class complexfloating(inexact[_BitT1, complex], Generic[_BitT1, _BitT2]): - @overload - def __init__(self, real: _ConvertibleToComplex | None = 0, /) -> None: ... - @overload - def __init__(self, real: _ToReal = 0, imag: _ToImag = 0, /) -> None: ... - - # - @property - @abc.abstractmethod - @override - def real(self) -> floating[_BitT1]: ... - @property - @abc.abstractmethod - @override - def imag(self) -> floating[_BitT2]: ... - - # - @abc.abstractmethod - @override - def __abs__(self, /) -> floating[_BitT1]: ... - - # - @abc.abstractmethod - @overload - def __add__(self, x: inexact[_BitT1] | _nt.CoComplex64_0d, /) -> Self: ... - @abc.abstractmethod - @overload - def __add__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complex128 | clongdouble: ... - @abc.abstractmethod - @overload - def __add__(self, x: complex, /) -> Self: ... - @abc.abstractmethod - @overload - def __add__(self, x: _nt.ToLongDouble_0d, /) -> clongdouble: ... - - # keep in sync with `__add__` - @abc.abstractmethod - @overload - def __radd__(self, x: inexact[_BitT1] | _nt.CoComplex64_0d, /) -> Self: ... - @abc.abstractmethod - @overload - def __radd__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complex128 | clongdouble: ... - @abc.abstractmethod - @overload - def __radd__(self, x: complex, /) -> Self: ... - @abc.abstractmethod - @overload - def __radd__(self, x: _nt.ToLongDouble_0d, /) -> clongdouble: ... - - # keep in sync with `__add__` - @abc.abstractmethod - @overload - def __sub__(self, x: inexact[_BitT1] | _nt.CoComplex64_0d, /) -> Self: ... - @abc.abstractmethod - @overload - def __sub__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complex128 | clongdouble: ... - @abc.abstractmethod - @overload - def __sub__(self, x: complex, /) -> Self: ... - @abc.abstractmethod - @overload - def __sub__(self, x: _nt.ToLongDouble_0d, /) -> clongdouble: ... - - # keep in sync with `__add__` - @abc.abstractmethod - @overload - def __rsub__(self, x: inexact[_BitT1] | _nt.CoComplex64_0d, /) -> Self: ... - @abc.abstractmethod - @overload - def __rsub__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complex128 | clongdouble: ... - @abc.abstractmethod - @overload - def __rsub__(self, x: complex, /) -> Self: ... - @abc.abstractmethod - @overload - def __rsub__(self, x: _nt.ToLongDouble_0d, /) -> clongdouble: ... - - # keep in sync with `__add__` - @abc.abstractmethod - @overload - def __mul__(self, x: inexact[_BitT1] | _nt.CoComplex64_0d, /) -> Self: ... - @abc.abstractmethod - @overload - def __mul__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complex128 | clongdouble: ... - @abc.abstractmethod - @overload - def __mul__(self, x: complex, /) -> Self: ... - @abc.abstractmethod - @overload - def __mul__(self, x: _nt.ToLongDouble_0d, /) -> clongdouble: ... - - # keep in sync with `__add__` - @abc.abstractmethod - @overload - def __rmul__(self, x: inexact[_BitT1] | _nt.CoComplex64_0d, /) -> Self: ... - @abc.abstractmethod - @overload - def __rmul__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complex128 | clongdouble: ... - @abc.abstractmethod - @overload - def __rmul__(self, x: complex, /) -> Self: ... - @abc.abstractmethod - @overload - def __rmul__(self, x: _nt.ToLongDouble_0d, /) -> clongdouble: ... - - # keep in sync with `__add__` - @abc.abstractmethod - @overload - def __pow__(self, x: inexact[_BitT1] | _nt.CoComplex64_0d, mod: None = None, /) -> Self: ... - @abc.abstractmethod - @overload - def __pow__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], mod: None = None, /) -> complex128 | clongdouble: ... - @abc.abstractmethod - @overload - def __pow__(self, x: complex, mod: None = None, /) -> Self: ... - @abc.abstractmethod - @overload - def __pow__(self, x: _nt.ToLongDouble_0d, mod: None = None, /) -> clongdouble: ... - - # keep in sync with `__add__` - @abc.abstractmethod - @overload - def __rpow__(self, x: inexact[_BitT1] | _nt.CoComplex64_0d, mod: None = None, /) -> Self: ... - @abc.abstractmethod - @overload - def __rpow__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], mod: None = None, /) -> complex128 | clongdouble: ... - @abc.abstractmethod - @overload - def __rpow__(self, x: complex, mod: None = None, /) -> Self: ... - @abc.abstractmethod - @overload - def __rpow__(self, x: _nt.ToLongDouble_0d, mod: None = None, /) -> clongdouble: ... - - # keep in sync with `__add__` - @abc.abstractmethod - @overload - def __truediv__(self, x: inexact[_BitT1] | _nt.CoComplex64_0d, /) -> Self: ... - @abc.abstractmethod - @overload - def __truediv__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complex128 | clongdouble: ... - @abc.abstractmethod - @overload - def __truediv__(self, x: complex, /) -> Self: ... - @abc.abstractmethod - @overload - def __truediv__(self, x: _nt.ToLongDouble_0d, /) -> clongdouble: ... - - # keep in sync with `__radd__` - @abc.abstractmethod - @overload - def __rtruediv__(self, x: inexact[_BitT1] | _nt.CoComplex64_0d, /) -> Self: ... - @abc.abstractmethod - @overload - def __rtruediv__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complex128 | clongdouble: ... - @abc.abstractmethod - @overload - def __rtruediv__(self, x: complex, /) -> Self: ... - @abc.abstractmethod - @overload - def __rtruediv__(self, x: _nt.ToLongDouble_0d, /) -> clongdouble: ... - - # NOTE: Without these, mypy will use the `misc` error code instead of `opererator` - # when attempting to floordiv a complex - @override - def __floordiv__(self, x: Never, /) -> Never: ... - @override - def __rfloordiv__(self, x: Never, /) -> Never: ... - @override - def __mod__(self, x: Never, /) -> Never: ... - @override - def __rmod__(self, x: Never, /) -> Never: ... - @override - def __divmod__(self, x: Never, /) -> Never: ... - @override - def __rdivmod__(self, x: Never, /) -> Never: ... - - # - @deprecated("The Python built-in `round` is deprecated for complex scalars, and will raise a `TypeError` in a future release") - def __round__(self, /, ndigits: CanIndex | None = None) -> Self: ... - class complex64(complexfloating[_n._32]): @property @override @@ -6778,85 +6669,85 @@ class complex64(complexfloating[_n._32]): @override def __hash__(self, /) -> int: ... - # + # TODO(jorenham): Figure out these LSP violations @overload # type: ignore[override] - def __add__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complex128: ... + def __add__(self, x: _nt.CanArray0D[float64 | _nt.integer64 | _nt.integer32], /) -> complex128: ... # type: ignore[overload-overlap] @overload - def __add__(self, x: _nt.CoComplex64_0d | complex, /) -> Self: ... + def __add__(self, x: _CoComplex64, /) -> Self: ... @overload - def __add__(self, x: _nt.ToLongDouble_0d | _nt.ToCLongDouble_0d, /) -> clongdouble: ... + def __add__(self, x: longdouble, /) -> clongdouble: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__add__` @overload # type: ignore[override] - def __radd__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complex128: ... + def __radd__(self, x: _nt.CanArray0D[float64 | _nt.integer64 | _nt.integer32], /) -> complex128: ... # type: ignore[overload-overlap] @overload - def __radd__(self, x: _nt.CoComplex64_0d | complex, /) -> Self: ... + def __radd__(self, x: _CoComplex64, /) -> Self: ... @overload - def __radd__(self, x: _nt.ToLongDouble_0d | _nt.ToCLongDouble_0d, /) -> clongdouble: ... + def __radd__(self, x: longdouble, /) -> clongdouble: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__add__` @overload # type: ignore[override] - def __sub__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complex128: ... + def __sub__(self, x: _nt.CanArray0D[float64 | _nt.integer64 | _nt.integer32], /) -> complex128: ... # type: ignore[overload-overlap] @overload - def __sub__(self, x: _nt.CoComplex64_0d | complex, /) -> Self: ... + def __sub__(self, x: _CoComplex64, /) -> Self: ... @overload - def __sub__(self, x: _nt.ToLongDouble_0d | _nt.ToCLongDouble_0d, /) -> clongdouble: ... + def __sub__(self, x: longdouble, /) -> clongdouble: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__add__` @overload # type: ignore[override] - def __rsub__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complex128: ... + def __rsub__(self, x: _nt.CanArray0D[float64 | _nt.integer64 | _nt.integer32], /) -> complex128: ... # type: ignore[overload-overlap] @overload - def __rsub__(self, x: _nt.CoComplex64_0d | complex, /) -> Self: ... + def __rsub__(self, x: _CoComplex64, /) -> Self: ... @overload - def __rsub__(self, x: _nt.ToLongDouble_0d | _nt.ToCLongDouble_0d, /) -> clongdouble: ... + def __rsub__(self, x: longdouble, /) -> clongdouble: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__add__` @overload # type: ignore[override] - def __mul__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complex128: ... + def __mul__(self, x: _nt.CanArray0D[float64 | _nt.integer64 | _nt.integer32], /) -> complex128: ... # type: ignore[overload-overlap] @overload - def __mul__(self, x: _nt.CoComplex64_0d | complex, /) -> Self: ... + def __mul__(self, x: _CoComplex64, /) -> Self: ... @overload - def __mul__(self, x: _nt.ToLongDouble_0d | _nt.ToCLongDouble_0d, /) -> clongdouble: ... + def __mul__(self, x: longdouble, /) -> clongdouble: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__add__` @overload # type: ignore[override] - def __rmul__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complex128: ... + def __rmul__(self, x: _nt.CanArray0D[float64 | _nt.integer64 | _nt.integer32], /) -> complex128: ... # type: ignore[overload-overlap] @overload - def __rmul__(self, x: _nt.CoComplex64_0d | complex, /) -> Self: ... + def __rmul__(self, x: _CoComplex64, /) -> Self: ... @overload - def __rmul__(self, x: _nt.ToLongDouble_0d | _nt.ToCLongDouble_0d, /) -> clongdouble: ... + def __rmul__(self, x: longdouble, /) -> clongdouble: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__add__` @overload # type: ignore[override] - def __pow__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], mod: None = None, /) -> complex128: ... + def __pow__(self, x: _nt.CanArray0D[float64 | _nt.integer64 | _nt.integer32], mod: None = None, /) -> complex128: ... # type: ignore[overload-overlap] @overload - def __pow__(self, x: _nt.CoComplex64_0d | complex, mod: None = None, /) -> Self: ... + def __pow__(self, x: _CoComplex64, mod: None = None, /) -> Self: ... @overload - def __pow__(self, x: _nt.ToLongDouble_0d | _nt.ToCLongDouble_0d, mod: None = None, /) -> clongdouble: ... + def __pow__(self, x: longdouble, mod: None = None, /) -> clongdouble: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__add__` @overload # type: ignore[override] - def __rpow__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], mod: None = None, /) -> complex128: ... + def __rpow__(self, x: _nt.CanArray0D[float64 | _nt.integer64 | _nt.integer32], mod: None = None, /) -> complex128: ... # type: ignore[overload-overlap] @overload - def __rpow__(self, x: _nt.CoComplex64_0d | complex, mod: None = None, /) -> Self: ... + def __rpow__(self, x: _CoComplex64, mod: None = None, /) -> Self: ... @overload - def __rpow__(self, x: _nt.ToLongDouble_0d | _nt.ToCLongDouble_0d, mod: None = None, /) -> clongdouble: ... + def __rpow__(self, x: longdouble, mod: None = None, /) -> clongdouble: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__add__` @overload # type: ignore[override] - def __truediv__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complex128: ... + def __truediv__(self, x: _nt.CanArray0D[float64 | _nt.integer64 | _nt.integer32], /) -> complex128: ... # type: ignore[overload-overlap] @overload - def __truediv__(self, x: _nt.CoComplex64_0d | complex, /) -> Self: ... + def __truediv__(self, x: _CoComplex64, /) -> Self: ... @overload - def __truediv__(self, x: _nt.ToLongDouble_0d | _nt.ToCLongDouble_0d, /) -> clongdouble: ... + def __truediv__(self, x: longdouble, /) -> clongdouble: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__add__` @overload # type: ignore[override] - def __rtruediv__(self, x: _nt.CanArray0D[_nt.number64 | _nt.integer32], /) -> complex128: ... + def __rtruediv__(self, x: _nt.CanArray0D[float64 | _nt.integer64 | _nt.integer32], /) -> complex128: ... # type: ignore[overload-overlap] @overload - def __rtruediv__(self, x: _nt.CoComplex64_0d | complex, /) -> Self: ... + def __rtruediv__(self, x: _CoComplex64, /) -> Self: ... @overload - def __rtruediv__(self, x: _nt.ToLongDouble_0d | _nt.ToCLongDouble_0d, /) -> clongdouble: ... + def __rtruediv__(self, x: longdouble, /) -> clongdouble: ... # pyright: ignore[reportIncompatibleMethodOverride] # def __complex__(self, /) -> complex: ... @@ -6889,67 +6780,65 @@ class complex128(complexfloating[_n._64], complex): @override def conjugate(self) -> Self: ... - # NOTE: the ignored `[override]` errors below are mypy-only false positives - - # + # TODO(jorenham): Figure out these LSP violations @overload # type: ignore[override] - def __add__(self, x: _nt.CoComplex128_0d, /) -> Self: ... + def __add__(self, x: _CoComplex128, /) -> Self: ... @overload - def __add__(self, x: _nt.ToLongDouble_0d, /) -> clongdouble: ... + def __add__(self, x: longdouble, /) -> clongdouble: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__add__` @overload # type: ignore[override] - def __radd__(self, x: _nt.CoComplex128_0d, /) -> Self: ... + def __radd__(self, x: _CoComplex128, /) -> Self: ... @overload - def __radd__(self, x: _nt.ToLongDouble_0d, /) -> clongdouble: ... + def __radd__(self, x: longdouble, /) -> clongdouble: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__add__` @overload # type: ignore[override] - def __sub__(self, x: _nt.CoComplex128_0d, /) -> Self: ... + def __sub__(self, x: _CoComplex128, /) -> Self: ... @overload - def __sub__(self, x: _nt.ToLongDouble_0d, /) -> clongdouble: ... + def __sub__(self, x: longdouble, /) -> clongdouble: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__add__` @overload # type: ignore[override] - def __rsub__(self, x: _nt.CoComplex128_0d, /) -> Self: ... + def __rsub__(self, x: _CoComplex128, /) -> Self: ... @overload - def __rsub__(self, x: _nt.ToLongDouble_0d, /) -> clongdouble: ... + def __rsub__(self, x: longdouble, /) -> clongdouble: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__add__` @overload # type: ignore[override] - def __mul__(self, x: _nt.CoComplex128_0d, /) -> Self: ... + def __mul__(self, x: _CoComplex128, /) -> Self: ... @overload - def __mul__(self, x: _nt.ToLongDouble_0d, /) -> clongdouble: ... + def __mul__(self, x: longdouble, /) -> clongdouble: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__add__` @overload # type: ignore[override] - def __rmul__(self, x: _nt.CoComplex128_0d, /) -> Self: ... + def __rmul__(self, x: _CoComplex128, /) -> Self: ... @overload - def __rmul__(self, x: _nt.ToLongDouble_0d, /) -> clongdouble: ... + def __rmul__(self, x: longdouble, /) -> clongdouble: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__add__` @overload # type: ignore[override] - def __pow__(self, x: _nt.CoComplex128_0d, mod: None = None, /) -> Self: ... + def __pow__(self, x: _CoComplex128, mod: None = None, /) -> Self: ... @overload - def __pow__(self, x: _nt.ToLongDouble_0d, mod: None = None, /) -> clongdouble: ... + def __pow__(self, x: longdouble, mod: None = None, /) -> clongdouble: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__add__` @overload # type: ignore[override] - def __rpow__(self, x: _nt.CoComplex128_0d, mod: None = None, /) -> Self: ... + def __rpow__(self, x: _CoComplex128, mod: None = None, /) -> Self: ... @overload - def __rpow__(self, x: _nt.ToLongDouble_0d, mod: None = None, /) -> clongdouble: ... + def __rpow__(self, x: longdouble, mod: None = None, /) -> clongdouble: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__add__` @overload # type: ignore[override] - def __truediv__(self, x: _nt.CoComplex128_0d, /) -> Self: ... + def __truediv__(self, x: _CoComplex128, /) -> Self: ... @overload - def __truediv__(self, x: _nt.ToLongDouble_0d, /) -> clongdouble: ... + def __truediv__(self, x: longdouble, /) -> clongdouble: ... # pyright: ignore[reportIncompatibleMethodOverride] # keep in sync with `__add__` @overload # type: ignore[override] - def __rtruediv__(self, x: _nt.CoComplex128_0d, /) -> Self: ... + def __rtruediv__(self, x: _CoComplex128, /) -> Self: ... @overload - def __rtruediv__(self, x: _nt.ToLongDouble_0d, /) -> clongdouble: ... + def __rtruediv__(self, x: longdouble, /) -> clongdouble: ... # pyright: ignore[reportIncompatibleMethodOverride] # def __getnewargs__(self, /) -> tuple[float, float]: ... @@ -6985,27 +6874,27 @@ class clongdouble(complexfloating[_n._64L]): @override def __hash__(self, /) -> int: ... - # + # TODO(jorenham): Figure out these LSP violations @override - def __add__(self, x: _nt.CoComplex_0d, /) -> Self: ... + def __add__(self, x: _nt.CoComplex_0d, /) -> Self: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] @override - def __radd__(self, x: _nt.CoComplex_0d, /) -> Self: ... + def __radd__(self, x: _nt.CoComplex_0d, /) -> Self: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] @override - def __sub__(self, x: _nt.CoComplex_0d, /) -> Self: ... + def __sub__(self, x: _nt.CoComplex_0d, /) -> Self: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] @override - def __rsub__(self, x: _nt.CoComplex_0d, /) -> Self: ... + def __rsub__(self, x: _nt.CoComplex_0d, /) -> Self: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] @override - def __mul__(self, x: _nt.CoComplex_0d, /) -> Self: ... + def __mul__(self, x: _nt.CoComplex_0d, /) -> Self: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] @override - def __rmul__(self, x: _nt.CoComplex_0d, /) -> Self: ... + def __rmul__(self, x: _nt.CoComplex_0d, /) -> Self: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] @override - def __pow__(self, x: _nt.CoComplex_0d, mod: None = None, /) -> Self: ... + def __pow__(self, x: _nt.CoComplex_0d, mod: None = None, /) -> Self: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] @override - def __rpow__(self, x: _nt.CoComplex_0d, mod: None = None, /) -> Self: ... + def __rpow__(self, x: _nt.CoComplex_0d, mod: None = None, /) -> Self: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] @override - def __truediv__(self, x: _nt.CoComplex_0d, /) -> Self: ... + def __truediv__(self, x: _nt.CoComplex_0d, /) -> Self: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] @override - def __rtruediv__(self, x: _nt.CoComplex_0d, /) -> Self: ... + def __rtruediv__(self, x: _nt.CoComplex_0d, /) -> Self: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] # def __complex__(self, /) -> complex: ... diff --git a/test/generated/ruff.toml b/test/generated/ruff.toml index d8018477..2b2cb9bc 100644 --- a/test/generated/ruff.toml +++ b/test/generated/ruff.toml @@ -4,6 +4,7 @@ line-length = 130 [lint] extend-ignore = [ "PTH", # flake8-use-pathlib + "B015", # flake8-bugbear useless-comparison "PYI015", # flake8-pyi: assignment-default-in-stub "PYI017", # flake8-pyi: complex-assignment-in-stub "SLF001", # flake8-self: private-member-access diff --git a/test/generated/scalar_binops.pyi b/test/generated/scalar_binops.pyi index 310de35f..a0a22008 100644 --- a/test/generated/scalar_binops.pyi +++ b/test/generated/scalar_binops.pyi @@ -1,4 +1,4 @@ -# @generated 2025-03-25T16:43:28Z with tool/testgen.py +# @generated 2025-03-25T21:25:17Z with tool/testgen.py from typing_extensions import assert_type import numpy as np @@ -30,6 +30,9 @@ c64l: np.clongdouble M64: np.datetime64 m64: np.timedelta64 +f: np.floating +c: np.complexfloating + ### # __[r]add__ @@ -55,6 +58,8 @@ assert_type(b1 + c64, np.complex128) assert_type(b1 + c64l, np.clongdouble) assert_type(b1 + M64, np.datetime64) assert_type(b1 + m64, np.timedelta64) +assert_type(b1 + f, np.floating) +assert_type(b1 + c, np.complexfloating) assert_type(u8 + b_py, np.uint8) assert_type(u8 + i_py, np.uint8) @@ -78,6 +83,8 @@ assert_type(u8 + c64, np.complex128) assert_type(u8 + c64l, np.clongdouble) assert_type(u8 + M64, np.datetime64) assert_type(u8 + m64, np.timedelta64) +assert_type(u8 + f, np.floating) +assert_type(u8 + c, np.complexfloating) assert_type(u16 + b_py, np.uint16) assert_type(u16 + i_py, np.uint16) @@ -101,6 +108,8 @@ assert_type(u16 + c64, np.complex128) assert_type(u16 + c64l, np.clongdouble) assert_type(u16 + M64, np.datetime64) assert_type(u16 + m64, np.timedelta64) +assert_type(u16 + f, np.floating) +assert_type(u16 + c, np.complexfloating) assert_type(u32 + b_py, np.uint32) assert_type(u32 + i_py, np.uint32) @@ -124,6 +133,8 @@ assert_type(u32 + c64, np.complex128) assert_type(u32 + c64l, np.clongdouble) assert_type(u32 + M64, np.datetime64) assert_type(u32 + m64, np.timedelta64) +assert_type(u32 + f, np.floating) +assert_type(u32 + c, np.complexfloating) assert_type(u64 + b_py, np.uint64) assert_type(u64 + i_py, np.uint64) @@ -147,6 +158,8 @@ assert_type(u64 + c64, np.complex128) assert_type(u64 + c64l, np.clongdouble) assert_type(u64 + M64, np.datetime64) assert_type(u64 + m64, np.timedelta64) +assert_type(u64 + f, np.floating) +assert_type(u64 + c, np.complexfloating) assert_type(i8 + b_py, np.int8) assert_type(i8 + i_py, np.int8) @@ -170,6 +183,8 @@ assert_type(i8 + c64, np.complex128) assert_type(i8 + c64l, np.clongdouble) assert_type(i8 + M64, np.datetime64) assert_type(i8 + m64, np.timedelta64) +assert_type(i8 + f, np.floating) +assert_type(i8 + c, np.complexfloating) assert_type(i16 + b_py, np.int16) assert_type(i16 + i_py, np.int16) @@ -193,6 +208,8 @@ assert_type(i16 + c64, np.complex128) assert_type(i16 + c64l, np.clongdouble) assert_type(i16 + M64, np.datetime64) assert_type(i16 + m64, np.timedelta64) +assert_type(i16 + f, np.floating) +assert_type(i16 + c, np.complexfloating) assert_type(i32 + b_py, np.int32) assert_type(i32 + i_py, np.int32) @@ -216,6 +233,8 @@ assert_type(i32 + c64, np.complex128) assert_type(i32 + c64l, np.clongdouble) assert_type(i32 + M64, np.datetime64) assert_type(i32 + m64, np.timedelta64) +assert_type(i32 + f, np.floating) +assert_type(i32 + c, np.complexfloating) assert_type(i64 + b_py, np.int64) assert_type(i64 + i_py, np.int64) @@ -239,6 +258,8 @@ assert_type(i64 + c64, np.complex128) assert_type(i64 + c64l, np.clongdouble) assert_type(i64 + M64, np.datetime64) assert_type(i64 + m64, np.timedelta64) +assert_type(i64 + f, np.floating) +assert_type(i64 + c, np.complexfloating) assert_type(f16 + b_py, np.float16) assert_type(f16 + i_py, np.float16) @@ -260,6 +281,8 @@ assert_type(f16 + f64l, np.longdouble) assert_type(f16 + c32, np.complex64) assert_type(f16 + c64, np.complex128) assert_type(f16 + c64l, np.clongdouble) +assert_type(f16 + f, np.floating) +assert_type(f16 + c, np.complexfloating) assert_type(f32 + b_py, np.float32) assert_type(f32 + i_py, np.float32) @@ -281,6 +304,8 @@ assert_type(f32 + f64l, np.longdouble) assert_type(f32 + c32, np.complex64) assert_type(f32 + c64, np.complex128) assert_type(f32 + c64l, np.clongdouble) +assert_type(f32 + f, np.floating) +assert_type(f32 + c, np.complexfloating) assert_type(f64 + b_py, np.float64) assert_type(f64 + i_py, np.float64) @@ -302,6 +327,8 @@ assert_type(f64 + f64l, np.longdouble) assert_type(f64 + c32, np.complex128) assert_type(f64 + c64, np.complex128) assert_type(f64 + c64l, np.clongdouble) +assert_type(f64 + f, np.floating) +assert_type(f64 + c, np.complexfloating) assert_type(f64l + b_py, np.longdouble) assert_type(f64l + i_py, np.longdouble) @@ -323,6 +350,8 @@ assert_type(f64l + f64l, np.longdouble) assert_type(f64l + c32, np.clongdouble) assert_type(f64l + c64, np.clongdouble) assert_type(f64l + c64l, np.clongdouble) +assert_type(f64l + f, np.longdouble) +assert_type(f64l + c, np.clongdouble) assert_type(c32 + b_py, np.complex64) assert_type(c32 + i_py, np.complex64) @@ -344,6 +373,8 @@ assert_type(c32 + f64l, np.clongdouble) assert_type(c32 + c32, np.complex64) assert_type(c32 + c64, np.complex128) assert_type(c32 + c64l, np.clongdouble) +assert_type(c32 + f, np.complexfloating) +assert_type(c32 + c, np.complexfloating) assert_type(c64 + b_py, np.complex128) assert_type(c64 + i_py, np.complex128) @@ -365,6 +396,8 @@ assert_type(c64 + f64l, np.clongdouble) assert_type(c64 + c32, np.complex128) assert_type(c64 + c64, np.complex128) assert_type(c64 + c64l, np.clongdouble) +assert_type(c64 + f, np.complexfloating) +assert_type(c64 + c, np.complexfloating) assert_type(c64l + b_py, np.clongdouble) assert_type(c64l + i_py, np.clongdouble) @@ -386,6 +419,8 @@ assert_type(c64l + f64l, np.clongdouble) assert_type(c64l + c32, np.clongdouble) assert_type(c64l + c64, np.clongdouble) assert_type(c64l + c64l, np.clongdouble) +assert_type(c64l + f, np.clongdouble) +assert_type(c64l + c, np.clongdouble) assert_type(M64 + b_py, np.datetime64) assert_type(M64 + i_py, np.datetime64) @@ -414,6 +449,52 @@ assert_type(m64 + i64, np.timedelta64) assert_type(m64 + M64, np.datetime64) assert_type(m64 + m64, np.timedelta64) +assert_type(f + b_py, np.floating) +assert_type(f + i_py, np.floating) +assert_type(f + f_py, np.floating) +assert_type(f + c_py, np.complexfloating) +assert_type(f + b1, np.floating) +assert_type(f + u8, np.floating) +assert_type(f + u16, np.floating) +assert_type(f + u32, np.floating) +assert_type(f + u64, np.floating) +assert_type(f + i8, np.floating) +assert_type(f + i16, np.floating) +assert_type(f + i32, np.floating) +assert_type(f + i64, np.floating) +assert_type(f + f16, np.floating) +assert_type(f + f32, np.floating) +assert_type(f + f64, np.floating) +assert_type(f + f64l, np.longdouble) +assert_type(f + c32, np.complexfloating) +assert_type(f + c64, np.complexfloating) +assert_type(f + c64l, np.clongdouble) +assert_type(f + f, np.floating) +assert_type(f + c, np.complexfloating) + +assert_type(c + b_py, np.complexfloating) +assert_type(c + i_py, np.complexfloating) +assert_type(c + f_py, np.complexfloating) +assert_type(c + c_py, np.complexfloating) +assert_type(c + b1, np.complexfloating) +assert_type(c + u8, np.complexfloating) +assert_type(c + u16, np.complexfloating) +assert_type(c + u32, np.complexfloating) +assert_type(c + u64, np.complexfloating) +assert_type(c + i8, np.complexfloating) +assert_type(c + i16, np.complexfloating) +assert_type(c + i32, np.complexfloating) +assert_type(c + i64, np.complexfloating) +assert_type(c + f16, np.complexfloating) +assert_type(c + f32, np.complexfloating) +assert_type(c + f64, np.complexfloating) +assert_type(c + f64l, np.clongdouble) +assert_type(c + c32, np.complexfloating) +assert_type(c + c64, np.complexfloating) +assert_type(c + c64l, np.clongdouble) +assert_type(c + f, np.complexfloating) +assert_type(c + c, np.complexfloating) + ### # __[r]sub__ @@ -438,6 +519,8 @@ assert_type(b1 - c32, np.complex64) assert_type(b1 - c64, np.complex128) assert_type(b1 - c64l, np.clongdouble) assert_type(b1 - m64, np.timedelta64) +assert_type(b1 - f, np.floating) +assert_type(b1 - c, np.complexfloating) assert_type(u8 - b_py, np.uint8) assert_type(u8 - i_py, np.uint8) @@ -460,6 +543,8 @@ assert_type(u8 - c32, np.complex64) assert_type(u8 - c64, np.complex128) assert_type(u8 - c64l, np.clongdouble) assert_type(u8 - m64, np.timedelta64) +assert_type(u8 - f, np.floating) +assert_type(u8 - c, np.complexfloating) assert_type(u16 - b_py, np.uint16) assert_type(u16 - i_py, np.uint16) @@ -482,6 +567,8 @@ assert_type(u16 - c32, np.complex64) assert_type(u16 - c64, np.complex128) assert_type(u16 - c64l, np.clongdouble) assert_type(u16 - m64, np.timedelta64) +assert_type(u16 - f, np.floating) +assert_type(u16 - c, np.complexfloating) assert_type(u32 - b_py, np.uint32) assert_type(u32 - i_py, np.uint32) @@ -504,6 +591,8 @@ assert_type(u32 - c32, np.complex128) assert_type(u32 - c64, np.complex128) assert_type(u32 - c64l, np.clongdouble) assert_type(u32 - m64, np.timedelta64) +assert_type(u32 - f, np.floating) +assert_type(u32 - c, np.complexfloating) assert_type(u64 - b_py, np.uint64) assert_type(u64 - i_py, np.uint64) @@ -526,6 +615,8 @@ assert_type(u64 - c32, np.complex128) assert_type(u64 - c64, np.complex128) assert_type(u64 - c64l, np.clongdouble) assert_type(u64 - m64, np.timedelta64) +assert_type(u64 - f, np.floating) +assert_type(u64 - c, np.complexfloating) assert_type(i8 - b_py, np.int8) assert_type(i8 - i_py, np.int8) @@ -548,6 +639,8 @@ assert_type(i8 - c32, np.complex64) assert_type(i8 - c64, np.complex128) assert_type(i8 - c64l, np.clongdouble) assert_type(i8 - m64, np.timedelta64) +assert_type(i8 - f, np.floating) +assert_type(i8 - c, np.complexfloating) assert_type(i16 - b_py, np.int16) assert_type(i16 - i_py, np.int16) @@ -570,6 +663,8 @@ assert_type(i16 - c32, np.complex64) assert_type(i16 - c64, np.complex128) assert_type(i16 - c64l, np.clongdouble) assert_type(i16 - m64, np.timedelta64) +assert_type(i16 - f, np.floating) +assert_type(i16 - c, np.complexfloating) assert_type(i32 - b_py, np.int32) assert_type(i32 - i_py, np.int32) @@ -592,6 +687,8 @@ assert_type(i32 - c32, np.complex128) assert_type(i32 - c64, np.complex128) assert_type(i32 - c64l, np.clongdouble) assert_type(i32 - m64, np.timedelta64) +assert_type(i32 - f, np.floating) +assert_type(i32 - c, np.complexfloating) assert_type(i64 - b_py, np.int64) assert_type(i64 - i_py, np.int64) @@ -614,6 +711,8 @@ assert_type(i64 - c32, np.complex128) assert_type(i64 - c64, np.complex128) assert_type(i64 - c64l, np.clongdouble) assert_type(i64 - m64, np.timedelta64) +assert_type(i64 - f, np.floating) +assert_type(i64 - c, np.complexfloating) assert_type(f16 - b_py, np.float16) assert_type(f16 - i_py, np.float16) @@ -635,6 +734,8 @@ assert_type(f16 - f64l, np.longdouble) assert_type(f16 - c32, np.complex64) assert_type(f16 - c64, np.complex128) assert_type(f16 - c64l, np.clongdouble) +assert_type(f16 - f, np.floating) +assert_type(f16 - c, np.complexfloating) assert_type(f32 - b_py, np.float32) assert_type(f32 - i_py, np.float32) @@ -656,6 +757,8 @@ assert_type(f32 - f64l, np.longdouble) assert_type(f32 - c32, np.complex64) assert_type(f32 - c64, np.complex128) assert_type(f32 - c64l, np.clongdouble) +assert_type(f32 - f, np.floating) +assert_type(f32 - c, np.complexfloating) assert_type(f64 - b_py, np.float64) assert_type(f64 - i_py, np.float64) @@ -677,6 +780,8 @@ assert_type(f64 - f64l, np.longdouble) assert_type(f64 - c32, np.complex128) assert_type(f64 - c64, np.complex128) assert_type(f64 - c64l, np.clongdouble) +assert_type(f64 - f, np.floating) +assert_type(f64 - c, np.complexfloating) assert_type(f64l - b_py, np.longdouble) assert_type(f64l - i_py, np.longdouble) @@ -698,6 +803,8 @@ assert_type(f64l - f64l, np.longdouble) assert_type(f64l - c32, np.clongdouble) assert_type(f64l - c64, np.clongdouble) assert_type(f64l - c64l, np.clongdouble) +assert_type(f64l - f, np.longdouble) +assert_type(f64l - c, np.clongdouble) assert_type(c32 - b_py, np.complex64) assert_type(c32 - i_py, np.complex64) @@ -719,6 +826,8 @@ assert_type(c32 - f64l, np.clongdouble) assert_type(c32 - c32, np.complex64) assert_type(c32 - c64, np.complex128) assert_type(c32 - c64l, np.clongdouble) +assert_type(c32 - f, np.complexfloating) +assert_type(c32 - c, np.complexfloating) assert_type(c64 - b_py, np.complex128) assert_type(c64 - i_py, np.complex128) @@ -740,6 +849,8 @@ assert_type(c64 - f64l, np.clongdouble) assert_type(c64 - c32, np.complex128) assert_type(c64 - c64, np.complex128) assert_type(c64 - c64l, np.clongdouble) +assert_type(c64 - f, np.complexfloating) +assert_type(c64 - c, np.complexfloating) assert_type(c64l - b_py, np.clongdouble) assert_type(c64l - i_py, np.clongdouble) @@ -761,6 +872,8 @@ assert_type(c64l - f64l, np.clongdouble) assert_type(c64l - c32, np.clongdouble) assert_type(c64l - c64, np.clongdouble) assert_type(c64l - c64l, np.clongdouble) +assert_type(c64l - f, np.clongdouble) +assert_type(c64l - c, np.clongdouble) assert_type(M64 - b_py, np.datetime64) assert_type(M64 - i_py, np.datetime64) @@ -789,6 +902,52 @@ assert_type(m64 - i32, np.timedelta64) assert_type(m64 - i64, np.timedelta64) assert_type(m64 - m64, np.timedelta64) +assert_type(f - b_py, np.floating) +assert_type(f - i_py, np.floating) +assert_type(f - f_py, np.floating) +assert_type(f - c_py, np.complexfloating) +assert_type(f - b1, np.floating) +assert_type(f - u8, np.floating) +assert_type(f - u16, np.floating) +assert_type(f - u32, np.floating) +assert_type(f - u64, np.floating) +assert_type(f - i8, np.floating) +assert_type(f - i16, np.floating) +assert_type(f - i32, np.floating) +assert_type(f - i64, np.floating) +assert_type(f - f16, np.floating) +assert_type(f - f32, np.floating) +assert_type(f - f64, np.floating) +assert_type(f - f64l, np.longdouble) +assert_type(f - c32, np.complexfloating) +assert_type(f - c64, np.complexfloating) +assert_type(f - c64l, np.clongdouble) +assert_type(f - f, np.floating) +assert_type(f - c, np.complexfloating) + +assert_type(c - b_py, np.complexfloating) +assert_type(c - i_py, np.complexfloating) +assert_type(c - f_py, np.complexfloating) +assert_type(c - c_py, np.complexfloating) +assert_type(c - b1, np.complexfloating) +assert_type(c - u8, np.complexfloating) +assert_type(c - u16, np.complexfloating) +assert_type(c - u32, np.complexfloating) +assert_type(c - u64, np.complexfloating) +assert_type(c - i8, np.complexfloating) +assert_type(c - i16, np.complexfloating) +assert_type(c - i32, np.complexfloating) +assert_type(c - i64, np.complexfloating) +assert_type(c - f16, np.complexfloating) +assert_type(c - f32, np.complexfloating) +assert_type(c - f64, np.complexfloating) +assert_type(c - f64l, np.clongdouble) +assert_type(c - c32, np.complexfloating) +assert_type(c - c64, np.complexfloating) +assert_type(c - c64l, np.clongdouble) +assert_type(c - f, np.complexfloating) +assert_type(c - c, np.complexfloating) + ### # __[r]mul__ @@ -813,6 +972,8 @@ assert_type(b1 * c32, np.complex64) assert_type(b1 * c64, np.complex128) assert_type(b1 * c64l, np.clongdouble) assert_type(b1 * m64, np.timedelta64) +assert_type(b1 * f, np.floating) +assert_type(b1 * c, np.complexfloating) assert_type(u8 * b_py, np.uint8) assert_type(u8 * i_py, np.uint8) @@ -835,6 +996,8 @@ assert_type(u8 * c32, np.complex64) assert_type(u8 * c64, np.complex128) assert_type(u8 * c64l, np.clongdouble) assert_type(u8 * m64, np.timedelta64) +assert_type(u8 * f, np.floating) +assert_type(u8 * c, np.complexfloating) assert_type(u16 * b_py, np.uint16) assert_type(u16 * i_py, np.uint16) @@ -857,6 +1020,8 @@ assert_type(u16 * c32, np.complex64) assert_type(u16 * c64, np.complex128) assert_type(u16 * c64l, np.clongdouble) assert_type(u16 * m64, np.timedelta64) +assert_type(u16 * f, np.floating) +assert_type(u16 * c, np.complexfloating) assert_type(u32 * b_py, np.uint32) assert_type(u32 * i_py, np.uint32) @@ -879,6 +1044,8 @@ assert_type(u32 * c32, np.complex128) assert_type(u32 * c64, np.complex128) assert_type(u32 * c64l, np.clongdouble) assert_type(u32 * m64, np.timedelta64) +assert_type(u32 * f, np.floating) +assert_type(u32 * c, np.complexfloating) assert_type(u64 * b_py, np.uint64) assert_type(u64 * i_py, np.uint64) @@ -901,6 +1068,8 @@ assert_type(u64 * c32, np.complex128) assert_type(u64 * c64, np.complex128) assert_type(u64 * c64l, np.clongdouble) assert_type(u64 * m64, np.timedelta64) +assert_type(u64 * f, np.floating) +assert_type(u64 * c, np.complexfloating) assert_type(i8 * b_py, np.int8) assert_type(i8 * i_py, np.int8) @@ -923,6 +1092,8 @@ assert_type(i8 * c32, np.complex64) assert_type(i8 * c64, np.complex128) assert_type(i8 * c64l, np.clongdouble) assert_type(i8 * m64, np.timedelta64) +assert_type(i8 * f, np.floating) +assert_type(i8 * c, np.complexfloating) assert_type(i16 * b_py, np.int16) assert_type(i16 * i_py, np.int16) @@ -945,6 +1116,8 @@ assert_type(i16 * c32, np.complex64) assert_type(i16 * c64, np.complex128) assert_type(i16 * c64l, np.clongdouble) assert_type(i16 * m64, np.timedelta64) +assert_type(i16 * f, np.floating) +assert_type(i16 * c, np.complexfloating) assert_type(i32 * b_py, np.int32) assert_type(i32 * i_py, np.int32) @@ -967,6 +1140,8 @@ assert_type(i32 * c32, np.complex128) assert_type(i32 * c64, np.complex128) assert_type(i32 * c64l, np.clongdouble) assert_type(i32 * m64, np.timedelta64) +assert_type(i32 * f, np.floating) +assert_type(i32 * c, np.complexfloating) assert_type(i64 * b_py, np.int64) assert_type(i64 * i_py, np.int64) @@ -989,6 +1164,8 @@ assert_type(i64 * c32, np.complex128) assert_type(i64 * c64, np.complex128) assert_type(i64 * c64l, np.clongdouble) assert_type(i64 * m64, np.timedelta64) +assert_type(i64 * f, np.floating) +assert_type(i64 * c, np.complexfloating) assert_type(f16 * b_py, np.float16) assert_type(f16 * i_py, np.float16) @@ -1011,6 +1188,8 @@ assert_type(f16 * c32, np.complex64) assert_type(f16 * c64, np.complex128) assert_type(f16 * c64l, np.clongdouble) assert_type(f16 * m64, np.timedelta64) +assert_type(f16 * f, np.floating) +assert_type(f16 * c, np.complexfloating) assert_type(f32 * b_py, np.float32) assert_type(f32 * i_py, np.float32) @@ -1033,6 +1212,8 @@ assert_type(f32 * c32, np.complex64) assert_type(f32 * c64, np.complex128) assert_type(f32 * c64l, np.clongdouble) assert_type(f32 * m64, np.timedelta64) +assert_type(f32 * f, np.floating) +assert_type(f32 * c, np.complexfloating) assert_type(f64 * b_py, np.float64) assert_type(f64 * i_py, np.float64) @@ -1055,6 +1236,8 @@ assert_type(f64 * c32, np.complex128) assert_type(f64 * c64, np.complex128) assert_type(f64 * c64l, np.clongdouble) assert_type(f64 * m64, np.timedelta64) +assert_type(f64 * f, np.floating) +assert_type(f64 * c, np.complexfloating) assert_type(f64l * b_py, np.longdouble) assert_type(f64l * i_py, np.longdouble) @@ -1077,6 +1260,8 @@ assert_type(f64l * c32, np.clongdouble) assert_type(f64l * c64, np.clongdouble) assert_type(f64l * c64l, np.clongdouble) assert_type(f64l * m64, np.timedelta64) +assert_type(f64l * f, np.longdouble) +assert_type(f64l * c, np.clongdouble) assert_type(c32 * b_py, np.complex64) assert_type(c32 * i_py, np.complex64) @@ -1098,6 +1283,8 @@ assert_type(c32 * f64l, np.clongdouble) assert_type(c32 * c32, np.complex64) assert_type(c32 * c64, np.complex128) assert_type(c32 * c64l, np.clongdouble) +assert_type(c32 * f, np.complexfloating) +assert_type(c32 * c, np.complexfloating) assert_type(c64 * b_py, np.complex128) assert_type(c64 * i_py, np.complex128) @@ -1119,6 +1306,8 @@ assert_type(c64 * f64l, np.clongdouble) assert_type(c64 * c32, np.complex128) assert_type(c64 * c64, np.complex128) assert_type(c64 * c64l, np.clongdouble) +assert_type(c64 * f, np.complexfloating) +assert_type(c64 * c, np.complexfloating) assert_type(c64l * b_py, np.clongdouble) assert_type(c64l * i_py, np.clongdouble) @@ -1140,6 +1329,8 @@ assert_type(c64l * f64l, np.clongdouble) assert_type(c64l * c32, np.clongdouble) assert_type(c64l * c64, np.clongdouble) assert_type(c64l * c64l, np.clongdouble) +assert_type(c64l * f, np.clongdouble) +assert_type(c64l * c, np.clongdouble) assert_type(m64 * b_py, np.timedelta64) assert_type(m64 * i_py, np.timedelta64) @@ -1157,6 +1348,54 @@ assert_type(m64 * f16, np.timedelta64) assert_type(m64 * f32, np.timedelta64) assert_type(m64 * f64, np.timedelta64) assert_type(m64 * f64l, np.timedelta64) +assert_type(m64 * f, np.timedelta64) + +assert_type(f * b_py, np.floating) +assert_type(f * i_py, np.floating) +assert_type(f * f_py, np.floating) +assert_type(f * c_py, np.complexfloating) +assert_type(f * b1, np.floating) +assert_type(f * u8, np.floating) +assert_type(f * u16, np.floating) +assert_type(f * u32, np.floating) +assert_type(f * u64, np.floating) +assert_type(f * i8, np.floating) +assert_type(f * i16, np.floating) +assert_type(f * i32, np.floating) +assert_type(f * i64, np.floating) +assert_type(f * f16, np.floating) +assert_type(f * f32, np.floating) +assert_type(f * f64, np.floating) +assert_type(f * f64l, np.longdouble) +assert_type(f * c32, np.complexfloating) +assert_type(f * c64, np.complexfloating) +assert_type(f * c64l, np.clongdouble) +assert_type(f * m64, np.timedelta64) +assert_type(f * f, np.floating) +assert_type(f * c, np.complexfloating) + +assert_type(c * b_py, np.complexfloating) +assert_type(c * i_py, np.complexfloating) +assert_type(c * f_py, np.complexfloating) +assert_type(c * c_py, np.complexfloating) +assert_type(c * b1, np.complexfloating) +assert_type(c * u8, np.complexfloating) +assert_type(c * u16, np.complexfloating) +assert_type(c * u32, np.complexfloating) +assert_type(c * u64, np.complexfloating) +assert_type(c * i8, np.complexfloating) +assert_type(c * i16, np.complexfloating) +assert_type(c * i32, np.complexfloating) +assert_type(c * i64, np.complexfloating) +assert_type(c * f16, np.complexfloating) +assert_type(c * f32, np.complexfloating) +assert_type(c * f64, np.complexfloating) +assert_type(c * f64l, np.clongdouble) +assert_type(c * c32, np.complexfloating) +assert_type(c * c64, np.complexfloating) +assert_type(c * c64l, np.clongdouble) +assert_type(c * f, np.complexfloating) +assert_type(c * c, np.complexfloating) ### # __[r]pow__ @@ -1181,6 +1420,8 @@ assert_type(b1**f64l, np.longdouble) assert_type(b1**c32, np.complex64) assert_type(b1**c64, np.complex128) assert_type(b1**c64l, np.clongdouble) +assert_type(b1**f, np.floating) +assert_type(b1**c, np.complexfloating) assert_type(u8**b_py, np.uint8) assert_type(u8**i_py, np.uint8) @@ -1202,6 +1443,8 @@ assert_type(u8**f64l, np.longdouble) assert_type(u8**c32, np.complex64) assert_type(u8**c64, np.complex128) assert_type(u8**c64l, np.clongdouble) +assert_type(u8**f, np.floating) +assert_type(u8**c, np.complexfloating) assert_type(u16**b_py, np.uint16) assert_type(u16**i_py, np.uint16) @@ -1223,6 +1466,8 @@ assert_type(u16**f64l, np.longdouble) assert_type(u16**c32, np.complex64) assert_type(u16**c64, np.complex128) assert_type(u16**c64l, np.clongdouble) +assert_type(u16**f, np.floating) +assert_type(u16**c, np.complexfloating) assert_type(u32**b_py, np.uint32) assert_type(u32**i_py, np.uint32) @@ -1244,6 +1489,8 @@ assert_type(u32**f64l, np.longdouble) assert_type(u32**c32, np.complex128) assert_type(u32**c64, np.complex128) assert_type(u32**c64l, np.clongdouble) +assert_type(u32**f, np.floating) +assert_type(u32**c, np.complexfloating) assert_type(u64**b_py, np.uint64) assert_type(u64**i_py, np.uint64) @@ -1265,6 +1512,8 @@ assert_type(u64**f64l, np.longdouble) assert_type(u64**c32, np.complex128) assert_type(u64**c64, np.complex128) assert_type(u64**c64l, np.clongdouble) +assert_type(u64**f, np.floating) +assert_type(u64**c, np.complexfloating) assert_type(i8**b_py, np.int8) assert_type(i8**i_py, np.int8) @@ -1286,6 +1535,8 @@ assert_type(i8**f64l, np.longdouble) assert_type(i8**c32, np.complex64) assert_type(i8**c64, np.complex128) assert_type(i8**c64l, np.clongdouble) +assert_type(i8**f, np.floating) +assert_type(i8**c, np.complexfloating) assert_type(i16**b_py, np.int16) assert_type(i16**i_py, np.int16) @@ -1307,6 +1558,8 @@ assert_type(i16**f64l, np.longdouble) assert_type(i16**c32, np.complex64) assert_type(i16**c64, np.complex128) assert_type(i16**c64l, np.clongdouble) +assert_type(i16**f, np.floating) +assert_type(i16**c, np.complexfloating) assert_type(i32**b_py, np.int32) assert_type(i32**i_py, np.int32) @@ -1328,6 +1581,8 @@ assert_type(i32**f64l, np.longdouble) assert_type(i32**c32, np.complex128) assert_type(i32**c64, np.complex128) assert_type(i32**c64l, np.clongdouble) +assert_type(i32**f, np.floating) +assert_type(i32**c, np.complexfloating) assert_type(i64**b_py, np.int64) assert_type(i64**i_py, np.int64) @@ -1349,6 +1604,8 @@ assert_type(i64**f64l, np.longdouble) assert_type(i64**c32, np.complex128) assert_type(i64**c64, np.complex128) assert_type(i64**c64l, np.clongdouble) +assert_type(i64**f, np.floating) +assert_type(i64**c, np.complexfloating) assert_type(f16**b_py, np.float16) assert_type(f16**i_py, np.float16) @@ -1370,6 +1627,8 @@ assert_type(f16**f64l, np.longdouble) assert_type(f16**c32, np.complex64) assert_type(f16**c64, np.complex128) assert_type(f16**c64l, np.clongdouble) +assert_type(f16**f, np.floating) +assert_type(f16**c, np.complexfloating) assert_type(f32**b_py, np.float32) assert_type(f32**i_py, np.float32) @@ -1391,6 +1650,8 @@ assert_type(f32**f64l, np.longdouble) assert_type(f32**c32, np.complex64) assert_type(f32**c64, np.complex128) assert_type(f32**c64l, np.clongdouble) +assert_type(f32**f, np.floating) +assert_type(f32**c, np.complexfloating) assert_type(f64**b_py, np.float64) assert_type(f64**i_py, np.float64) @@ -1412,6 +1673,8 @@ assert_type(f64**f64l, np.longdouble) assert_type(f64**c32, np.complex128) assert_type(f64**c64, np.complex128) assert_type(f64**c64l, np.clongdouble) +assert_type(f64**f, np.floating) +assert_type(f64**c, np.complexfloating) assert_type(f64l**b_py, np.longdouble) assert_type(f64l**i_py, np.longdouble) @@ -1433,6 +1696,8 @@ assert_type(f64l**f64l, np.longdouble) assert_type(f64l**c32, np.clongdouble) assert_type(f64l**c64, np.clongdouble) assert_type(f64l**c64l, np.clongdouble) +assert_type(f64l**f, np.longdouble) +assert_type(f64l**c, np.clongdouble) assert_type(c32**b_py, np.complex64) assert_type(c32**i_py, np.complex64) @@ -1454,6 +1719,8 @@ assert_type(c32**f64l, np.clongdouble) assert_type(c32**c32, np.complex64) assert_type(c32**c64, np.complex128) assert_type(c32**c64l, np.clongdouble) +assert_type(c32**f, np.complexfloating) +assert_type(c32**c, np.complexfloating) assert_type(c64**b_py, np.complex128) assert_type(c64**i_py, np.complex128) @@ -1475,6 +1742,8 @@ assert_type(c64**f64l, np.clongdouble) assert_type(c64**c32, np.complex128) assert_type(c64**c64, np.complex128) assert_type(c64**c64l, np.clongdouble) +assert_type(c64**f, np.complexfloating) +assert_type(c64**c, np.complexfloating) assert_type(c64l**b_py, np.clongdouble) assert_type(c64l**i_py, np.clongdouble) @@ -1496,6 +1765,54 @@ assert_type(c64l**f64l, np.clongdouble) assert_type(c64l**c32, np.clongdouble) assert_type(c64l**c64, np.clongdouble) assert_type(c64l**c64l, np.clongdouble) +assert_type(c64l**f, np.clongdouble) +assert_type(c64l**c, np.clongdouble) + +assert_type(f**b_py, np.floating) +assert_type(f**i_py, np.floating) +assert_type(f**f_py, np.floating) +assert_type(f**c_py, np.complexfloating) +assert_type(f**b1, np.floating) +assert_type(f**u8, np.floating) +assert_type(f**u16, np.floating) +assert_type(f**u32, np.floating) +assert_type(f**u64, np.floating) +assert_type(f**i8, np.floating) +assert_type(f**i16, np.floating) +assert_type(f**i32, np.floating) +assert_type(f**i64, np.floating) +assert_type(f**f16, np.floating) +assert_type(f**f32, np.floating) +assert_type(f**f64, np.floating) +assert_type(f**f64l, np.longdouble) +assert_type(f**c32, np.complexfloating) +assert_type(f**c64, np.complexfloating) +assert_type(f**c64l, np.clongdouble) +assert_type(f**f, np.floating) +assert_type(f**c, np.complexfloating) + +assert_type(c**b_py, np.complexfloating) +assert_type(c**i_py, np.complexfloating) +assert_type(c**f_py, np.complexfloating) +assert_type(c**c_py, np.complexfloating) +assert_type(c**b1, np.complexfloating) +assert_type(c**u8, np.complexfloating) +assert_type(c**u16, np.complexfloating) +assert_type(c**u32, np.complexfloating) +assert_type(c**u64, np.complexfloating) +assert_type(c**i8, np.complexfloating) +assert_type(c**i16, np.complexfloating) +assert_type(c**i32, np.complexfloating) +assert_type(c**i64, np.complexfloating) +assert_type(c**f16, np.complexfloating) +assert_type(c**f32, np.complexfloating) +assert_type(c**f64, np.complexfloating) +assert_type(c**f64l, np.clongdouble) +assert_type(c**c32, np.complexfloating) +assert_type(c**c64, np.complexfloating) +assert_type(c**c64l, np.clongdouble) +assert_type(c**f, np.complexfloating) +assert_type(c**c, np.complexfloating) ### # __[r]truediv__ @@ -1520,6 +1837,8 @@ assert_type(b1 / f64l, np.longdouble) assert_type(b1 / c32, np.complex64) assert_type(b1 / c64, np.complex128) assert_type(b1 / c64l, np.clongdouble) +assert_type(b1 / f, np.floating) +assert_type(b1 / c, np.complexfloating) assert_type(u8 / b_py, np.float64) assert_type(u8 / i_py, np.float64) @@ -1541,6 +1860,8 @@ assert_type(u8 / f64l, np.longdouble) assert_type(u8 / c32, np.complex64) assert_type(u8 / c64, np.complex128) assert_type(u8 / c64l, np.clongdouble) +assert_type(u8 / f, np.floating) +assert_type(u8 / c, np.complexfloating) assert_type(u16 / b_py, np.float64) assert_type(u16 / i_py, np.float64) @@ -1562,6 +1883,8 @@ assert_type(u16 / f64l, np.longdouble) assert_type(u16 / c32, np.complex64) assert_type(u16 / c64, np.complex128) assert_type(u16 / c64l, np.clongdouble) +assert_type(u16 / f, np.floating) +assert_type(u16 / c, np.complexfloating) assert_type(u32 / b_py, np.float64) assert_type(u32 / i_py, np.float64) @@ -1583,6 +1906,8 @@ assert_type(u32 / f64l, np.longdouble) assert_type(u32 / c32, np.complex128) assert_type(u32 / c64, np.complex128) assert_type(u32 / c64l, np.clongdouble) +assert_type(u32 / f, np.floating) +assert_type(u32 / c, np.complexfloating) assert_type(u64 / b_py, np.float64) assert_type(u64 / i_py, np.float64) @@ -1604,6 +1929,8 @@ assert_type(u64 / f64l, np.longdouble) assert_type(u64 / c32, np.complex128) assert_type(u64 / c64, np.complex128) assert_type(u64 / c64l, np.clongdouble) +assert_type(u64 / f, np.floating) +assert_type(u64 / c, np.complexfloating) assert_type(i8 / b_py, np.float64) assert_type(i8 / i_py, np.float64) @@ -1625,6 +1952,8 @@ assert_type(i8 / f64l, np.longdouble) assert_type(i8 / c32, np.complex64) assert_type(i8 / c64, np.complex128) assert_type(i8 / c64l, np.clongdouble) +assert_type(i8 / f, np.floating) +assert_type(i8 / c, np.complexfloating) assert_type(i16 / b_py, np.float64) assert_type(i16 / i_py, np.float64) @@ -1646,6 +1975,8 @@ assert_type(i16 / f64l, np.longdouble) assert_type(i16 / c32, np.complex64) assert_type(i16 / c64, np.complex128) assert_type(i16 / c64l, np.clongdouble) +assert_type(i16 / f, np.floating) +assert_type(i16 / c, np.complexfloating) assert_type(i32 / b_py, np.float64) assert_type(i32 / i_py, np.float64) @@ -1667,6 +1998,8 @@ assert_type(i32 / f64l, np.longdouble) assert_type(i32 / c32, np.complex128) assert_type(i32 / c64, np.complex128) assert_type(i32 / c64l, np.clongdouble) +assert_type(i32 / f, np.floating) +assert_type(i32 / c, np.complexfloating) assert_type(i64 / b_py, np.float64) assert_type(i64 / i_py, np.float64) @@ -1688,6 +2021,8 @@ assert_type(i64 / f64l, np.longdouble) assert_type(i64 / c32, np.complex128) assert_type(i64 / c64, np.complex128) assert_type(i64 / c64l, np.clongdouble) +assert_type(i64 / f, np.floating) +assert_type(i64 / c, np.complexfloating) assert_type(f16 / b_py, np.float16) assert_type(f16 / i_py, np.float16) @@ -1709,6 +2044,8 @@ assert_type(f16 / f64l, np.longdouble) assert_type(f16 / c32, np.complex64) assert_type(f16 / c64, np.complex128) assert_type(f16 / c64l, np.clongdouble) +assert_type(f16 / f, np.floating) +assert_type(f16 / c, np.complexfloating) assert_type(f32 / b_py, np.float32) assert_type(f32 / i_py, np.float32) @@ -1730,6 +2067,8 @@ assert_type(f32 / f64l, np.longdouble) assert_type(f32 / c32, np.complex64) assert_type(f32 / c64, np.complex128) assert_type(f32 / c64l, np.clongdouble) +assert_type(f32 / f, np.floating) +assert_type(f32 / c, np.complexfloating) assert_type(f64 / b_py, np.float64) assert_type(f64 / i_py, np.float64) @@ -1751,6 +2090,8 @@ assert_type(f64 / f64l, np.longdouble) assert_type(f64 / c32, np.complex128) assert_type(f64 / c64, np.complex128) assert_type(f64 / c64l, np.clongdouble) +assert_type(f64 / f, np.floating) +assert_type(f64 / c, np.complexfloating) assert_type(f64l / b_py, np.longdouble) assert_type(f64l / i_py, np.longdouble) @@ -1772,6 +2113,8 @@ assert_type(f64l / f64l, np.longdouble) assert_type(f64l / c32, np.clongdouble) assert_type(f64l / c64, np.clongdouble) assert_type(f64l / c64l, np.clongdouble) +assert_type(f64l / f, np.longdouble) +assert_type(f64l / c, np.clongdouble) assert_type(c32 / b_py, np.complex64) assert_type(c32 / i_py, np.complex64) @@ -1793,6 +2136,8 @@ assert_type(c32 / f64l, np.clongdouble) assert_type(c32 / c32, np.complex64) assert_type(c32 / c64, np.complex128) assert_type(c32 / c64l, np.clongdouble) +assert_type(c32 / f, np.complexfloating) +assert_type(c32 / c, np.complexfloating) assert_type(c64 / b_py, np.complex128) assert_type(c64 / i_py, np.complex128) @@ -1814,6 +2159,8 @@ assert_type(c64 / f64l, np.clongdouble) assert_type(c64 / c32, np.complex128) assert_type(c64 / c64, np.complex128) assert_type(c64 / c64l, np.clongdouble) +assert_type(c64 / f, np.complexfloating) +assert_type(c64 / c, np.complexfloating) assert_type(c64l / b_py, np.clongdouble) assert_type(c64l / i_py, np.clongdouble) @@ -1835,6 +2182,8 @@ assert_type(c64l / f64l, np.clongdouble) assert_type(c64l / c32, np.clongdouble) assert_type(c64l / c64, np.clongdouble) assert_type(c64l / c64l, np.clongdouble) +assert_type(c64l / f, np.clongdouble) +assert_type(c64l / c, np.clongdouble) assert_type(m64 / i_py, np.timedelta64) assert_type(m64 / f_py, np.timedelta64) @@ -1851,6 +2200,53 @@ assert_type(m64 / f32, np.timedelta64) assert_type(m64 / f64, np.timedelta64) assert_type(m64 / f64l, np.timedelta64) assert_type(m64 / m64, np.float64) +assert_type(m64 / f, np.timedelta64) + +assert_type(f / b_py, np.floating) +assert_type(f / i_py, np.floating) +assert_type(f / f_py, np.floating) +assert_type(f / c_py, np.complexfloating) +assert_type(f / b1, np.floating) +assert_type(f / u8, np.floating) +assert_type(f / u16, np.floating) +assert_type(f / u32, np.floating) +assert_type(f / u64, np.floating) +assert_type(f / i8, np.floating) +assert_type(f / i16, np.floating) +assert_type(f / i32, np.floating) +assert_type(f / i64, np.floating) +assert_type(f / f16, np.floating) +assert_type(f / f32, np.floating) +assert_type(f / f64, np.floating) +assert_type(f / f64l, np.longdouble) +assert_type(f / c32, np.complexfloating) +assert_type(f / c64, np.complexfloating) +assert_type(f / c64l, np.clongdouble) +assert_type(f / f, np.floating) +assert_type(f / c, np.complexfloating) + +assert_type(c / b_py, np.complexfloating) +assert_type(c / i_py, np.complexfloating) +assert_type(c / f_py, np.complexfloating) +assert_type(c / c_py, np.complexfloating) +assert_type(c / b1, np.complexfloating) +assert_type(c / u8, np.complexfloating) +assert_type(c / u16, np.complexfloating) +assert_type(c / u32, np.complexfloating) +assert_type(c / u64, np.complexfloating) +assert_type(c / i8, np.complexfloating) +assert_type(c / i16, np.complexfloating) +assert_type(c / i32, np.complexfloating) +assert_type(c / i64, np.complexfloating) +assert_type(c / f16, np.complexfloating) +assert_type(c / f32, np.complexfloating) +assert_type(c / f64, np.complexfloating) +assert_type(c / f64l, np.clongdouble) +assert_type(c / c32, np.complexfloating) +assert_type(c / c64, np.complexfloating) +assert_type(c / c64l, np.clongdouble) +assert_type(c / f, np.complexfloating) +assert_type(c / c, np.complexfloating) ### # __[r]floordiv__ @@ -1875,6 +2271,8 @@ assert_type(b1 // f64l, np.longdouble) b1 // c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] b1 // c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] b1 // c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(b1 // f, np.floating) +b1 // c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u8 // b_py, np.uint8) assert_type(u8 // i_py, np.uint8) @@ -1896,6 +2294,8 @@ assert_type(u8 // f64l, np.longdouble) u8 // c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u8 // c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u8 // c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(u8 // f, np.floating) +u8 // c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u16 // b_py, np.uint16) assert_type(u16 // i_py, np.uint16) @@ -1917,6 +2317,8 @@ assert_type(u16 // f64l, np.longdouble) u16 // c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u16 // c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u16 // c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(u16 // f, np.floating) +u16 // c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u32 // b_py, np.uint32) assert_type(u32 // i_py, np.uint32) @@ -1938,6 +2340,8 @@ assert_type(u32 // f64l, np.longdouble) u32 // c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u32 // c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u32 // c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(u32 // f, np.floating) +u32 // c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u64 // b_py, np.uint64) assert_type(u64 // i_py, np.uint64) @@ -1959,6 +2363,8 @@ assert_type(u64 // f64l, np.longdouble) u64 // c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u64 // c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u64 // c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(u64 // f, np.floating) +u64 // c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i8 // b_py, np.int8) assert_type(i8 // i_py, np.int8) @@ -1980,6 +2386,8 @@ assert_type(i8 // f64l, np.longdouble) i8 // c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i8 // c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i8 // c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(i8 // f, np.floating) +i8 // c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i16 // b_py, np.int16) assert_type(i16 // i_py, np.int16) @@ -2001,6 +2409,8 @@ assert_type(i16 // f64l, np.longdouble) i16 // c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i16 // c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i16 // c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(i16 // f, np.floating) +i16 // c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i32 // b_py, np.int32) assert_type(i32 // i_py, np.int32) @@ -2022,6 +2432,8 @@ assert_type(i32 // f64l, np.longdouble) i32 // c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i32 // c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i32 // c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(i32 // f, np.floating) +i32 // c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i64 // b_py, np.int64) assert_type(i64 // i_py, np.int64) @@ -2043,6 +2455,8 @@ assert_type(i64 // f64l, np.longdouble) i64 // c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i64 // c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i64 // c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(i64 // f, np.floating) +i64 // c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(f16 // b_py, np.float16) assert_type(f16 // i_py, np.float16) @@ -2064,6 +2478,8 @@ assert_type(f16 // f64l, np.longdouble) f16 // c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 // c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 // c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(f16 // f, np.floating) +f16 // c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(f32 // b_py, np.float32) assert_type(f32 // i_py, np.float32) @@ -2085,6 +2501,8 @@ assert_type(f32 // f64l, np.longdouble) f32 // c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 // c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 // c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(f32 // f, np.floating) +f32 // c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(f64 // b_py, np.float64) assert_type(f64 // i_py, np.float64) @@ -2106,6 +2524,8 @@ assert_type(f64 // f64l, np.longdouble) f64 // c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 // c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 // c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(f64 // f, np.floating) +f64 // c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(f64l // b_py, np.longdouble) assert_type(f64l // i_py, np.longdouble) @@ -2127,6 +2547,8 @@ assert_type(f64l // f64l, np.longdouble) f64l // c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l // c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l // c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(f64l // f, np.longdouble) +f64l // c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 // b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 // i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -2148,6 +2570,8 @@ c32 // f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 // c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 // c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 // c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c32 // f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c32 // c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 // b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 // i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -2169,6 +2593,8 @@ c64 // f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 // c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 // c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 // c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64 // f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64 // c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l // b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l // i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -2190,6 +2616,8 @@ c64l // f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l // c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l // c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l // c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64l // f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64l // c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(m64 // i_py, np.timedelta64) assert_type(m64 // f_py, np.timedelta64) @@ -2206,6 +2634,53 @@ assert_type(m64 // f32, np.timedelta64) assert_type(m64 // f64, np.timedelta64) assert_type(m64 // f64l, np.timedelta64) assert_type(m64 // m64, np.int64) +assert_type(m64 // f, np.timedelta64) + +assert_type(f // b_py, np.floating) +assert_type(f // i_py, np.floating) +assert_type(f // f_py, np.floating) +f // c_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(f // b1, np.floating) +assert_type(f // u8, np.floating) +assert_type(f // u16, np.floating) +assert_type(f // u32, np.floating) +assert_type(f // u64, np.floating) +assert_type(f // i8, np.floating) +assert_type(f // i16, np.floating) +assert_type(f // i32, np.floating) +assert_type(f // i64, np.floating) +assert_type(f // f16, np.floating) +assert_type(f // f32, np.floating) +assert_type(f // f64, np.floating) +assert_type(f // f64l, np.longdouble) +f // c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f // c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f // c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(f // f, np.floating) +f // c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] + +c // b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c // i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c // f_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c // c_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c // b1 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c // u8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c // u16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c // u32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c // u64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c // i8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c // i16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c // i32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c // i64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c // f16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c // f32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c // f64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c // f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c // c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c // c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c // c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c // f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c // c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] ### # __[r]mod__ @@ -2230,6 +2705,8 @@ assert_type(b1 % f64l, np.longdouble) b1 % c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] b1 % c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] b1 % c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(b1 % f, np.floating) +b1 % c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u8 % b_py, np.uint8) assert_type(u8 % i_py, np.uint8) @@ -2251,6 +2728,8 @@ assert_type(u8 % f64l, np.longdouble) u8 % c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u8 % c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u8 % c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(u8 % f, np.floating) +u8 % c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u16 % b_py, np.uint16) assert_type(u16 % i_py, np.uint16) @@ -2272,6 +2751,8 @@ assert_type(u16 % f64l, np.longdouble) u16 % c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u16 % c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u16 % c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(u16 % f, np.floating) +u16 % c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u32 % b_py, np.uint32) assert_type(u32 % i_py, np.uint32) @@ -2293,6 +2774,8 @@ assert_type(u32 % f64l, np.longdouble) u32 % c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u32 % c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u32 % c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(u32 % f, np.floating) +u32 % c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u64 % b_py, np.uint64) assert_type(u64 % i_py, np.uint64) @@ -2314,6 +2797,8 @@ assert_type(u64 % f64l, np.longdouble) u64 % c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u64 % c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u64 % c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(u64 % f, np.floating) +u64 % c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i8 % b_py, np.int8) assert_type(i8 % i_py, np.int8) @@ -2335,6 +2820,8 @@ assert_type(i8 % f64l, np.longdouble) i8 % c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i8 % c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i8 % c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(i8 % f, np.floating) +i8 % c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i16 % b_py, np.int16) assert_type(i16 % i_py, np.int16) @@ -2356,6 +2843,8 @@ assert_type(i16 % f64l, np.longdouble) i16 % c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i16 % c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i16 % c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(i16 % f, np.floating) +i16 % c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i32 % b_py, np.int32) assert_type(i32 % i_py, np.int32) @@ -2377,6 +2866,8 @@ assert_type(i32 % f64l, np.longdouble) i32 % c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i32 % c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i32 % c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(i32 % f, np.floating) +i32 % c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i64 % b_py, np.int64) assert_type(i64 % i_py, np.int64) @@ -2398,6 +2889,8 @@ assert_type(i64 % f64l, np.longdouble) i64 % c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i64 % c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i64 % c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(i64 % f, np.floating) +i64 % c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(f16 % b_py, np.float16) assert_type(f16 % i_py, np.float16) @@ -2419,6 +2912,8 @@ assert_type(f16 % f64l, np.longdouble) f16 % c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 % c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 % c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(f16 % f, np.floating) +f16 % c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(f32 % b_py, np.float32) assert_type(f32 % i_py, np.float32) @@ -2440,6 +2935,8 @@ assert_type(f32 % f64l, np.longdouble) f32 % c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 % c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 % c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(f32 % f, np.floating) +f32 % c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(f64 % b_py, np.float64) assert_type(f64 % i_py, np.float64) @@ -2461,6 +2958,8 @@ assert_type(f64 % f64l, np.longdouble) f64 % c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 % c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 % c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(f64 % f, np.floating) +f64 % c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(f64l % b_py, np.longdouble) assert_type(f64l % i_py, np.longdouble) @@ -2482,6 +2981,8 @@ assert_type(f64l % f64l, np.longdouble) f64l % c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l % c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l % c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(f64l % f, np.longdouble) +f64l % c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 % b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 % i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -2503,6 +3004,8 @@ c32 % f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 % c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 % c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 % c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c32 % f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c32 % c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 % b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 % i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -2524,6 +3027,8 @@ c64 % f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 % c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 % c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 % c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64 % f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64 % c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l % b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l % i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -2545,9 +3050,57 @@ c64l % f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l % c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l % c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l % c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64l % f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64l % c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(m64 % m64, np.timedelta64) +assert_type(f % b_py, np.floating) +assert_type(f % i_py, np.floating) +assert_type(f % f_py, np.floating) +f % c_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(f % b1, np.floating) +assert_type(f % u8, np.floating) +assert_type(f % u16, np.floating) +assert_type(f % u32, np.floating) +assert_type(f % u64, np.floating) +assert_type(f % i8, np.floating) +assert_type(f % i16, np.floating) +assert_type(f % i32, np.floating) +assert_type(f % i64, np.floating) +assert_type(f % f16, np.floating) +assert_type(f % f32, np.floating) +assert_type(f % f64, np.floating) +assert_type(f % f64l, np.longdouble) +f % c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f % c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f % c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +assert_type(f % f, np.floating) +f % c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] + +c % b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c % i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c % f_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c % c_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c % b1 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c % u8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c % u16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c % u32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c % u64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c % i8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c % i16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c % i32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c % i64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c % f16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c % f32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c % f64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c % f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c % c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c % c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c % c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c % f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c % c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] + ### # __[r]lshift__ @@ -2571,6 +3124,8 @@ b1 << f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] b1 << c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] b1 << c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] b1 << c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +b1 << f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +b1 << c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u8 << b_py, np.uint8) assert_type(u8 << i_py, np.uint8) @@ -2592,6 +3147,8 @@ u8 << f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u8 << c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u8 << c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u8 << c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u8 << f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u8 << c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u16 << b_py, np.uint16) assert_type(u16 << i_py, np.uint16) @@ -2613,6 +3170,8 @@ u16 << f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u16 << c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u16 << c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u16 << c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u16 << f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u16 << c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u32 << b_py, np.uint32) assert_type(u32 << i_py, np.uint32) @@ -2634,6 +3193,8 @@ u32 << f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u32 << c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u32 << c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u32 << c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u32 << f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u32 << c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u64 << b_py, np.uint64) assert_type(u64 << i_py, np.uint64) @@ -2655,6 +3216,8 @@ u64 << f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u64 << c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u64 << c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u64 << c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u64 << f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u64 << c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i8 << b_py, np.int8) assert_type(i8 << i_py, np.int8) @@ -2676,6 +3239,8 @@ i8 << f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i8 << c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i8 << c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i8 << c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i8 << f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i8 << c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i16 << b_py, np.int16) assert_type(i16 << i_py, np.int16) @@ -2697,6 +3262,8 @@ i16 << f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i16 << c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i16 << c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i16 << c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i16 << f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i16 << c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i32 << b_py, np.int32) assert_type(i32 << i_py, np.int32) @@ -2718,6 +3285,8 @@ i32 << f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i32 << c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i32 << c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i32 << c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i32 << f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i32 << c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i64 << b_py, np.int64) assert_type(i64 << i_py, np.int64) @@ -2739,6 +3308,8 @@ i64 << f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i64 << c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i64 << c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i64 << c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i64 << f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i64 << c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 << b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 << i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -2760,6 +3331,8 @@ f16 << f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 << c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 << c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 << c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f16 << f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f16 << c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 << b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 << i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -2781,6 +3354,8 @@ f32 << f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 << c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 << c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 << c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f32 << f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f32 << c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 << b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 << i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -2802,6 +3377,8 @@ f64 << f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 << c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 << c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 << c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f64 << f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f64 << c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l << b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l << i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -2823,6 +3400,8 @@ f64l << f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l << c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l << c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l << c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f64l << f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f64l << c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 << b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 << i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -2844,6 +3423,8 @@ c32 << f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 << c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 << c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 << c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c32 << f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c32 << c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 << b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 << i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -2865,6 +3446,8 @@ c64 << f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 << c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 << c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 << c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64 << f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64 << c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l << b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l << i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -2886,6 +3469,54 @@ c64l << f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l << c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l << c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l << c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64l << f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64l << c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] + +f << b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f << i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f << f_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f << c_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f << b1 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f << u8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f << u16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f << u32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f << u64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f << i8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f << i16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f << i32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f << i64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f << f16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f << f32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f << f64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f << f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f << c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f << c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f << c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f << f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f << c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] + +c << b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c << i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c << f_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c << c_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c << b1 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c << u8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c << u16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c << u32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c << u64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c << i8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c << i16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c << i32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c << i64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c << f16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c << f32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c << f64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c << f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c << c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c << c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c << c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c << f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c << c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] ### # __[r]rshift__ @@ -2910,6 +3541,8 @@ b1 >> f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] b1 >> c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] b1 >> c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] b1 >> c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +b1 >> f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +b1 >> c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u8 >> b_py, np.uint8) assert_type(u8 >> i_py, np.uint8) @@ -2931,6 +3564,8 @@ u8 >> f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u8 >> c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u8 >> c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u8 >> c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u8 >> f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u8 >> c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u16 >> b_py, np.uint16) assert_type(u16 >> i_py, np.uint16) @@ -2952,6 +3587,8 @@ u16 >> f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u16 >> c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u16 >> c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u16 >> c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u16 >> f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u16 >> c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u32 >> b_py, np.uint32) assert_type(u32 >> i_py, np.uint32) @@ -2973,6 +3610,8 @@ u32 >> f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u32 >> c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u32 >> c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u32 >> c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u32 >> f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u32 >> c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u64 >> b_py, np.uint64) assert_type(u64 >> i_py, np.uint64) @@ -2994,6 +3633,8 @@ u64 >> f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u64 >> c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u64 >> c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u64 >> c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u64 >> f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u64 >> c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i8 >> b_py, np.int8) assert_type(i8 >> i_py, np.int8) @@ -3015,6 +3656,8 @@ i8 >> f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i8 >> c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i8 >> c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i8 >> c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i8 >> f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i8 >> c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i16 >> b_py, np.int16) assert_type(i16 >> i_py, np.int16) @@ -3036,6 +3679,8 @@ i16 >> f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i16 >> c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i16 >> c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i16 >> c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i16 >> f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i16 >> c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i32 >> b_py, np.int32) assert_type(i32 >> i_py, np.int32) @@ -3057,6 +3702,8 @@ i32 >> f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i32 >> c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i32 >> c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i32 >> c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i32 >> f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i32 >> c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i64 >> b_py, np.int64) assert_type(i64 >> i_py, np.int64) @@ -3078,6 +3725,8 @@ i64 >> f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i64 >> c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i64 >> c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i64 >> c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i64 >> f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i64 >> c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 >> b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 >> i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -3099,6 +3748,8 @@ f16 >> f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 >> c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 >> c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 >> c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f16 >> f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f16 >> c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 >> b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 >> i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -3120,6 +3771,8 @@ f32 >> f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 >> c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 >> c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 >> c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f32 >> f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f32 >> c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 >> b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 >> i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -3141,6 +3794,8 @@ f64 >> f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 >> c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 >> c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 >> c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f64 >> f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f64 >> c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l >> b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l >> i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -3162,6 +3817,8 @@ f64l >> f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l >> c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l >> c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l >> c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f64l >> f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f64l >> c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 >> b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 >> i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -3183,6 +3840,8 @@ c32 >> f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 >> c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 >> c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 >> c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c32 >> f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c32 >> c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 >> b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 >> i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -3204,6 +3863,8 @@ c64 >> f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 >> c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 >> c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 >> c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64 >> f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64 >> c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l >> b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l >> i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -3225,6 +3886,54 @@ c64l >> f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l >> c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l >> c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l >> c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64l >> f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64l >> c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] + +f >> b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f >> i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f >> f_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f >> c_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f >> b1 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f >> u8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f >> u16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f >> u32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f >> u64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f >> i8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f >> i16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f >> i32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f >> i64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f >> f16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f >> f32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f >> f64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f >> f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f >> c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f >> c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f >> c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f >> f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f >> c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] + +c >> b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c >> i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c >> f_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c >> c_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c >> b1 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c >> u8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c >> u16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c >> u32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c >> u64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c >> i8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c >> i16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c >> i32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c >> i64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c >> f16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c >> f32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c >> f64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c >> f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c >> c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c >> c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c >> c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c >> f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c >> c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] ### # __[r]and__ @@ -3249,6 +3958,8 @@ b1 & f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] b1 & c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] b1 & c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] b1 & c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +b1 & f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +b1 & c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u8 & b_py, np.uint8) assert_type(u8 & i_py, np.uint8) @@ -3270,6 +3981,8 @@ u8 & f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u8 & c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u8 & c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u8 & c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u8 & f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u8 & c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u16 & b_py, np.uint16) assert_type(u16 & i_py, np.uint16) @@ -3291,6 +4004,8 @@ u16 & f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u16 & c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u16 & c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u16 & c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u16 & f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u16 & c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u32 & b_py, np.uint32) assert_type(u32 & i_py, np.uint32) @@ -3312,6 +4027,8 @@ u32 & f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u32 & c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u32 & c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u32 & c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u32 & f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u32 & c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u64 & b_py, np.uint64) assert_type(u64 & i_py, np.uint64) @@ -3333,6 +4050,8 @@ u64 & f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u64 & c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u64 & c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u64 & c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u64 & f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u64 & c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i8 & b_py, np.int8) assert_type(i8 & i_py, np.int8) @@ -3354,6 +4073,8 @@ i8 & f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i8 & c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i8 & c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i8 & c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i8 & f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i8 & c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i16 & b_py, np.int16) assert_type(i16 & i_py, np.int16) @@ -3375,6 +4096,8 @@ i16 & f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i16 & c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i16 & c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i16 & c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i16 & f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i16 & c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i32 & b_py, np.int32) assert_type(i32 & i_py, np.int32) @@ -3396,6 +4119,8 @@ i32 & f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i32 & c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i32 & c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i32 & c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i32 & f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i32 & c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i64 & b_py, np.int64) assert_type(i64 & i_py, np.int64) @@ -3417,6 +4142,8 @@ i64 & f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i64 & c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i64 & c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i64 & c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i64 & f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i64 & c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 & b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 & i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -3438,6 +4165,8 @@ f16 & f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 & c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 & c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 & c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f16 & f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f16 & c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 & b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 & i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -3459,6 +4188,8 @@ f32 & f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 & c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 & c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 & c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f32 & f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f32 & c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 & b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 & i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -3480,6 +4211,8 @@ f64 & f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 & c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 & c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 & c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f64 & f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f64 & c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l & b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l & i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -3501,6 +4234,8 @@ f64l & f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l & c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l & c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l & c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f64l & f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f64l & c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 & b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 & i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -3522,6 +4257,8 @@ c32 & f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 & c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 & c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 & c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c32 & f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c32 & c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 & b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 & i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -3543,6 +4280,8 @@ c64 & f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 & c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 & c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 & c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64 & f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64 & c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l & b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l & i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -3564,6 +4303,54 @@ c64l & f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l & c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l & c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l & c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64l & f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64l & c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] + +f & b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f & i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f & f_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f & c_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f & b1 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f & u8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f & u16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f & u32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f & u64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f & i8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f & i16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f & i32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f & i64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f & f16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f & f32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f & f64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f & f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f & c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f & c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f & c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f & f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f & c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] + +c & b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c & i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c & f_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c & c_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c & b1 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c & u8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c & u16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c & u32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c & u64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c & i8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c & i16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c & i32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c & i64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c & f16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c & f32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c & f64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c & f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c & c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c & c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c & c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c & f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c & c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] ### # __[r]xor__ @@ -3588,6 +4375,8 @@ b1 ^ f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] b1 ^ c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] b1 ^ c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] b1 ^ c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +b1 ^ f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +b1 ^ c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u8 ^ b_py, np.uint8) assert_type(u8 ^ i_py, np.uint8) @@ -3609,6 +4398,8 @@ u8 ^ f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u8 ^ c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u8 ^ c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u8 ^ c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u8 ^ f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u8 ^ c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u16 ^ b_py, np.uint16) assert_type(u16 ^ i_py, np.uint16) @@ -3630,6 +4421,8 @@ u16 ^ f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u16 ^ c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u16 ^ c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u16 ^ c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u16 ^ f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u16 ^ c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u32 ^ b_py, np.uint32) assert_type(u32 ^ i_py, np.uint32) @@ -3651,6 +4444,8 @@ u32 ^ f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u32 ^ c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u32 ^ c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u32 ^ c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u32 ^ f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u32 ^ c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u64 ^ b_py, np.uint64) assert_type(u64 ^ i_py, np.uint64) @@ -3672,6 +4467,8 @@ u64 ^ f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u64 ^ c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u64 ^ c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u64 ^ c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u64 ^ f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u64 ^ c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i8 ^ b_py, np.int8) assert_type(i8 ^ i_py, np.int8) @@ -3693,6 +4490,8 @@ i8 ^ f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i8 ^ c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i8 ^ c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i8 ^ c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i8 ^ f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i8 ^ c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i16 ^ b_py, np.int16) assert_type(i16 ^ i_py, np.int16) @@ -3714,6 +4513,8 @@ i16 ^ f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i16 ^ c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i16 ^ c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i16 ^ c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i16 ^ f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i16 ^ c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i32 ^ b_py, np.int32) assert_type(i32 ^ i_py, np.int32) @@ -3735,6 +4536,8 @@ i32 ^ f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i32 ^ c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i32 ^ c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i32 ^ c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i32 ^ f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i32 ^ c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i64 ^ b_py, np.int64) assert_type(i64 ^ i_py, np.int64) @@ -3756,6 +4559,8 @@ i64 ^ f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i64 ^ c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i64 ^ c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i64 ^ c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i64 ^ f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i64 ^ c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 ^ b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 ^ i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -3777,6 +4582,8 @@ f16 ^ f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 ^ c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 ^ c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 ^ c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f16 ^ f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f16 ^ c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 ^ b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 ^ i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -3798,6 +4605,8 @@ f32 ^ f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 ^ c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 ^ c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 ^ c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f32 ^ f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f32 ^ c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 ^ b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 ^ i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -3819,6 +4628,8 @@ f64 ^ f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 ^ c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 ^ c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 ^ c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f64 ^ f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f64 ^ c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l ^ b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l ^ i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -3840,6 +4651,8 @@ f64l ^ f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l ^ c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l ^ c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l ^ c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f64l ^ f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f64l ^ c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 ^ b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 ^ i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -3861,6 +4674,8 @@ c32 ^ f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 ^ c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 ^ c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 ^ c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c32 ^ f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c32 ^ c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 ^ b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 ^ i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -3882,6 +4697,8 @@ c64 ^ f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 ^ c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 ^ c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 ^ c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64 ^ f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64 ^ c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l ^ b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l ^ i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -3903,6 +4720,54 @@ c64l ^ f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l ^ c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l ^ c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l ^ c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64l ^ f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64l ^ c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] + +f ^ b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f ^ i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f ^ f_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f ^ c_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f ^ b1 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f ^ u8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f ^ u16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f ^ u32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f ^ u64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f ^ i8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f ^ i16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f ^ i32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f ^ i64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f ^ f16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f ^ f32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f ^ f64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f ^ f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f ^ c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f ^ c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f ^ c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f ^ f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f ^ c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] + +c ^ b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c ^ i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c ^ f_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c ^ c_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c ^ b1 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c ^ u8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c ^ u16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c ^ u32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c ^ u64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c ^ i8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c ^ i16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c ^ i32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c ^ i64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c ^ f16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c ^ f32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c ^ f64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c ^ f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c ^ c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c ^ c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c ^ c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c ^ f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c ^ c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] ### # __[r]or__ @@ -3927,6 +4792,8 @@ b1 | f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] b1 | c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] b1 | c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] b1 | c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +b1 | f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +b1 | c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u8 | b_py, np.uint8) assert_type(u8 | i_py, np.uint8) @@ -3948,6 +4815,8 @@ u8 | f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u8 | c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u8 | c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u8 | c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u8 | f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u8 | c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u16 | b_py, np.uint16) assert_type(u16 | i_py, np.uint16) @@ -3969,6 +4838,8 @@ u16 | f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u16 | c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u16 | c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u16 | c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u16 | f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u16 | c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u32 | b_py, np.uint32) assert_type(u32 | i_py, np.uint32) @@ -3990,6 +4861,8 @@ u32 | f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u32 | c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u32 | c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u32 | c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u32 | f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u32 | c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(u64 | b_py, np.uint64) assert_type(u64 | i_py, np.uint64) @@ -4011,6 +4884,8 @@ u64 | f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u64 | c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u64 | c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] u64 | c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u64 | f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +u64 | c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i8 | b_py, np.int8) assert_type(i8 | i_py, np.int8) @@ -4032,6 +4907,8 @@ i8 | f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i8 | c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i8 | c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i8 | c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i8 | f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i8 | c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i16 | b_py, np.int16) assert_type(i16 | i_py, np.int16) @@ -4053,6 +4930,8 @@ i16 | f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i16 | c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i16 | c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i16 | c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i16 | f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i16 | c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i32 | b_py, np.int32) assert_type(i32 | i_py, np.int32) @@ -4074,6 +4953,8 @@ i32 | f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i32 | c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i32 | c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i32 | c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i32 | f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i32 | c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] assert_type(i64 | b_py, np.int64) assert_type(i64 | i_py, np.int64) @@ -4095,6 +4976,8 @@ i64 | f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i64 | c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i64 | c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] i64 | c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i64 | f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +i64 | c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 | b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 | i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -4116,6 +4999,8 @@ f16 | f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 | c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 | c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f16 | c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f16 | f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f16 | c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 | b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 | i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -4137,6 +5022,8 @@ f32 | f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 | c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 | c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f32 | c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f32 | f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f32 | c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 | b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 | i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -4158,6 +5045,8 @@ f64 | f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 | c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 | c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64 | c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f64 | f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f64 | c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l | b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l | i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -4179,6 +5068,8 @@ f64l | f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l | c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l | c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] f64l | c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f64l | f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f64l | c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 | b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 | i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -4200,6 +5091,8 @@ c32 | f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 | c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 | c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c32 | c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c32 | f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c32 | c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 | b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 | i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -4221,6 +5114,8 @@ c64 | f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 | c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 | c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64 | c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64 | f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64 | c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l | b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l | i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] @@ -4242,6 +5137,54 @@ c64l | f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l | c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l | c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] c64l | c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64l | f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c64l | c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] + +f | b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f | i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f | f_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f | c_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f | b1 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f | u8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f | u16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f | u32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f | u64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f | i8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f | i16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f | i32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f | i64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f | f16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f | f32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f | f64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f | f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f | c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f | c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f | c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f | f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +f | c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] + +c | b_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c | i_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c | f_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c | c_py # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c | b1 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c | u8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c | u16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c | u32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c | u64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c | i8 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c | i16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c | i32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c | i64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c | f16 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c | f32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c | f64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c | f64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c | c32 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c | c64 # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c | c64l # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c | f # type: ignore[operator] # pyright: ignore[reportOperatorIssue] +c | c # type: ignore[operator] # pyright: ignore[reportOperatorIssue] ### # __[r]lt__ @@ -4267,6 +5210,8 @@ assert_type(b1 < c32, np.bool) assert_type(b1 < c64, np.bool) assert_type(b1 < c64l, np.bool) assert_type(b1 < m64, np.bool) +assert_type(b1 < f, np.bool) +assert_type(b1 < c, np.bool) assert_type(u8 < b_py, np.bool) assert_type(u8 < i_py, np.bool) @@ -4289,6 +5234,8 @@ assert_type(u8 < c32, np.bool) assert_type(u8 < c64, np.bool) assert_type(u8 < c64l, np.bool) assert_type(u8 < m64, np.bool) +assert_type(u8 < f, np.bool) +assert_type(u8 < c, np.bool) assert_type(u16 < b_py, np.bool) assert_type(u16 < i_py, np.bool) @@ -4311,6 +5258,8 @@ assert_type(u16 < c32, np.bool) assert_type(u16 < c64, np.bool) assert_type(u16 < c64l, np.bool) assert_type(u16 < m64, np.bool) +assert_type(u16 < f, np.bool) +assert_type(u16 < c, np.bool) assert_type(u32 < b_py, np.bool) assert_type(u32 < i_py, np.bool) @@ -4333,6 +5282,8 @@ assert_type(u32 < c32, np.bool) assert_type(u32 < c64, np.bool) assert_type(u32 < c64l, np.bool) assert_type(u32 < m64, np.bool) +assert_type(u32 < f, np.bool) +assert_type(u32 < c, np.bool) assert_type(u64 < b_py, np.bool) assert_type(u64 < i_py, np.bool) @@ -4354,6 +5305,8 @@ assert_type(u64 < f64l, np.bool) assert_type(u64 < c32, np.bool) assert_type(u64 < c64, np.bool) assert_type(u64 < c64l, np.bool) +assert_type(u64 < f, np.bool) +assert_type(u64 < c, np.bool) assert_type(i8 < b_py, np.bool) assert_type(i8 < i_py, np.bool) @@ -4376,6 +5329,8 @@ assert_type(i8 < c32, np.bool) assert_type(i8 < c64, np.bool) assert_type(i8 < c64l, np.bool) assert_type(i8 < m64, np.bool) +assert_type(i8 < f, np.bool) +assert_type(i8 < c, np.bool) assert_type(i16 < b_py, np.bool) assert_type(i16 < i_py, np.bool) @@ -4398,6 +5353,8 @@ assert_type(i16 < c32, np.bool) assert_type(i16 < c64, np.bool) assert_type(i16 < c64l, np.bool) assert_type(i16 < m64, np.bool) +assert_type(i16 < f, np.bool) +assert_type(i16 < c, np.bool) assert_type(i32 < b_py, np.bool) assert_type(i32 < i_py, np.bool) @@ -4420,6 +5377,8 @@ assert_type(i32 < c32, np.bool) assert_type(i32 < c64, np.bool) assert_type(i32 < c64l, np.bool) assert_type(i32 < m64, np.bool) +assert_type(i32 < f, np.bool) +assert_type(i32 < c, np.bool) assert_type(i64 < b_py, np.bool) assert_type(i64 < i_py, np.bool) @@ -4442,6 +5401,8 @@ assert_type(i64 < c32, np.bool) assert_type(i64 < c64, np.bool) assert_type(i64 < c64l, np.bool) assert_type(i64 < m64, np.bool) +assert_type(i64 < f, np.bool) +assert_type(i64 < c, np.bool) assert_type(f16 < b_py, np.bool) assert_type(f16 < i_py, np.bool) @@ -4463,6 +5424,8 @@ assert_type(f16 < f64l, np.bool) assert_type(f16 < c32, np.bool) assert_type(f16 < c64, np.bool) assert_type(f16 < c64l, np.bool) +assert_type(f16 < f, np.bool) +assert_type(f16 < c, np.bool) assert_type(f32 < b_py, np.bool) assert_type(f32 < i_py, np.bool) @@ -4484,6 +5447,8 @@ assert_type(f32 < f64l, np.bool) assert_type(f32 < c32, np.bool) assert_type(f32 < c64, np.bool) assert_type(f32 < c64l, np.bool) +assert_type(f32 < f, np.bool) +assert_type(f32 < c, np.bool) assert_type(f64 < b_py, np.bool) assert_type(f64 < i_py, np.bool) @@ -4505,6 +5470,8 @@ assert_type(f64 < f64l, np.bool) assert_type(f64 < c32, np.bool) assert_type(f64 < c64, np.bool) assert_type(f64 < c64l, np.bool) +assert_type(f64 < f, np.bool) +assert_type(f64 < c, np.bool) assert_type(f64l < b_py, np.bool) assert_type(f64l < i_py, np.bool) @@ -4526,6 +5493,8 @@ assert_type(f64l < f64l, np.bool) assert_type(f64l < c32, np.bool) assert_type(f64l < c64, np.bool) assert_type(f64l < c64l, np.bool) +assert_type(f64l < f, np.bool) +assert_type(f64l < c, np.bool) assert_type(c32 < b_py, np.bool) assert_type(c32 < i_py, np.bool) @@ -4547,6 +5516,8 @@ assert_type(c32 < f64l, np.bool) assert_type(c32 < c32, np.bool) assert_type(c32 < c64, np.bool) assert_type(c32 < c64l, np.bool) +assert_type(c32 < f, np.bool) +assert_type(c32 < c, np.bool) assert_type(c64 < b_py, np.bool) assert_type(c64 < i_py, np.bool) @@ -4568,6 +5539,8 @@ assert_type(c64 < f64l, np.bool) assert_type(c64 < c32, np.bool) assert_type(c64 < c64, np.bool) assert_type(c64 < c64l, np.bool) +assert_type(c64 < f, np.bool) +assert_type(c64 < c, np.bool) assert_type(c64l < b_py, np.bool) assert_type(c64l < i_py, np.bool) @@ -4589,6 +5562,8 @@ assert_type(c64l < f64l, np.bool) assert_type(c64l < c32, np.bool) assert_type(c64l < c64, np.bool) assert_type(c64l < c64l, np.bool) +assert_type(c64l < f, np.bool) +assert_type(c64l < c, np.bool) assert_type(M64 < M64, np.bool) @@ -4604,6 +5579,52 @@ assert_type(m64 < i32, np.bool) assert_type(m64 < i64, np.bool) assert_type(m64 < m64, np.bool) +assert_type(f < b_py, np.bool) +assert_type(f < i_py, np.bool) +assert_type(f < f_py, np.bool) +assert_type(f < c_py, np.bool) +assert_type(f < b1, np.bool) +assert_type(f < u8, np.bool) +assert_type(f < u16, np.bool) +assert_type(f < u32, np.bool) +assert_type(f < u64, np.bool) +assert_type(f < i8, np.bool) +assert_type(f < i16, np.bool) +assert_type(f < i32, np.bool) +assert_type(f < i64, np.bool) +assert_type(f < f16, np.bool) +assert_type(f < f32, np.bool) +assert_type(f < f64, np.bool) +assert_type(f < f64l, np.bool) +assert_type(f < c32, np.bool) +assert_type(f < c64, np.bool) +assert_type(f < c64l, np.bool) +assert_type(f < f, np.bool) +assert_type(f < c, np.bool) + +assert_type(c < b_py, np.bool) +assert_type(c < i_py, np.bool) +assert_type(c < f_py, np.bool) +assert_type(c < c_py, np.bool) +assert_type(c < b1, np.bool) +assert_type(c < u8, np.bool) +assert_type(c < u16, np.bool) +assert_type(c < u32, np.bool) +assert_type(c < u64, np.bool) +assert_type(c < i8, np.bool) +assert_type(c < i16, np.bool) +assert_type(c < i32, np.bool) +assert_type(c < i64, np.bool) +assert_type(c < f16, np.bool) +assert_type(c < f32, np.bool) +assert_type(c < f64, np.bool) +assert_type(c < f64l, np.bool) +assert_type(c < c32, np.bool) +assert_type(c < c64, np.bool) +assert_type(c < c64l, np.bool) +assert_type(c < f, np.bool) +assert_type(c < c, np.bool) + ### # __[r]le__ @@ -4628,6 +5649,8 @@ assert_type(b1 <= c32, np.bool) assert_type(b1 <= c64, np.bool) assert_type(b1 <= c64l, np.bool) assert_type(b1 <= m64, np.bool) +assert_type(b1 <= f, np.bool) +assert_type(b1 <= c, np.bool) assert_type(u8 <= b_py, np.bool) assert_type(u8 <= i_py, np.bool) @@ -4650,6 +5673,8 @@ assert_type(u8 <= c32, np.bool) assert_type(u8 <= c64, np.bool) assert_type(u8 <= c64l, np.bool) assert_type(u8 <= m64, np.bool) +assert_type(u8 <= f, np.bool) +assert_type(u8 <= c, np.bool) assert_type(u16 <= b_py, np.bool) assert_type(u16 <= i_py, np.bool) @@ -4672,6 +5697,8 @@ assert_type(u16 <= c32, np.bool) assert_type(u16 <= c64, np.bool) assert_type(u16 <= c64l, np.bool) assert_type(u16 <= m64, np.bool) +assert_type(u16 <= f, np.bool) +assert_type(u16 <= c, np.bool) assert_type(u32 <= b_py, np.bool) assert_type(u32 <= i_py, np.bool) @@ -4694,6 +5721,8 @@ assert_type(u32 <= c32, np.bool) assert_type(u32 <= c64, np.bool) assert_type(u32 <= c64l, np.bool) assert_type(u32 <= m64, np.bool) +assert_type(u32 <= f, np.bool) +assert_type(u32 <= c, np.bool) assert_type(u64 <= b_py, np.bool) assert_type(u64 <= i_py, np.bool) @@ -4715,6 +5744,8 @@ assert_type(u64 <= f64l, np.bool) assert_type(u64 <= c32, np.bool) assert_type(u64 <= c64, np.bool) assert_type(u64 <= c64l, np.bool) +assert_type(u64 <= f, np.bool) +assert_type(u64 <= c, np.bool) assert_type(i8 <= b_py, np.bool) assert_type(i8 <= i_py, np.bool) @@ -4737,6 +5768,8 @@ assert_type(i8 <= c32, np.bool) assert_type(i8 <= c64, np.bool) assert_type(i8 <= c64l, np.bool) assert_type(i8 <= m64, np.bool) +assert_type(i8 <= f, np.bool) +assert_type(i8 <= c, np.bool) assert_type(i16 <= b_py, np.bool) assert_type(i16 <= i_py, np.bool) @@ -4759,6 +5792,8 @@ assert_type(i16 <= c32, np.bool) assert_type(i16 <= c64, np.bool) assert_type(i16 <= c64l, np.bool) assert_type(i16 <= m64, np.bool) +assert_type(i16 <= f, np.bool) +assert_type(i16 <= c, np.bool) assert_type(i32 <= b_py, np.bool) assert_type(i32 <= i_py, np.bool) @@ -4781,6 +5816,8 @@ assert_type(i32 <= c32, np.bool) assert_type(i32 <= c64, np.bool) assert_type(i32 <= c64l, np.bool) assert_type(i32 <= m64, np.bool) +assert_type(i32 <= f, np.bool) +assert_type(i32 <= c, np.bool) assert_type(i64 <= b_py, np.bool) assert_type(i64 <= i_py, np.bool) @@ -4803,6 +5840,8 @@ assert_type(i64 <= c32, np.bool) assert_type(i64 <= c64, np.bool) assert_type(i64 <= c64l, np.bool) assert_type(i64 <= m64, np.bool) +assert_type(i64 <= f, np.bool) +assert_type(i64 <= c, np.bool) assert_type(f16 <= b_py, np.bool) assert_type(f16 <= i_py, np.bool) @@ -4824,6 +5863,8 @@ assert_type(f16 <= f64l, np.bool) assert_type(f16 <= c32, np.bool) assert_type(f16 <= c64, np.bool) assert_type(f16 <= c64l, np.bool) +assert_type(f16 <= f, np.bool) +assert_type(f16 <= c, np.bool) assert_type(f32 <= b_py, np.bool) assert_type(f32 <= i_py, np.bool) @@ -4845,6 +5886,8 @@ assert_type(f32 <= f64l, np.bool) assert_type(f32 <= c32, np.bool) assert_type(f32 <= c64, np.bool) assert_type(f32 <= c64l, np.bool) +assert_type(f32 <= f, np.bool) +assert_type(f32 <= c, np.bool) assert_type(f64 <= b_py, np.bool) assert_type(f64 <= i_py, np.bool) @@ -4866,6 +5909,8 @@ assert_type(f64 <= f64l, np.bool) assert_type(f64 <= c32, np.bool) assert_type(f64 <= c64, np.bool) assert_type(f64 <= c64l, np.bool) +assert_type(f64 <= f, np.bool) +assert_type(f64 <= c, np.bool) assert_type(f64l <= b_py, np.bool) assert_type(f64l <= i_py, np.bool) @@ -4887,6 +5932,8 @@ assert_type(f64l <= f64l, np.bool) assert_type(f64l <= c32, np.bool) assert_type(f64l <= c64, np.bool) assert_type(f64l <= c64l, np.bool) +assert_type(f64l <= f, np.bool) +assert_type(f64l <= c, np.bool) assert_type(c32 <= b_py, np.bool) assert_type(c32 <= i_py, np.bool) @@ -4908,6 +5955,8 @@ assert_type(c32 <= f64l, np.bool) assert_type(c32 <= c32, np.bool) assert_type(c32 <= c64, np.bool) assert_type(c32 <= c64l, np.bool) +assert_type(c32 <= f, np.bool) +assert_type(c32 <= c, np.bool) assert_type(c64 <= b_py, np.bool) assert_type(c64 <= i_py, np.bool) @@ -4929,6 +5978,8 @@ assert_type(c64 <= f64l, np.bool) assert_type(c64 <= c32, np.bool) assert_type(c64 <= c64, np.bool) assert_type(c64 <= c64l, np.bool) +assert_type(c64 <= f, np.bool) +assert_type(c64 <= c, np.bool) assert_type(c64l <= b_py, np.bool) assert_type(c64l <= i_py, np.bool) @@ -4950,6 +6001,8 @@ assert_type(c64l <= f64l, np.bool) assert_type(c64l <= c32, np.bool) assert_type(c64l <= c64, np.bool) assert_type(c64l <= c64l, np.bool) +assert_type(c64l <= f, np.bool) +assert_type(c64l <= c, np.bool) assert_type(M64 <= M64, np.bool) @@ -4965,6 +6018,52 @@ assert_type(m64 <= i32, np.bool) assert_type(m64 <= i64, np.bool) assert_type(m64 <= m64, np.bool) +assert_type(f <= b_py, np.bool) +assert_type(f <= i_py, np.bool) +assert_type(f <= f_py, np.bool) +assert_type(f <= c_py, np.bool) +assert_type(f <= b1, np.bool) +assert_type(f <= u8, np.bool) +assert_type(f <= u16, np.bool) +assert_type(f <= u32, np.bool) +assert_type(f <= u64, np.bool) +assert_type(f <= i8, np.bool) +assert_type(f <= i16, np.bool) +assert_type(f <= i32, np.bool) +assert_type(f <= i64, np.bool) +assert_type(f <= f16, np.bool) +assert_type(f <= f32, np.bool) +assert_type(f <= f64, np.bool) +assert_type(f <= f64l, np.bool) +assert_type(f <= c32, np.bool) +assert_type(f <= c64, np.bool) +assert_type(f <= c64l, np.bool) +assert_type(f <= f, np.bool) +assert_type(f <= c, np.bool) + +assert_type(c <= b_py, np.bool) +assert_type(c <= i_py, np.bool) +assert_type(c <= f_py, np.bool) +assert_type(c <= c_py, np.bool) +assert_type(c <= b1, np.bool) +assert_type(c <= u8, np.bool) +assert_type(c <= u16, np.bool) +assert_type(c <= u32, np.bool) +assert_type(c <= u64, np.bool) +assert_type(c <= i8, np.bool) +assert_type(c <= i16, np.bool) +assert_type(c <= i32, np.bool) +assert_type(c <= i64, np.bool) +assert_type(c <= f16, np.bool) +assert_type(c <= f32, np.bool) +assert_type(c <= f64, np.bool) +assert_type(c <= f64l, np.bool) +assert_type(c <= c32, np.bool) +assert_type(c <= c64, np.bool) +assert_type(c <= c64l, np.bool) +assert_type(c <= f, np.bool) +assert_type(c <= c, np.bool) + ### # __[r]ge__ @@ -4989,6 +6088,8 @@ assert_type(b1 >= c32, np.bool) assert_type(b1 >= c64, np.bool) assert_type(b1 >= c64l, np.bool) assert_type(b1 >= m64, np.bool) +assert_type(b1 >= f, np.bool) +assert_type(b1 >= c, np.bool) assert_type(u8 >= b_py, np.bool) assert_type(u8 >= i_py, np.bool) @@ -5011,6 +6112,8 @@ assert_type(u8 >= c32, np.bool) assert_type(u8 >= c64, np.bool) assert_type(u8 >= c64l, np.bool) assert_type(u8 >= m64, np.bool) +assert_type(u8 >= f, np.bool) +assert_type(u8 >= c, np.bool) assert_type(u16 >= b_py, np.bool) assert_type(u16 >= i_py, np.bool) @@ -5033,6 +6136,8 @@ assert_type(u16 >= c32, np.bool) assert_type(u16 >= c64, np.bool) assert_type(u16 >= c64l, np.bool) assert_type(u16 >= m64, np.bool) +assert_type(u16 >= f, np.bool) +assert_type(u16 >= c, np.bool) assert_type(u32 >= b_py, np.bool) assert_type(u32 >= i_py, np.bool) @@ -5055,6 +6160,8 @@ assert_type(u32 >= c32, np.bool) assert_type(u32 >= c64, np.bool) assert_type(u32 >= c64l, np.bool) assert_type(u32 >= m64, np.bool) +assert_type(u32 >= f, np.bool) +assert_type(u32 >= c, np.bool) assert_type(u64 >= b_py, np.bool) assert_type(u64 >= i_py, np.bool) @@ -5076,6 +6183,8 @@ assert_type(u64 >= f64l, np.bool) assert_type(u64 >= c32, np.bool) assert_type(u64 >= c64, np.bool) assert_type(u64 >= c64l, np.bool) +assert_type(u64 >= f, np.bool) +assert_type(u64 >= c, np.bool) assert_type(i8 >= b_py, np.bool) assert_type(i8 >= i_py, np.bool) @@ -5098,6 +6207,8 @@ assert_type(i8 >= c32, np.bool) assert_type(i8 >= c64, np.bool) assert_type(i8 >= c64l, np.bool) assert_type(i8 >= m64, np.bool) +assert_type(i8 >= f, np.bool) +assert_type(i8 >= c, np.bool) assert_type(i16 >= b_py, np.bool) assert_type(i16 >= i_py, np.bool) @@ -5120,6 +6231,8 @@ assert_type(i16 >= c32, np.bool) assert_type(i16 >= c64, np.bool) assert_type(i16 >= c64l, np.bool) assert_type(i16 >= m64, np.bool) +assert_type(i16 >= f, np.bool) +assert_type(i16 >= c, np.bool) assert_type(i32 >= b_py, np.bool) assert_type(i32 >= i_py, np.bool) @@ -5142,6 +6255,8 @@ assert_type(i32 >= c32, np.bool) assert_type(i32 >= c64, np.bool) assert_type(i32 >= c64l, np.bool) assert_type(i32 >= m64, np.bool) +assert_type(i32 >= f, np.bool) +assert_type(i32 >= c, np.bool) assert_type(i64 >= b_py, np.bool) assert_type(i64 >= i_py, np.bool) @@ -5164,6 +6279,8 @@ assert_type(i64 >= c32, np.bool) assert_type(i64 >= c64, np.bool) assert_type(i64 >= c64l, np.bool) assert_type(i64 >= m64, np.bool) +assert_type(i64 >= f, np.bool) +assert_type(i64 >= c, np.bool) assert_type(f16 >= b_py, np.bool) assert_type(f16 >= i_py, np.bool) @@ -5185,6 +6302,8 @@ assert_type(f16 >= f64l, np.bool) assert_type(f16 >= c32, np.bool) assert_type(f16 >= c64, np.bool) assert_type(f16 >= c64l, np.bool) +assert_type(f16 >= f, np.bool) +assert_type(f16 >= c, np.bool) assert_type(f32 >= b_py, np.bool) assert_type(f32 >= i_py, np.bool) @@ -5206,6 +6325,8 @@ assert_type(f32 >= f64l, np.bool) assert_type(f32 >= c32, np.bool) assert_type(f32 >= c64, np.bool) assert_type(f32 >= c64l, np.bool) +assert_type(f32 >= f, np.bool) +assert_type(f32 >= c, np.bool) assert_type(f64 >= b_py, np.bool) assert_type(f64 >= i_py, np.bool) @@ -5227,6 +6348,8 @@ assert_type(f64 >= f64l, np.bool) assert_type(f64 >= c32, np.bool) assert_type(f64 >= c64, np.bool) assert_type(f64 >= c64l, np.bool) +assert_type(f64 >= f, np.bool) +assert_type(f64 >= c, np.bool) assert_type(f64l >= b_py, np.bool) assert_type(f64l >= i_py, np.bool) @@ -5248,6 +6371,8 @@ assert_type(f64l >= f64l, np.bool) assert_type(f64l >= c32, np.bool) assert_type(f64l >= c64, np.bool) assert_type(f64l >= c64l, np.bool) +assert_type(f64l >= f, np.bool) +assert_type(f64l >= c, np.bool) assert_type(c32 >= b_py, np.bool) assert_type(c32 >= i_py, np.bool) @@ -5269,6 +6394,8 @@ assert_type(c32 >= f64l, np.bool) assert_type(c32 >= c32, np.bool) assert_type(c32 >= c64, np.bool) assert_type(c32 >= c64l, np.bool) +assert_type(c32 >= f, np.bool) +assert_type(c32 >= c, np.bool) assert_type(c64 >= b_py, np.bool) assert_type(c64 >= i_py, np.bool) @@ -5290,6 +6417,8 @@ assert_type(c64 >= f64l, np.bool) assert_type(c64 >= c32, np.bool) assert_type(c64 >= c64, np.bool) assert_type(c64 >= c64l, np.bool) +assert_type(c64 >= f, np.bool) +assert_type(c64 >= c, np.bool) assert_type(c64l >= b_py, np.bool) assert_type(c64l >= i_py, np.bool) @@ -5311,6 +6440,8 @@ assert_type(c64l >= f64l, np.bool) assert_type(c64l >= c32, np.bool) assert_type(c64l >= c64, np.bool) assert_type(c64l >= c64l, np.bool) +assert_type(c64l >= f, np.bool) +assert_type(c64l >= c, np.bool) assert_type(M64 >= M64, np.bool) @@ -5326,6 +6457,52 @@ assert_type(m64 >= i32, np.bool) assert_type(m64 >= i64, np.bool) assert_type(m64 >= m64, np.bool) +assert_type(f >= b_py, np.bool) +assert_type(f >= i_py, np.bool) +assert_type(f >= f_py, np.bool) +assert_type(f >= c_py, np.bool) +assert_type(f >= b1, np.bool) +assert_type(f >= u8, np.bool) +assert_type(f >= u16, np.bool) +assert_type(f >= u32, np.bool) +assert_type(f >= u64, np.bool) +assert_type(f >= i8, np.bool) +assert_type(f >= i16, np.bool) +assert_type(f >= i32, np.bool) +assert_type(f >= i64, np.bool) +assert_type(f >= f16, np.bool) +assert_type(f >= f32, np.bool) +assert_type(f >= f64, np.bool) +assert_type(f >= f64l, np.bool) +assert_type(f >= c32, np.bool) +assert_type(f >= c64, np.bool) +assert_type(f >= c64l, np.bool) +assert_type(f >= f, np.bool) +assert_type(f >= c, np.bool) + +assert_type(c >= b_py, np.bool) +assert_type(c >= i_py, np.bool) +assert_type(c >= f_py, np.bool) +assert_type(c >= c_py, np.bool) +assert_type(c >= b1, np.bool) +assert_type(c >= u8, np.bool) +assert_type(c >= u16, np.bool) +assert_type(c >= u32, np.bool) +assert_type(c >= u64, np.bool) +assert_type(c >= i8, np.bool) +assert_type(c >= i16, np.bool) +assert_type(c >= i32, np.bool) +assert_type(c >= i64, np.bool) +assert_type(c >= f16, np.bool) +assert_type(c >= f32, np.bool) +assert_type(c >= f64, np.bool) +assert_type(c >= f64l, np.bool) +assert_type(c >= c32, np.bool) +assert_type(c >= c64, np.bool) +assert_type(c >= c64l, np.bool) +assert_type(c >= f, np.bool) +assert_type(c >= c, np.bool) + ### # __[r]gt__ @@ -5350,6 +6527,8 @@ assert_type(b1 > c32, np.bool) assert_type(b1 > c64, np.bool) assert_type(b1 > c64l, np.bool) assert_type(b1 > m64, np.bool) +assert_type(b1 > f, np.bool) +assert_type(b1 > c, np.bool) assert_type(u8 > b_py, np.bool) assert_type(u8 > i_py, np.bool) @@ -5372,6 +6551,8 @@ assert_type(u8 > c32, np.bool) assert_type(u8 > c64, np.bool) assert_type(u8 > c64l, np.bool) assert_type(u8 > m64, np.bool) +assert_type(u8 > f, np.bool) +assert_type(u8 > c, np.bool) assert_type(u16 > b_py, np.bool) assert_type(u16 > i_py, np.bool) @@ -5394,6 +6575,8 @@ assert_type(u16 > c32, np.bool) assert_type(u16 > c64, np.bool) assert_type(u16 > c64l, np.bool) assert_type(u16 > m64, np.bool) +assert_type(u16 > f, np.bool) +assert_type(u16 > c, np.bool) assert_type(u32 > b_py, np.bool) assert_type(u32 > i_py, np.bool) @@ -5416,6 +6599,8 @@ assert_type(u32 > c32, np.bool) assert_type(u32 > c64, np.bool) assert_type(u32 > c64l, np.bool) assert_type(u32 > m64, np.bool) +assert_type(u32 > f, np.bool) +assert_type(u32 > c, np.bool) assert_type(u64 > b_py, np.bool) assert_type(u64 > i_py, np.bool) @@ -5437,6 +6622,8 @@ assert_type(u64 > f64l, np.bool) assert_type(u64 > c32, np.bool) assert_type(u64 > c64, np.bool) assert_type(u64 > c64l, np.bool) +assert_type(u64 > f, np.bool) +assert_type(u64 > c, np.bool) assert_type(i8 > b_py, np.bool) assert_type(i8 > i_py, np.bool) @@ -5459,6 +6646,8 @@ assert_type(i8 > c32, np.bool) assert_type(i8 > c64, np.bool) assert_type(i8 > c64l, np.bool) assert_type(i8 > m64, np.bool) +assert_type(i8 > f, np.bool) +assert_type(i8 > c, np.bool) assert_type(i16 > b_py, np.bool) assert_type(i16 > i_py, np.bool) @@ -5481,6 +6670,8 @@ assert_type(i16 > c32, np.bool) assert_type(i16 > c64, np.bool) assert_type(i16 > c64l, np.bool) assert_type(i16 > m64, np.bool) +assert_type(i16 > f, np.bool) +assert_type(i16 > c, np.bool) assert_type(i32 > b_py, np.bool) assert_type(i32 > i_py, np.bool) @@ -5503,6 +6694,8 @@ assert_type(i32 > c32, np.bool) assert_type(i32 > c64, np.bool) assert_type(i32 > c64l, np.bool) assert_type(i32 > m64, np.bool) +assert_type(i32 > f, np.bool) +assert_type(i32 > c, np.bool) assert_type(i64 > b_py, np.bool) assert_type(i64 > i_py, np.bool) @@ -5525,6 +6718,8 @@ assert_type(i64 > c32, np.bool) assert_type(i64 > c64, np.bool) assert_type(i64 > c64l, np.bool) assert_type(i64 > m64, np.bool) +assert_type(i64 > f, np.bool) +assert_type(i64 > c, np.bool) assert_type(f16 > b_py, np.bool) assert_type(f16 > i_py, np.bool) @@ -5546,6 +6741,8 @@ assert_type(f16 > f64l, np.bool) assert_type(f16 > c32, np.bool) assert_type(f16 > c64, np.bool) assert_type(f16 > c64l, np.bool) +assert_type(f16 > f, np.bool) +assert_type(f16 > c, np.bool) assert_type(f32 > b_py, np.bool) assert_type(f32 > i_py, np.bool) @@ -5567,6 +6764,8 @@ assert_type(f32 > f64l, np.bool) assert_type(f32 > c32, np.bool) assert_type(f32 > c64, np.bool) assert_type(f32 > c64l, np.bool) +assert_type(f32 > f, np.bool) +assert_type(f32 > c, np.bool) assert_type(f64 > b_py, np.bool) assert_type(f64 > i_py, np.bool) @@ -5588,6 +6787,8 @@ assert_type(f64 > f64l, np.bool) assert_type(f64 > c32, np.bool) assert_type(f64 > c64, np.bool) assert_type(f64 > c64l, np.bool) +assert_type(f64 > f, np.bool) +assert_type(f64 > c, np.bool) assert_type(f64l > b_py, np.bool) assert_type(f64l > i_py, np.bool) @@ -5609,6 +6810,8 @@ assert_type(f64l > f64l, np.bool) assert_type(f64l > c32, np.bool) assert_type(f64l > c64, np.bool) assert_type(f64l > c64l, np.bool) +assert_type(f64l > f, np.bool) +assert_type(f64l > c, np.bool) assert_type(c32 > b_py, np.bool) assert_type(c32 > i_py, np.bool) @@ -5630,6 +6833,8 @@ assert_type(c32 > f64l, np.bool) assert_type(c32 > c32, np.bool) assert_type(c32 > c64, np.bool) assert_type(c32 > c64l, np.bool) +assert_type(c32 > f, np.bool) +assert_type(c32 > c, np.bool) assert_type(c64 > b_py, np.bool) assert_type(c64 > i_py, np.bool) @@ -5651,6 +6856,8 @@ assert_type(c64 > f64l, np.bool) assert_type(c64 > c32, np.bool) assert_type(c64 > c64, np.bool) assert_type(c64 > c64l, np.bool) +assert_type(c64 > f, np.bool) +assert_type(c64 > c, np.bool) assert_type(c64l > b_py, np.bool) assert_type(c64l > i_py, np.bool) @@ -5672,6 +6879,8 @@ assert_type(c64l > f64l, np.bool) assert_type(c64l > c32, np.bool) assert_type(c64l > c64, np.bool) assert_type(c64l > c64l, np.bool) +assert_type(c64l > f, np.bool) +assert_type(c64l > c, np.bool) assert_type(M64 > M64, np.bool) @@ -5687,6 +6896,52 @@ assert_type(m64 > i32, np.bool) assert_type(m64 > i64, np.bool) assert_type(m64 > m64, np.bool) +assert_type(f > b_py, np.bool) +assert_type(f > i_py, np.bool) +assert_type(f > f_py, np.bool) +assert_type(f > c_py, np.bool) +assert_type(f > b1, np.bool) +assert_type(f > u8, np.bool) +assert_type(f > u16, np.bool) +assert_type(f > u32, np.bool) +assert_type(f > u64, np.bool) +assert_type(f > i8, np.bool) +assert_type(f > i16, np.bool) +assert_type(f > i32, np.bool) +assert_type(f > i64, np.bool) +assert_type(f > f16, np.bool) +assert_type(f > f32, np.bool) +assert_type(f > f64, np.bool) +assert_type(f > f64l, np.bool) +assert_type(f > c32, np.bool) +assert_type(f > c64, np.bool) +assert_type(f > c64l, np.bool) +assert_type(f > f, np.bool) +assert_type(f > c, np.bool) + +assert_type(c > b_py, np.bool) +assert_type(c > i_py, np.bool) +assert_type(c > f_py, np.bool) +assert_type(c > c_py, np.bool) +assert_type(c > b1, np.bool) +assert_type(c > u8, np.bool) +assert_type(c > u16, np.bool) +assert_type(c > u32, np.bool) +assert_type(c > u64, np.bool) +assert_type(c > i8, np.bool) +assert_type(c > i16, np.bool) +assert_type(c > i32, np.bool) +assert_type(c > i64, np.bool) +assert_type(c > f16, np.bool) +assert_type(c > f32, np.bool) +assert_type(c > f64, np.bool) +assert_type(c > f64l, np.bool) +assert_type(c > c32, np.bool) +assert_type(c > c64, np.bool) +assert_type(c > c64l, np.bool) +assert_type(c > f, np.bool) +assert_type(c > c, np.bool) + ### # __[r]eq__ @@ -6047,3 +7302,45 @@ assert_type(m64 == i16, np.bool) assert_type(m64 == i32, np.bool) assert_type(m64 == i64, np.bool) assert_type(m64 == m64, np.bool) + +assert_type(f == b_py, np.bool) +assert_type(f == i_py, np.bool) +assert_type(f == f_py, np.bool) +assert_type(f == c_py, np.bool) +assert_type(f == b1, np.bool) +assert_type(f == u8, np.bool) +assert_type(f == u16, np.bool) +assert_type(f == u32, np.bool) +assert_type(f == u64, np.bool) +assert_type(f == i8, np.bool) +assert_type(f == i16, np.bool) +assert_type(f == i32, np.bool) +assert_type(f == i64, np.bool) +assert_type(f == f16, np.bool) +assert_type(f == f32, np.bool) +assert_type(f == f64, np.bool) +assert_type(f == f64l, np.bool) +assert_type(f == c32, np.bool) +assert_type(f == c64, np.bool) +assert_type(f == c64l, np.bool) + +assert_type(c == b_py, np.bool) +assert_type(c == i_py, np.bool) +assert_type(c == f_py, np.bool) +assert_type(c == c_py, np.bool) +assert_type(c == b1, np.bool) +assert_type(c == u8, np.bool) +assert_type(c == u16, np.bool) +assert_type(c == u32, np.bool) +assert_type(c == u64, np.bool) +assert_type(c == i8, np.bool) +assert_type(c == i16, np.bool) +assert_type(c == i32, np.bool) +assert_type(c == i64, np.bool) +assert_type(c == f16, np.bool) +assert_type(c == f32, np.bool) +assert_type(c == f64, np.bool) +assert_type(c == f64l, np.bool) +assert_type(c == c32, np.bool) +assert_type(c == c64, np.bool) +assert_type(c == c64l, np.bool) diff --git a/test/static/accept/mod.pyi b/test/static/accept/mod.pyi index cd55f8dd..4120674c 100644 --- a/test/static/accept/mod.pyi +++ b/test/static/accept/mod.pyi @@ -50,7 +50,7 @@ assert_type(m % AR_m, npt.NDArray[np.timedelta64]) # NOTE: `builtins.divmod` cannot be used because of # https://github.com/microsoft/pyright/issues/9896 -assert_type(m.__divmod__(m), tuple[np.int64, np.timedelta64]) +assert_type(divmod(m, m), tuple[np.int64, np.timedelta64]) assert_type(m.__divmod__(m_nat), tuple[np.int64, np.timedelta64[None]]) assert_type(m.__divmod__(m_int0), tuple[np.int64, np.timedelta64[None]]) assert_type(m.__divmod__(m_int), tuple[np.int64, np.timedelta64[int | None]]) @@ -77,14 +77,14 @@ assert_type(b_ % u8, np.uint64) assert_type(b_ % f8, np.float64) assert_type(b_ % AR_b, npt.NDArray[np.int8]) -assert_type(b_.__divmod__(b_), tuple[np.int8, np.int8]) -assert_type(b_.__divmod__(b), tuple[np.int8, np.int8]) -assert_type(b_.__divmod__(i), tuple[np.intp, np.intp]) -assert_type(b_.__divmod__(f), tuple[np.float64, np.float64]) -assert_type(b_.__divmod__(i8), tuple[np.int64, np.int64]) -assert_type(b_.__divmod__(u8), tuple[np.uint64, np.uint64]) -assert_type(b_.__divmod__(f8), tuple[np.float64, np.float64]) -# assert_type(b_.__divmod__(AR_b), tuple[np.float64, np.float64]) +assert_type(divmod(b_, b_), tuple[np.int8, np.int8]) +assert_type(divmod(b_, b), tuple[np.int8, np.int8]) +assert_type(divmod(b_, i), tuple[np.intp, np.intp]) +assert_type(divmod(b_, f), tuple[np.float64, np.float64]) +assert_type(divmod(b_, i8), tuple[np.int64, np.int64]) +assert_type(divmod(b_, u8), tuple[np.uint64, np.uint64]) +assert_type(divmod(b_, f8), tuple[np.float64, np.float64]) +assert_type(divmod(b_, AR_b), tuple[npt.NDArray[np.int8], npt.NDArray[np.int8]]) assert_type(b % b_, np.int8) assert_type(i % b_, np.intp) @@ -95,13 +95,13 @@ assert_type(u8 % b_, np.uint64) assert_type(f8 % b_, np.float64) assert_type(AR_b % b_, npt.NDArray[np.int8]) -assert_type(b_.__rdivmod__(b), tuple[np.int8, np.int8]) -assert_type(b_.__rdivmod__(i), tuple[np.intp, np.intp]) -assert_type(b_.__rdivmod__(f), tuple[np.float64, np.float64]) -assert_type(b_.__rdivmod__(i8), tuple[np.int64, np.int64]) -assert_type(b_.__rdivmod__(u8), tuple[np.uint64, np.uint64]) -assert_type(b_.__rdivmod__(f8), tuple[np.float64, np.float64]) -assert_type(AR_b.__rdivmod__(b_), tuple[npt.NDArray[np.int8], npt.NDArray[np.int8]]) +assert_type(divmod(b_, b), tuple[np.int8, np.int8]) +assert_type(divmod(b_, i), tuple[np.intp, np.intp]) +assert_type(divmod(b_, f), tuple[np.float64, np.float64]) +assert_type(divmod(b_, i8), tuple[np.int64, np.int64]) +assert_type(divmod(b_, u8), tuple[np.uint64, np.uint64]) +assert_type(divmod(b_, f8), tuple[np.float64, np.float64]) +assert_type(divmod(AR_b, b_), tuple[npt.NDArray[np.int8], npt.NDArray[np.int8]]) # int @@ -116,14 +116,14 @@ assert_type(i4 % i4, np.int32) assert_type(i4 % f4, np.float64) assert_type(i8 % AR_b, npt.NDArray[np.int64]) -assert_type(i8.__divmod__(b), tuple[np.int64, np.int64]) -assert_type(i8.__divmod__(i), tuple[np.int64, np.int64]) -assert_type(i8.__divmod__(f), tuple[np.float64, np.float64]) -assert_type(i8.__divmod__(i4), tuple[np.int64, np.int64]) -assert_type(i8.__divmod__(i8), tuple[np.int64, np.int64]) -assert_type(i8.__divmod__(f8), tuple[np.float64, np.float64]) -assert_type(i8.__divmod__(f4), tuple[np.float64, np.float64]) -assert_type(i4.__divmod__(i4), tuple[np.int32, np.int32]) +assert_type(divmod(i8, b), tuple[np.int64, np.int64]) +assert_type(divmod(i8, i), tuple[np.int64, np.int64]) +assert_type(divmod(i8, f), tuple[np.float64, np.float64]) +assert_type(divmod(i8, i4), tuple[np.int64, np.int64]) +assert_type(divmod(i8, i8), tuple[np.int64, np.int64]) +assert_type(divmod(i8, f8), tuple[np.float64, np.float64]) +assert_type(divmod(i8, f4), tuple[np.float64, np.float64]) +assert_type(divmod(i4, i4), tuple[np.int32, np.int32]) assert_type(divmod(i8, AR_b), tuple[npt.NDArray[np.int64], npt.NDArray[np.int64]]) assert_type(b % i8, np.int64) @@ -136,15 +136,15 @@ assert_type(i4 % i4, np.int32) assert_type(f4 % i4, np.float64) assert_type(AR_b % i8, npt.NDArray[np.int64]) -assert_type(i8.__divmod__(b), tuple[np.int64, np.int64]) -assert_type(i8.__divmod__(f), tuple[np.float64, np.float64]) -assert_type(i8.__divmod__(i8), tuple[np.int64, np.int64]) -assert_type(i8.__divmod__(f8), tuple[np.float64, np.float64]) -# assert_type(i8.__divmod__(i4), tuple[np.int32, np.int32]) -assert_type(i4.__divmod__(i8), tuple[np.int64, np.int64]) -assert_type(f4.__divmod__(i8), tuple[np.float64, np.float64]) -assert_type(f4.__divmod__(i4), tuple[np.float64, np.float64]) -assert_type(AR_b.__divmod__(i8), tuple[npt.NDArray[np.int64], npt.NDArray[np.int64]]) +assert_type(divmod(i8, b), tuple[np.int64, np.int64]) +assert_type(divmod(i8, f), tuple[np.float64, np.float64]) +assert_type(divmod(i8, i8), tuple[np.int64, np.int64]) +assert_type(divmod(i8, f8), tuple[np.float64, np.float64]) +assert_type(divmod(i8, i4), tuple[np.int64, np.int64]) +assert_type(divmod(i4, i8), tuple[np.int64, np.int64]) +assert_type(divmod(f4, i8), tuple[np.float64, np.float64]) +assert_type(divmod(f4, i4), tuple[np.float64, np.float64]) +assert_type(divmod(AR_b, i8), tuple[npt.NDArray[np.int64], npt.NDArray[np.int64]]) # float diff --git a/tool/testgen.py b/tool/testgen.py index e6e73753..0a4936e0 100644 --- a/tool/testgen.py +++ b/tool/testgen.py @@ -30,6 +30,9 @@ "i": "signedinteger", "f": "floating", "c": "complexfloating", + "".join(set("ui")): "integer", + "".join(set("fc")): "inexact", + "".join(set("uifc")): "number", } _NUMBERS_CONCRETE: Final = { "u": frozenset({f"{NP}.uint8", f"{NP}.uint16", f"{NP}.uint32", f"{NP}.uint64"}), @@ -82,17 +85,28 @@ def _sctype_expr(dtype: np.dtype | type[complex]) -> str: return f"{NP}.{name}" -def _union(*types: str) -> str: +def __group_types(*types: str) -> tuple[dict[str, list[str]], list[str]]: + # TODO(jorenham): character and flexible numbers: dict[str, list[str]] = {"u": [], "i": [], "f": [], "c": []} other: list[str] = [] - for tp in types: + for tp in dict.fromkeys(types): kind: str = np.dtype(tp.removeprefix(f"{NP}.")).kind numbers.get(kind, other).append(tp) + return {kind: tps for kind, tps in numbers.items() if tps}, other + + +def _union(*types: str) -> str: + # union the types, and join unions if they contain each of the concrete subtypes + numbers, other = __group_types(*types) + kind_expr: dict[str, str] = {} combined: list[str] = [] for kind, base in _NUMBERS_ABSTRACT.items(): + if kind not in numbers: + continue + if set(numbers[kind]) >= _NUMBERS_CONCRETE[kind]: expr = f"{NP}.{base}" kind_expr[kind] = expr @@ -100,6 +114,12 @@ def _union(*types: str) -> str: else: combined.extend(numbers[kind]) + if other: + if other[0] == "np.bool": + combined = [other[0]] + combined + other[1:] + else: + combined.extend(other) + if len(kind_expr) == 4: # noqa: PLR2004 expr_map = dict.fromkeys(kind_expr.values(), f"{NP}.number") combined = [expr_map.get(expr, expr) for expr in combined] @@ -116,6 +136,24 @@ def _union(*types: str) -> str: return " | ".join(dict.fromkeys(combined)) +def _join(*types: str) -> str: + # find the common base type + types = tuple(dict.fromkeys(types)) + if len(types) == 1: + return types[0] + + numbers, other = __group_types(*types) + if other: + raise NotImplementedError(f"join of non-number types: {types}") + + kinds = "".join(set(numbers)) + if len(kinds) == 1 and len(numbers[kinds]) == 1: + return numbers[kinds][0] + if kinds in _NUMBERS_ABSTRACT: + return f"{NP}.{_NUMBERS_ABSTRACT[kinds]}" + return f"{NP}.number" + + def _strip_preamble(source: str) -> tuple[str | None, str]: preamble_prefix = f"# {PREAMBLE_PREFIX}" @@ -552,10 +590,14 @@ class ScalarBinOpTestGen(TestGen): "M": "M64", "m": "m64", # # abstract numeric - "BHIL": "u", # unsignedinteger - "bhil": "i", # signedinteger + # TODO(jorenham): Enable integers once the concrete integer types are there + # https://github.com/numpy/numtype/issues/136 + # "BHIL": "u", # unsignedinteger + # "bhil": "i", # signedinteger "efdg": "f", # floating "FDG": "c", # complexfloating + # TODO(jorenham): Enable integers once all concrete number types are present + # https://github.com/numpy/numtype/issues/136 # "BHILbhil": "ui", # integer # "efdgFDG": "fc", # inexact # "BHILbhilefdgFDG": "uifc", # number @@ -565,22 +607,21 @@ class ScalarBinOpTestGen(TestGen): "i": "signedinteger", "f": "floating", "c": "complexfloating", - # "ui": "integer", - # "fc": "inexact", - # "uifc": "number", + "ui": "integer", + "fc": "inexact", + "uifc": "number", } INTP_EXPR: ClassVar = np.intp.__name__ - abstract: Final[bool] + def _is_builtin(self, key: str, /) -> bool: + return len(key) > 1 and self.NAMES[key].endswith("_py") - def __init__(self, /, *, abstract: bool = True) -> None: - self.abstract = abstract - super().__init__() + def _is_abstract(self, key: str, /) -> bool: + return len(key) > 1 and not self.NAMES[key].endswith("_py") def _decompose(self, key: str, /) -> tuple[_Scalar, ...]: - if len(key) == 1 or self.NAMES[key].endswith("_py"): + if not self._is_abstract(key): return (_scalar(key),) - return tuple(map(_scalar, key)) def _evaluate_concrete(self, op: str, lhs: str, rhs: str, /) -> str | None: @@ -610,7 +651,7 @@ def _evaluate_concrete(self, op: str, lhs: str, rhs: str, /) -> str | None: if len(types_out) == 1: return types_out[0] - return _union(*types_out) + return _join(*types_out) def _assert_stmt(self, op: str, lhs: str, rhs: str, /) -> str | None: expr_eval = op.format(self.NAMES[lhs], self.NAMES[rhs]) @@ -650,21 +691,20 @@ def _generate_names_section(self) -> Generator[str]: def get_names(self) -> Iterable[tuple[str, str]]: # builtin scalars for builtin, name in self.NAMES.items(): - if len(builtin) > 1 and name.endswith("_py"): + if self._is_builtin(builtin): yield name, builtin - # numpy scalars + # constrete numpy scalars yield "", "" for char, name in self.NAMES.items(): - if len(char) == 1 and not name.endswith("_py"): + if len(char) == 1: yield name, _sctype_expr(np.dtype(char)) - if self.abstract: - # numpy abstract scalars - yield "", "" - for char, kind in self.NAMES.items(): - if len(char) > 1 and not kind.endswith("_py"): - yield kind, self.ABSTRACT_TYPES[kind] + # abstract numpy scalars + yield "", "" + for char, kind in self.NAMES.items(): + if self._is_abstract(char): + yield kind, f"{NP}.{self.ABSTRACT_TYPES[kind]}" @override def get_testcases(self) -> Iterable[str | None]: @@ -673,14 +713,17 @@ def get_testcases(self) -> Iterable[str | None]: yield from self._generate_section(f"__[r]{opname}__") - for lhs, lname in self.NAMES.items(): - if len(lhs) > 1 and (lname.endswith("py_") or not self.abstract): + for lhs in self.NAMES: + if self._is_builtin(lhs): + # will cause false positives on pyright; as designed, of course continue n = 0 - for rhs, rname in self.NAMES.items(): - if not self.abstract and len(rhs) > 1 and not rname.endswith("_py"): + for rhs in self.NAMES: + if fn.__name__ in {"eq", "ne"} and self._is_abstract(rhs): + # will be inferred by mypy as `Any` for some reason continue + if stmt := self._assert_stmt(symbol, lhs, rhs): yield stmt n += 1 @@ -840,7 +883,7 @@ def get_testcases(self) -> Iterable[str | None]: TESTGENS: Final[Sequence[TestGen]] = [ EMathTestGen(binary=False), - ScalarBinOpTestGen(abstract=False), # TODO(jorenham): Enable and fix failures + ScalarBinOpTestGen(), BoolBitOpTestGen(), ]