RealNumber: TypeAlias = int | float Number: TypeAlias = RealNumber | complex SingleVar = TypeVar('SingleVar', bound=Number) ArrayVar = TypeVar('ArrayVar', bound=Iterable[Number]) Var: TypeAlias = SingleVar | ArrayVar OneSingleVarFunc: TypeAlias = Callable[[SingleVar], SingleVar] OneArrayFunc: TypeAlias = Callable[[ArrayVar], ArrayVar] OneVarFunc: TypeAlias = OneSingleVarFunc | OneArrayFunc TwoSingleVarsFunc: TypeAlias = Callable[[SingleVar, SingleVar], SingleVar] TwoArraysFunc: TypeAlias = Callable[[ArrayVar, ArrayVar], ArrayVar] TwoVarsFunc: TypeAlias = TwoSingleVarsFunc | TwoArraysFunc ThreeSingleVarsFunc: TypeAlias = Callable[[SingleVar, SingleVar, SingleVar], SingleVar] ThreeArraysFunc: TypeAlias = Callable[[ArrayVar, ArrayVar, ArrayVar], ArrayVar] ThreeVarsFunc: TypeAlias = ThreeSingleVarsFunc | ThreeArraysFunc MultiSingleVarsFunc: TypeAlias = Callable[..., SingleVar] MultiArraysFunc: TypeAlias = Callable[..., ArrayVar] MultiVarsFunc: TypeAlias = MultiSingleVarsFunc | MultiArraysFunc