def type_inference_stage(typingctx, interp, args, return_type, locals={}): if len(args) != len(interp.argspec.args): raise TypeError("Mismatch number of argument types") infer = typeinfer.TypeInferer(typingctx, interp.blocks) # Seed argument types for arg, ty in zip(interp.argspec.args, args): infer.seed_type(arg, ty) # Seed return type if return_type is not None: infer.seed_return(return_type) # Seed local types for k, v in locals.items(): infer.seed_type(k, v) infer.build_constrain() infer.propagate() typemap, restype, calltypes = infer.unify() if config.DEBUG: pprint(typemap) pprint(restype) pprint(calltypes) return typemap, restype, calltypes
def type_inference_stage(typingctx, interp, args, return_type, locals={}): if len(args) != interp.arg_count: raise TypeError("Mismatch number of argument types") warnings = errors.WarningsFixer(errors.NumbaWarning) infer = typeinfer.TypeInferer(typingctx, interp, warnings) with typingctx.callstack.register(infer, interp.func_id, args): # Seed argument types for index, (name, ty) in enumerate(zip(interp.arg_names, args)): infer.seed_argument(name, index, ty) # Seed return type if return_type is not None: infer.seed_return(return_type) # Seed local types for k, v in locals.items(): infer.seed_type(k, v) infer.build_constraint() infer.propagate() typemap, restype, calltypes = infer.unify() # Output all Numba warnings warnings.flush() return typemap, restype, calltypes
def type_inference_stage(typingctx, interp, args, return_type, locals={}): if len(args) != interp.arg_count: raise TypeError("Mismatch number of argument types") infer = typeinfer.TypeInferer(typingctx, interp) # Seed argument types for index, (name, ty) in enumerate(zip(interp.bytecode.arg_names, args)): infer.seed_argument(name, index, ty) # Seed return type if return_type is not None: infer.seed_return(return_type) # Seed local types for k, v in locals.items(): infer.seed_type(k, v) infer.build_constrain() infer.propagate() typemap, restype, calltypes = infer.unify() if config.DEBUG: pprint(typemap) pprint(restype) pprint(calltypes) return typemap, restype, calltypes