def register_infer_intrinsic(intrinsic): def infer(*args): return IntrinsicNode(intrinsic, args) register_value(intrinsic, infer, pass_in_types=False, can_handle_deferred_types=True)
def decorator(func): @functools.wraps(func) def infer(context, node, *args): _expect_n_args(node, name, nargs) need_nones = max(nargs) - len(args) args += (None,) * need_nones return func(context, node, *args) name = infer.__name__.strip("_") value = getattr(builtins, name) register_value(value, infer, pass_in_types=False, pass_in_callnode=True) return func # wrapper
def decorator(func, value=None): @functools.wraps(func) def infer(context, node, *args): expect_n_args(node, name, nargs) need_nones = max(nargs) - len(args) args += (None,) * need_nones return func(context, node, *args) if value is None: name = infer.__name__.strip("_") value = getattr(builtins, name) else: name = getattr(value, "__name__", "<unknown>") register_value(value, infer, pass_in_types=False, pass_in_callnode=True, can_handle_deferred_types=can_handle_deferred_types) return func # wrapper
def decorator(func, value=None): @functools.wraps(func) def infer(context, node, *args): if nargs is not None: expect_n_args(node, name, nargs) need_nones = max(nargs) - len(args) args += (None,) * need_nones return func(context, node, *args) if value is None: name = infer.__name__.strip("_") value = getattr(builtins, name) else: name = getattr(value, "__name__", "<unknown>") register_value(value, infer, pass_in_types=False, pass_in_callnode=True, can_handle_deferred_types=can_handle_deferred_types) return func # wrapper