%PDF- %PDF-
| Direktori : /lib/python3/dist-packages/pythran/ |
| Current File : //lib/python3/dist-packages/pythran/tables.py |
""" This modules provides the translation tables from python to c++. """
import gast as ast
import inspect
import logging
import numpy
import sys
from pythran.typing import Dict, Set, List, TypeVar, Union, Optional, NDArray
from pythran.typing import Generator, Fun, Tuple, Iterable, Sized, File
from pythran.conversion import to_ast, ToNotEval
from pythran.intrinsic import Class
from pythran.intrinsic import ClassWithConstConstructor, ExceptionClass
from pythran.intrinsic import ClassWithReadOnceConstructor
from pythran.intrinsic import ConstFunctionIntr, FunctionIntr, UpdateEffect
from pythran.intrinsic import ConstMethodIntr, MethodIntr, AttributeIntr
from pythran.intrinsic import ReadEffect, ConstantIntr, UFunc
from pythran.intrinsic import ReadOnceMethodIntr
from pythran.intrinsic import ReadOnceFunctionIntr, ConstExceptionIntr
from pythran import interval
from functools import reduce
logger = logging.getLogger("pythran")
pythran_ward = '__pythran_'
namespace = "pythonic"
cxx_keywords = {
'and', 'and_eq', 'asm', 'auto', 'bitand', 'bitor',
'bool', 'break', 'case', 'catch', 'char', 'class',
'compl', 'const', 'const_cast', 'continue', 'default', 'delete',
'do', 'double', 'dynamic_cast', 'else', 'enum', 'explicit',
'export', 'extern', 'false', 'float', 'for', 'friend',
'goto', 'if', 'inline', 'int', 'long', 'mutable', 'namespace', 'new',
'not', 'not_eq', 'operator', 'or', 'or_eq', 'private', 'protected',
'public', 'register', 'reinterpret_cast', 'return', 'short', 'signed',
'sizeof', 'static', 'static_cast',
'struct', 'switch', 'template', 'this', 'throw', 'true',
'try', 'typedef', 'typeid', 'typename', 'union', 'unsigned',
'using', 'virtual', 'void', 'volatile', 'wchar_t', 'while',
'xor', 'xor_eq',
# C++11 additions
'constexpr', 'decltype', 'noexcept', 'nullptr', 'static_assert',
# reserved namespaces
'std',
}
def make_lazy(exp):
return '[&] () {{ return {0}; }}'.format(exp)
def make_and(x, y):
lx, ly = make_lazy(x), make_lazy(y)
return 'pythonic::builtins::pythran::and_({0}, {1})'.format(lx, ly)
def make_or(x, y):
lx, ly = make_lazy(x), make_lazy(y)
return 'pythonic::builtins::pythran::or_({0}, {1})'.format(lx, ly)
operator_to_lambda = {
# boolop
ast.And: make_and,
ast.Or: make_or,
# operator
ast.Add: "pythonic::operator_::add({0}, {1})".format,
ast.Sub: "pythonic::operator_::sub({0}, {1})".format,
ast.Mult: "pythonic::operator_::mul({0}, {1})".format,
ast.Div: "pythonic::operator_::div({0}, {1})".format,
ast.Mod: "pythonic::operator_::mod({0}, {1})".format,
ast.Pow: "pythonic::builtins::pow({0}, {1})".format,
ast.LShift: "pythonic::operator_::lshift({0}, {1})".format,
ast.RShift: "pythonic::operator_::rshift({0}, {1})".format,
ast.BitOr: "pythonic::operator_::or_({0}, {1})".format,
ast.BitXor: "pythonic::operator_::xor_({0}, {1})".format,
ast.BitAnd: "pythonic::operator_::and_({0}, {1})".format,
ast.MatMult: "pythonic::operator_::functor::matmul()({0}, {1})".format,
ast.FloorDiv: "pythonic::operator_::functor::floordiv()({0}, {1})".format,
# unaryop
ast.Invert: "pythonic::operator_::invert({0})".format,
ast.Not: "pythonic::operator_::not_({0})".format,
ast.UAdd: "pythonic::operator_::pos({0})".format,
ast.USub: "pythonic::operator_::neg({0})".format,
# cmpop
ast.Eq: "pythonic::operator_::eq({0}, {1})".format,
ast.NotEq: "pythonic::operator_::ne({0}, {1})".format,
ast.Lt: "pythonic::operator_::lt({0}, {1})".format,
ast.LtE: "pythonic::operator_::le({0}, {1})".format,
ast.Gt: "pythonic::operator_::gt({0}, {1})".format,
ast.GtE: "pythonic::operator_::ge({0}, {1})".format,
ast.Is: "pythonic::operator_::is_({0}, {1})".format,
ast.IsNot: ("pythonic::operator_::is_not({0}, {1})").format,
ast.In: "pythonic::operator_::contains({1}, {0})".format,
ast.NotIn: "(!pythonic::operator_::contains({1}, {0}))".format,
}
update_operator_to_lambda = {
# operator
ast.Add: "({0} += {1})".format,
ast.Sub: "({0} -= {1})".format,
ast.Mult: "({0} *= {1})".format,
ast.Div: "(pythonic::operator_::idiv({0}, {1}))".format,
ast.Mod: "(pythonic::operator_::imod({0}, {1}))".format,
ast.Pow: "(pythonic::operator_::ipow({0}, {1}))".format,
ast.LShift: "({0} <<= {1})".format,
ast.RShift: "({0} >>= {1})".format,
ast.BitOr: "({0} |= {1})".format,
ast.BitXor: "({0} ^= {1})".format,
ast.BitAnd: "({0} &= {1})".format,
ast.MatMult: "(pythonic::operator_::imatmul({0}, {1}))".format,
ast.FloorDiv:
"(pythonic::operator_::functor::ifloordiv{{}}({0}, {1}))".format,
}
T0, T1, T2, T3 = TypeVar('T0'), TypeVar('T1'), TypeVar('T2'), TypeVar('T3')
T4, T5, T6, T7 = TypeVar('T4'), TypeVar('T5'), TypeVar('T6'), TypeVar('T7')
_bool_signature = Union[
Fun[[], bool],
Fun[[T0], bool]
]
_int_signature = Union[
Fun[[], int],
Fun[[bool], int],
Fun[[int], int],
Fun[[float], int],
Fun[[str], int],
]
_float_signature = Union[
Fun[[], float],
Fun[[str], float],
Fun[[float], float],
]
_complex_signature = Union[
Fun[[float], complex],
Fun[[float, float], complex],
]
# workaround changes in numpy interaction with getfullargspec
try:
inspect.getfullargspec(numpy.asarray)
# if we have a description, honor it
extra_numpy_asarray_descr = {}
except TypeError:
extra_numpy_asarray_descr = {'args':('a', 'dtype'),
'defaults': (None,)}
def update_effects(self, node):
"""
Combiner when we update the first argument of a function.
It turn type of first parameter in combination of all others
parameters types.
"""
return [self.combine(node.args[0], node_args_k, register=True,
aliasing_type=True)
for node_args_k in node.args[1:]]
BINARY_UFUNC = {"accumulate": FunctionIntr()}
REDUCED_BINARY_UFUNC = {"accumulate": FunctionIntr(),
"reduce": ConstFunctionIntr()}
CLASSES = {
"dtype": {
"type": MethodIntr(),
},
"list": {
"append": MethodIntr(signature=Fun[[List[T0], T0], None]),
"extend": MethodIntr(update_effects),
"pop": MethodIntr(
signature=Union[
Fun[[List[T0]], T0],
Fun[[List[T0], int], T0],
],
),
"reverse": MethodIntr(signature=Fun[[List[T0]], None]),
"sort": MethodIntr(
args=("self", "key",),
),
"count": ConstMethodIntr(signature=Fun[[List[T0], T0], int]),
"remove": MethodIntr(signature=Fun[[List[T0], T0], None]),
"insert": MethodIntr(signature=Fun[[List[T0], int, T0], None]),
},
"slice": {
"start": AttributeIntr(signature=Fun[[T0], int]),
"stop": AttributeIntr(signature=Fun[[T0], int]),
"step": AttributeIntr(signature=Fun[[T0], int]),
},
"str": {
"__mod__": ConstMethodIntr(
signature=Union[
Fun[[str, T0], str],
Fun[[str, T0, T1], str],
Fun[[str, T0, T1, T2], str],
Fun[[str, T0, T1, T2, T3, T4], str],
Fun[[str, T0, T1, T2, T3, T4, T5], str],
Fun[[str, T0, T1, T2, T3, T4, T5, T6], str],
],
),
"capitalize": ConstMethodIntr(signature=Fun[[str], str]),
"count": ConstMethodIntr(signature=Union[
Fun[[str, str], int],
Fun[[str, str, int], int],
Fun[[str, str, int, int], int],
]),
"endswith": ConstMethodIntr(
signature=Union[
Fun[[str, str], bool],
Fun[[str, str, Optional[int]], bool],
Fun[[str, str, Optional[int], Optional[int]], bool],
],
),
"startswith": ConstMethodIntr(
signature=Union[
Fun[[str, str], bool],
Fun[[str, str, Optional[int]], bool],
Fun[[str, str, Optional[int], Optional[int]], bool],
],
),
"find": ConstMethodIntr(
signature=Union[
Fun[[str, str], int],
Fun[[str, str, Optional[int]], int],
Fun[[str, str, Optional[int], Optional[int]], int],
],
),
"isalpha": ConstMethodIntr(signature=Fun[[str], bool]),
"isdigit": ConstMethodIntr(signature=Fun[[str], bool]),
"join": ConstMethodIntr(signature=Fun[[str, Iterable[str]], str]),
"lower": ConstMethodIntr(signature=Fun[[str], str]),
"replace": ConstMethodIntr(
signature=Union[
Fun[[str, str, str], str],
Fun[[str, str, str, int], str],
]
),
"split": ConstMethodIntr(
signature=Union[
Fun[[str], List[str]],
Fun[[str, str], List[str]],
Fun[[str, None], List[str]],
Fun[[str, str, int], List[str]],
Fun[[str, None, int], List[str]],
]
),
"strip": ConstMethodIntr(
signature=Union[
Fun[[str], str],
Fun[[str, str], str],
]
),
"lstrip": ConstMethodIntr(
signature=Union[
Fun[[str], str],
Fun[[str, str], str],
]
),
"rstrip": ConstMethodIntr(
signature=Union[
Fun[[str], str],
Fun[[str, str], str],
]
),
"upper": ConstMethodIntr(
signature=Fun[[str], str]
),
},
"set": {
"add": MethodIntr(signature=Fun[[Set[T0], T0], None]),
"clear": MethodIntr(signature=Fun[[Set[T0]], None]),
"copy": ConstMethodIntr(signature=Fun[[Set[T0]], Iterable[T0]]),
"discard": MethodIntr(signature=Fun[[Set[T0], T0], None]),
"remove": MethodIntr(signature=Fun[[Set[T0], T0], None]),
"isdisjoint": ConstMethodIntr(
signature=Fun[[Set[T0], Set[T0]], bool]),
"union": ConstMethodIntr(
signature=Union[
Fun[[Set[T0], Iterable[T0]], Set[T0]],
Fun[[Set[T0], Iterable[T0], Iterable[T0]], Set[T0]],
Fun[[Set[T0], Iterable[T0], Iterable[T0], Iterable[T0]],
Set[T0]],
]
),
"update": MethodIntr(update_effects),
"intersection": ConstMethodIntr(
signature=Union[
Fun[[Set[T0], Iterable[T0]], Set[T0]],
Fun[[Set[T0], Iterable[T0], Iterable[T0]], Set[T0]],
Fun[[Set[T0], Iterable[T0], Iterable[T0], Iterable[T0]],
Set[T0]],
]
),
"intersection_update": MethodIntr(update_effects),
"difference": ConstMethodIntr(
signature=Union[
Fun[[Set[T0], Iterable[T0]], Set[T0]],
Fun[[Set[T0], Iterable[T0], Iterable[T0]], Set[T0]],
Fun[[Set[T0], Iterable[T0], Iterable[T0], Iterable[T0]],
Set[T0]],
]
),
"difference_update": MethodIntr(update_effects),
"symmetric_difference": ConstMethodIntr(
signature=Union[
Fun[[Set[T0], Iterable[T0]], Set[T0]],
Fun[[Set[T0], Iterable[T0], Iterable[T0]], Set[T0]],
Fun[[Set[T0], Iterable[T0], Iterable[T0], Iterable[T0]],
Set[T0]],
]
),
"symmetric_difference_update": MethodIntr(update_effects),
"issuperset": ConstMethodIntr(
signature=Fun[[Set[T0], Set[T0]], bool]),
"issubset": ConstMethodIntr(
signature=Fun[[Set[T0], Set[T0]], bool]),
},
"Exception": {
"args": AttributeIntr(signature=Fun[[T0], str]),
"errno": AttributeIntr(signature=Fun[[T0], str]),
"strerror": AttributeIntr(signature=Fun[[T0], str]),
"filename": AttributeIntr(signature=Fun[[T0], str]),
},
"float": {
"is_integer": ConstMethodIntr(signature=Fun[[float], bool]),
},
"complex": {
"conjugate": ConstMethodIntr(),
"real": AttributeIntr(
signature=Union[
Fun[[complex], float],
Fun[[NDArray[complex, :]], NDArray[float, :]],
Fun[[NDArray[complex, :, :]], NDArray[float, :, :]],
Fun[[NDArray[complex, :, :, :]], NDArray[float, :, :, :]],
Fun[[NDArray[complex, :, :, :, :]],
NDArray[float, :, :, :, :]],
]
),
"imag": AttributeIntr(
signature=Union[
Fun[[complex], float],
Fun[[NDArray[complex, :]], NDArray[float, :]],
Fun[[NDArray[complex, :, :]], NDArray[float, :, :]],
Fun[[NDArray[complex, :, :, :]], NDArray[float, :, :, :]],
Fun[[NDArray[complex, :, :, :, :]],
NDArray[float, :, :, :, :]],
]
),
},
"dict": {
"fromkeys": ConstFunctionIntr(
signature=Union[
Fun[[Iterable[T0]], Dict[T0, Optional[T1]]],
Fun[[Iterable[T0], T1], Dict[T0, T1]],
],
),
"clear": MethodIntr(signature=Fun[[Dict[T0, T1]], None]),
"copy": ConstMethodIntr(
signature=Fun[[Dict[T0, T1]], Dict[T0, T1]]),
"get": ConstMethodIntr(
signature=Union[
Fun[[Dict[T0, T1], T0], Optional[T1]],
Fun[[Dict[T0, T1], T0, T1], T1],
],
),
"items": MethodIntr(
signature=Fun[[Dict[T0, T1]], List[Tuple[T0, T1]]]),
"keys": MethodIntr(signature=Fun[[Dict[T0, T1]], List[T0]]),
"pop": MethodIntr(
signature=Union[
Fun[[Dict[T0, T1], T0], T1],
Fun[[Dict[T0, T1], T0, T1], T1],
]
),
"popitem": MethodIntr(
signature=Fun[[Dict[T0, T1]], Tuple[T0, T1]]),
"setdefault": MethodIntr(
signature=Union[
Fun[[Dict[T0, T1], T0, T1], T1],
Fun[[Dict[T0, T1], T0], T1]
],
return_alias=lambda args: {
ast.Subscript(args[0], args[1], ast.Load())
}.union({args[2]} if len(args) == 3 else set())
),
"update": MethodIntr(update_effects),
"values": MethodIntr(signature=Fun[[Dict[T0, T1]], List[T1]]),
},
"file": {
# Member variables
"closed": AttributeIntr(signature=Fun[[File], bool]),
"mode": AttributeIntr(signature=Fun[[File], str]),
"name": AttributeIntr(signature=Fun[[File], str]),
"newlines": AttributeIntr(signature=Fun[[File], str]),
# Member functions
"close": MethodIntr(
signature=Fun[[File], None],
global_effects=True
),
"flush": MethodIntr(
signature=Fun[[File], None],
global_effects=True
),
"fileno": MethodIntr(
signature=Fun[[File], int],
),
"isatty": MethodIntr(signature=Fun[[File], bool]),
"next": MethodIntr(global_effects=True),
"read": MethodIntr(
signature=Union[
Fun[[File], str],
Fun[[File, int], str],
],
global_effects=True
),
"readline": MethodIntr(
signature=Union[
Fun[[File], str],
Fun[[File, int], str],
],
global_effects=True
),
"readlines": MethodIntr(
signature=Union[
Fun[[File], List[str]],
Fun[[File, int], List[str]],
],
global_effects=True
),
"seek": MethodIntr(
signature=Union[
Fun[[File, int], None],
Fun[[File, int, int], None],
],
global_effects=True
),
"tell": MethodIntr(signature=Fun[[File], int]),
"truncate": MethodIntr(
signature=Union[
Fun[[File], None],
Fun[[File, int], None],
],
global_effects=True
),
"write": MethodIntr(
signature=Fun[[File, str], None],
global_effects=True
),
"writelines": MethodIntr(
signature=Fun[[File, Iterable[str]], None],
global_effects=True
),
},
"finfo": {
"eps": AttributeIntr(signature=float),
},
"ndarray": {
"astype": MethodIntr(
signature=Union[
# dtype = bool
Fun[[NDArray[bool, :], _bool_signature], NDArray[bool, :]],
Fun[[NDArray[int, :], _bool_signature], NDArray[bool, :]],
Fun[[NDArray[float, :], _bool_signature], NDArray[bool, :]],
Fun[[NDArray[complex, :], _bool_signature], NDArray[bool, :]],
Fun[[NDArray[bool, :, :], _bool_signature],
NDArray[bool, :, :]],
Fun[[NDArray[int, :, :], _bool_signature],
NDArray[bool, :, :]],
Fun[[NDArray[float, :, :], _bool_signature],
NDArray[bool, :, :]],
Fun[[NDArray[complex, :, :], _bool_signature],
NDArray[bool, :, :]],
Fun[[NDArray[bool, :, :, :], _bool_signature],
NDArray[bool, :, :, :]],
Fun[[NDArray[int, :, :, :], _bool_signature],
NDArray[bool, :, :, :]],
Fun[[NDArray[float, :, :, :], _bool_signature],
NDArray[bool, :, :, :]],
Fun[[NDArray[complex, :, :, :], _bool_signature],
NDArray[bool, :, :, :]],
Fun[[NDArray[bool, :, :, :, :], _bool_signature],
NDArray[bool, :, :, :, :]],
Fun[[NDArray[int, :, :, :, :], _bool_signature],
NDArray[bool, :, :, :, :]],
Fun[[NDArray[float, :, :, :, :], _bool_signature],
NDArray[bool, :, :, :, :]],
Fun[[NDArray[complex, :, :, :, :], _bool_signature],
NDArray[bool, :, :, :, :]],
# dtype = int
Fun[[NDArray[bool, :], _int_signature], NDArray[int, :]],
Fun[[NDArray[int, :], _int_signature], NDArray[int, :]],
Fun[[NDArray[float, :], _int_signature], NDArray[int, :]],
Fun[[NDArray[complex, :], _int_signature], NDArray[int, :]],
Fun[[NDArray[bool, :, :], _int_signature], NDArray[int, :, :]],
Fun[[NDArray[int, :, :], _int_signature], NDArray[int, :, :]],
Fun[[NDArray[float, :, :], _int_signature],
NDArray[int, :, :]],
Fun[[NDArray[complex, :, :], _int_signature],
NDArray[int, :, :]],
Fun[[NDArray[bool, :, :, :], _int_signature],
NDArray[int, :, :, :]],
Fun[[NDArray[int, :, :, :], _int_signature],
NDArray[int, :, :, :]],
Fun[[NDArray[float, :, :, :], _int_signature],
NDArray[int, :, :, :]],
Fun[[NDArray[complex, :, :, :], _int_signature],
NDArray[int, :, :, :]],
Fun[[NDArray[bool, :, :, :, :], _int_signature],
NDArray[int, :, :, :, :]],
Fun[[NDArray[int, :, :, :, :], _int_signature],
NDArray[int, :, :, :, :]],
Fun[[NDArray[float, :, :, :, :], _int_signature],
NDArray[int, :, :, :, :]],
Fun[[NDArray[complex, :, :, :, :], _int_signature],
NDArray[int, :, :, :, :]],
# dtype = float
Fun[[NDArray[bool, :], _float_signature], NDArray[float, :]],
Fun[[NDArray[int, :], _float_signature], NDArray[float, :]],
Fun[[NDArray[float, :], _float_signature], NDArray[float, :]],
Fun[[NDArray[complex, :], _float_signature],
NDArray[float, :]],
Fun[[NDArray[bool, :, :], _float_signature],
NDArray[float, :, :]],
Fun[[NDArray[int, :, :], _float_signature],
NDArray[float, :, :]],
Fun[[NDArray[float, :, :], _float_signature],
NDArray[float, :, :]],
Fun[[NDArray[complex, :, :], _float_signature],
NDArray[float, :, :]],
Fun[[NDArray[bool, :, :, :], _float_signature],
NDArray[float, :, :, :]],
Fun[[NDArray[int, :, :, :], _float_signature],
NDArray[float, :, :, :]],
Fun[[NDArray[float, :, :, :], _float_signature],
NDArray[float, :, :, :]],
Fun[[NDArray[complex, :, :, :], _float_signature],
NDArray[float, :, :, :]],
Fun[[NDArray[bool, :, :, :, :], _float_signature],
NDArray[float, :, :, :, :]],
Fun[[NDArray[int, :, :, :, :], _float_signature],
NDArray[float, :, :, :, :]],
Fun[[NDArray[float, :, :, :, :], _float_signature],
NDArray[float, :, :, :, :]],
Fun[[NDArray[complex, :, :, :, :], _float_signature],
NDArray[float, :, :, :, :]],
# dtype = complex
Fun[[NDArray[bool, :], _complex_signature],
NDArray[complex, :]],
Fun[[NDArray[int, :], _complex_signature],
NDArray[complex, :]],
Fun[[NDArray[float, :], _complex_signature],
NDArray[complex, :]],
Fun[[NDArray[complex, :], _complex_signature],
NDArray[complex, :]],
Fun[[NDArray[bool, :, :], _complex_signature],
NDArray[complex, :, :]],
Fun[[NDArray[int, :, :], _complex_signature],
NDArray[complex, :, :]],
Fun[[NDArray[float, :, :], _complex_signature],
NDArray[complex, :, :]],
Fun[[NDArray[complex, :, :], _complex_signature],
NDArray[complex, :, :]],
Fun[[NDArray[bool, :, :, :], _complex_signature],
NDArray[complex, :, :, :]],
Fun[[NDArray[int, :, :, :], _complex_signature],
NDArray[complex, :, :, :]],
Fun[[NDArray[float, :, :, :], _complex_signature],
NDArray[complex, :, :, :]],
Fun[[NDArray[complex, :, :, :], _complex_signature],
NDArray[complex, :, :, :]],
Fun[[NDArray[bool, :, :, :, :], _complex_signature],
NDArray[complex, :, :, :, :]],
Fun[[NDArray[int, :, :, :, :], _complex_signature],
NDArray[complex, :, :, :, :]],
Fun[[NDArray[float, :, :, :, :], _complex_signature],
NDArray[complex, :, :, :, :]],
Fun[[NDArray[complex, :, :, :, :], _complex_signature],
NDArray[complex, :, :, :, :]],
]
),
"dtype": AttributeIntr(),
"fill": MethodIntr(
signature=Union[
# 1d
Fun[[NDArray[bool, :], bool], None],
Fun[[NDArray[int, :], int], None],
Fun[[NDArray[float, :], float], None],
Fun[[NDArray[complex, :], complex], None],
# 2d
Fun[[NDArray[bool, :, :], bool], None],
Fun[[NDArray[int, :, :], int], None],
Fun[[NDArray[float, :, :], float], None],
Fun[[NDArray[complex, :, :], complex], None],
# 3d
Fun[[NDArray[bool, :, :, :], bool], None],
Fun[[NDArray[int, :, :, :], int], None],
Fun[[NDArray[float, :, :, :], float], None],
Fun[[NDArray[complex, :, :, :], complex], None],
# 4d
Fun[[NDArray[bool, :, :, :, :], bool], None],
Fun[[NDArray[int, :, :, :, :], int], None],
Fun[[NDArray[float, :, :, :, :], float], None],
Fun[[NDArray[complex, :, :, :, :], complex], None],
],
),
"flat": AttributeIntr(
signature=Union[
# 1d
Fun[[NDArray[bool, :]], Generator[bool]],
Fun[[NDArray[int, :]], Generator[int]],
Fun[[NDArray[float, :]], Generator[float]],
Fun[[NDArray[complex, :]], Generator[complex]],
# 2d
Fun[[NDArray[bool, :, :]], Generator[bool]],
Fun[[NDArray[int, :, :]], Generator[int]],
Fun[[NDArray[float, :, :]], Generator[float]],
Fun[[NDArray[complex, :, :]], Generator[complex]],
# 3d
Fun[[NDArray[bool, :, :, :]], Generator[bool]],
Fun[[NDArray[int, :, :, :]], Generator[int]],
Fun[[NDArray[float, :, :, :]], Generator[float]],
Fun[[NDArray[complex, :, :, :]], Generator[complex]],
# 4d
Fun[[NDArray[bool, :, :, :, :]], Generator[bool]],
Fun[[NDArray[int, :, :, :, :]], Generator[int]],
Fun[[NDArray[float, :, :, :, :]], Generator[float]],
Fun[[NDArray[complex, :, :, :, :]], Generator[complex]],
]
),
"flatten": MethodIntr(
signature=Union[
# 1d
Fun[[NDArray[bool, :]], NDArray[bool, :]],
Fun[[NDArray[int, :]], NDArray[int, :]],
Fun[[NDArray[float, :]], NDArray[float, :]],
Fun[[NDArray[complex, :]], NDArray[complex, :]],
# 2d
Fun[[NDArray[bool, :, :]], NDArray[bool, :]],
Fun[[NDArray[int, :, :]], NDArray[int, :]],
Fun[[NDArray[float, :, :]], NDArray[float, :]],
Fun[[NDArray[complex, :, :]], NDArray[complex, :]],
# 3d
Fun[[NDArray[bool, :, :, :]], NDArray[bool, :]],
Fun[[NDArray[int, :, :, :]], NDArray[int, :]],
Fun[[NDArray[float, :, :, :]], NDArray[float, :]],
Fun[[NDArray[complex, :, :, :]], NDArray[complex, :]],
# 4d
Fun[[NDArray[bool, :, :, :, :]], NDArray[bool, :]],
Fun[[NDArray[int, :, :, :, :]], NDArray[int, :]],
Fun[[NDArray[float, :, :, :, :]], NDArray[float, :]],
Fun[[NDArray[complex, :, :, :, :]], NDArray[complex, :]],
]
),
"item": MethodIntr(
signature=Union[
# item = int
# 1d
Fun[[NDArray[bool, :], int], bool],
Fun[[NDArray[int, :], int], int],
Fun[[NDArray[float, :], int], float],
Fun[[NDArray[complex, :], int], complex],
# 2d
Fun[[NDArray[bool, :, :], int], bool],
Fun[[NDArray[int, :, :], int], int],
Fun[[NDArray[float, :, :], int], float],
Fun[[NDArray[complex, :, :], int], complex],
# 3d
Fun[[NDArray[bool, :, :, :], int], bool],
Fun[[NDArray[int, :, :, :], int], int],
Fun[[NDArray[float, :, :, :], int], float],
Fun[[NDArray[complex, :, :, :], int], complex],
# 4d
Fun[[NDArray[bool, :, :, :, :], int], bool],
Fun[[NDArray[int, :, :, :, :], int], int],
Fun[[NDArray[float, :, :, :, :], int], float],
Fun[[NDArray[complex, :, :, :, :], int], complex],
# item = tuple
# 1d
Fun[[NDArray[bool, :], Tuple[int]], bool],
Fun[[NDArray[int, :], Tuple[int]], int],
Fun[[NDArray[float, :], Tuple[int]], float],
Fun[[NDArray[complex, :], Tuple[int]], complex],
# 2d
Fun[[NDArray[bool, :, :], Tuple[int, int]], bool],
Fun[[NDArray[int, :, :], Tuple[int, int]], int],
Fun[[NDArray[float, :, :], Tuple[int, int]], float],
Fun[[NDArray[complex, :, :], Tuple[int, int]], complex],
# 3d
Fun[[NDArray[bool, :, :, :], Tuple[int, int, int]], bool],
Fun[[NDArray[int, :, :, :], Tuple[int, int, int]], int],
Fun[[NDArray[float, :, :, :], Tuple[int, int, int]], float],
Fun[[NDArray[complex, :, :, :], Tuple[int, int, int]],
complex],
# 4d
Fun[[NDArray[bool, :, :, :, :], Tuple[int, int, int, int]],
bool],
Fun[[NDArray[int, :, :, :, :], Tuple[int, int, int, int]],
int],
Fun[[NDArray[float, :, :, :, :], Tuple[int, int, int, int]],
float],
Fun[[NDArray[complex, :, :, :, :], Tuple[int, int, int, int]],
complex],
]
),
"itemsize": AttributeIntr(signature=Fun[[NDArray[T0, :]], int],
return_range=interval.positive_values),
"nbytes": AttributeIntr(
signature=Fun[[NDArray[T0, :]], int],
return_range=interval.positive_values
),
"ndim": AttributeIntr(signature=Fun[[NDArray[T0, :]], int],
return_range=interval.positive_values),
"reshape": ConstMethodIntr(
signature=Union[
Fun[[NDArray[T0, :], int], NDArray[T1, :]],
Fun[[NDArray[T0, :], Tuple[int]], NDArray[T1, :]],
Fun[[NDArray[T0, :], int, int], NDArray[T1, :, :]],
Fun[[NDArray[T0, :], Tuple[int, int]], NDArray[T1, :, :]],
Fun[[NDArray[T0, :], int, int, int],
NDArray[T1, :, :, :]],
Fun[[NDArray[T0, :], Tuple[int, int, int]],
NDArray[T1, :, :, :]],
Fun[[NDArray[T0, :], int, int, int, int],
NDArray[T1, :, :, :, :]],
Fun[[NDArray[T0, :], Tuple[int, int, int, int]],
NDArray[T1, :, :, :, :]],
]
),
"shape": AttributeIntr(
signature=Union[
# bool
Fun[[NDArray[bool, :]], Tuple[int]],
Fun[[NDArray[bool, :, :]], Tuple[int, int]],
Fun[[NDArray[bool, :, :, :]], Tuple[int, int, int]],
Fun[[NDArray[bool, :, :, :, :]], Tuple[int, int, int, int]],
# int
Fun[[NDArray[int, :]], Tuple[int]],
Fun[[NDArray[int, :, :]], Tuple[int, int]],
Fun[[NDArray[int, :, :, :]], Tuple[int, int, int]],
Fun[[NDArray[int, :, :, :, :]], Tuple[int, int, int, int]],
# float
Fun[[NDArray[float, :]], Tuple[int]],
Fun[[NDArray[float, :, :]], Tuple[int, int]],
Fun[[NDArray[float, :, :, :]], Tuple[int, int, int]],
Fun[[NDArray[float, :, :, :, :]], Tuple[int, int, int, int]],
# complex
Fun[[NDArray[complex, :]], Tuple[int]],
Fun[[NDArray[complex, :, :]], Tuple[int, int]],
Fun[[NDArray[complex, :, :, :]], Tuple[int, int, int]],
Fun[[NDArray[complex, :, :, :, :]], Tuple[int, int, int, int]],
],
return_range_content=interval.positive_values
),
"size": AttributeIntr(signature=Fun[[NDArray[T0, :]], int],
return_range=interval.positive_values),
"sort": MethodIntr(
args=("self", "axis", "kind"),
defaults=(-1, None)
),
"strides": AttributeIntr(
signature=Union[
# bool
Fun[[NDArray[bool, :]], Tuple[int]],
Fun[[NDArray[bool, :, :]], Tuple[int, int]],
Fun[[NDArray[bool, :, :, :]], Tuple[int, int, int]],
Fun[[NDArray[bool, :, :, :, :]], Tuple[int, int, int, int]],
# int
Fun[[NDArray[int, :]], Tuple[int]],
Fun[[NDArray[int, :, :]], Tuple[int, int]],
Fun[[NDArray[int, :, :, :]], Tuple[int, int, int]],
Fun[[NDArray[int, :, :, :, :]], Tuple[int, int, int, int]],
# float
Fun[[NDArray[float, :]], Tuple[int]],
Fun[[NDArray[float, :, :]], Tuple[int, int]],
Fun[[NDArray[float, :, :, :]], Tuple[int, int, int]],
Fun[[NDArray[float, :, :, :, :]], Tuple[int, int, int, int]],
# complex
Fun[[NDArray[complex, :]], Tuple[int]],
Fun[[NDArray[complex, :, :]], Tuple[int, int]],
Fun[[NDArray[complex, :, :, :]], Tuple[int, int, int]],
Fun[[NDArray[complex, :, :, :, :]], Tuple[int, int, int, int]],
]
),
"T": AttributeIntr(signature=Fun[[NDArray[T0, :]], NDArray[T0, :]]),
"tolist": ConstMethodIntr(
signature=Union[
# 1d
Fun[[NDArray[bool, :]], List[bool]],
Fun[[NDArray[int, :]], List[int]],
Fun[[NDArray[float, :]], List[float]],
Fun[[NDArray[complex, :]], List[complex]],
# 2d
Fun[[NDArray[bool, :, :]], List[bool]],
Fun[[NDArray[int, :, :]], List[int]],
Fun[[NDArray[float, :, :]], List[float]],
Fun[[NDArray[complex, :, :]], List[complex]],
# 3d
Fun[[NDArray[bool, :, :, :]], List[bool]],
Fun[[NDArray[int, :, :, :]], List[int]],
Fun[[NDArray[float, :, :, :]], List[float]],
Fun[[NDArray[complex, :, :, :]], List[complex]],
# 4d
Fun[[NDArray[bool, :, :, :, :]], List[bool]],
Fun[[NDArray[int, :, :, :, :]], List[int]],
Fun[[NDArray[float, :, :, :, :]], List[float]],
Fun[[NDArray[complex, :, :, :, :]], List[complex]],
]
),
"tofile": ConstMethodIntr(signature=Fun[[NDArray[T0, :]], str, str], global_effects=True),
"tostring": ConstMethodIntr(signature=Fun[[NDArray[T0, :]], str]),
},
}
_numpy_ones_signature = Union[
# 1d
Fun[[int], NDArray[float, :]],
Fun[[int, _bool_signature], NDArray[bool, :]],
Fun[[int, _int_signature], NDArray[int, :]],
Fun[[int, _float_signature], NDArray[float, :]],
Fun[[int, _complex_signature], NDArray[complex, :]],
# 1D tuple
Fun[[Tuple[int]], NDArray[float, :]],
Fun[[Tuple[int], _bool_signature], NDArray[bool, :]],
Fun[[Tuple[int], _int_signature], NDArray[int, :]],
Fun[[Tuple[int], _float_signature], NDArray[float, :]],
Fun[[Tuple[int], _complex_signature], NDArray[complex, :]],
# 2D tuple
Fun[[Tuple[int, int]], NDArray[float, :, :]],
Fun[[Tuple[int, int], _bool_signature], NDArray[bool, :, :]],
Fun[[Tuple[int, int], _int_signature], NDArray[int, :, :]],
Fun[[Tuple[int, int], _float_signature], NDArray[float, :, :]],
Fun[[Tuple[int, int], _complex_signature], NDArray[complex, :, :]],
# 3D tuple
Fun[[Tuple[int, int, int]], NDArray[float, :, :, :]],
Fun[[Tuple[int, int, int], _bool_signature], NDArray[bool, :, :, :]],
Fun[[Tuple[int, int, int], _int_signature], NDArray[int, :, :, :]],
Fun[[Tuple[int, int, int], _float_signature], NDArray[float, :, :, :]],
Fun[[Tuple[int, int, int], _complex_signature], NDArray[complex, :, :, :]],
# 4D tuple
Fun[[Tuple[int, int, int, int]], NDArray[float, :, :, :, :]],
Fun[[Tuple[int, int, int, int], _bool_signature],
NDArray[bool, :, :, :, :]],
Fun[[Tuple[int, int, int, int], _int_signature],
NDArray[int, :, :, :, :]],
Fun[[Tuple[int, int, int, int], _float_signature],
NDArray[float, :, :, :, :]],
Fun[[Tuple[int, int, int, int], _complex_signature],
NDArray[complex, :, :, :, :]],
]
_numpy_ones_like_signature = Union[
# scalar
Fun[[bool], bool],
Fun[[int], int],
Fun[[float], float],
Fun[[complex], complex],
# scalar + None
Fun[[bool, None], bool],
Fun[[int, None], int],
Fun[[float, None], float],
Fun[[complex, None], complex],
# scalar + dtype
Fun[[bool, _bool_signature], bool],
Fun[[bool, _int_signature], int],
Fun[[bool, _float_signature], float],
Fun[[bool, _complex_signature], complex],
Fun[[int, _bool_signature], bool],
Fun[[int, _int_signature], int],
Fun[[int, _float_signature], float],
Fun[[int, _complex_signature], complex],
Fun[[complex, _bool_signature], bool],
Fun[[complex, _int_signature], int],
Fun[[complex, _float_signature], float],
Fun[[complex, _complex_signature], complex],
# array 1D
Fun[[Iterable[bool]], NDArray[bool, :]],
Fun[[Iterable[int]], NDArray[int, :]],
Fun[[Iterable[float]], NDArray[float, :]],
Fun[[Iterable[complex]], NDArray[complex, :]],
# array 2d
Fun[[Iterable[Iterable[bool]]], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[int]]], NDArray[int, :, :]],
Fun[[Iterable[Iterable[float]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[complex]]], NDArray[complex, :, :]],
# array 3d
Fun[[Iterable[Iterable[Iterable[bool]]]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]]], NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]], _float_signature],
NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]]], NDArray[complex, :, :, :]],
# array 4d
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]]],
NDArray[bool, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]]],
NDArray[int, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]]],
NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]]],
NDArray[complex, :, :, :, :]],
# with dtype
]
_numpy_unary_op_signature = Union[
# 1d
Fun[[bool], bool],
Fun[[int], int],
Fun[[float], float],
Fun[[complex], complex],
# 1d Iterable
Fun[[Iterable[bool]], NDArray[bool, :]],
Fun[[Iterable[int]], NDArray[int, :]],
Fun[[Iterable[float]], NDArray[float, :]],
Fun[[Iterable[complex]], NDArray[complex, :]],
# 2d Iterable
Fun[[Iterable[Iterable[bool]]], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[int]]], NDArray[int, :, :]],
Fun[[Iterable[Iterable[float]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[complex]]], NDArray[complex, :, :]],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]]], NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]]], NDArray[complex, :, :, :]],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]]],
NDArray[bool, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]]],
NDArray[int, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]]],
NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]]],
NDArray[complex, :, :, :, :]],
]
_numpy_float_unary_op_signature = Union[
# 1d
Fun[[bool], float],
Fun[[int], float],
Fun[[float], float],
# 1d Iterable
Fun[[Iterable[bool]], NDArray[float, :]],
Fun[[Iterable[int]], NDArray[float, :]],
Fun[[Iterable[float]], NDArray[float, :]],
# 2d Iterable
Fun[[Iterable[Iterable[bool]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[int]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]]], NDArray[float, :, :]],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]]], NDArray[float, :, :, :]],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]]],
NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]]],
NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]]],
NDArray[float, :, :, :, :]],
]
_numpy_int_unary_op_signature = Union[
# 1d
Fun[[bool], bool],
Fun[[int], int],
# 1d Iterable
Fun[[Iterable[bool]], NDArray[bool, :]],
Fun[[Iterable[int]], NDArray[int, :]],
# 2d Iterable
Fun[[Iterable[Iterable[bool]]], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[int]]], NDArray[int, :, :]],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]]], NDArray[int, :, :, :]],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]]],
NDArray[bool, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]]],
NDArray[int, :, :, :, :]],
]
_numpy_unary_op_angle_signature = Union[
# no extra option
# 1d
Fun[[bool], float],
Fun[[int], float],
Fun[[float], float],
Fun[[complex], float],
# 1d Iterable
Fun[[Iterable[bool]], NDArray[float, :]],
Fun[[Iterable[int]], NDArray[float, :]],
Fun[[Iterable[float]], NDArray[float, :]],
Fun[[Iterable[complex]], NDArray[float, :]],
# 2d Iterable
Fun[[Iterable[Iterable[bool]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[int]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[complex]]], NDArray[float, :, :]],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]]], NDArray[float, :, :, :]],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]]],
NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]]],
NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]]],
NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]]],
NDArray[float, :, :, :, :]],
# extra option
# 1d
Fun[[bool, bool], float],
Fun[[int, bool], float],
Fun[[float, bool], float],
Fun[[complex, bool], float],
# 1d Iterable
Fun[[Iterable[bool], bool], NDArray[float, :]],
Fun[[Iterable[int], bool], NDArray[float, :]],
Fun[[Iterable[float], bool], NDArray[float, :]],
Fun[[Iterable[complex], bool], NDArray[float, :]],
# 2d Iterable
Fun[[Iterable[Iterable[bool]], bool], NDArray[float, :, :]],
Fun[[Iterable[Iterable[int]], bool], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]], bool], NDArray[float, :, :]],
Fun[[Iterable[Iterable[complex]], bool], NDArray[float, :, :]],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]], bool], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], bool], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]], bool], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]], bool],
NDArray[float, :, :, :]],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]], bool],
NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]], bool],
NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]], bool],
NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]], bool],
NDArray[float, :, :, :, :]],
]
_numpy_array_str_signature = Union[
tuple(Fun[[NDArray[(dtype,) + slices]], str]
for dtype in (bool, int, float, complex)
for slices in [(slice(0),) * i
for i in range(1, 5)])
]
_numpy_float_unary_op_float_signature = Union[
# 1d
Fun[[bool], float],
Fun[[int], float],
Fun[[float], float],
# 1d Iterable
Fun[[Iterable[bool]], NDArray[float, :]],
Fun[[Iterable[int]], NDArray[float, :]],
Fun[[Iterable[float]], NDArray[float, :]],
# 2d Iterable
Fun[[Iterable[Iterable[bool]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[int]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]]], NDArray[float, :, :]],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]]], NDArray[float, :, :, :]],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]]],
NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]]],
NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]]],
NDArray[float, :, :, :, :]],
]
_numpy_unary_op_float_signature = Union[
# 1d
Fun[[bool], float],
Fun[[int], float],
Fun[[float], float],
Fun[[complex], complex],
# 1d Iterable
Fun[[Iterable[bool]], NDArray[float, :]],
Fun[[Iterable[int]], NDArray[float, :]],
Fun[[Iterable[float]], NDArray[float, :]],
Fun[[Iterable[complex]], NDArray[complex, :]],
# 2d Iterable
Fun[[Iterable[Iterable[bool]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[int]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[complex]]], NDArray[complex, :, :]],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]]], NDArray[complex, :, :, :]],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]]],
NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]]],
NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]]],
NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]]],
NDArray[complex, :, :, :, :]],
]
_numpy_unary_op_int_signature = Union[
# 1d
Fun[[bool], int],
Fun[[int], int],
Fun[[float], int],
Fun[[complex], int],
# 1d Iterable
Fun[[Iterable[bool]], NDArray[int, :]],
Fun[[Iterable[int]], NDArray[int, :]],
Fun[[Iterable[float]], NDArray[int, :]],
Fun[[Iterable[complex]], NDArray[int, :]],
# 2d Iterable
Fun[[Iterable[Iterable[bool]]], NDArray[int, :, :]],
Fun[[Iterable[Iterable[int]]], NDArray[int, :, :]],
Fun[[Iterable[Iterable[float]]], NDArray[int, :, :]],
Fun[[Iterable[Iterable[complex]]], NDArray[int, :, :]],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]]], NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]]], NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]]], NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]]], NDArray[int, :, :, :]],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]]],
NDArray[int, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]]],
NDArray[int, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]]],
NDArray[int, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]]],
NDArray[int, :, :, :, :]],
]
_numpy_unary_op_axis_signature = Union[
# no axis
# 1d
Fun[[bool], bool],
Fun[[int], int],
Fun[[float], float],
Fun[[complex], complex],
# 1d Iterable
Fun[[Iterable[bool]], bool],
Fun[[Iterable[int]], int],
Fun[[Iterable[float]], float],
Fun[[Iterable[complex]], complex],
# 2d Iterable
Fun[[Iterable[Iterable[bool]]], bool],
Fun[[Iterable[Iterable[int]]], int],
Fun[[Iterable[Iterable[float]]], float],
Fun[[Iterable[Iterable[complex]]], complex],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]]], bool],
Fun[[Iterable[Iterable[Iterable[int]]]], int],
Fun[[Iterable[Iterable[Iterable[float]]]], float],
Fun[[Iterable[Iterable[Iterable[complex]]]], complex],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]]], bool],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]]], int],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]]], float],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]]], complex],
# axis
# 1d Iterable
Fun[[Iterable[bool], int], bool],
Fun[[Iterable[int], int], int],
Fun[[Iterable[float], int], float],
Fun[[Iterable[complex], int], complex],
# 2d Iterable
Fun[[Iterable[Iterable[bool]], int], NDArray[bool, :]],
Fun[[Iterable[Iterable[int]], int], NDArray[int, :]],
Fun[[Iterable[Iterable[float]], int], NDArray[float, :]],
Fun[[Iterable[Iterable[complex]], int], NDArray[complex, :]],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]], int], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], int], NDArray[int, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]], int], NDArray[float, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]], int], NDArray[complex, :, :]],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]], int],
NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]], int],
NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]], int],
NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]], int],
NDArray[complex, :, :, :]],
]
_numpy_unary_op_int_axis_signature = Union[
# no axis
# 1d
Fun[[bool], int],
Fun[[int], int],
Fun[[float], int],
Fun[[complex], int],
# 1d Iterable
Fun[[Iterable[bool]], int],
Fun[[Iterable[int]], int],
Fun[[Iterable[float]], int],
Fun[[Iterable[complex]], int],
# 2d Iterable
Fun[[Iterable[Iterable[bool]]], int],
Fun[[Iterable[Iterable[int]]], int],
Fun[[Iterable[Iterable[float]]], int],
Fun[[Iterable[Iterable[complex]]], int],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]]], int],
Fun[[Iterable[Iterable[Iterable[int]]]], int],
Fun[[Iterable[Iterable[Iterable[float]]]], int],
Fun[[Iterable[Iterable[Iterable[complex]]]], int],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]]], int],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]]], int],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]]], int],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]]], int],
# axis
# 1d Iterable
Fun[[Iterable[bool], int], int],
Fun[[Iterable[int], int], int],
Fun[[Iterable[float], int], int],
Fun[[Iterable[complex], int], int],
# 2d Iterable
Fun[[Iterable[Iterable[bool]], int], NDArray[int, :]],
Fun[[Iterable[Iterable[int]], int], NDArray[int, :]],
Fun[[Iterable[Iterable[float]], int], NDArray[int, :]],
Fun[[Iterable[Iterable[complex]], int], NDArray[int, :]],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]], int], NDArray[int, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], int], NDArray[int, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]], int], NDArray[int, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]], int], NDArray[int, :, :]],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]], int],
NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]], int],
NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]], int],
NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]], int],
NDArray[int, :, :, :]],
]
_numpy_unary_op_sum_axis_signature = Union[
# no axis
# 1d
Fun[[bool], int],
Fun[[int], int],
Fun[[float], float],
Fun[[complex], complex],
# 1d Iterable
Fun[[Iterable[bool]], int],
Fun[[Iterable[int]], int],
Fun[[Iterable[float]], float],
Fun[[Iterable[complex]], complex],
# 2d Iterable
Fun[[Iterable[Iterable[bool]]], int],
Fun[[Iterable[Iterable[int]]], int],
Fun[[Iterable[Iterable[float]]], float],
Fun[[Iterable[Iterable[complex]]], complex],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]]], int],
Fun[[Iterable[Iterable[Iterable[int]]]], int],
Fun[[Iterable[Iterable[Iterable[float]]]], float],
Fun[[Iterable[Iterable[Iterable[complex]]]], complex],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]]], int],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]]], int],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]]], float],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]]], complex],
# axis
# 1d
Fun[[bool, int], int],
Fun[[int, int], int],
Fun[[float, int], float],
Fun[[complex, int], complex],
# 1d Iterable
Fun[[Iterable[bool], int], int],
Fun[[Iterable[int], int], int],
Fun[[Iterable[float], int], float],
Fun[[Iterable[complex], int], complex],
# 2d Iterable
Fun[[Iterable[Iterable[bool]], int], NDArray[int, :]],
Fun[[Iterable[Iterable[int]], int], NDArray[int, :]],
Fun[[Iterable[Iterable[float]], int], NDArray[float, :]],
Fun[[Iterable[Iterable[complex]], int], NDArray[complex, :]],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]], int], NDArray[int, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], int], NDArray[int, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]], int], NDArray[float, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]], int], NDArray[complex, :, :]],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]], int],
NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]], int],
NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]], int],
NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]], int],
NDArray[complex, :, :, :]],
]
_numpy_unary_op_cumsum_axis_signature = Union[
# no axis
# 1d
Fun[[bool], NDArray[int, :]],
Fun[[int], NDArray[int, :]],
Fun[[float], NDArray[float, :]],
Fun[[complex], NDArray[complex, :]],
# 1d Iterable
Fun[[Iterable[bool]], NDArray[int, :]],
Fun[[Iterable[int]], NDArray[int, :]],
Fun[[Iterable[float]], NDArray[float, :]],
Fun[[Iterable[complex]], NDArray[complex, :]],
# 2d Iterable
Fun[[Iterable[Iterable[bool]]], NDArray[int, :]],
Fun[[Iterable[Iterable[int]]], NDArray[int, :]],
Fun[[Iterable[Iterable[float]]], NDArray[float, :]],
Fun[[Iterable[Iterable[complex]]], NDArray[complex, :]],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]]], NDArray[int, :]],
Fun[[Iterable[Iterable[Iterable[int]]]], NDArray[int, :]],
Fun[[Iterable[Iterable[Iterable[float]]]], NDArray[float, :]],
Fun[[Iterable[Iterable[Iterable[complex]]]], NDArray[complex, :]],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]]], NDArray[int, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]]], NDArray[int, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]]], NDArray[float, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]]],
NDArray[complex, :]],
# axis
# 1d
Fun[[bool, int], NDArray[int, :]],
Fun[[int, int], NDArray[int, :]],
Fun[[float, int], NDArray[float, :]],
Fun[[complex, int], NDArray[complex, :]],
# 1d Iterable
Fun[[Iterable[bool], int], NDArray[int, :]],
Fun[[Iterable[int], int], NDArray[int, :]],
Fun[[Iterable[float], int], NDArray[float, :]],
Fun[[Iterable[complex], int], NDArray[complex, :]],
# 2d Iterable
Fun[[Iterable[Iterable[bool]], int], NDArray[int, :, :]],
Fun[[Iterable[Iterable[int]], int], NDArray[int, :, :]],
Fun[[Iterable[Iterable[float]], int], NDArray[float, :, :]],
Fun[[Iterable[Iterable[complex]], int], NDArray[complex, :, :]],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]], int], NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], int], NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]], int], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]], int],
NDArray[complex, :, :, :]],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]], int],
NDArray[int, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]], int],
NDArray[int, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]], int],
NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]], int],
NDArray[complex, :, :, :, :]],
]
_numpy_unary_op_average_axis_signature = Union[
# no axis
# 1d
Fun[[bool], float],
Fun[[int], float],
Fun[[float], float],
Fun[[complex], complex],
# 1d Iterable
Fun[[Iterable[bool]], float],
Fun[[Iterable[int]], float],
Fun[[Iterable[float]], float],
Fun[[Iterable[complex]], complex],
# 2d Iterable
Fun[[Iterable[Iterable[bool]]], float],
Fun[[Iterable[Iterable[int]]], float],
Fun[[Iterable[Iterable[float]]], float],
Fun[[Iterable[Iterable[complex]]], complex],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]]], float],
Fun[[Iterable[Iterable[Iterable[int]]]], float],
Fun[[Iterable[Iterable[Iterable[float]]]], float],
Fun[[Iterable[Iterable[Iterable[complex]]]], complex],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]]], float],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]]], float],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]]], float],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]]], complex],
# axis None
# 1d
Fun[[bool, None], float],
Fun[[int, None], float],
Fun[[float, None], float],
Fun[[complex, None], complex],
# 1d Iterable
Fun[[Iterable[bool], None], float],
Fun[[Iterable[int], None], float],
Fun[[Iterable[float], None], float],
Fun[[Iterable[complex], None], complex],
# 2d Iterable
Fun[[Iterable[Iterable[bool]], None], float],
Fun[[Iterable[Iterable[int]], None], float],
Fun[[Iterable[Iterable[float]], None], float],
Fun[[Iterable[Iterable[complex]], None], complex],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]], None], float],
Fun[[Iterable[Iterable[Iterable[int]]], None], float],
Fun[[Iterable[Iterable[Iterable[float]]], None], float],
Fun[[Iterable[Iterable[Iterable[complex]]], None], complex],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]], None], float],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]], None], float],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]], None], float],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]], None], complex],
# axis
# 1d
Fun[[bool, int], float],
Fun[[int, int], float],
Fun[[float, int], float],
Fun[[complex, int], complex],
# 1d Iterable
Fun[[Iterable[bool], int], float],
Fun[[Iterable[int], int], float],
Fun[[Iterable[float], int], float],
Fun[[Iterable[complex], int], complex],
# 2d Iterable
Fun[[Iterable[Iterable[bool]], int], NDArray[float, :]],
Fun[[Iterable[Iterable[int]], int], NDArray[float, :]],
Fun[[Iterable[Iterable[float]], int], NDArray[float, :]],
Fun[[Iterable[Iterable[complex]], int], NDArray[complex, :]],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]], int], NDArray[float, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], int], NDArray[float, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]], int], NDArray[float, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]], int], NDArray[complex, :, :]],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]], int],
NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]], int],
NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]], int],
NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]], int],
NDArray[complex, :, :, :]],
# axis None + weight
# 1d
Fun[[bool, None, float], float],
Fun[[int, None, float], float],
Fun[[float, None, float], float],
Fun[[complex, None, float], complex],
# 1d Iterable
Fun[[Iterable[bool], None, Iterable[float]], float],
Fun[[Iterable[int], None, Iterable[float]], float],
Fun[[Iterable[float], None, Iterable[float]], float],
Fun[[Iterable[complex], None, Iterable[float]], complex],
# 2d Iterable
Fun[[Iterable[Iterable[bool]], None, Iterable[float]], float],
Fun[[Iterable[Iterable[int]], None, Iterable[float]], float],
Fun[[Iterable[Iterable[float]], None, Iterable[float]], float],
Fun[[Iterable[Iterable[complex]], None, Iterable[float]], complex],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]], None, Iterable[float]], float],
Fun[[Iterable[Iterable[Iterable[int]]], None, Iterable[float]], float],
Fun[[Iterable[Iterable[Iterable[float]]], None, Iterable[float]], float],
Fun[[Iterable[Iterable[Iterable[complex]]], None, Iterable[float]],
complex],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]], None, Iterable[float]],
float],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]], None, Iterable[float]],
float],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]], None, Iterable[float]],
float],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]],
None, Iterable[float]], complex],
# axis
# 1d
Fun[[bool, int, float], float],
Fun[[int, int, float], float],
Fun[[float, int, float], float],
Fun[[complex, int, float], complex],
# 1d Iterable
Fun[[Iterable[bool], int, Iterable[float]], float],
Fun[[Iterable[int], int, Iterable[float]], float],
Fun[[Iterable[float], int, Iterable[float]], float],
Fun[[Iterable[complex], int, Iterable[float]], complex],
# 2d Iterable
Fun[[Iterable[Iterable[bool]], int, Iterable[Iterable[bool]]],
NDArray[float, :]],
Fun[[Iterable[Iterable[int]], int, Iterable[Iterable[int]]],
NDArray[float, :]],
Fun[[Iterable[Iterable[float]], int, Iterable[
Iterable[float]]], NDArray[float, :]],
Fun[[Iterable[Iterable[complex]], int, Iterable[
Iterable[complex]]], NDArray[complex, :]],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]], int, Iterable[
Iterable[Iterable[bool]]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], int, Iterable[
Iterable[Iterable[int]]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]], int, Iterable[
Iterable[Iterable[float]]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]], int, Iterable[
Iterable[Iterable[complex]]]], NDArray[complex, :, :]],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]], int, Iterable[
Iterable[Iterable[Iterable[bool]]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]], int, Iterable[
Iterable[Iterable[Iterable[int]]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]], int, Iterable[
Iterable[Iterable[Iterable[float]]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]], int, Iterable[
Iterable[Iterable[Iterable[complex]]]]], NDArray[complex, :, :, :]],
]
_numpy_unary_op_bool_axis_signature = Union[
# no axis
# 1d
Fun[[bool], bool],
Fun[[int], bool],
Fun[[float], bool],
Fun[[complex], bool],
# 1d Iterable
Fun[[Iterable[bool]], bool],
Fun[[Iterable[int]], bool],
Fun[[Iterable[float]], bool],
Fun[[Iterable[complex]], bool],
# 2d Iterable
Fun[[Iterable[Iterable[bool]]], bool],
Fun[[Iterable[Iterable[int]]], bool],
Fun[[Iterable[Iterable[float]]], bool],
Fun[[Iterable[Iterable[complex]]], bool],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]]], bool],
Fun[[Iterable[Iterable[Iterable[int]]]], bool],
Fun[[Iterable[Iterable[Iterable[float]]]], bool],
Fun[[Iterable[Iterable[Iterable[complex]]]], bool],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]]], bool],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]]], bool],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]]], bool],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]]], bool],
# axis
# 1d
Fun[[bool, int], bool],
Fun[[int, int], bool],
Fun[[float, int], bool],
Fun[[complex, int], bool],
# 1d Iterable
Fun[[Iterable[bool], int], bool],
Fun[[Iterable[int], int], bool],
Fun[[Iterable[float], int], bool],
Fun[[Iterable[complex], int], bool],
# 2d Iterable
Fun[[Iterable[Iterable[bool]], int], NDArray[bool, :]],
Fun[[Iterable[Iterable[int]], int], NDArray[bool, :]],
Fun[[Iterable[Iterable[float]], int], NDArray[bool, :]],
Fun[[Iterable[Iterable[complex]], int], NDArray[bool, :]],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]], int], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], int], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]], int], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]], int], NDArray[bool, :, :]],
# 4d Iterable
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]], int],
NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]], int],
NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]], int],
NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]], int],
NDArray[bool, :, :, :]],
]
_numpy_binary_op_signature = Union[
# 1d
Fun[[bool, bool], bool],
Fun[[int, int], int],
Fun[[float, float], float],
Fun[[complex, complex], complex],
# 1d Iterable
Fun[[Iterable[bool], Iterable[bool]], NDArray[bool, :]],
Fun[[Iterable[bool], bool], NDArray[bool, :]],
Fun[[bool, Iterable[bool]], NDArray[bool, :]],
Fun[[Iterable[int], Iterable[int]], NDArray[int, :]],
Fun[[Iterable[int], int], NDArray[int, :]],
Fun[[int, Iterable[int]], NDArray[int, :]],
Fun[[Iterable[float], Iterable[float]], NDArray[float, :]],
Fun[[Iterable[float], float], NDArray[float, :]],
Fun[[float, Iterable[float]], NDArray[float, :]],
Fun[[Iterable[complex], Iterable[complex]], NDArray[complex, :]],
Fun[[Iterable[complex], complex], NDArray[complex, :]],
Fun[[complex, Iterable[complex]], NDArray[complex, :]],
# 2d Iterable
Fun[[Iterable[Iterable[bool]], Iterable[Iterable[bool]]],
NDArray[bool, :, :]],
Fun[[Iterable[bool], Iterable[Iterable[bool]]], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[bool]], Iterable[bool]], NDArray[bool, :, :]],
Fun[[bool, Iterable[Iterable[bool]]], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[bool]], bool], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[int]], Iterable[Iterable[int]]],
NDArray[int, :, :]],
Fun[[Iterable[int], Iterable[Iterable[int]]], NDArray[int, :, :]],
Fun[[Iterable[Iterable[int]], Iterable[int]], NDArray[int, :, :]],
Fun[[int, Iterable[Iterable[int]]], NDArray[int, :, :]],
Fun[[Iterable[Iterable[int]], int], NDArray[int, :, :]],
Fun[[Iterable[Iterable[float]], Iterable[Iterable[float]]],
NDArray[float, :, :]],
Fun[[Iterable[float], Iterable[Iterable[float]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]], Iterable[float]], NDArray[float, :, :]],
Fun[[float, Iterable[Iterable[float]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]], float], NDArray[float, :, :]],
Fun[[Iterable[Iterable[complex]], Iterable[
Iterable[complex]]], NDArray[complex, :, :]],
Fun[[Iterable[complex], Iterable[Iterable[complex]]],
NDArray[complex, :, :]],
Fun[[Iterable[Iterable[complex]], Iterable[complex]],
NDArray[complex, :, :]],
Fun[[complex, Iterable[Iterable[complex]]], NDArray[complex, :, :]],
Fun[[Iterable[Iterable[complex]], complex], NDArray[complex, :, :]],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]], Iterable[
Iterable[Iterable[bool]]]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[bool]], Iterable[
Iterable[Iterable[bool]]]], NDArray[bool, :, :, :]],
Fun[[Iterable[bool], Iterable[Iterable[Iterable[bool]]]],
NDArray[bool, :, :, :]],
Fun[[bool, Iterable[Iterable[Iterable[bool]]]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[bool]]], Iterable[
Iterable[bool]]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[bool]]], Iterable[bool]],
NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[bool]]], bool], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], Iterable[
Iterable[Iterable[int]]]], NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[int]], Iterable[
Iterable[Iterable[int]]]], NDArray[int, :, :, :]],
Fun[[Iterable[int], Iterable[Iterable[Iterable[int]]]],
NDArray[int, :, :, :]],
Fun[[int, Iterable[Iterable[Iterable[int]]]], NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], Iterable[
Iterable[int]]], NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], Iterable[int]],
NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], int],
NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]], Iterable[
Iterable[Iterable[float]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[float]], Iterable[
Iterable[Iterable[float]]]], NDArray[float, :, :, :]],
Fun[[Iterable[float], Iterable[Iterable[Iterable[float]]]],
NDArray[float, :, :, :]],
Fun[[float, Iterable[Iterable[Iterable[float]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]], Iterable[
Iterable[float]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]],
Iterable[float]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]], float], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]], Iterable[
Iterable[Iterable[complex]]]], NDArray[complex, :, :, :]],
Fun[[Iterable[Iterable[complex]], Iterable[
Iterable[Iterable[complex]]]], NDArray[complex, :, :, :]],
Fun[[Iterable[complex], Iterable[Iterable[Iterable[complex]]]],
NDArray[complex, :, :, :]],
Fun[[complex, Iterable[Iterable[Iterable[complex]]]],
NDArray[complex, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]], Iterable[
Iterable[complex]]], NDArray[complex, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]],
Iterable[complex]], NDArray[complex, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]], complex],
NDArray[complex, :, :, :]],
]
_numpy_binary_op_bool_signature = Union[
# 1d
Fun[[bool, bool], bool],
Fun[[int, int], bool],
Fun[[float, float], bool],
Fun[[complex, complex], bool],
# 1d Iterable
Fun[[Iterable[bool], Iterable[bool]], NDArray[bool, :]],
Fun[[Iterable[bool], bool], NDArray[bool, :]],
Fun[[bool, Iterable[bool]], NDArray[bool, :]],
Fun[[Iterable[int], Iterable[int]], NDArray[bool, :]],
Fun[[Iterable[int], int], NDArray[bool, :]],
Fun[[int, Iterable[int]], NDArray[bool, :]],
Fun[[Iterable[float], Iterable[float]], NDArray[bool, :]],
Fun[[Iterable[float], float], NDArray[bool, :]],
Fun[[float, Iterable[float]], NDArray[bool, :]],
Fun[[Iterable[complex], Iterable[complex]], NDArray[bool, :]],
Fun[[Iterable[complex], complex], NDArray[bool, :]],
Fun[[complex, Iterable[complex]], NDArray[bool, :]],
# 2d Iterable
Fun[[Iterable[Iterable[bool]], Iterable[Iterable[bool]]],
NDArray[bool, :, :]],
Fun[[Iterable[bool], Iterable[Iterable[bool]]], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[bool]], Iterable[bool]], NDArray[bool, :, :]],
Fun[[bool, Iterable[Iterable[bool]]], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[bool]], bool], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[int]], Iterable[Iterable[int]]],
NDArray[bool, :, :]],
Fun[[Iterable[int], Iterable[Iterable[int]]], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[int]], Iterable[int]], NDArray[bool, :, :]],
Fun[[int, Iterable[Iterable[int]]], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[int]], int], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[float]], Iterable[Iterable[float]]],
NDArray[bool, :, :]],
Fun[[Iterable[float], Iterable[Iterable[float]]], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[float]], Iterable[float]], NDArray[bool, :, :]],
Fun[[float, Iterable[Iterable[float]]], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[float]], float], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[complex]], Iterable[
Iterable[complex]]], NDArray[bool, :, :]],
Fun[[Iterable[complex], Iterable[Iterable[complex]]],
NDArray[bool, :, :]],
Fun[[Iterable[Iterable[complex]], Iterable[complex]],
NDArray[bool, :, :]],
Fun[[complex, Iterable[Iterable[complex]]], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[complex]], complex], NDArray[bool, :, :]],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]], Iterable[
Iterable[Iterable[bool]]]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[bool]], Iterable[
Iterable[Iterable[bool]]]], NDArray[bool, :, :, :]],
Fun[[Iterable[bool], Iterable[Iterable[Iterable[bool]]]],
NDArray[bool, :, :, :]],
Fun[[bool, Iterable[Iterable[Iterable[bool]]]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[bool]]], Iterable[
Iterable[bool]]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[bool]]], Iterable[bool]],
NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[bool]]], bool], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], Iterable[
Iterable[Iterable[int]]]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[int]], Iterable[
Iterable[Iterable[int]]]], NDArray[bool, :, :, :]],
Fun[[Iterable[int], Iterable[Iterable[Iterable[int]]]],
NDArray[bool, :, :, :]],
Fun[[int, Iterable[Iterable[Iterable[int]]]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], Iterable[
Iterable[int]]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], Iterable[int]],
NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], int],
NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]], Iterable[
Iterable[Iterable[float]]]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[float]], Iterable[
Iterable[Iterable[float]]]], NDArray[bool, :, :, :]],
Fun[[Iterable[float], Iterable[Iterable[Iterable[float]]]],
NDArray[bool, :, :, :]],
Fun[[float, Iterable[Iterable[Iterable[float]]]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]], Iterable[
Iterable[float]]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]],
Iterable[float]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]], float], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]], Iterable[
Iterable[Iterable[complex]]]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[complex]], Iterable[
Iterable[Iterable[complex]]]], NDArray[bool, :, :, :]],
Fun[[Iterable[complex], Iterable[Iterable[Iterable[complex]]]],
NDArray[bool, :, :, :]],
Fun[[complex, Iterable[Iterable[Iterable[complex]]]],
NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]], Iterable[
Iterable[complex]]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]],
Iterable[complex]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]], complex],
NDArray[bool, :, :, :]],
]
_numpy_binary_op_float_signature = Union[
# 1d
Fun[[bool, bool], float],
Fun[[int, int], float],
Fun[[float, float], float],
Fun[[complex, complex], complex],
# 1d Iterable
Fun[[Iterable[bool], Iterable[bool]], NDArray[float, :]],
Fun[[Iterable[bool], bool], NDArray[float, :]],
Fun[[bool, Iterable[bool]], NDArray[float, :]],
Fun[[Iterable[int], Iterable[int]], NDArray[float, :]],
Fun[[Iterable[int], int], NDArray[float, :]],
Fun[[int, Iterable[int]], NDArray[float, :]],
Fun[[Iterable[float], Iterable[float]], NDArray[float, :]],
Fun[[Iterable[float], float], NDArray[float, :]],
Fun[[float, Iterable[float]], NDArray[float, :]],
Fun[[Iterable[complex], Iterable[complex]], NDArray[complex, :]],
Fun[[Iterable[complex], complex], NDArray[complex, :]],
Fun[[complex, Iterable[complex]], NDArray[complex, :]],
# 2d Iterable
Fun[[Iterable[Iterable[bool]], Iterable[Iterable[bool]]],
NDArray[float, :, :]],
Fun[[Iterable[bool], Iterable[Iterable[bool]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[bool]], Iterable[bool]], NDArray[float, :, :]],
Fun[[bool, Iterable[Iterable[bool]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[bool]], bool], NDArray[float, :, :]],
Fun[[Iterable[Iterable[int]], Iterable[Iterable[int]]],
NDArray[float, :, :]],
Fun[[Iterable[int], Iterable[Iterable[int]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[int]], Iterable[int]], NDArray[float, :, :]],
Fun[[int, Iterable[Iterable[int]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[int]], int], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]], Iterable[Iterable[float]]],
NDArray[float, :, :]],
Fun[[Iterable[float], Iterable[Iterable[float]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]], Iterable[float]], NDArray[float, :, :]],
Fun[[float, Iterable[Iterable[float]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]], float], NDArray[float, :, :]],
Fun[[Iterable[Iterable[complex]], Iterable[
Iterable[complex]]], NDArray[complex, :, :]],
Fun[[Iterable[complex], Iterable[Iterable[complex]]],
NDArray[complex, :, :]],
Fun[[Iterable[Iterable[complex]], Iterable[complex]],
NDArray[complex, :, :]],
Fun[[complex, Iterable[Iterable[complex]]], NDArray[complex, :, :]],
Fun[[Iterable[Iterable[complex]], complex], NDArray[complex, :, :]],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]], Iterable[
Iterable[Iterable[bool]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[bool]], Iterable[
Iterable[Iterable[bool]]]], NDArray[float, :, :, :]],
Fun[[Iterable[bool], Iterable[Iterable[Iterable[bool]]]],
NDArray[float, :, :, :]],
Fun[[bool, Iterable[Iterable[Iterable[bool]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[bool]]], Iterable[
Iterable[bool]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[bool]]],
Iterable[bool]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[bool]]], bool], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], Iterable[
Iterable[Iterable[int]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[int]], Iterable[Iterable[Iterable[int]]]],
NDArray[float, :, :, :]],
Fun[[Iterable[int], Iterable[Iterable[Iterable[int]]]],
NDArray[float, :, :, :]],
Fun[[int, Iterable[Iterable[Iterable[int]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], Iterable[
Iterable[int]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], Iterable[int]],
NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], int], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]], Iterable[
Iterable[Iterable[float]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[float]], Iterable[
Iterable[Iterable[float]]]], NDArray[float, :, :, :]],
Fun[[Iterable[float], Iterable[Iterable[Iterable[float]]]],
NDArray[float, :, :, :]],
Fun[[float, Iterable[Iterable[Iterable[float]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]], Iterable[
Iterable[float]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]],
Iterable[float]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]], float], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]], Iterable[
Iterable[Iterable[complex]]]], NDArray[complex, :, :, :]],
Fun[[Iterable[Iterable[complex]], Iterable[
Iterable[Iterable[complex]]]], NDArray[complex, :, :, :]],
Fun[[Iterable[complex], Iterable[Iterable[Iterable[complex]]]],
NDArray[complex, :, :, :]],
Fun[[complex, Iterable[Iterable[Iterable[complex]]]],
NDArray[complex, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]], Iterable[
Iterable[complex]]], NDArray[complex, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]],
Iterable[complex]], NDArray[complex, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]], complex],
NDArray[complex, :, :, :]],
]
_numpy_ternary_op_signature = Union[
# scalar
Fun[[int, int, int], int],
Fun[[float, float, float], float],
Fun[[complex, complex, complex], complex],
# 1D
Fun[[Iterable[int], int, int], NDArray[int, :]],
Fun[[Iterable[int], Iterable[int], int], NDArray[int, :]],
Fun[[Iterable[int], int, Iterable[int]], NDArray[int, :]],
Fun[[Iterable[int], Iterable[int], Iterable[int]], NDArray[int, :]],
Fun[[Iterable[float], float, float], NDArray[float, :]],
Fun[[Iterable[float], Iterable[float], float], NDArray[float, :]],
Fun[[Iterable[float], float, Iterable[float]], NDArray[float, :]],
Fun[[Iterable[float], Iterable[float], Iterable[float]],
NDArray[float, :]],
Fun[[Iterable[complex], complex, complex], NDArray[complex, :]],
Fun[[Iterable[complex], Iterable[complex], complex], NDArray[complex, :]],
Fun[[Iterable[complex], complex, Iterable[complex]], NDArray[complex, :]],
Fun[[Iterable[complex], Iterable[complex],
Iterable[complex]], NDArray[complex, :]],
# 2D
Fun[[Iterable[Iterable[int]], int, int], NDArray[int, :, :]],
Fun[[Iterable[Iterable[int]], Iterable[int], int], NDArray[int, :, :]],
Fun[[Iterable[Iterable[int]], Iterable[int], Iterable[int]],
NDArray[int, :, :]],
Fun[[Iterable[Iterable[int]], int, Iterable[int]], NDArray[int, :, :]],
Fun[[Iterable[Iterable[int]], Iterable[Iterable[int]], int],
NDArray[int, :, :]],
Fun[[Iterable[Iterable[int]], int, Iterable[Iterable[int]]],
NDArray[int, :, :]],
Fun[[Iterable[Iterable[int]], Iterable[Iterable[int]],
Iterable[int]], NDArray[int, :, :]],
Fun[[Iterable[Iterable[int]], Iterable[int],
Iterable[Iterable[int]]], NDArray[int, :, :]],
Fun[[Iterable[Iterable[int]], Iterable[Iterable[int]],
Iterable[Iterable[int]]], NDArray[int, :, :]],
Fun[[Iterable[Iterable[float]], float, float], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]], Iterable[float], float],
NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]], Iterable[float],
Iterable[float]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]], float, Iterable[float]],
NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]], Iterable[
Iterable[float]], float], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]], float, Iterable[
Iterable[float]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]], Iterable[Iterable[float]],
Iterable[float]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]], Iterable[float],
Iterable[Iterable[float]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]], Iterable[Iterable[float]],
Iterable[Iterable[float]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[complex]], complex, complex],
NDArray[complex, :, :]],
Fun[[Iterable[Iterable[complex]], Iterable[
complex], complex], NDArray[complex, :, :]],
Fun[[Iterable[Iterable[complex]], Iterable[complex],
Iterable[complex]], NDArray[complex, :, :]],
Fun[[Iterable[Iterable[complex]], complex,
Iterable[complex]], NDArray[complex, :, :]],
Fun[[Iterable[Iterable[complex]], Iterable[
Iterable[complex]], complex], NDArray[complex, :, :]],
Fun[[Iterable[Iterable[complex]], complex, Iterable[
Iterable[complex]]], NDArray[complex, :, :]],
Fun[[Iterable[Iterable[complex]], Iterable[Iterable[complex]],
Iterable[complex]], NDArray[complex, :, :]],
Fun[[Iterable[Iterable[complex]], Iterable[complex],
Iterable[Iterable[complex]]], NDArray[complex, :, :]],
Fun[[Iterable[Iterable[complex]], Iterable[Iterable[complex]],
Iterable[Iterable[complex]]], NDArray[complex, :, :]],
]
_numpy_int_binary_op_signature = Union[
# 1d
Fun[[bool, bool], bool],
Fun[[int, int], int],
# 1d Iterable
Fun[[Iterable[bool], Iterable[bool]], NDArray[bool, :]],
Fun[[Iterable[bool], bool], NDArray[bool, :]],
Fun[[bool, Iterable[bool]], NDArray[bool, :]],
Fun[[Iterable[int], Iterable[int]], NDArray[int, :]],
Fun[[Iterable[int], int], NDArray[int, :]],
Fun[[int, Iterable[int]], NDArray[int, :]],
# 2d Iterable
Fun[[Iterable[Iterable[bool]], Iterable[Iterable[bool]]],
NDArray[bool, :, :]],
Fun[[Iterable[bool], Iterable[Iterable[bool]]], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[bool]], Iterable[bool]], NDArray[bool, :, :]],
Fun[[bool, Iterable[Iterable[bool]]], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[bool]], bool], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[int]], Iterable[Iterable[int]]],
NDArray[int, :, :]],
Fun[[Iterable[int], Iterable[Iterable[int]]], NDArray[int, :, :]],
Fun[[Iterable[Iterable[int]], Iterable[int]], NDArray[int, :, :]],
Fun[[int, Iterable[Iterable[int]]], NDArray[int, :, :]],
Fun[[Iterable[Iterable[int]], int], NDArray[int, :, :]],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]], Iterable[
Iterable[Iterable[bool]]]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[bool]], Iterable[
Iterable[Iterable[bool]]]], NDArray[bool, :, :, :]],
Fun[[Iterable[bool], Iterable[Iterable[Iterable[bool]]]],
NDArray[bool, :, :, :]],
Fun[[bool, Iterable[Iterable[Iterable[bool]]]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[bool]]], Iterable[
Iterable[bool]]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[bool]]], Iterable[bool]],
NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[bool]]], bool], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], Iterable[
Iterable[Iterable[int]]]], NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[int]], Iterable[
Iterable[Iterable[int]]]], NDArray[int, :, :, :]],
Fun[[Iterable[int], Iterable[Iterable[Iterable[int]]]],
NDArray[int, :, :, :]],
Fun[[int, Iterable[Iterable[Iterable[int]]]], NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], Iterable[
Iterable[int]]], NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], Iterable[int]],
NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], int], NDArray[int, :, :, :]],
]
_numpy_binary_op_float_no_complex_signature = Union[
# 1d
Fun[[bool, bool], float],
Fun[[int, int], float],
Fun[[float, float], float],
# 1d Iterable
Fun[[Iterable[bool], Iterable[bool]], NDArray[float, :]],
Fun[[Iterable[bool], bool], NDArray[float, :]],
Fun[[bool, Iterable[bool]], NDArray[float, :]],
Fun[[Iterable[int], Iterable[int]], NDArray[float, :]],
Fun[[Iterable[int], int], NDArray[float, :]],
Fun[[int, Iterable[int]], NDArray[float, :]],
Fun[[Iterable[float], Iterable[float]], NDArray[float, :]],
Fun[[Iterable[float], float], NDArray[float, :]],
Fun[[float, Iterable[float]], NDArray[float, :]],
# 2d Iterable
Fun[[Iterable[Iterable[bool]], Iterable[Iterable[bool]]],
NDArray[float, :, :]],
Fun[[Iterable[bool], Iterable[Iterable[bool]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[bool]], Iterable[bool]], NDArray[float, :, :]],
Fun[[bool, Iterable[Iterable[bool]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[bool]], bool], NDArray[float, :, :]],
Fun[[Iterable[Iterable[int]], Iterable[Iterable[int]]],
NDArray[float, :, :]],
Fun[[Iterable[int], Iterable[Iterable[int]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[int]], Iterable[int]], NDArray[float, :, :]],
Fun[[int, Iterable[Iterable[int]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[int]], int], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]], Iterable[Iterable[float]]],
NDArray[float, :, :]],
Fun[[Iterable[float], Iterable[Iterable[float]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]], Iterable[float]], NDArray[float, :, :]],
Fun[[float, Iterable[Iterable[float]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]], float], NDArray[float, :, :]],
# 3d Iterable
Fun[[Iterable[Iterable[Iterable[bool]]], Iterable[
Iterable[Iterable[bool]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[bool]], Iterable[
Iterable[Iterable[bool]]]], NDArray[float, :, :, :]],
Fun[[Iterable[bool], Iterable[Iterable[Iterable[bool]]]],
NDArray[float, :, :, :]],
Fun[[bool, Iterable[Iterable[Iterable[bool]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[bool]]], Iterable[
Iterable[bool]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[bool]]],
Iterable[bool]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[bool]]], bool], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], Iterable[
Iterable[Iterable[int]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[int]], Iterable[Iterable[Iterable[int]]]],
NDArray[float, :, :, :]],
Fun[[Iterable[int], Iterable[Iterable[Iterable[int]]]],
NDArray[float, :, :, :]],
Fun[[int, Iterable[Iterable[Iterable[int]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], Iterable[
Iterable[int]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], Iterable[int]],
NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], int], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]], Iterable[
Iterable[Iterable[float]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[float]], Iterable[
Iterable[Iterable[float]]]], NDArray[float, :, :, :]],
Fun[[Iterable[float], Iterable[Iterable[Iterable[float]]]],
NDArray[float, :, :, :]],
Fun[[float, Iterable[Iterable[Iterable[float]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]], Iterable[
Iterable[float]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]],
Iterable[float]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]], float], NDArray[float, :, :, :]],
]
_numpy_allclose_signature = Union[
_numpy_binary_op_signature.__args__ +
tuple([Fun[c.__args__[:-1] + (float,), c.__args__[-1]]
for c in _numpy_unary_op_signature.__args__] +
[Fun[c.__args__[:-1] + (float, float), c.__args__[-1]]
for c in _numpy_unary_op_signature.__args__] +
[Fun[c.__args__[:-1] + (float, float, bool), c.__args__[-1]]
for c in _numpy_unary_op_signature.__args__]
)
]
_numpy_around_signature = Union[
_numpy_unary_op_float_signature.__args__ +
tuple([Fun[c.__args__[:-1] + (int,), c.__args__[-1]]
for c in _numpy_unary_op_float_signature.__args__])
]
_functools_reduce_signature = Union[
Fun[[Fun[[T0, T0], T0], Iterable[T0]], T0],
Fun[[Fun[[T0, T1], T0], Iterable[T1], T0], T0],
]
def partialsum(seq):
s = tuple()
for elt in seq:
s += elt,
yield s
_operator_add_signature = Union[
_numpy_binary_op_signature.__args__ +
(Fun[[str, str], str],
Fun[[List[T0], List[T0]], List[T0]],) +
tuple(Fun[[Tuple[t0], Tuple[t1]], Tuple[t0 + t1]]
for t0 in partialsum([T0, T1, T2, T3])
for t1 in partialsum([T4, T5, T6, T7]))
]
_operator_eq_signature = Union[
_numpy_binary_op_bool_signature.__args__ +
(Fun[[str, str], bool],
Fun[[List[T0], List[T0]], bool],
Fun[[Set[T0], Set[T0]], bool],
Fun[[T0, None], bool],
Fun[[None, T0], bool],
Fun[[Dict[T0, T1], Dict[T0, T1]], bool],) +
tuple(Fun[[Tuple[t0], Tuple[t1]], Tuple[t0 + t1]]
for t0 in partialsum([T0, T1, T2, T3])
for t1 in partialsum([T4, T5, T6, T7]))
]
_operator_sub_signature = Union[
_numpy_binary_op_signature.__args__ +
(Fun[[Set[T0], Set[T0]], Set[T0]],)
]
_operator_mod_signature = Union[
_numpy_binary_op_signature.__args__ +
(Fun[[str, T0], str],)
]
_operator_mul_signature = Union[
_numpy_binary_op_signature.__args__ +
(Fun[[str, int], str], Fun[[int, str], str],
Fun[[List[T0], int], List[T0]], Fun[[int, List[T0]], List[T0]])
]
_operator_contains_signature = Fun[[Iterable[T0], T0], bool]
_operator_getitem_signature = Union[
Fun[[List[T0], int], T0],
Fun[[List[T0], slice], List[T0]],
Fun[[Dict[T0, T1], T0], T1],
Fun[[str, int], str],
Fun[[str, slice], str],
# arrays
Fun[[NDArray[T0, :], T1], T2],
# large tuple
Fun[[Iterable[T0], int], T0],
]
_numpy_farray_signature = Union[
# no dtype
# scalar
Fun[[bool], float],
Fun[[int], float],
Fun[[float], float],
# 1D array
Fun[[Iterable[bool]], NDArray[float, :]],
Fun[[Iterable[int]], NDArray[float, :]],
Fun[[Iterable[float]], NDArray[float, :]],
# 2D array
Fun[[Iterable[Iterable[bool]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[int]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]]], NDArray[float, :, :]],
# 3D array
Fun[[Iterable[Iterable[Iterable[bool]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]]], NDArray[float, :, :, :]],
# 4D array
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]]],
NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]]],
NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]]],
NDArray[float, :, :, :, :]],
# bool dtype
# scalar
Fun[[bool, _bool_signature], float],
Fun[[int, _bool_signature], float],
Fun[[float, _bool_signature], float],
Fun[[complex, _bool_signature], float],
# 1D array
Fun[[Iterable[bool], _bool_signature], NDArray[float, :]],
Fun[[Iterable[int], _bool_signature], NDArray[float, :]],
Fun[[Iterable[float], _bool_signature], NDArray[float, :]],
# 2D array
Fun[[Iterable[Iterable[bool]], _bool_signature], NDArray[float, :, :]],
Fun[[Iterable[Iterable[int]], _bool_signature], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]], _bool_signature], NDArray[float, :, :]],
# 3D array
Fun[[Iterable[Iterable[Iterable[bool]]],
_bool_signature], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], _bool_signature],
NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]],
_bool_signature], NDArray[float, :, :, :]],
# 4D array
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]],
_bool_signature], NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]],
_bool_signature], NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]],
_bool_signature], NDArray[float, :, :, :, :]],
# int dtype
Fun[[bool, _int_signature], float],
Fun[[int, _int_signature], float],
Fun[[float, _int_signature], float],
Fun[[complex, _int_signature], float],
# 1D array
Fun[[Iterable[bool], _int_signature], NDArray[float, :]],
Fun[[Iterable[int], _int_signature], NDArray[float, :]],
Fun[[Iterable[float], _int_signature], NDArray[float, :]],
# 2D array
Fun[[Iterable[Iterable[bool]], _int_signature], NDArray[float, :, :]],
Fun[[Iterable[Iterable[int]], _int_signature], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]], _int_signature], NDArray[float, :, :]],
# 3D array
Fun[[Iterable[Iterable[Iterable[bool]]],
_int_signature], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], _int_signature],
NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]],
_int_signature], NDArray[float, :, :, :]],
# 4D array
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]],
_int_signature], NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]],
_int_signature], NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]],
_int_signature], NDArray[float, :, :, :, :]],
# float dtype
# scalar
Fun[[bool, _float_signature], float],
Fun[[int, _float_signature], float],
Fun[[float, _float_signature], float],
Fun[[complex, _float_signature], float],
# 1D array
Fun[[Iterable[bool], _float_signature], NDArray[float, :]],
Fun[[Iterable[int], _float_signature], NDArray[float, :]],
Fun[[Iterable[float], _float_signature], NDArray[float, :]],
Fun[[Iterable[complex], _float_signature], NDArray[float, :]],
# 2D array
Fun[[Iterable[Iterable[bool]], _float_signature], NDArray[float, :, :]],
Fun[[Iterable[Iterable[int]], _float_signature], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]], _float_signature], NDArray[float, :, :]],
Fun[[Iterable[Iterable[complex]], _float_signature], NDArray[float, :, :]],
# 3D array
Fun[[Iterable[Iterable[Iterable[bool]]],
_float_signature], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]],
_float_signature], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]],
_float_signature], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]],
_float_signature], NDArray[float, :, :, :]],
# 4D array
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]],
_float_signature], NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]],
_float_signature], NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]],
_float_signature], NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]],
_float_signature], NDArray[float, :, :, :, :]],
# complex dtype
# scalar
Fun[[bool, _complex_signature], complex],
Fun[[int, _complex_signature], complex],
Fun[[float, _complex_signature], complex],
Fun[[complex, _complex_signature], complex],
# 1D array
Fun[[Iterable[bool], _complex_signature], NDArray[complex, :]],
Fun[[Iterable[int], _complex_signature], NDArray[complex, :]],
Fun[[Iterable[float], _complex_signature], NDArray[complex, :]],
Fun[[Iterable[complex], _complex_signature], NDArray[complex, :]],
# 2D array
Fun[[Iterable[Iterable[bool]], _complex_signature],
NDArray[complex, :, :]],
Fun[[Iterable[Iterable[int]], _complex_signature], NDArray[complex, :, :]],
Fun[[Iterable[Iterable[float]], _complex_signature],
NDArray[complex, :, :]],
Fun[[Iterable[Iterable[complex]], _complex_signature],
NDArray[complex, :, :]],
# 3D array
Fun[[Iterable[Iterable[Iterable[bool]]], _complex_signature],
NDArray[complex, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], _complex_signature],
NDArray[complex, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]],
_complex_signature], NDArray[complex, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]],
_complex_signature], NDArray[complex, :, :, :]],
# 4D array
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]],
_complex_signature], NDArray[complex, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]],
_complex_signature], NDArray[complex, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]],
_complex_signature], NDArray[complex, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]],
_complex_signature], NDArray[complex, :, :, :, :]],
]
_numpy_array_signature = Union[
# no dtype
# scalar
Fun[[bool], bool],
Fun[[int], int],
Fun[[float], float],
Fun[[complex], complex],
# 1D array
Fun[[Iterable[bool]], NDArray[bool, :]],
Fun[[Iterable[int]], NDArray[int, :]],
Fun[[Iterable[float]], NDArray[float, :]],
Fun[[Iterable[complex]], NDArray[complex, :]],
# 2D array
Fun[[Iterable[Iterable[bool]]], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[int]]], NDArray[int, :, :]],
Fun[[Iterable[Iterable[float]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[complex]]], NDArray[complex, :, :]],
# 3D array
Fun[[Iterable[Iterable[Iterable[bool]]]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]]], NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]]], NDArray[complex, :, :, :]],
# 4D array
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]]],
NDArray[bool, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]]],
NDArray[int, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]]],
NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]]],
NDArray[complex, :, :, :, :]],
# bool dtype
# scalar
Fun[[bool, _bool_signature], bool],
Fun[[int, _bool_signature], bool],
Fun[[float, _bool_signature], bool],
Fun[[complex, _bool_signature], bool],
# 1D array
Fun[[Iterable[bool], _bool_signature], NDArray[bool, :]],
Fun[[Iterable[int], _bool_signature], NDArray[bool, :]],
Fun[[Iterable[float], _bool_signature], NDArray[bool, :]],
Fun[[Iterable[complex], _bool_signature], NDArray[bool, :]],
# 2D array
Fun[[Iterable[Iterable[bool]], _bool_signature], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[int]], _bool_signature], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[float]], _bool_signature], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[complex]], _bool_signature], NDArray[bool, :, :]],
# 3D array
Fun[[Iterable[Iterable[Iterable[bool]]],
_bool_signature], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], _bool_signature],
NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]],
_bool_signature], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]],
_bool_signature], NDArray[bool, :, :, :]],
# 4D array
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]],
_bool_signature], NDArray[bool, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]],
_bool_signature], NDArray[bool, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]],
_bool_signature], NDArray[bool, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]],
_bool_signature], NDArray[bool, :, :, :, :]],
# int dtype
# scalar
Fun[[bool, _int_signature], int],
Fun[[int, _int_signature], int],
Fun[[float, _int_signature], int],
Fun[[complex, _int_signature], int],
# 1D array
Fun[[Iterable[bool], _int_signature], NDArray[int, :]],
Fun[[Iterable[int], _int_signature], NDArray[int, :]],
Fun[[Iterable[float], _int_signature], NDArray[int, :]],
Fun[[Iterable[complex], _int_signature], NDArray[int, :]],
# 2D array
Fun[[Iterable[Iterable[bool]], _int_signature], NDArray[int, :, :]],
Fun[[Iterable[Iterable[int]], _int_signature], NDArray[int, :, :]],
Fun[[Iterable[Iterable[float]], _int_signature], NDArray[int, :, :]],
Fun[[Iterable[Iterable[complex]], _int_signature], NDArray[int, :, :]],
# 3D array
Fun[[Iterable[Iterable[Iterable[bool]]], _int_signature],
NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], _int_signature],
NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]],
_int_signature], NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]],
_int_signature], NDArray[int, :, :, :]],
# 4D array
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]],
_int_signature], NDArray[int, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]],
_int_signature], NDArray[int, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]],
_int_signature], NDArray[int, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]],
_int_signature], NDArray[int, :, :, :, :]],
# float dtype
# scalar
Fun[[bool, _float_signature], float],
Fun[[int, _float_signature], float],
Fun[[float, _float_signature], float],
Fun[[complex, _float_signature], float],
# 1D array
Fun[[Iterable[bool], _float_signature], NDArray[float, :]],
Fun[[Iterable[int], _float_signature], NDArray[float, :]],
Fun[[Iterable[float], _float_signature], NDArray[float, :]],
Fun[[Iterable[complex], _float_signature], NDArray[float, :]],
# 2D array
Fun[[Iterable[Iterable[bool]], _float_signature], NDArray[float, :, :]],
Fun[[Iterable[Iterable[int]], _float_signature], NDArray[float, :, :]],
Fun[[Iterable[Iterable[float]], _float_signature], NDArray[float, :, :]],
Fun[[Iterable[Iterable[complex]], _float_signature], NDArray[float, :, :]],
# 3D array
Fun[[Iterable[Iterable[Iterable[bool]]],
_float_signature], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]],
_float_signature], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]],
_float_signature], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]],
_float_signature], NDArray[float, :, :, :]],
# 4D array
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]],
_float_signature], NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]],
_float_signature], NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]],
_float_signature], NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]],
_float_signature], NDArray[float, :, :, :, :]],
# complex dtype
# scalar
Fun[[bool, _complex_signature], complex],
Fun[[int, _complex_signature], complex],
Fun[[float, _complex_signature], complex],
Fun[[complex, _complex_signature], complex],
# 1D array
Fun[[Iterable[bool], _complex_signature], NDArray[complex, :]],
Fun[[Iterable[int], _complex_signature], NDArray[complex, :]],
Fun[[Iterable[float], _complex_signature], NDArray[complex, :]],
Fun[[Iterable[complex], _complex_signature], NDArray[complex, :]],
# 2D array
Fun[[Iterable[Iterable[bool]], _complex_signature],
NDArray[complex, :, :]],
Fun[[Iterable[Iterable[int]], _complex_signature], NDArray[complex, :, :]],
Fun[[Iterable[Iterable[float]], _complex_signature],
NDArray[complex, :, :]],
Fun[[Iterable[Iterable[complex]], _complex_signature],
NDArray[complex, :, :]],
# 3D array
Fun[[Iterable[Iterable[Iterable[bool]]], _complex_signature],
NDArray[complex, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]], _complex_signature],
NDArray[complex, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]],
_complex_signature], NDArray[complex, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]],
_complex_signature], NDArray[complex, :, :, :]],
# 4D array
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]],
_complex_signature], NDArray[complex, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]],
_complex_signature], NDArray[complex, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]],
_complex_signature], NDArray[complex, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]],
_complex_signature], NDArray[complex, :, :, :, :]],
]
# each module consist in a module_name <> set of symbols
MODULES = {
"builtins": {
"pythran": {
"abssqr": ConstFunctionIntr(),
"static_list": ReadOnceFunctionIntr(
signature=Fun[[Iterable[T0]], List[T0]],
return_alias=lambda args: {args[0]}),
"is_none": ConstFunctionIntr(),
"kwonly": ConstFunctionIntr(),
"len_set": ConstFunctionIntr(signature=Fun[[Iterable[T0]], int]),
"make_shape": ConstFunctionIntr(),
"static_if": ConstFunctionIntr(),
"StaticIfBreak": ConstFunctionIntr(),
"StaticIfCont": ConstFunctionIntr(),
"StaticIfNoReturn": ConstFunctionIntr(),
"StaticIfReturn": ConstFunctionIntr(),
},
"abs": ConstFunctionIntr(
signature=Union[
Fun[[int], int],
Fun[[float], float],
Fun[[complex], float],
Fun[[NDArray[int, :]], NDArray[int, :]],
Fun[[NDArray[int, :, :]], NDArray[int, :, :]],
Fun[[NDArray[int, :, :, :]], NDArray[int, :, :, :]],
Fun[[NDArray[int, :, :, :, :]], NDArray[int, :, :, :, :]],
Fun[[NDArray[float, :]], NDArray[float, :]],
Fun[[NDArray[float, :, :]], NDArray[float, :, :]],
Fun[[NDArray[float, :, :, :]], NDArray[float, :, :, :]],
Fun[[NDArray[float, :, :, :, :]], NDArray[float, :, :, :, :]],
Fun[[NDArray[complex, :]], NDArray[float, :]],
Fun[[NDArray[complex, :, :]], NDArray[float, :, :]],
Fun[[NDArray[complex, :, :, :]], NDArray[float, :, :, :]],
Fun[[NDArray[complex, :, :, :, :]], NDArray[float, :, :, :, :]]
],
),
"BaseException": ConstExceptionIntr(),
"SystemExit": ConstExceptionIntr(),
"KeyboardInterrupt": ConstExceptionIntr(),
"GeneratorExit": ConstExceptionIntr(),
"Exception": ExceptionClass(CLASSES["Exception"]),
"StopIteration": ConstExceptionIntr(),
"Warning": ConstExceptionIntr(),
"BytesWarning": ConstExceptionIntr(),
"UnicodeWarning": ConstExceptionIntr(),
"ImportWarning": ConstExceptionIntr(),
"FutureWarning": ConstExceptionIntr(),
"UserWarning": ConstExceptionIntr(),
"SyntaxWarning": ConstExceptionIntr(),
"RuntimeWarning": ConstExceptionIntr(),
"PendingDeprecationWarning": ConstExceptionIntr(),
"DeprecationWarning": ConstExceptionIntr(),
"BufferError": ConstExceptionIntr(),
"ArithmeticError": ConstExceptionIntr(),
"AssertionError": ConstExceptionIntr(),
"AttributeError": ConstExceptionIntr(),
"EnvironmentError": ConstExceptionIntr(),
"EOFError": ConstExceptionIntr(),
"ImportError": ConstExceptionIntr(),
"LookupError": ConstExceptionIntr(),
"MemoryError": ConstExceptionIntr(),
"NameError": ConstExceptionIntr(),
"ReferenceError": ConstExceptionIntr(),
"RuntimeError": ConstExceptionIntr(),
"SyntaxError": ConstExceptionIntr(),
"SystemError": ConstExceptionIntr(),
"TypeError": ConstExceptionIntr(),
"ValueError": ConstExceptionIntr(),
"FloatingPointError": ConstExceptionIntr(),
"OverflowError": ConstExceptionIntr(),
"ZeroDivisionError": ConstExceptionIntr(),
"IOError": ConstExceptionIntr(),
"OSError": ConstExceptionIntr(),
"IndexError": ConstExceptionIntr(),
"KeyError": ConstExceptionIntr(),
"UnboundLocalError": ConstExceptionIntr(),
"NotImplementedError": ConstExceptionIntr(),
"IndentationError": ConstExceptionIntr(),
"TabError": ConstExceptionIntr(),
"UnicodeError": ConstExceptionIntr(),
# "UnicodeDecodeError": ConstExceptionIntr(),
# "UnicodeEncodeError": ConstExceptionIntr(),
# "UnicodeTranslateError": ConstExceptionIntr(),
"all": ReadOnceFunctionIntr(signature=Fun[[Iterable[T0]], bool]),
"any": ReadOnceFunctionIntr(signature=Fun[[Iterable[T0]], bool]),
"bin": ConstFunctionIntr(signature=Fun[[int], str]),
"bool": ConstFunctionIntr(signature=_bool_signature),
"chr": ConstFunctionIntr(signature=Fun[[int], str]),
"complex": ClassWithConstConstructor(
CLASSES['complex'],
signature=_complex_signature
),
"dict": ClassWithReadOnceConstructor(
CLASSES['dict'],
signature=Union[
Fun[[], Dict[T0, T1]],
Fun[[Iterable[Tuple[T0, T1]]], Dict[T0, T1]],
],
),
"divmod": ConstFunctionIntr(
signature=Union[
Fun[[int, int], Tuple[int, int]],
Fun[[float, int], Tuple[float, float]],
Fun[[int, float], Tuple[float, float]],
Fun[[float, float], Tuple[float, float]],
],
),
"enumerate": ReadOnceFunctionIntr(
signature=Union[
Fun[[Iterable[T0]], Generator[Tuple[int, T0]]],
Fun[[Iterable[T0], int], Generator[Tuple[int, T0]]],
],
),
"filter": ReadOnceFunctionIntr(
signature=Union[
Fun[[None, Iterable[T0]], List[T0]],
Fun[[Fun[[T0], bool], Iterable[T0]], List[T0]],
],
),
"float": ClassWithConstConstructor(
CLASSES['float'],
signature=_float_signature
),
"getattr": ConstFunctionIntr(),
"hex": ConstFunctionIntr(signature=Fun[[int], str]),
"id": ConstFunctionIntr(signature=Fun[[T0], int]),
"int": ConstFunctionIntr(signature=_int_signature),
"isinstance": ConstFunctionIntr(signature=Fun[[T0, T1], bool]),
"iter": FunctionIntr(
signature=Fun[[Iterable[T0]], Generator[T0]]), # not const
"len": ConstFunctionIntr(
signature=Fun[[Sized], int],
return_range=interval.positive_values
),
"list": ClassWithReadOnceConstructor(
CLASSES['list'],
signature=Union[
Fun[[], List[T0]],
Fun[[Iterable[T0]], List[T0]]
],
),
"map": ReadOnceFunctionIntr(
signature=Union[
Fun[[None, Iterable[T0]], List[T0]],
Fun[[None, Iterable[T0], Iterable[T1]], List[Tuple[T0, T1]]],
Fun[[None, Iterable[T0], Iterable[T1], Iterable[T2]],
List[Tuple[T0, T1, T2]]],
Fun[[None, Iterable[T0], Iterable[T1], Iterable[T2],
Iterable[T3]], List[Tuple[T0, T1, T2, T3]]],
Fun[[Fun[[T0], T7], Iterable[T0]], List[T7]],
Fun[[Fun[[T0, T1], T7], Iterable[T0], Iterable[T1]], List[T7]],
Fun[[Fun[[T0, T1, T2], T7], Iterable[T0], Iterable[T1],
Iterable[T2]], List[T7]],
Fun[[Fun[[T0, T1, T2, T3], T7], Iterable[T0], Iterable[T1],
Iterable[T2], Iterable[T3]], List[T7]],
]
),
"max": ReadOnceFunctionIntr(
kwonlyargs=('key',),
signature=Union[
Fun[[T0, T0], T0],
Fun[[T0, T0, T0], T0],
Fun[[T0, T0, T0, T0], T0],
Fun[[Iterable[T0]], T0],
],
return_range=interval.max_values
),
"min": ReadOnceFunctionIntr(
kwonlyargs=('key', 'default'),
signature=Union[
Fun[[int, int], int],
Fun[[float, float], float],
Fun[[Iterable[T0]], T0],
],
return_range=interval.min_values
),
"next": FunctionIntr( # not const
signature=Union[
Fun[[Iterable[T0]], T0],
Fun[[Iterable[T0], T0], T0],
],
), # not const
"oct": ConstFunctionIntr(signature=Fun[[int], str]),
"ord": ConstFunctionIntr(
signature=Fun[[str], int],
return_range=interval.ord_values
),
"open": ConstFunctionIntr(
signature=Union[
Fun[[str], File],
Fun[[str, str], File],
],
global_effects=True
),
"print": ConstFunctionIntr(global_effects=True),
"pow": ConstFunctionIntr(
signature=Union[
Fun[[int, int], int],
Fun[[int, int, int], int],
Fun[[int, float], float],
Fun[[int, float, int], float],
Fun[[float, float], float],
Fun[[float, float, int], float],
]
),
"range": ConstFunctionIntr(
signature=Union[
Fun[[int], List[int]],
Fun[[int, int], List[int]],
Fun[[int, int, int], List[int]],
],
return_range_content=interval.range_values
),
"reduce": ReadOnceFunctionIntr(signature=_functools_reduce_signature),
"reversed": ReadOnceFunctionIntr(
signature=Fun[[Iterable[T0]], Iterable[T0]]
),
"round": ConstFunctionIntr(
signature=Union[
Fun[[float], float],
Fun[[float, int], float],
],
),
"set": ClassWithReadOnceConstructor(
CLASSES['set'],
signature=Union[
Fun[[], Set[T0]],
Fun[[Iterable[T0]], Set[T0]]
],
),
"slice": ClassWithConstConstructor(CLASSES['slice']),
"sorted": ConstFunctionIntr(signature=Fun[[Iterable[T0]], List[T0]]),
"str": ClassWithConstConstructor(
CLASSES['str'],
signature=Fun[[T0], str],
),
"sum": ReadOnceFunctionIntr(
signature=Union[
Fun[[Iterable[int]], int],
Fun[[Iterable[float]], float],
Fun[[Iterable[int], int], int],
Fun[[Iterable[float], float], float],
],
),
"tuple": ReadOnceFunctionIntr(
signature=Union[
Fun[[], Tuple[()]],
Fun[[Tuple[T0]], Tuple[T0]],
Fun[[Tuple[T0, T1]], Tuple[T0, T1]],
Fun[[Tuple[T0, T1, T2]], Tuple[T0, T1, T2]],
# FIXME: We accept some type loss here
Fun[[List[T0]], Iterable[T0]],
],
),
"type": ConstFunctionIntr(),
"zip": ReadOnceFunctionIntr(
signature=Union[
Fun[[], List[T0]],
Fun[[Iterable[T0]], List[Tuple[T0]]],
Fun[[Iterable[T0], Iterable[T1]], List[Tuple[T0, T1]]],
Fun[[Iterable[T0], Iterable[T1], Iterable[T2]],
List[Tuple[T0, T1, T2]]],
Fun[[Iterable[T0], Iterable[T1], Iterable[T2], Iterable[T3]],
List[Tuple[T0, T1, T2, T3]]],
]
),
"False": ConstantIntr(
signature=bool,
return_range=lambda _: interval.Range(0, 0)
),
"None": ConstantIntr(signature=None),
"True": ConstantIntr(
signature=bool,
return_range=lambda _: interval.Range(1, 1)
),
},
"scipy": {
"special": {
"binom": ConstFunctionIntr(
signature=_numpy_binary_op_float_signature
),
"gammaln": ConstFunctionIntr(
signature=_numpy_unary_op_float_signature
),
"gamma": ConstFunctionIntr(
signature=_numpy_unary_op_float_signature
),
"hankel1": UFunc(
BINARY_UFUNC,
signature=_numpy_binary_op_float_signature
),
"hankel2": UFunc(
BINARY_UFUNC,
signature=_numpy_binary_op_float_signature
),
"iv": UFunc(
BINARY_UFUNC,
signature=_numpy_binary_op_float_signature
),
"ivp": UFunc(
BINARY_UFUNC,
signature=_numpy_binary_op_float_signature
),
"jv": UFunc(
BINARY_UFUNC,
signature=_numpy_binary_op_float_signature
),
"jvp": UFunc(
BINARY_UFUNC,
signature=_numpy_binary_op_float_signature
),
"kv": UFunc(
BINARY_UFUNC,
signature=_numpy_binary_op_float_signature
),
"kvp": UFunc(
BINARY_UFUNC,
signature=_numpy_binary_op_float_signature
),
"yv": UFunc(
BINARY_UFUNC,
signature=_numpy_binary_op_float_signature
),
"yvp": UFunc(
BINARY_UFUNC,
signature=_numpy_binary_op_float_signature
),
"spherical_jn": UFunc(
BINARY_UFUNC,
signature=_numpy_binary_op_float_signature
),
"spherical_yn": UFunc(
BINARY_UFUNC,
signature=_numpy_binary_op_float_signature
),
}
},
"numpy": {
"abs": ConstFunctionIntr(signature=_numpy_unary_op_signature),
"absolute": ConstFunctionIntr(signature=_numpy_ones_signature),
"add": UFunc(
REDUCED_BINARY_UFUNC,
signature=_numpy_binary_op_signature,
),
"alen": ConstFunctionIntr(
signature=Union[
# scalar
Fun[[bool], int],
Fun[[int], int],
Fun[[float], int],
Fun[[complex], int],
# Sized
Fun[[Sized], int],
],
return_range=interval.positive_values
),
"all": ConstMethodIntr(
signature=_numpy_unary_op_bool_axis_signature,
return_range=interval.bool_values
),
"allclose": ConstFunctionIntr(
signature=_numpy_allclose_signature,
return_range=interval.bool_values
),
"alltrue": ConstFunctionIntr(
signature=_numpy_unary_op_bool_axis_signature,
return_range=interval.bool_values
),
"amax": ConstFunctionIntr(signature=_numpy_unary_op_axis_signature),
"amin": ConstFunctionIntr(signature=_numpy_unary_op_axis_signature),
"angle": ConstFunctionIntr(signature=_numpy_unary_op_angle_signature),
"any": ConstMethodIntr(
signature=_numpy_unary_op_bool_axis_signature,
return_range=interval.bool_values
),
"append": ConstFunctionIntr(
signature=Union[
# no axis -> flattened output
# scalar
Fun[[bool, bool], NDArray[bool, :]],
Fun[[int, int], NDArray[int, :]],
Fun[[float, float], NDArray[float, :]],
Fun[[complex, float], NDArray[float, :]],
# 1D Array
# FIXME: second argument could have a shape larger than first
Fun[[Iterable[bool], bool], NDArray[bool, :]],
Fun[[Iterable[int], int], NDArray[int, :]],
Fun[[Iterable[float], float], NDArray[float, :]],
Fun[[Iterable[complex], complex], NDArray[complex, :]],
Fun[[Iterable[bool], Iterable[bool]], NDArray[bool, :]],
Fun[[Iterable[int], Iterable[int]], NDArray[int, :]],
Fun[[Iterable[float], Iterable[float]], NDArray[float, :]],
Fun[[Iterable[complex], Iterable[complex]],
NDArray[complex, :]],
# 2D Array
Fun[[Iterable[Iterable[bool]], bool], NDArray[bool, :]],
Fun[[Iterable[Iterable[int]], int], NDArray[int, :]],
Fun[[Iterable[Iterable[float]], float], NDArray[float, :]],
Fun[[Iterable[Iterable[complex]], complex],
NDArray[complex, :]],
Fun[[Iterable[Iterable[bool]], Iterable[bool]],
NDArray[bool, :]],
Fun[[Iterable[Iterable[int]], Iterable[int]], NDArray[int, :]],
Fun[[Iterable[Iterable[float]], Iterable[float]],
NDArray[float, :]],
Fun[[Iterable[Iterable[complex]], Iterable[
complex]], NDArray[complex, :]],
Fun[[Iterable[Iterable[bool]], Iterable[
Iterable[bool]]], NDArray[bool, :]],
Fun[[Iterable[Iterable[int]], Iterable[
Iterable[int]]], NDArray[int, :]],
Fun[[Iterable[Iterable[float]], Iterable[
Iterable[float]]], NDArray[float, :]],
Fun[[Iterable[Iterable[complex]], Iterable[
Iterable[complex]]], NDArray[complex, :]],
Fun[[bool, Iterable[Iterable[bool]]], NDArray[bool, :]],
Fun[[int, Iterable[Iterable[int]]], NDArray[int, :]],
Fun[[float, Iterable[Iterable[float]]], NDArray[float, :]],
Fun[[complex, Iterable[Iterable[complex]]],
NDArray[complex, :]],
Fun[[Iterable[bool], Iterable[Iterable[bool]]],
NDArray[bool, :]],
Fun[[Iterable[int], Iterable[Iterable[int]]], NDArray[int, :]],
Fun[[Iterable[float], Iterable[Iterable[float]]],
NDArray[float, :]],
Fun[[Iterable[complex], Iterable[Iterable[complex]]],
NDArray[complex, :]],
Fun[[Iterable[Iterable[bool]], Iterable[
Iterable[bool]]], NDArray[bool, :]],
Fun[[Iterable[Iterable[int]], Iterable[
Iterable[int]]], NDArray[int, :]],
Fun[[Iterable[Iterable[float]], Iterable[
Iterable[float]]], NDArray[float, :]],
Fun[[Iterable[Iterable[complex]], Iterable[
Iterable[complex]]], NDArray[complex, :]],
# 3D Array FIXME: same as above
Fun[[Iterable[Iterable[Iterable[bool]]], bool],
NDArray[bool, :]],
Fun[[Iterable[Iterable[Iterable[int]]], int], NDArray[int, :]],
Fun[[Iterable[Iterable[Iterable[float]]], float],
NDArray[float, :]],
Fun[[Iterable[Iterable[Iterable[complex]]],
complex], NDArray[complex, :]],
Fun[[Iterable[Iterable[Iterable[bool]]],
Iterable[bool]], NDArray[bool, :]],
Fun[[Iterable[Iterable[Iterable[int]]],
Iterable[int]], NDArray[int, :]],
Fun[[Iterable[Iterable[Iterable[float]]],
Iterable[float]], NDArray[float, :]],
Fun[[Iterable[Iterable[Iterable[complex]]],
Iterable[complex]], NDArray[complex, :]],
Fun[[Iterable[Iterable[Iterable[bool]]],
Iterable[Iterable[bool]]], NDArray[bool, :]],
Fun[[Iterable[Iterable[Iterable[int]]],
Iterable[Iterable[int]]], NDArray[int, :]],
Fun[[Iterable[Iterable[Iterable[float]]], Iterable[
Iterable[float]]], NDArray[float, :]],
Fun[[Iterable[Iterable[Iterable[complex]]], Iterable[
Iterable[complex]]], NDArray[complex, :]],
Fun[[Iterable[Iterable[Iterable[bool]]], Iterable[
Iterable[Iterable[bool]]]], NDArray[bool, :]],
Fun[[Iterable[Iterable[Iterable[int]]], Iterable[
Iterable[Iterable[int]]]], NDArray[int, :]],
Fun[[Iterable[Iterable[Iterable[float]]], Iterable[
Iterable[Iterable[float]]]], NDArray[float, :]],
Fun[[Iterable[Iterable[Iterable[complex]]], Iterable[
Iterable[Iterable[complex]]]], NDArray[complex, :]],
# 4D Array FIXME: same as above
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]], bool],
NDArray[bool, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]], int],
NDArray[int, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]], float],
NDArray[float, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]],
complex], NDArray[complex, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]],
Iterable[bool]], NDArray[bool, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]],
Iterable[int]], NDArray[int, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]],
Iterable[float]], NDArray[float, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]],
Iterable[complex]], NDArray[complex, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]],
Iterable[Iterable[bool]]], NDArray[bool, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]],
Iterable[Iterable[int]]], NDArray[int, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]],
Iterable[Iterable[float]]], NDArray[float, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]],
Iterable[Iterable[complex]]], NDArray[complex, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]],
Iterable[Iterable[Iterable[bool]]]], NDArray[bool, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]],
Iterable[Iterable[Iterable[int]]]], NDArray[int, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]], Iterable[
Iterable[Iterable[float]]]], NDArray[float, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]], Iterable[
Iterable[Iterable[complex]]]], NDArray[complex, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]], Iterable[
Iterable[Iterable[Iterable[bool]]]]], NDArray[bool, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]], Iterable[
Iterable[Iterable[Iterable[int]]]]], NDArray[int, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]], Iterable[
Iterable[Iterable[Iterable[float]]]]], NDArray[float, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]], Iterable[
Iterable[Iterable[Iterable[complex]]]]],
NDArray[complex, :]],
# FIXME: same as above with None axis
# axis -> same dims
# 1D
Fun[[Iterable[bool], Iterable[bool], int], Iterable[bool]],
Fun[[Iterable[int], Iterable[int], int], Iterable[int]],
Fun[[Iterable[float], Iterable[float], int], Iterable[float]],
Fun[[Iterable[complex], Iterable[complex], int],
Iterable[complex]],
# 2D
Fun[[Iterable[Iterable[bool]], Iterable[
Iterable[bool]], int], Iterable[Iterable[bool]]],
Fun[[Iterable[Iterable[int]], Iterable[
Iterable[int]], int], Iterable[Iterable[int]]],
Fun[[Iterable[Iterable[float]], Iterable[
Iterable[float]], int], Iterable[Iterable[float]]],
Fun[[Iterable[Iterable[complex]], Iterable[
Iterable[complex]], int], Iterable[Iterable[complex]]],
# 3D
Fun[[Iterable[Iterable[Iterable[bool]]], Iterable[
Iterable[Iterable[bool]]], int],
Iterable[Iterable[Iterable[bool]]]],
Fun[[Iterable[Iterable[Iterable[int]]], Iterable[
Iterable[Iterable[int]]], int],
Iterable[Iterable[Iterable[int]]]],
Fun[[Iterable[Iterable[Iterable[float]]], Iterable[
Iterable[Iterable[float]]], int],
Iterable[Iterable[Iterable[float]]]],
Fun[[Iterable[Iterable[Iterable[complex]]], Iterable[
Iterable[Iterable[complex]]], int],
Iterable[Iterable[Iterable[complex]]]],
# 4D
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]],
Iterable[Iterable[Iterable[Iterable[bool]]]], int],
Iterable[Iterable[Iterable[Iterable[bool]]]]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]],
Iterable[Iterable[Iterable[Iterable[int]]]], int],
Iterable[Iterable[Iterable[Iterable[int]]]]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]],
Iterable[Iterable[Iterable[Iterable[float]]]], int],
Iterable[Iterable[Iterable[Iterable[float]]]]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]],
Iterable[Iterable[Iterable[Iterable[complex]]]],
int],
Iterable[Iterable[Iterable[Iterable[complex]]]]],
]
),
"arange": ConstFunctionIntr(
signature=Union[
Fun[[float], NDArray[float, :]],
Fun[[float, float], NDArray[float, :]],
Fun[[float, float, float], NDArray[float, :]],
Fun[[float, float, float, None], NDArray[float, :]],
Fun[[float, float, float, _bool_signature], NDArray[bool, :]],
Fun[[float, float, float, _int_signature], NDArray[int, :]],
Fun[[float, float, float, _float_signature],
NDArray[float, :]],
Fun[[float, float, float, _complex_signature],
NDArray[complex, :]],
],
return_range_content=interval.range_values,
args=('start', 'stop', 'step', 'dtype'),
defaults=(1, None)
),
"arccos": ConstFunctionIntr(signature=_numpy_unary_op_float_signature),
"arccosh": ConstFunctionIntr(
signature=_numpy_unary_op_float_signature),
"arcsin": ConstFunctionIntr(signature=_numpy_unary_op_float_signature),
"arcsinh": ConstFunctionIntr(
signature=_numpy_unary_op_float_signature),
"arctan": ConstFunctionIntr(signature=_numpy_unary_op_float_signature),
"arctan2": UFunc(
BINARY_UFUNC,
signature=_numpy_binary_op_float_no_complex_signature
),
"arctanh": ConstFunctionIntr(
signature=_numpy_unary_op_float_signature),
"argmax": ConstMethodIntr(
signature=_numpy_unary_op_int_axis_signature,
return_range=interval.positive_values
),
"argmin": ConstMethodIntr(
signature=_numpy_unary_op_int_axis_signature,
return_range=interval.positive_values
),
"argsort": ConstMethodIntr(
signature=_numpy_unary_op_int_axis_signature,
return_range=interval.positive_values
),
"argwhere": ConstFunctionIntr(
signature=_numpy_unary_op_int_signature,
return_range=interval.positive_values
),
"around": ConstFunctionIntr(signature=_numpy_around_signature),
"array": ReadOnceFunctionIntr(signature=_numpy_array_signature,
args=('object', 'dtype'),
defaults=(None,)),
"array2string": ConstFunctionIntr(
signature=_numpy_array_str_signature),
"array_equal": ConstFunctionIntr(signature=Fun[[T0, T1], bool]),
"array_equiv": ConstFunctionIntr(signature=Fun[[T0, T1], bool]),
"array_split": ConstFunctionIntr(
signature=Union[
# int split
Fun[[NDArray[T0, :], int], List[NDArray[T0, :]]],
# array split
Fun[[NDArray[T0, :], Iterable[int]], List[NDArray[T0, :]]],
]
),
"array_str": ConstFunctionIntr(signature=_numpy_array_str_signature),
"asarray": ReadOnceFunctionIntr(signature=_numpy_array_signature,
**extra_numpy_asarray_descr),
"asarray_chkfinite": ConstFunctionIntr(
signature=_numpy_array_signature),
"ascontiguousarray": ConstFunctionIntr(
signature=_numpy_array_signature),
"asfarray": ConstFunctionIntr(signature=_numpy_farray_signature),
"asscalar": ConstFunctionIntr(
signature=Union[
Fun[[NDArray[bool, :]], bool],
Fun[[NDArray[int, :]], int],
Fun[[NDArray[float, :]], float],
Fun[[NDArray[complex, :]], complex],
Fun[[NDArray[bool, :, :]], bool],
Fun[[NDArray[int, :, :]], int],
Fun[[NDArray[float, :, :]], float],
Fun[[NDArray[complex, :, :]], complex],
Fun[[NDArray[bool, :, :, :]], bool],
Fun[[NDArray[int, :, :, :]], int],
Fun[[NDArray[float, :, :, :]], float],
Fun[[NDArray[complex, :, :, :]], complex],
]
),
"atleast_1d": ConstFunctionIntr(
signature=Union[
# scalar
Fun[[bool], NDArray[bool, :]],
Fun[[int], NDArray[int, :]],
Fun[[float], NDArray[float, :]],
Fun[[complex], NDArray[complex, :]],
# 1d
Fun[[Iterable[bool]], NDArray[bool, :]],
Fun[[Iterable[int]], NDArray[int, :]],
Fun[[Iterable[float]], NDArray[float, :]],
Fun[[Iterable[complex]], NDArray[complex, :]],
# 2d+
Fun[[NDArray[T0, :, :]], NDArray[T0, :, :]],
Fun[[Iterable[Iterable[bool]]], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[int]]], NDArray[int, :, :]],
Fun[[Iterable[Iterable[float]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[complex]]], NDArray[complex, :, :]],
# 3d
Fun[[Iterable[Iterable[Iterable[bool]]]],
NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]]],
NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]]],
NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]]],
NDArray[complex, :, :, :]],
# 4d
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]]],
NDArray[bool, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]]],
NDArray[int, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]]],
NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]]],
NDArray[complex, :, :, :, :]],
]
),
"atleast_2d": ConstFunctionIntr(
signature=Union[
# scalar
Fun[[bool], NDArray[bool, :, :]],
Fun[[int], NDArray[int, :, :]],
Fun[[float], NDArray[float, :, :]],
Fun[[complex], NDArray[complex, :, :]],
# 1d
Fun[[Iterable[bool]], NDArray[bool, :, :]],
Fun[[Iterable[int]], NDArray[int, :, :]],
Fun[[Iterable[float]], NDArray[float, :, :]],
Fun[[Iterable[complex]], NDArray[complex, :, :]],
# 2d+
Fun[[NDArray[T0, :, :]], NDArray[T0, :, :]],
Fun[[Iterable[Iterable[bool]]], NDArray[bool, :, :]],
Fun[[Iterable[Iterable[int]]], NDArray[int, :, :]],
Fun[[Iterable[Iterable[float]]], NDArray[float, :, :]],
Fun[[Iterable[Iterable[complex]]], NDArray[complex, :, :]],
# 3d
Fun[[Iterable[Iterable[Iterable[bool]]]],
NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]]],
NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]]],
NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]]],
NDArray[complex, :, :, :]],
# 4d
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]]],
NDArray[bool, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]]],
NDArray[int, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]]],
NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]]],
NDArray[complex, :, :, :, :]],
]
),
"atleast_3d": ConstFunctionIntr(
signature=Union[
# scalar
Fun[[bool], NDArray[bool, :, :, :]],
Fun[[int], NDArray[int, :, :, :]],
Fun[[float], NDArray[float, :, :, :]],
Fun[[complex], NDArray[complex, :, :, :]],
# 1d
Fun[[Iterable[bool]], NDArray[bool, :, :, :]],
Fun[[Iterable[int]], NDArray[int, :, :, :]],
Fun[[Iterable[float]], NDArray[float, :, :, :]],
Fun[[Iterable[complex]], NDArray[complex, :, :, :]],
# 2d+
Fun[[NDArray[T0, :, :]], NDArray[T0, :, :, :]],
Fun[[Iterable[Iterable[bool]]], NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[int]]], NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[float]]], NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[complex]]], NDArray[complex, :, :, :]],
# 3d
Fun[[Iterable[Iterable[Iterable[bool]]]],
NDArray[bool, :, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]]],
NDArray[int, :, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]]],
NDArray[float, :, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]]],
NDArray[complex, :, :, :]],
# 4d
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]]],
NDArray[bool, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]]],
NDArray[int, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]]],
NDArray[float, :, :, :, :]],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]]],
NDArray[complex, :, :, :, :]],
]
),
"average": ConstFunctionIntr(
signature=_numpy_unary_op_average_axis_signature),
"base_repr": ConstFunctionIntr(
signature=Union[
Fun[[bool], str],
Fun[[bool, int], str],
Fun[[bool, int, int], str],
Fun[[int], str],
Fun[[int, int], str],
Fun[[int, int, int], str],
]
),
"binary_repr": ConstFunctionIntr(
signature=Union[
Fun[[bool], str],
Fun[[bool, int], str],
Fun[[bool, None], str],
Fun[[int], str],
Fun[[int, int], str],
Fun[[int, None], str],
]
),
"bincount": ConstFunctionIntr(
signature=Union[
Fun[[Iterable[bool]], NDArray[int, :]],
Fun[[Iterable[int]], NDArray[int, :]],
#
Fun[[Iterable[bool], Iterable[float]], NDArray[int, :]],
Fun[[Iterable[int], Iterable[float]], NDArray[int, :]],
#
Fun[[Iterable[bool], Iterable[float], int], NDArray[int, :]],
Fun[[Iterable[int], Iterable[float], int], NDArray[int, :]],
],
),
"bitwise_and": UFunc(
REDUCED_BINARY_UFUNC,
signature=_numpy_int_binary_op_signature
),
"bitwise_not": ConstFunctionIntr(
signature=_numpy_int_unary_op_signature
),
"bitwise_or": UFunc(
REDUCED_BINARY_UFUNC,
signature=_numpy_int_binary_op_signature
),
"bitwise_xor": UFunc(
REDUCED_BINARY_UFUNC,
signature=_numpy_int_binary_op_signature
),
"bool": ConstFunctionIntr(signature=_bool_signature),
"broadcast_to": ConstFunctionIntr(),
"byte": ConstFunctionIntr(signature=_int_signature),
"cbrt": ConstFunctionIntr(
signature=_numpy_unary_op_float_signature
),
"ceil": ConstFunctionIntr(signature=_numpy_float_unary_op_signature),
"clip": ConstMethodIntr(signature=_numpy_ternary_op_signature),
"concatenate": ConstFunctionIntr(
args=('_', 'axis'),
defaults=(0,),
signature=Union[
# 1D
Fun[[Iterable[Iterable[bool]]], NDArray[bool, :]],
Fun[[Tuple[Iterable[bool]]], NDArray[bool, :]],
Fun[[Tuple[Iterable[bool], int]], NDArray[bool, :]],
Fun[[Tuple[Iterable[bool], Iterable[bool]]], NDArray[bool, :]],
Fun[[Tuple[Iterable[bool], Iterable[bool], int]],
NDArray[bool, :]],
Fun[[Tuple[Iterable[bool], Iterable[bool],
Iterable[bool]]], NDArray[bool, :]],
Fun[[Tuple[Iterable[bool], Iterable[bool],
Iterable[bool], int]], NDArray[bool, :]],
Fun[[Tuple[Iterable[bool], Iterable[bool], Iterable[
bool], Iterable[bool]]], NDArray[bool, :]],
Fun[[Tuple[Iterable[bool], Iterable[bool], Iterable[
bool], Iterable[bool], int]], NDArray[bool, :]],
Fun[[Iterable[Iterable[int]]], NDArray[int, :]],
Fun[[Tuple[Iterable[int]]], NDArray[int, :]],
Fun[[Tuple[Iterable[int], int]], NDArray[int, :]],
Fun[[Tuple[Iterable[int], Iterable[int]]], NDArray[int, :]],
Fun[[Tuple[Iterable[int], Iterable[int], int]],
NDArray[int, :]],
Fun[[Tuple[Iterable[int], Iterable[int], Iterable[int]]],
NDArray[int, :]],
Fun[[Tuple[Iterable[int], Iterable[int],
Iterable[int], int]], NDArray[int, :]],
Fun[[Tuple[Iterable[int], Iterable[int], Iterable[
int], Iterable[int]]], NDArray[int, :]],
Fun[[Tuple[Iterable[int], Iterable[int], Iterable[
int], Iterable[int], int]], NDArray[int, :]],
Fun[[Iterable[Iterable[float]]], NDArray[float, :]],
Fun[[Tuple[Iterable[float]]], NDArray[float, :]],
Fun[[Tuple[Iterable[float], int]], NDArray[float, :]],
Fun[[Tuple[Iterable[float], Iterable[float]]],
NDArray[float, :]],
Fun[[Tuple[Iterable[float], Iterable[float], int]],
NDArray[float, :]],
Fun[[Tuple[Iterable[float], Iterable[float],
Iterable[float]]], NDArray[float, :]],
Fun[[Tuple[Iterable[float], Iterable[float],
Iterable[float], int]], NDArray[float, :]],
Fun[[Tuple[Iterable[float], Iterable[float], Iterable[
float], Iterable[float]]], NDArray[float, :]],
Fun[[Tuple[Iterable[float], Iterable[float], Iterable[
float], Iterable[float], int]], NDArray[float, :]],
Fun[[Iterable[Iterable[complex]]], NDArray[complex, :]],
Fun[[Tuple[Iterable[complex]]], NDArray[complex, :]],
Fun[[Tuple[Iterable[complex], int]], NDArray[complex, :]],
Fun[[Tuple[Iterable[complex], Iterable[complex]]],
NDArray[complex, :]],
Fun[[Tuple[Iterable[complex], Iterable[complex], int]],
NDArray[complex, :]],
Fun[[Tuple[Iterable[complex], Iterable[complex],
Iterable[complex]]], NDArray[complex, :]],
Fun[[Tuple[Iterable[complex], Iterable[complex],
Iterable[complex], int]], NDArray[complex, :]],
Fun[[Tuple[Iterable[complex], Iterable[complex], Iterable[
complex], Iterable[complex]]], NDArray[complex, :]],
Fun[[Tuple[Iterable[complex], Iterable[complex], Iterable[
complex], Iterable[complex], int]], NDArray[complex, :]],
# 2D
Fun[[Iterable[Iterable[Iterable[bool]]]], NDArray[bool, :, :]],
Fun[[Tuple[Iterable[Iterable[bool]]]], NDArray[bool, :, :]],
Fun[[Tuple[Iterable[Iterable[bool]], int]],
NDArray[bool, :, :]],
Fun[[Tuple[Iterable[Iterable[bool]], Iterable[
Iterable[bool]]]], NDArray[bool, :, :]],
Fun[[Tuple[Iterable[Iterable[bool]], Iterable[
Iterable[bool]], int]], NDArray[bool, :, :]],
Fun[[Tuple[Iterable[Iterable[bool]], Iterable[Iterable[bool]],
Iterable[Iterable[bool]]]], NDArray[bool, :, :]],
Fun[[Tuple[Iterable[Iterable[bool]], Iterable[Iterable[bool]],
Iterable[Iterable[bool]], int]],
NDArray[bool, :, :]],
Fun[[Tuple[Iterable[Iterable[bool]], Iterable[Iterable[bool]],
Iterable[Iterable[bool]],
Iterable[Iterable[bool]]]],
NDArray[bool, :, :]],
Fun[[Tuple[Iterable[Iterable[bool]],
Iterable[Iterable[bool]],
Iterable[Iterable[bool]],
Iterable[Iterable[bool]], int]],
NDArray[bool, :, :]],
Fun[[Iterable[Iterable[Iterable[int]]]], NDArray[int, :, :]],
Fun[[Tuple[Iterable[Iterable[int]]]], NDArray[int, :, :]],
Fun[[Tuple[Iterable[Iterable[int]], int]], NDArray[int, :, :]],
Fun[[Tuple[Iterable[Iterable[int]], Iterable[
Iterable[int]]]], NDArray[int, :, :]],
Fun[[Tuple[Iterable[Iterable[int]], Iterable[
Iterable[int]], int]], NDArray[int, :, :]],
Fun[[Tuple[Iterable[Iterable[int]], Iterable[Iterable[int]],
Iterable[Iterable[int]]]], NDArray[int, :, :]],
Fun[[Tuple[Iterable[Iterable[int]], Iterable[Iterable[int]],
Iterable[Iterable[int]], int]], NDArray[int, :, :]],
Fun[[Tuple[Iterable[Iterable[int]], Iterable[Iterable[int]],
Iterable[Iterable[int]], Iterable[Iterable[int]]]],
NDArray[int, :, :]],
Fun[[Tuple[Iterable[Iterable[int]], Iterable[Iterable[int]],
Iterable[Iterable[int]], Iterable[Iterable[int]],
int]],
NDArray[int, :, :]],
Fun[[Iterable[Iterable[Iterable[float]]]],
NDArray[float, :, :]],
Fun[[Tuple[Iterable[Iterable[float]]]], NDArray[float, :, :]],
Fun[[Tuple[Iterable[Iterable[float]], int]],
NDArray[float, :, :]],
Fun[[Tuple[Iterable[Iterable[float]],
Iterable[Iterable[float]]]], NDArray[float, :, :]],
Fun[[Tuple[Iterable[Iterable[float]],
Iterable[Iterable[float]], int]],
NDArray[float, :, :]],
Fun[[Tuple[Iterable[Iterable[float]],
Iterable[Iterable[float]],
Iterable[Iterable[float]]]],
NDArray[float, :, :]],
Fun[[Tuple[Iterable[Iterable[float]],
Iterable[Iterable[float]],
Iterable[Iterable[float]], int]],
NDArray[float, :, :]],
Fun[[Tuple[Iterable[Iterable[float]],
Iterable[Iterable[float]],
Iterable[Iterable[float]],
Iterable[Iterable[float]]]], NDArray[float, :, :]],
Fun[[Tuple[Iterable[Iterable[float]],
Iterable[Iterable[float]],
Iterable[Iterable[float]],
Iterable[Iterable[float]], int]],
NDArray[float, :, :]],
Fun[[Iterable[Iterable[Iterable[complex]]]],
NDArray[complex, :, :]],
Fun[[Tuple[Iterable[Iterable[complex]]]],
NDArray[complex, :, :]],
Fun[[Tuple[Iterable[Iterable[complex]], int]],
NDArray[complex, :, :]],
Fun[[Tuple[Iterable[Iterable[complex]],
Iterable[Iterable[complex]]]],
NDArray[complex, :, :]],
Fun[[Tuple[Iterable[Iterable[complex]],
Iterable[Iterable[complex]], int]],
NDArray[complex, :, :]],
Fun[[Tuple[Iterable[Iterable[complex]],
Iterable[Iterable[complex]],
Iterable[Iterable[complex]]]],
NDArray[complex, :, :]],
Fun[[Tuple[Iterable[Iterable[complex]],
Iterable[Iterable[complex]],
Iterable[Iterable[complex]], int]],
NDArray[complex, :, :]],
Fun[[Tuple[Iterable[Iterable[complex]],
Iterable[Iterable[complex]],
Iterable[Iterable[complex]],
Iterable[Iterable[complex]]]],
NDArray[complex, :, :]],
Fun[[Tuple[Iterable[Iterable[complex]],
Iterable[Iterable[complex]],
Iterable[Iterable[complex]],
Iterable[Iterable[complex]], int]],
NDArray[complex, :, :]],
]
),
"complex": ConstFunctionIntr(signature=_complex_signature),
"complex64": ConstFunctionIntr(signature=_complex_signature),
"complex128": ConstFunctionIntr(signature=_complex_signature),
"complex256": ConstFunctionIntr(signature=_complex_signature),
"conj": ConstMethodIntr(signature=_numpy_unary_op_signature),
"conjugate": ConstMethodIntr(signature=_numpy_unary_op_signature),
"convolve": ConstMethodIntr(),
"correlate": ConstMethodIntr(),
"copy": ConstMethodIntr(signature=_numpy_array_signature),
"copyto": FunctionIntr(
argument_effects=[UpdateEffect(), ReadEffect(),
ReadEffect(), ReadEffect()],
signature=Union[
# 1d
Fun[[NDArray[bool, :], bool], None],
Fun[[NDArray[bool, :], Iterable[bool]], None],
Fun[[NDArray[int, :], int], None],
Fun[[NDArray[int, :], Iterable[int]], None],
Fun[[NDArray[float, :], float], None],
Fun[[NDArray[float, :], Iterable[float]], None],
Fun[[NDArray[complex, :], complex], None],
Fun[[NDArray[complex, :], Iterable[complex]], None],
# 2d
Fun[[NDArray[bool, :, :], bool], None],
Fun[[NDArray[bool, :, :], Iterable[bool]], None],
Fun[[NDArray[bool, :, :], Iterable[Iterable[bool]]], None],
Fun[[NDArray[int, :, :], int], None],
Fun[[NDArray[int, :, :], Iterable[int]], None],
Fun[[NDArray[int, :, :], Iterable[Iterable[int]]], None],
Fun[[NDArray[float, :, :], float], None],
Fun[[NDArray[float, :, :], Iterable[float]], None],
Fun[[NDArray[float, :, :], Iterable[Iterable[float]]], None],
Fun[[NDArray[complex, :, :], complex], None],
Fun[[NDArray[complex, :, :], Iterable[complex]], None],
Fun[[NDArray[complex, :, :],
Iterable[Iterable[complex]]], None],
# 3d
Fun[[NDArray[bool, :, :, :], bool], None],
Fun[[NDArray[bool, :, :, :], Iterable[bool]], None],
Fun[[NDArray[bool, :, :, :], Iterable[Iterable[bool]]], None],
Fun[[NDArray[bool, :, :, :],
Iterable[Iterable[Iterable[bool]]]], None],
Fun[[NDArray[int, :, :, :], int], None],
Fun[[NDArray[int, :, :, :], Iterable[int]], None],
Fun[[NDArray[int, :, :, :], Iterable[Iterable[int]]], None],
Fun[[NDArray[int, :, :, :],
Iterable[Iterable[Iterable[int]]]], None],
Fun[[NDArray[float, :, :, :], float], None],
Fun[[NDArray[float, :, :, :],
Iterable[float]], None],
Fun[[NDArray[float, :, :, :],
Iterable[Iterable[float]]], None],
Fun[[NDArray[float, :, :, :],
Iterable[Iterable[Iterable[float]]]], None],
Fun[[NDArray[complex, :, :, :],
complex], None],
Fun[[NDArray[complex, :, :, :], Iterable[complex]], None],
Fun[[NDArray[complex, :, :, :],
Iterable[Iterable[complex]]], None],
Fun[[NDArray[complex, :, :, :],
Iterable[Iterable[Iterable[complex]]]], None],
]
),
"copysign": UFunc(BINARY_UFUNC),
"count_nonzero": ConstFunctionIntr(
signature=Union[
# scalar
Fun[[bool], int],
Fun[[int], int],
Fun[[float], int],
Fun[[complex], int],
# 1d
Fun[[Iterable[bool]], int],
Fun[[Iterable[int]], int],
Fun[[Iterable[float]], int],
Fun[[Iterable[complex]], int],
# 2d
Fun[[Iterable[Iterable[bool]]], int],
Fun[[Iterable[Iterable[int]]], int],
Fun[[Iterable[Iterable[float]]], int],
Fun[[Iterable[Iterable[complex]]], int],
# 3d
Fun[[Iterable[Iterable[Iterable[bool]]]], int],
Fun[[Iterable[Iterable[Iterable[int]]]], int],
Fun[[Iterable[Iterable[Iterable[float]]]], int],
Fun[[Iterable[Iterable[Iterable[complex]]]], int],
# 4d
Fun[[Iterable[Iterable[Iterable[Iterable[bool]]]]], int],
Fun[[Iterable[Iterable[Iterable[Iterable[int]]]]], int],
Fun[[Iterable[Iterable[Iterable[Iterable[float]]]]], int],
Fun[[Iterable[Iterable[Iterable[Iterable[complex]]]]], int],
]
),
"cos": ConstFunctionIntr(
signature=_numpy_unary_op_float_signature
),
"cosh": ConstFunctionIntr(
signature=_numpy_unary_op_float_signature
),
"cross": ConstFunctionIntr(),
"ctypeslib": {
"as_array": ConstFunctionIntr()
},
"cumprod": ConstMethodIntr(
signature=_numpy_unary_op_cumsum_axis_signature
),
"cumproduct": ConstFunctionIntr(
signature=_numpy_unary_op_cumsum_axis_signature
),
"cumsum": ConstMethodIntr(
signature=_numpy_unary_op_cumsum_axis_signature
),
"deg2rad": ConstFunctionIntr(
signature=_numpy_float_unary_op_float_signature
),
"degrees": ConstFunctionIntr(
signature=_numpy_float_unary_op_float_signature
),
"delete": ConstFunctionIntr(),
"diag": ConstFunctionIntr(),
"diagflat": ConstFunctionIntr(),
"diagonal": ConstMethodIntr(),
"diff": ConstFunctionIntr(),
"digitize": ConstFunctionIntr(),
"divide": UFunc(BINARY_UFUNC),
"dot": ConstMethodIntr(),
"double": ConstFunctionIntr(signature=_float_signature),
"dtype": ClassWithConstConstructor(CLASSES["dtype"]),
"e": ConstantIntr(),
"ediff1d": ConstFunctionIntr(),
"empty": ConstFunctionIntr(args=('shape', 'dtype'),
defaults=("numpy.float64",),
signature=_numpy_ones_signature,
),
"empty_like": ConstFunctionIntr(
args=('a', 'dtype'),
defaults=("numpy.float64",),
signature=_numpy_ones_like_signature
),
"equal": UFunc(BINARY_UFUNC),
"exp": ConstFunctionIntr(signature=_numpy_unary_op_float_signature),
"expand_dims": ConstFunctionIntr(),
"expm1": ConstFunctionIntr(),
"eye": ConstFunctionIntr(),
"fabs": ConstFunctionIntr(),
"fill_diagonal": FunctionIntr(
argument_effects=[UpdateEffect(), ReadEffect()],
signature=Union[
Fun[[NDArray[T0, :], bool], None],
Fun[[NDArray[T0, :], int], None],
Fun[[NDArray[T0, :], float], None],
Fun[[NDArray[T0, :], complex], None],
]
),
"finfo": ClassWithConstConstructor(CLASSES['finfo']),
"fix": ConstFunctionIntr(),
"flatnonzero": ConstFunctionIntr(),
"fliplr": ConstFunctionIntr(),
"flip": ConstFunctionIntr(),
"flipud": ConstFunctionIntr(),
"float32": ConstFunctionIntr(signature=_float_signature),
"float64": ConstFunctionIntr(signature=_float_signature),
"float128": ConstFunctionIntr(signature=_float_signature),
"float": ConstFunctionIntr(signature=_float_signature),
"floor": ConstFunctionIntr(signature=_numpy_float_unary_op_signature),
"floor_divide": UFunc(BINARY_UFUNC),
"fmax": UFunc(REDUCED_BINARY_UFUNC),
"fmin": UFunc(REDUCED_BINARY_UFUNC),
"fmod": UFunc(BINARY_UFUNC),
"frexp": ConstFunctionIntr(),
"fromfunction": ConstFunctionIntr(),
"fromiter": ConstFunctionIntr(args=("iterable", "dtype", "count"),
defaults=(-1,)),
"fromstring": ConstFunctionIntr(),
"fromfile": FunctionIntr(args=('file', 'dtype', 'count', "sep", "offset"),
defaults=(None, None, -1, None, 0),
global_effects=True),
"full": ConstFunctionIntr(signature=_numpy_ones_signature),
"full_like": ConstFunctionIntr(signature=_numpy_ones_like_signature),
"greater": UFunc(
BINARY_UFUNC,
signature=_numpy_binary_op_bool_signature,
),
"greater_equal": UFunc(
BINARY_UFUNC,
signature=_numpy_binary_op_bool_signature,
),
"heaviside": UFunc(BINARY_UFUNC),
"hstack": ConstFunctionIntr(),
"hypot": UFunc(BINARY_UFUNC),
"identity": ConstFunctionIntr(),
"imag": FunctionIntr(),
"indices": ConstFunctionIntr(),
"inf": ConstantIntr(),
"Inf": ConstantIntr(),
"inner": ConstFunctionIntr(),
"insert": ConstFunctionIntr(),
"interp": ConstFunctionIntr(),
"intersect1d": ConstFunctionIntr(),
"int16": ConstFunctionIntr(signature=_int_signature),
"int32": ConstFunctionIntr(signature=_int_signature),
"int64": ConstFunctionIntr(signature=_int_signature),
"int8": ConstFunctionIntr(signature=_int_signature),
"intc": ConstFunctionIntr(signature=_int_signature),
"intp": ConstFunctionIntr(signature=_int_signature),
"invert": ConstFunctionIntr(),
"isclose": ConstFunctionIntr(),
"iscomplex": ConstFunctionIntr(),
"isfinite": ConstFunctionIntr(),
"isinf": ConstFunctionIntr(),
"isnan": ConstFunctionIntr(),
"isneginf": ConstFunctionIntr(),
"isposinf": ConstFunctionIntr(),
"isreal": ConstFunctionIntr(),
"isrealobj": ConstFunctionIntr(),
"isscalar": ConstFunctionIntr(),
"issctype": ConstFunctionIntr(),
"ldexp": UFunc(BINARY_UFUNC),
"left_shift": UFunc(
BINARY_UFUNC,
signature=_numpy_int_binary_op_signature,
),
"less": UFunc(
BINARY_UFUNC,
signature=_numpy_binary_op_bool_signature,
),
"less_equal": UFunc(
BINARY_UFUNC,
signature=_numpy_binary_op_bool_signature,
),
"lexsort": ConstFunctionIntr(),
"linalg": {
"norm": FunctionIntr(args=('x', 'ord', 'axis'),
defaults=(None, None)),
"matrix_power": ConstFunctionIntr(),
},
"linspace": ConstFunctionIntr(),
"log": ConstFunctionIntr(),
"log10": ConstFunctionIntr(),
"log1p": ConstFunctionIntr(),
"log2": ConstFunctionIntr(),
"logaddexp": UFunc(BINARY_UFUNC),
"logaddexp2": UFunc(BINARY_UFUNC),
"logspace": ConstFunctionIntr(),
"logical_and": UFunc(
BINARY_UFUNC,
signature=_numpy_int_binary_op_signature
),
"logical_not": ConstFunctionIntr(),
"logical_or": UFunc(
BINARY_UFUNC,
signature=_numpy_int_binary_op_signature
),
"logical_xor": UFunc(
BINARY_UFUNC,
signature=_numpy_int_binary_op_signature
),
"longlong": ConstFunctionIntr(signature=_int_signature),
"max": ConstMethodIntr(signature=_numpy_unary_op_axis_signature),
"maximum": UFunc(
REDUCED_BINARY_UFUNC,
signature=_numpy_binary_op_signature
),
"mean": ConstMethodIntr(immediate_arguments=[4]),
"median": ConstFunctionIntr(
signature=_numpy_unary_op_sum_axis_signature
),
"min": ConstMethodIntr(signature=_numpy_unary_op_axis_signature),
"minimum": UFunc(
REDUCED_BINARY_UFUNC,
signature=_numpy_binary_op_signature
),
"mod": UFunc(BINARY_UFUNC),
"multiply": UFunc(
REDUCED_BINARY_UFUNC,
signature=_numpy_binary_op_signature,
),
"nan": ConstantIntr(),
"nan_to_num": ConstFunctionIntr(),
"nanargmax": ConstFunctionIntr(),
"nanargmin": ConstFunctionIntr(),
"nanmax": ConstFunctionIntr(),
"nanmin": ConstFunctionIntr(),
"nansum": ConstFunctionIntr(),
"ndenumerate": ConstFunctionIntr(),
"ndarray": ClassWithConstConstructor(CLASSES["ndarray"]),
"ndindex": ConstFunctionIntr(),
"ndim": ConstFunctionIntr(return_range=interval.positive_values),
"negative": ConstFunctionIntr(signature=_numpy_unary_op_signature),
"newaxis": ConstantIntr(),
"nextafter": UFunc(BINARY_UFUNC),
"NINF": ConstantIntr(),
"nonzero": ConstMethodIntr(),
"not_equal": UFunc(BINARY_UFUNC),
"ones": ConstFunctionIntr(signature=_numpy_ones_signature),
"ones_like": ConstFunctionIntr(signature=_numpy_ones_like_signature),
"outer": ConstFunctionIntr(),
"pi": ConstantIntr(),
"place": FunctionIntr(),
"power": UFunc(
BINARY_UFUNC,
signature=_numpy_binary_op_signature
),
"prod": ConstMethodIntr(),
"product": ConstFunctionIntr(),
"ptp": ConstMethodIntr(),
"put": MethodIntr(),
"putmask": FunctionIntr(),
"rad2deg": ConstFunctionIntr(
signature=_numpy_float_unary_op_float_signature
),
"radians": ConstFunctionIntr(
signature=_numpy_float_unary_op_float_signature
),
"fft": {
"fft": FunctionIntr(args=("a", "n", "axis", "norm"),
defaults=(None, -1, None), global_effects=True),
"ifft": FunctionIntr(args=("a", "n", "axis", "norm"),
defaults=( None, -1, None), global_effects=True),
"rfft": FunctionIntr(args=('a','n','axis','norm'), defaults=(None,-1,-1,None),global_effects=True),
"irfft": FunctionIntr(args=('a','n','axis','norm'), defaults=(None,-1,-1,None),global_effects=True),
"hfft": FunctionIntr(args=('a','n','axis','norm'), defaults=(None,-1,-1,None),global_effects=True),
"ihfft": FunctionIntr(args=('a','n','axis','norm'), defaults=(None,-1,-1,None),global_effects=True),
},
"random": {
"binomial": FunctionIntr(args=('n', 'p', 'size'),
global_effects=True),
"bytes": FunctionIntr(args=('length',),
global_effects=True),
"chisquare": FunctionIntr(args=('df', 'size',),
global_effects=True),
"choice": FunctionIntr(args=('a', 'size', 'replace', 'p'),
global_effects=True),
"dirichlet": FunctionIntr(args=('alpha', 'size',),
global_effects=True),
"exponential": FunctionIntr(args=('scale', 'size',),
defaults=(1.0, None,),
global_effects=True),
"f": FunctionIntr(args=('dfnum', 'dfden', 'size'),
global_effects=True),
"gamma": FunctionIntr(args=('shape', 'scale', 'size',),
defaults=(None, 1.0, None,),
global_effects=True),
"geometric": FunctionIntr(args=('p', 'size',),
global_effects=True),
"pareto": FunctionIntr(args=('a', 'size',),
global_effects=True),
"gumbel": FunctionIntr(args=('loc', 'scale', 'size',),
defaults=(0.0, 1.0, None,),
global_effects=True),
"poisson": FunctionIntr(args=('lam', 'size',),
defaults=(1.0, None,),
global_effects=True),
"negative_binomial": FunctionIntr(args=('n', 'p', 'size',),
global_effects=True),
"normal": FunctionIntr(args=('loc', 'scale', 'size',),
defaults=(0.0, 1.0, None,),
global_effects=True),
"laplace": FunctionIntr(args=('loc', 'scale', 'size',),
defaults=(0.0, 1.0, None,),
global_effects=True),
"logistic": FunctionIntr(args=('loc', 'scale', 'size',),
defaults=(0.0, 1.0, None,),
global_effects=True),
"lognormal": FunctionIntr(args=('mean', 'sigma', 'size',),
defaults=(0.0, 1.0, None,),
global_effects=True),
"logseries": FunctionIntr(args=('p', 'size',),
global_effects=True),
"power": FunctionIntr(args=('a', 'size',),
global_effects=True),
"rand": FunctionIntr(args=(),
global_effects=True),
"ranf": FunctionIntr(args=('size',),
global_effects=True),
"randint": FunctionIntr(args=("low", "high", "size"),
defaults=(None, None),
global_effects=True),
"randn": FunctionIntr(args=(),
global_effects=True),
"random": FunctionIntr(args=('size',),
global_effects=True),
"random_integers": FunctionIntr(args=("low", "high", "size"),
global_effects=True),
"random_sample": FunctionIntr(args=('size',),
global_effects=True),
"rayleigh": FunctionIntr(args=('scale', 'size',),
defaults=(1.0, None,),
global_effects=True),
"sample": FunctionIntr(args=('size',),
global_effects=True),
"seed": FunctionIntr(global_effects=True),
"shuffle": FunctionIntr(global_effects=True),
"standard_exponential": FunctionIntr(args=('size',),
global_effects=True),
"standard_gamma": FunctionIntr(args=('shape', 'size',),
global_effects=True),
"standard_normal": FunctionIntr(args=('size',),
global_effects=True),
"uniform": FunctionIntr(args=('low', 'high', 'size',),
defaults=(0.0, 1.0, None,),
global_effects=True),
"weibull": FunctionIntr(args=('a', 'size',),
global_effects=True),
},
"ravel": ConstMethodIntr(
return_alias=lambda args: {args[0]}
),
"real": FunctionIntr(),
"reciprocal": ConstFunctionIntr(),
"remainder": UFunc(BINARY_UFUNC),
"repeat": ConstMethodIntr(),
"resize": ConstMethodIntr(),
"right_shift": UFunc(
BINARY_UFUNC,
signature=_numpy_int_binary_op_signature,
),
"rint": ConstFunctionIntr(),
"roll": ConstFunctionIntr(),
"rollaxis": ConstFunctionIntr(),
"rot90": ConstFunctionIntr(),
"round": ConstMethodIntr(),
"round_": ConstMethodIntr(),
"searchsorted": ConstMethodIntr(),
"select": ConstFunctionIntr(),
"setdiff1d": ConstFunctionIntr(),
"shape": ConstFunctionIntr(),
"short_": ConstFunctionIntr(signature=_int_signature),
"sign": ConstFunctionIntr(),
"signbit": ConstFunctionIntr(),
"sin": ConstFunctionIntr(signature=_numpy_unary_op_float_signature),
"sinh": ConstFunctionIntr(signature=_numpy_unary_op_float_signature),
"size": ConstFunctionIntr(return_range=interval.positive_values),
"sometrue": ConstFunctionIntr(),
"sort": ConstFunctionIntr(),
"sort_complex": ConstFunctionIntr(),
"spacing": ConstFunctionIntr(),
"split": ConstFunctionIntr(),
"sqrt": ConstFunctionIntr(signature=_numpy_unary_op_float_signature),
"square": ConstFunctionIntr(),
"stack": ConstFunctionIntr(),
"std": ConstMethodIntr(),
"subtract": UFunc(
BINARY_UFUNC,
signature=_numpy_binary_op_signature,
),
"sum": ReadOnceMethodIntr(
signature=_numpy_unary_op_sum_axis_signature),
"swapaxes": ConstMethodIntr(),
"short": ConstFunctionIntr(signature=_int_signature),
"take": ConstMethodIntr(),
"tan": ConstFunctionIntr(signature=_numpy_unary_op_float_signature),
"tanh": ConstFunctionIntr(signature=_numpy_unary_op_float_signature),
"tile": ConstFunctionIntr(),
"trace": ConstMethodIntr(),
"transpose": ConstMethodIntr(),
"tri": ConstMethodIntr(),
"tril": ConstMethodIntr(),
"trim_zeros": ConstMethodIntr(),
"triu": ConstMethodIntr(),
"true_divide": UFunc(BINARY_UFUNC),
"trunc": ConstFunctionIntr(),
"ubyte": ConstFunctionIntr(signature=_int_signature),
"uint16": ConstFunctionIntr(signature=_int_signature),
"uint32": ConstFunctionIntr(signature=_int_signature),
"uint64": ConstFunctionIntr(signature=_int_signature),
"uintc": ConstFunctionIntr(signature=_int_signature),
"uintp": ConstFunctionIntr(signature=_int_signature),
"uint8": ConstFunctionIntr(signature=_int_signature),
"ulonglong": ConstFunctionIntr(signature=_int_signature),
"union1d": ConstFunctionIntr(),
"unique": ConstFunctionIntr(immediate_arguments=[1, 2, 3]),
"unwrap": ConstFunctionIntr(),
"unravel_index": ConstFunctionIntr(),
"ushort": ConstFunctionIntr(signature=_int_signature),
"var": ConstMethodIntr(),
"vdot": ConstMethodIntr(),
"vstack": ConstFunctionIntr(),
"where": ConstFunctionIntr(),
"zeros": ConstFunctionIntr(args=('shape', 'dtype'),
defaults=("numpy.float64",),
signature=_numpy_ones_signature,
),
"zeros_like": ConstFunctionIntr(signature=_numpy_ones_like_signature),
},
"time": {
"sleep": FunctionIntr(
signature=Fun[[float], None],
global_effects=True
),
"time": FunctionIntr(
signature=Fun[[], float],
global_effects=True
),
},
"math": {
"isinf": ConstFunctionIntr(signature=Fun[[float], bool]),
"modf": ConstFunctionIntr(signature=Fun[[float], Tuple[float, float]]),
"frexp": ConstFunctionIntr(signature=Fun[[float], Tuple[float, int]]),
"factorial": ConstFunctionIntr(signature=Fun[[int], int]),
"gamma": ConstFunctionIntr(signature=Fun[[float], float]),
"lgamma": ConstFunctionIntr(signature=Fun[[float], float]),
"trunc": ConstFunctionIntr(signature=Fun[[float], int]),
"erf": ConstFunctionIntr(signature=Fun[[float], float]),
"erfc": ConstFunctionIntr(signature=Fun[[float], float]),
"asinh": ConstFunctionIntr(signature=Fun[[float], float]),
"atanh": ConstFunctionIntr(signature=Fun[[float], float]),
"acosh": ConstFunctionIntr(signature=Fun[[float], float]),
"radians": ConstFunctionIntr(signature=Fun[[float], float]),
"degrees": ConstFunctionIntr(signature=Fun[[float], float]),
"hypot": ConstFunctionIntr(signature=Fun[[float, float], float]),
"tanh": ConstFunctionIntr(signature=Fun[[float], float]),
"cosh": ConstFunctionIntr(signature=Fun[[float], float]),
"sinh": ConstFunctionIntr(signature=Fun[[float], float]),
"atan": ConstFunctionIntr(signature=Fun[[float], float]),
"atan2": ConstFunctionIntr(signature=Fun[[float, float], float]),
"asin": ConstFunctionIntr(signature=Fun[[float], float]),
"tan": ConstFunctionIntr(signature=Fun[[float], float]),
"log": ConstFunctionIntr(signature=Fun[[float], float]),
"log1p": ConstFunctionIntr(signature=Fun[[float], float]),
"expm1": ConstFunctionIntr(signature=Fun[[float], float]),
"ldexp": ConstFunctionIntr(signature=Fun[[float, int], float]),
"fmod": ConstFunctionIntr(signature=Fun[[float, float], float]),
"fabs": ConstFunctionIntr(signature=Fun[[float], float]),
"copysign": UFunc(BINARY_UFUNC),
"acos": ConstFunctionIntr(signature=Fun[[float], float]),
"cos": ConstFunctionIntr(signature=Fun[[float], float]),
"sin": ConstFunctionIntr(signature=Fun[[float], float]),
"exp": ConstFunctionIntr(signature=Fun[[float], float]),
"sqrt": ConstFunctionIntr(signature=Fun[[float], float]),
"log10": ConstFunctionIntr(signature=Fun[[float], float]),
"isnan": ConstFunctionIntr(signature=Fun[[float], bool]),
"ceil": ConstFunctionIntr(signature=Fun[[float], float]),
"floor": ConstFunctionIntr(signature=Fun[[float], float]),
"pow": ConstFunctionIntr(signature=Fun[[float, float], float]),
"pi": ConstantIntr(signature=float),
"e": ConstantIntr(signature=float),
},
"functools": {
"partial": FunctionIntr(
signature=Union[
# no arg
Fun[[Fun[[], T0]], Fun[[], T0]],
# 1 arg
Fun[[Fun[[T0], T1]], Fun[[T0], T1]],
Fun[[Fun[[T0], T1], T0], Fun[[], T1]],
# 2 args
Fun[[Fun[[T0, T1], T2]], Fun[[T0, T1], T2]],
Fun[[Fun[[T0, T1], T2], T0], Fun[[T1], T2]],
Fun[[Fun[[T0, T1], T2], T0, T1], Fun[[], T2]],
# 3 args
Fun[[Fun[[T0, T1, T2], T3]], Fun[[T0, T1, T2], T3]],
Fun[[Fun[[T0, T1, T2], T3], T0], Fun[[T1, T2], T3]],
Fun[[Fun[[T0, T1, T2], T3], T0, T1], Fun[[T2], T3]],
Fun[[Fun[[T0, T1, T2], T3], T0, T1, T2], Fun[[], T3]],
# 4 args
Fun[[Fun[[T0, T1, T2, T3], T4]], Fun[[T0, T1, T2, T3], T4]],
Fun[[Fun[[T0, T1, T2, T3], T4], T0], Fun[[T1, T2, T3], T4]],
Fun[[Fun[[T0, T1, T2, T3], T4], T0, T1], Fun[[T2, T3], T4]],
Fun[[Fun[[T0, T1, T2, T3], T4], T0, T1, T2], Fun[[T3], T4]],
Fun[[Fun[[T0, T1, T2, T3], T4], T0, T1, T2, T3], Fun[[], T4]],
# 5 args
Fun[[Fun[[T0, T1, T2, T3, T4], T5]],
Fun[[T0, T1, T2, T3, T4], T5]],
Fun[[Fun[[T0, T1, T2, T3, T4], T5], T0],
Fun[[T1, T2, T3, T4], T5]],
Fun[[Fun[[T0, T1, T2, T3, T4], T5], T0, T1],
Fun[[T2, T3, T4], T5]],
Fun[[Fun[[T0, T1, T2, T3, T4], T5], T0, T1, T2],
Fun[[T3, T4], T5]],
Fun[[Fun[[T0, T1, T2, T3, T4], T5], T0, T1, T2, T3],
Fun[[T4], T5]],
Fun[[Fun[[T0, T1, T2, T3, T4], T5], T0, T1, T2, T3, T4],
Fun[[], T5]],
# 6 args
Fun[[Fun[[T0, T1, T2, T3, T4, T5], T6]],
Fun[[T0, T1, T2, T3, T4, T5], T6]],
Fun[[Fun[[T0, T1, T2, T3, T4, T5], T6],
T0], Fun[[T1, T2, T3, T4, T5], T6]],
Fun[[Fun[[T0, T1, T2, T3, T4, T5], T6],
T0, T1], Fun[[T2, T3, T4, T5], T6]],
Fun[[Fun[[T0, T1, T2, T3, T4, T5], T6],
T0, T1, T2], Fun[[T3, T4, T5], T6]],
Fun[[Fun[[T0, T1, T2, T3, T4, T5], T6],
T0, T1, T2, T3], Fun[[T4, T5], T6]],
Fun[[Fun[[T0, T1, T2, T3, T4, T5], T6],
T0, T1, T2, T3, T4], Fun[[T5], T6]],
Fun[[Fun[[T0, T1, T2, T3, T4, T5], T6],
T0, T1, T2, T3, T4, T5], Fun[[], T6]],
]
),
"reduce": ReadOnceFunctionIntr(signature=_functools_reduce_signature),
},
"bisect": {
"bisect_left": ConstFunctionIntr(
signature=Union[
Fun[[List[T0], T0], int],
Fun[[List[T0], T0, int], int],
Fun[[List[T0], T0, int, int], int],
],
return_range=interval.positive_values
),
"bisect_right": ConstFunctionIntr(
signature=Union[
Fun[[List[T0], T0], int],
Fun[[List[T0], T0, int], int],
Fun[[List[T0], T0, int, int], int],
],
return_range=interval.positive_values
),
"bisect": ConstFunctionIntr(
signature=Union[
Fun[[List[T0], T0], int],
Fun[[List[T0], T0, int], int],
Fun[[List[T0], T0, int, int], int],
],
return_range=interval.positive_values
),
},
"cmath": {
"cos": FunctionIntr(
signature=Union[
Fun[[float], complex],
Fun[[complex], complex],
],
),
"sin": FunctionIntr(
signature=Union[
Fun[[float], complex],
Fun[[complex], complex],
],
),
"exp": FunctionIntr(
signature=Union[
Fun[[float], complex],
Fun[[complex], complex],
],
),
"sqrt": FunctionIntr(
signature=Union[
Fun[[float], complex],
Fun[[complex], complex],
],
),
"log10": FunctionIntr(
signature=Union[
Fun[[float], complex],
Fun[[complex], complex],
],
),
"isnan": FunctionIntr(
signature=Union[
Fun[[float], bool],
Fun[[complex], bool],
],
),
"pi": ConstantIntr(signature=float),
"e": ConstantIntr(signature=float),
},
'io': {
'_io': {
"TextIOWrapper": ClassWithConstConstructor(
CLASSES['file'], global_effects=True)
}
},
"itertools": {
"count": ReadOnceFunctionIntr(
signature=Union[
Fun[[], Generator[int]],
Fun[[int], Generator[int]],
Fun[[int, int], Generator[int]],
]
),
"islice": ReadOnceFunctionIntr(),
"product": ConstFunctionIntr(
signature=Union[
Fun[[], Generator[T0]],
Fun[[Iterable[T0]], Generator[Tuple[T0]]],
Fun[[Iterable[T0], Iterable[T1]], Generator[Tuple[T0, T1]]],
Fun[[Iterable[T0], Iterable[T1], Iterable[T2]],
Generator[Tuple[T0, T1, T2]]],
Fun[[Iterable[T0], Iterable[T1], Iterable[T2], Iterable[T3]],
Generator[Tuple[T0, T1, T2, T3]]],
],
),
"combinations": ConstFunctionIntr(
signature=Fun[[Iterable[T0], int], Generator[List[T0]]]),
"permutations": ConstFunctionIntr(
signature=Union[
Fun[[Iterable[T0]], Generator[List[T0]]],
Fun[[Iterable[T0], int], Generator[List[T0]]],
],
),
"repeat": ConstFunctionIntr(
signature=Union[
Fun[[T0], Iterable[T0]],
Fun[[T0, int], Iterable[T0]],
],
),
},
"random": {
"seed": FunctionIntr(
signature=Union[
Fun[[], None],
Fun[[T0], None],
],
global_effects=True
),
"random": FunctionIntr(
signature=Fun[[], float],
global_effects=True
),
"randint": FunctionIntr(
signature=Fun[[int, int], int],
global_effects=True
),
"randrange": FunctionIntr(
signature=Union[
Fun[[int], int],
Fun[[int, int], int],
Fun[[int, int, int], int]
],
global_effects=True
),
"gauss": FunctionIntr(
signature=Fun[[float, float], float],
global_effects=True
),
"uniform": FunctionIntr(
signature=Fun[[float, float], float],
global_effects=True
),
"expovariate": FunctionIntr(
signature=Fun[[float], float],
global_effects=True
),
"sample": FunctionIntr(
signature=Fun[[Iterable[T0], int], List[T0]],
global_effects=True
),
"choice": FunctionIntr(
signature=Fun[[Iterable[T0]], T0],
global_effects=True
),
"shuffle": FunctionIntr(
signature=Union[
Fun[[List[T0]], None],
Fun[[List[T0], Fun[[], float]], None],
],
global_effects=True
),
},
"omp": {
"set_num_threads": FunctionIntr(global_effects=True),
"get_num_threads": FunctionIntr(global_effects=True),
"get_max_threads": FunctionIntr(global_effects=True),
"get_thread_num": FunctionIntr(global_effects=True),
"get_num_procs": FunctionIntr(global_effects=True),
"in_parallel": FunctionIntr(global_effects=True),
"set_dynamic": FunctionIntr(global_effects=True),
"get_dynamic": FunctionIntr(global_effects=True),
"set_nested": FunctionIntr(global_effects=True),
"get_nested": FunctionIntr(global_effects=True),
"init_lock": FunctionIntr(global_effects=True),
"destroy_lock": FunctionIntr(global_effects=True),
"set_lock": FunctionIntr(global_effects=True),
"unset_lock": FunctionIntr(global_effects=True),
"test_lock": FunctionIntr(global_effects=True),
"init_nest_lock": FunctionIntr(global_effects=True),
"destroy_nest_lock": FunctionIntr(global_effects=True),
"set_nest_lock": FunctionIntr(global_effects=True),
"unset_nest_lock": FunctionIntr(global_effects=True),
"test_nest_lock": FunctionIntr(global_effects=True),
"get_wtime": FunctionIntr(global_effects=True),
"get_wtick": FunctionIntr(global_effects=True),
},
"operator": {
"lt": ConstFunctionIntr(signature=_operator_eq_signature),
"le": ConstFunctionIntr(signature=_operator_eq_signature),
"eq": ConstFunctionIntr(signature=_operator_eq_signature),
"ne": ConstFunctionIntr(signature=_operator_eq_signature),
"ge": ConstFunctionIntr(signature=_operator_eq_signature),
"gt": ConstFunctionIntr(signature=_operator_eq_signature),
"__lt__": ConstFunctionIntr(signature=_operator_eq_signature),
"__le__": ConstFunctionIntr(signature=_operator_eq_signature),
"__eq__": ConstFunctionIntr(signature=_operator_eq_signature),
"__ne__": ConstFunctionIntr(signature=_operator_eq_signature),
"__ge__": ConstFunctionIntr(signature=_operator_eq_signature),
"__gt__": ConstFunctionIntr(signature=_operator_eq_signature),
"not_": ConstFunctionIntr(),
"__not__": ConstFunctionIntr(),
"truth": ConstFunctionIntr(),
"is_": ConstFunctionIntr(),
"is_not": ConstFunctionIntr(),
"abs": ConstFunctionIntr(),
"__abs__": ConstFunctionIntr(),
"add": ConstFunctionIntr(signature=_operator_add_signature),
"__add__": ConstFunctionIntr(signature=_operator_add_signature),
"and_": ConstFunctionIntr(),
"__and__": ConstFunctionIntr(),
"floordiv": ConstFunctionIntr(signature=_numpy_binary_op_signature),
"__floordiv__": ConstFunctionIntr(
signature=_numpy_binary_op_signature
),
"inv": ConstFunctionIntr(),
"invert": ConstFunctionIntr(),
"__inv__": ConstFunctionIntr(),
"__invert__": ConstFunctionIntr(),
"lshift": ConstFunctionIntr(signature=_numpy_int_binary_op_signature),
"__lshift__": ConstFunctionIntr(
signature=_numpy_int_binary_op_signature
),
"matmul": ConstFunctionIntr(signature=_operator_mul_signature),
"__matmul__": ConstFunctionIntr(signature=_operator_mul_signature),
"mod": ConstFunctionIntr(signature=_operator_mod_signature),
"__mod__": ConstFunctionIntr(signature=_operator_mod_signature),
"mul": ConstFunctionIntr(signature=_operator_mul_signature),
"__mul__": ConstFunctionIntr(signature=_operator_mul_signature),
"neg": ConstFunctionIntr(),
"__neg__": ConstFunctionIntr(),
"or_": ConstFunctionIntr(),
"__or__": ConstFunctionIntr(),
"pos": ConstFunctionIntr(signature=_numpy_unary_op_signature),
"__pos__": ConstFunctionIntr(signature=_numpy_unary_op_signature),
"rshift": ConstFunctionIntr(signature=_numpy_int_binary_op_signature),
"__rshift__": ConstFunctionIntr(
signature=_numpy_int_binary_op_signature
),
"sub": ConstFunctionIntr(signature=_operator_sub_signature),
"__sub__": ConstFunctionIntr(signature=_operator_sub_signature),
"truediv": ConstFunctionIntr(),
"__truediv__": ConstFunctionIntr(),
"xor": ConstFunctionIntr(),
"__xor__": ConstFunctionIntr(),
"concat": ConstFunctionIntr(),
"__concat__": ConstFunctionIntr(),
"iadd": MethodIntr(update_effects),
"__iadd__": MethodIntr(update_effects),
"iand": MethodIntr(update_effects),
"__iand__": MethodIntr(update_effects),
"iconcat": MethodIntr(update_effects),
"__iconcat__": MethodIntr(update_effects),
"ifloordiv": MethodIntr(update_effects),
"__ifloordiv__": MethodIntr(update_effects),
"ilshift": MethodIntr(update_effects),
"__ilshift__": MethodIntr(update_effects),
"imod": MethodIntr(update_effects),
"__imod__": MethodIntr(update_effects),
"imul": MethodIntr(update_effects),
"__imul__": MethodIntr(update_effects),
"ior": MethodIntr(update_effects),
"__ior__": MethodIntr(update_effects),
"ipow": MethodIntr(update_effects),
"__ipow__": MethodIntr(update_effects),
"irshift": MethodIntr(update_effects),
"__irshift__": MethodIntr(update_effects),
"isub": MethodIntr(update_effects),
"__isub__": MethodIntr(update_effects),
"itruediv": MethodIntr(update_effects),
"__itruediv__": MethodIntr(update_effects),
"ixor": MethodIntr(update_effects),
"__ixor__": MethodIntr(update_effects),
"contains": MethodIntr(
update_effects,
signature=_operator_contains_signature
),
"__contains__": MethodIntr(
update_effects,
signature=_operator_contains_signature
),
"countOf": ConstFunctionIntr(),
"delitem": FunctionIntr(
argument_effects=[UpdateEffect(), ReadEffect()]),
"__delitem__": FunctionIntr(
argument_effects=[UpdateEffect(), ReadEffect()]),
"getitem": ConstFunctionIntr(signature=_operator_getitem_signature),
"__getitem__": ConstFunctionIntr(
signature=_operator_getitem_signature
),
"indexOf": ConstFunctionIntr(),
"__theitemgetter__": ConstFunctionIntr(),
"itemgetter": MethodIntr(
return_alias=lambda _: {
MODULES['operator']['__theitemgetter__']}
),
},
"string": {
"ascii_lowercase": ConstantIntr(signature=str),
"ascii_uppercase": ConstantIntr(signature=str),
"ascii_letters": ConstantIntr(signature=str),
"digits": ConstantIntr(signature=str),
"hexdigits": ConstantIntr(signature=str),
"octdigits": ConstantIntr(signature=str),
},
"os": {
"path": {
"join": ConstFunctionIntr(
signature=Union[
Fun[[str], str],
Fun[[str, str], str],
Fun[[str, str, str], str],
Fun[[str, str, str, str], str],
Fun[[str, str, str, str, str], str],
]
),
}
},
# conflicting method names must be listed here
"__dispatch__": {
"clear": MethodIntr(signature=Fun[[T0], None]),
"conjugate": ConstMethodIntr(),
"copy": ConstMethodIntr(signature=Fun[[T0], T0]),
"count": ConstMethodIntr(
signature=Union[
Fun[[Iterable[T0], T0], int],
Fun[[Iterable[T0], T0, int], int],
Fun[[Iterable[T0], T0, int, int], int],
],
return_range=interval.positive_values
),
"index": ConstMethodIntr(
signature=Union[
Fun[[Iterable[T0], T0], int],
Fun[[Iterable[T0], T0, int], int],
Fun[[Iterable[T0], T0, int, int], int],
],
return_range=interval.positive_values
),
"pop": MethodIntr(),
"remove": MethodIntr(),
"sort": MethodIntr(),
"update": MethodIntr(update_effects),
},
}
if sys.version_info < (3, 5):
del MODULES['operator']['matmul']
del MODULES['operator']['__matmul__']
# VMSError is only available on VMS
if 'VMSError' in sys.modules['builtins'].__dict__:
MODULES['builtins']['VMSError'] = ConstExceptionIntr()
# WindowsError is only available on Windows
if 'WindowsError' in sys.modules['builtins'].__dict__:
MODULES['builtins']['WindowsError'] = ConstExceptionIntr()
# detect and prune unsupported modules
for module_name in ["omp", "scipy", "scipy.special"]:
try:
__import__(module_name)
except:
logger.info(
"Pythran support for package '{}' will be reduced: "
"this module is not available at runtime.".format(module_name)
)
# check and delete unimplemented numpy methods
for method in list(MODULES['numpy'].keys()):
if not hasattr(numpy, method):
del MODULES['numpy'][method]
# if openmp is available, check its version and populate the API accordingly
try:
omp_version = getattr(__import__('omp'), 'VERSION', 45)
if omp_version >= 30:
MODULES['omp'].update({
"set_schedule": FunctionIntr(global_effects=True),
"get_schedule": FunctionIntr(global_effects=True),
"get_thread_limit": FunctionIntr(global_effects=True),
"set_max_active_levels": FunctionIntr(global_effects=True),
"get_max_active_levels": FunctionIntr(global_effects=True),
"get_level": FunctionIntr(global_effects=True),
"get_ancestor_thread_num": FunctionIntr(global_effects=True),
"get_team_size": FunctionIntr(global_effects=True),
"get_active_level": FunctionIntr(global_effects=True),
"in_final": FunctionIntr(global_effects=True),
})
except ImportError:
pass
# populate argument description through introspection
def save_arguments(module_name, elements):
""" Recursively save arguments name and default value. """
for elem, signature in elements.items():
if isinstance(signature, dict): # Submodule case
save_arguments(module_name + (elem,), signature)
else:
# use introspection to get the Python obj
try:
themodule = __import__(".".join(module_name))
obj = getattr(themodule, elem)
while hasattr(obj, '__wrapped__'):
obj = obj.__wrapped__
# first try to gather info through getfullargspec
spec = inspect.getfullargspec(obj)
args = [ast.Name(arg, ast.Param(), None, None)
for arg in spec.args]
defaults = list(spec.defaults or [])
args += [ast.Name(arg, ast.Param(), None, None)
for arg in spec.kwonlyargs]
defaults += [spec.kwonlydefaults[kw] for kw in spec.kwonlyargs]
# Sanity check
if signature.args.args:
logger.warning(
"Overriding pythran description with argspec "
"information for: {}".format(
".".join(module_name + (elem,))))
# Avoid use of comprehension to fill "as much args/defauls" as
# possible
signature.args.args = args[:-len(defaults) or None]
signature.args.defaults = []
for arg, value in zip(args[-len(defaults):], defaults):
signature.args.defaults.append(to_ast(value))
signature.args.args.append(arg)
except (AttributeError, ImportError, TypeError, ToNotEval):
pass
save_arguments((), MODULES)
# Fill return_type field for constants
def fill_constants_types(module_name, elements):
""" Recursively save arguments name and default value. """
for elem, intrinsic in elements.items():
if isinstance(intrinsic, dict): # Submodule case
fill_constants_types(module_name + (elem,), intrinsic)
elif isinstance(intrinsic, ConstantIntr):
# use introspection to get the Python constants types
cst = getattr(__import__(".".join(module_name)), elem)
intrinsic.signature = type(cst)
fill_constants_types((), MODULES)
# a method name to module binding
# {method_name : ((full module path), signature)}
methods = {}
duplicated_methods = {}
def save_method(elements, module_path):
""" Recursively save methods with module name and signature. """
for elem, signature in elements.items():
if isinstance(signature, dict): # Submodule case
save_method(signature, module_path + (elem,))
elif isinstance(signature, Class):
save_method(signature.fields, module_path + (elem,))
elif signature.ismethod():
# in case of duplicates, there must be a __dispatch__ record
# and it is the only recorded one
if elem in MODULES['__dispatch__'] and module_path[0] != '__dispatch__':
duplicated_methods.setdefault(elem, []).append((module_path,
signature))
if elem in methods and module_path[0] != '__dispatch__':
assert elem in MODULES['__dispatch__']
path = ('__dispatch__',)
methods[elem] = (path, MODULES['__dispatch__'][elem])
else:
methods[elem] = (module_path, signature)
save_method(MODULES, ())
# a function name to module binding
# {function_name : [((full module path), signature)]}
functions = {}
def save_function(elements, module_path):
""" Recursively save functions with module name and signature. """
for elem, signature in elements.items():
if isinstance(signature, dict): # Submodule case
save_function(signature, module_path + (elem,))
elif signature.isstaticfunction():
functions.setdefault(elem, []).append((module_path, signature,))
elif isinstance(signature, Class):
save_function(signature.fields, module_path + (elem,))
save_function(MODULES, ())
# a attribute name to module binding
# {attribute_name : ((full module path), signature)}
attributes = {}
def save_attribute(elements, module_path):
""" Recursively save attributes with module name and signature. """
for elem, signature in elements.items():
if isinstance(signature, dict): # Submodule case
save_attribute(signature, module_path + (elem,))
elif signature.isattribute():
assert elem not in attributes # we need unicity
attributes[elem] = (module_path, signature,)
elif isinstance(signature, Class):
save_attribute(signature.fields, module_path + (elem,))
save_attribute(MODULES, ())
# patch beniget with pythran-specific builtins
import beniget
beniget.beniget.Builtins['builtins'] = __import__('builtins')
beniget.beniget.Builtins['__dispatch__'] = object()
for k, v in MODULES['builtins'].items():
if k not in beniget.beniget.Builtins:
beniget.beniget.Builtins[k] = v