123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336 |
- """
- A module with various ``typing.Protocol`` subclasses that implement
- the ``__call__`` magic method.
- See the `Mypy documentation`_ on protocols for more details.
- .. _`Mypy documentation`: https://mypy.readthedocs.io/en/stable/protocols.html#callback-protocols
- """
- import sys
- from typing import (
- Union,
- TypeVar,
- overload,
- Any,
- Tuple,
- NoReturn,
- TYPE_CHECKING,
- )
- from numpy import (
- generic,
- bool_,
- timedelta64,
- number,
- integer,
- unsignedinteger,
- signedinteger,
- int8,
- floating,
- float64,
- complexfloating,
- complex128,
- )
- from ._scalars import (
- _BoolLike,
- _IntLike,
- _FloatLike,
- _ComplexLike,
- _NumberLike,
- )
- from . import NBitBase
- if sys.version_info >= (3, 8):
- from typing import Protocol
- HAVE_PROTOCOL = True
- else:
- try:
- from typing_extensions import Protocol
- except ImportError:
- HAVE_PROTOCOL = False
- else:
- HAVE_PROTOCOL = True
- if TYPE_CHECKING or HAVE_PROTOCOL:
- _T = TypeVar("_T")
- _2Tuple = Tuple[_T, _T]
- _NBit_co = TypeVar("_NBit_co", covariant=True, bound=NBitBase)
- _NBit = TypeVar("_NBit", bound=NBitBase)
- _IntType = TypeVar("_IntType", bound=integer)
- _FloatType = TypeVar("_FloatType", bound=floating)
- _NumberType = TypeVar("_NumberType", bound=number)
- _NumberType_co = TypeVar("_NumberType_co", covariant=True, bound=number)
- _GenericType_co = TypeVar("_GenericType_co", covariant=True, bound=generic)
- class _BoolOp(Protocol[_GenericType_co]):
- @overload
- def __call__(self, __other: _BoolLike) -> _GenericType_co: ...
- @overload # platform dependent
- def __call__(self, __other: int) -> signedinteger[Any]: ...
- @overload
- def __call__(self, __other: float) -> float64: ...
- @overload
- def __call__(self, __other: complex) -> complex128: ...
- @overload
- def __call__(self, __other: _NumberType) -> _NumberType: ...
- class _BoolBitOp(Protocol[_GenericType_co]):
- @overload
- def __call__(self, __other: _BoolLike) -> _GenericType_co: ...
- @overload # platform dependent
- def __call__(self, __other: int) -> signedinteger[Any]: ...
- @overload
- def __call__(self, __other: _IntType) -> _IntType: ...
- class _BoolSub(Protocol):
-
- @overload
- def __call__(self, __other: bool) -> NoReturn: ...
- @overload # platform dependent
- def __call__(self, __other: int) -> signedinteger[Any]: ...
- @overload
- def __call__(self, __other: float) -> float64: ...
- @overload
- def __call__(self, __other: complex) -> complex128: ...
- @overload
- def __call__(self, __other: _NumberType) -> _NumberType: ...
- class _BoolTrueDiv(Protocol):
- @overload
- def __call__(self, __other: Union[float, _IntLike, _BoolLike]) -> float64: ...
- @overload
- def __call__(self, __other: complex) -> complex128: ...
- @overload
- def __call__(self, __other: _NumberType) -> _NumberType: ...
- class _BoolMod(Protocol):
- @overload
- def __call__(self, __other: _BoolLike) -> int8: ...
- @overload # platform dependent
- def __call__(self, __other: int) -> signedinteger[Any]: ...
- @overload
- def __call__(self, __other: float) -> float64: ...
- @overload
- def __call__(self, __other: _IntType) -> _IntType: ...
- @overload
- def __call__(self, __other: _FloatType) -> _FloatType: ...
- class _BoolDivMod(Protocol):
- @overload
- def __call__(self, __other: _BoolLike) -> _2Tuple[int8]: ...
- @overload # platform dependent
- def __call__(self, __other: int) -> _2Tuple[signedinteger[Any]]: ...
- @overload
- def __call__(self, __other: float) -> _2Tuple[float64]: ...
- @overload
- def __call__(self, __other: _IntType) -> _2Tuple[_IntType]: ...
- @overload
- def __call__(self, __other: _FloatType) -> _2Tuple[_FloatType]: ...
- class _TD64Div(Protocol[_NumberType_co]):
- @overload
- def __call__(self, __other: timedelta64) -> _NumberType_co: ...
- @overload
- def __call__(self, __other: _FloatLike) -> timedelta64: ...
- class _IntTrueDiv(Protocol[_NBit_co]):
- @overload
- def __call__(self, __other: bool) -> floating[_NBit_co]: ...
- @overload
- def __call__(self, __other: int) -> floating[Any]: ...
- @overload
- def __call__(self, __other: float) -> float64: ...
- @overload
- def __call__(self, __other: complex) -> complex128: ...
- @overload
- def __call__(self, __other: integer[_NBit]) -> floating[Union[_NBit_co, _NBit]]: ...
- class _UnsignedIntOp(Protocol[_NBit_co]):
-
- @overload
- def __call__(self, __other: bool) -> unsignedinteger[_NBit_co]: ...
- @overload
- def __call__(
- self, __other: Union[int, signedinteger[Any]]
- ) -> Any: ...
- @overload
- def __call__(self, __other: float) -> float64: ...
- @overload
- def __call__(self, __other: complex) -> complex128: ...
- @overload
- def __call__(
- self, __other: unsignedinteger[_NBit]
- ) -> unsignedinteger[Union[_NBit_co, _NBit]]: ...
- class _UnsignedIntBitOp(Protocol[_NBit_co]):
- @overload
- def __call__(self, __other: bool) -> unsignedinteger[_NBit_co]: ...
- @overload
- def __call__(self, __other: int) -> signedinteger[Any]: ...
- @overload
- def __call__(self, __other: signedinteger[Any]) -> signedinteger[Any]: ...
- @overload
- def __call__(
- self, __other: unsignedinteger[_NBit]
- ) -> unsignedinteger[Union[_NBit_co, _NBit]]: ...
- class _UnsignedIntMod(Protocol[_NBit_co]):
- @overload
- def __call__(self, __other: bool) -> unsignedinteger[_NBit_co]: ...
- @overload
- def __call__(
- self, __other: Union[int, signedinteger[Any]]
- ) -> Any: ...
- @overload
- def __call__(self, __other: float) -> float64: ...
- @overload
- def __call__(
- self, __other: unsignedinteger[_NBit]
- ) -> unsignedinteger[Union[_NBit_co, _NBit]]: ...
- class _UnsignedIntDivMod(Protocol[_NBit_co]):
- @overload
- def __call__(self, __other: bool) -> _2Tuple[signedinteger[_NBit_co]]: ...
- @overload
- def __call__(
- self, __other: Union[int, signedinteger[Any]]
- ) -> _2Tuple[Any]: ...
- @overload
- def __call__(self, __other: float) -> _2Tuple[float64]: ...
- @overload
- def __call__(
- self, __other: unsignedinteger[_NBit]
- ) -> _2Tuple[unsignedinteger[Union[_NBit_co, _NBit]]]: ...
- class _SignedIntOp(Protocol[_NBit_co]):
- @overload
- def __call__(self, __other: bool) -> signedinteger[_NBit_co]: ...
- @overload
- def __call__(self, __other: int) -> signedinteger[Any]: ...
- @overload
- def __call__(self, __other: float) -> float64: ...
- @overload
- def __call__(self, __other: complex) -> complex128: ...
- @overload
- def __call__(
- self, __other: signedinteger[_NBit]
- ) -> signedinteger[Union[_NBit_co, _NBit]]: ...
- class _SignedIntBitOp(Protocol[_NBit_co]):
- @overload
- def __call__(self, __other: bool) -> signedinteger[_NBit_co]: ...
- @overload
- def __call__(self, __other: int) -> signedinteger[Any]: ...
- @overload
- def __call__(
- self, __other: signedinteger[_NBit]
- ) -> signedinteger[Union[_NBit_co, _NBit]]: ...
- class _SignedIntMod(Protocol[_NBit_co]):
- @overload
- def __call__(self, __other: bool) -> signedinteger[_NBit_co]: ...
- @overload
- def __call__(self, __other: int) -> signedinteger[Any]: ...
- @overload
- def __call__(self, __other: float) -> float64: ...
- @overload
- def __call__(
- self, __other: signedinteger[_NBit]
- ) -> signedinteger[Union[_NBit_co, _NBit]]: ...
- class _SignedIntDivMod(Protocol[_NBit_co]):
- @overload
- def __call__(self, __other: bool) -> _2Tuple[signedinteger[_NBit_co]]: ...
- @overload
- def __call__(self, __other: int) -> _2Tuple[signedinteger[Any]]: ...
- @overload
- def __call__(self, __other: float) -> _2Tuple[float64]: ...
- @overload
- def __call__(
- self, __other: signedinteger[_NBit]
- ) -> _2Tuple[signedinteger[Union[_NBit_co, _NBit]]]: ...
- class _FloatOp(Protocol[_NBit_co]):
- @overload
- def __call__(self, __other: bool) -> floating[_NBit_co]: ...
- @overload
- def __call__(self, __other: int) -> floating[Any]: ...
- @overload
- def __call__(self, __other: float) -> float64: ...
- @overload
- def __call__(self, __other: complex) -> complex128: ...
- @overload
- def __call__(
- self, __other: Union[integer[_NBit], floating[_NBit]]
- ) -> floating[Union[_NBit_co, _NBit]]: ...
- class _FloatMod(Protocol[_NBit_co]):
- @overload
- def __call__(self, __other: bool) -> floating[_NBit_co]: ...
- @overload
- def __call__(self, __other: int) -> floating[Any]: ...
- @overload
- def __call__(self, __other: float) -> float64: ...
- @overload
- def __call__(
- self, __other: Union[integer[_NBit], floating[_NBit]]
- ) -> floating[Union[_NBit_co, _NBit]]: ...
- class _FloatDivMod(Protocol[_NBit_co]):
- @overload
- def __call__(self, __other: bool) -> _2Tuple[floating[_NBit_co]]: ...
- @overload
- def __call__(self, __other: int) -> _2Tuple[floating[Any]]: ...
- @overload
- def __call__(self, __other: float) -> _2Tuple[float64]: ...
- @overload
- def __call__(
- self, __other: Union[integer[_NBit], floating[_NBit]]
- ) -> _2Tuple[floating[Union[_NBit_co, _NBit]]]: ...
- class _ComplexOp(Protocol[_NBit_co]):
- @overload
- def __call__(self, __other: bool) -> complexfloating[_NBit_co, _NBit_co]: ...
- @overload
- def __call__(self, __other: int) -> complexfloating[Any, Any]: ...
- @overload
- def __call__(self, __other: Union[float, complex]) -> complex128: ...
- @overload
- def __call__(
- self,
- __other: Union[
- integer[_NBit],
- floating[_NBit],
- complexfloating[_NBit, _NBit],
- ]
- ) -> complexfloating[Union[_NBit_co, _NBit], Union[_NBit_co, _NBit]]: ...
- class _NumberOp(Protocol):
- def __call__(self, __other: _NumberLike) -> number: ...
- else:
- _BoolOp = Any
- _BoolBitOp = Any
- _BoolSub = Any
- _BoolTrueDiv = Any
- _BoolMod = Any
- _BoolDivMod = Any
- _TD64Div = Any
- _IntTrueDiv = Any
- _UnsignedIntOp = Any
- _UnsignedIntBitOp = Any
- _UnsignedIntMod = Any
- _UnsignedIntDivMod = Any
- _SignedIntOp = Any
- _SignedIntBitOp = Any
- _SignedIntMod = Any
- _SignedIntDivMod = Any
- _FloatOp = Any
- _FloatMod = Any
- _FloatDivMod = Any
- _ComplexOp = Any
- _NumberOp = Any
|