def __init__(self, context, func, ast, func_signature, nopython=False, locals=None, order=None, codegen=False, symtab=None, **kwargs): self.context = context self.func = func self.ast = ast self.func_signature = func_signature ast.pipeline = self func_name = kwargs.get('name') self.func_name = func_name or naming.specialized_mangle( self.func.__name__, self.func_signature.args) self.symtab = symtab if symtab is None: self.symtab = {} self.llvm_module = kwargs.get('llvm_module', None) if self.llvm_module is None: self.llvm_module = self.context.function_cache.module self.nopython = nopython self.locals = locals self.kwargs = kwargs if order is None: self.order = list(Pipeline.order) if not codegen: self.order.remove('codegen') else: self.order = order
def codegen(self, ast): func_name = self.kwargs.get('name') func_name = func_name or naming.specialized_mangle(self.func.__name__, self.func_signature.args) self.translator = self.make_specializer(ast_translate.LLVMCodeGenerator, ast, func_name=func_name, **self.kwargs) self.translator.translate() return ast
def __init__(self, context, func, ast, func_signature, nopython=False, locals=None, order=None, codegen=False, symtab=None, **kwargs): self.context = context self.func = func self.ast = ast self.func_signature = func_signature ast.pipeline = self self.func_name = kwargs.get('name') if not self.func_name: if func: name = func.__name__ else: name = ast.name self.func_name = naming.specialized_mangle( name, self.func_signature.args) self.symtab = symtab if symtab is None: self.symtab = {} self.llvm_module = kwargs.get('llvm_module', None) if self.llvm_module is None: self.llvm_module = self.context.function_cache.module self.nopython = nopython self.locals = locals self.kwargs = kwargs if order is None: self.order = list(Pipeline.order) if not codegen: self.order.remove('codegen') else: self.order = order
def __init__(self, context, func, ast, func_signature, nopython=False, locals=None, order=None, codegen=False, symtab=None, allow_rebind_args=True, **kwargs): self.context = context self.func = func self.ast = ast self.func_signature = func_signature # Whether argument variables may be rebound to different types. # e.g. def f(a): a = "hello" ;; f(0.0) self.allow_rebind_args = allow_rebind_args ast.pipeline = self self.func_name = kwargs.get('name') if not self.func_name: if func: name = func.__name__ else: name = ast.name self.func_name = naming.specialized_mangle( name, self.func_signature.args) self.symtab = symtab if symtab is None: self.symtab = {} self.llvm_module = kwargs.get('llvm_module', None) if self.llvm_module is None: self.llvm_module = self.context.function_cache.module self.nopython = nopython self.locals = locals or {} self.kwargs = kwargs if order is None: self.order = list(Pipeline.order) if not codegen: self.order.remove('codegen') else: self.order = order
def init_func(self, func, ast, func_signature, **kws): self.reset(self.parent, self.__doc__) self.func = func self.ast = ast self.func_signature = func_signature self.func_name = kws.get('name') if not self.func_name: if func: module_name = inspect.getmodule(func).__name__ name = '.'.join([module_name, func.__name__]) else: name = ast.name self.func_name = naming.specialized_mangle( name, self.func_signature.args) self.symtab = kws.pop('symtab', {}) self.llvm_module = kws.pop('llvm_module', self.parent.context.llvm_module) self.nopython = kws.pop('nopython', False) self.locals = kws.pop('locals', {}) self.allow_rebind_args = kws.pop('allow_rebind_args', True) self.warn = kws.pop('warn', True) self.kwargs = kws
def name(self): return naming.specialized_mangle('__py_modulo', self.arg_types)
def init(self, parent, func, ast, func_signature, name=None, qualified_name=None, mangled_name=None, llvm_module=None, wrap=True, link=True, symtab=None, error_env=None, function_globals=None, locals=None, template_signature=None, cfg_transform=None, is_closure=False, closures=None, closure_scope=None, refcount_args=True, ast_metadata=None, warn=True, warnstyle='fancy', **kws): self.parent = parent self.numba = parent.numba self.func = func self.ast = ast self.func_signature = func_signature if name is None: if self.func: name = self.func.__name__ else: name = self.ast.name if self.func and self.func.__module__: qname = '.'.join([self.func.__module__, name]) else: qname = name if mangled_name is None: mangled_name = naming.specialized_mangle(qname, self.func_signature.args) self.func_name = name self.mangled_name = mangled_name self.qualified_name = qualified_name or name self.llvm_module = (llvm_module if llvm_module else self.numba.llvm_context.module) self.wrap = wrap self.link = link self.llvm_wrapper_func = None self.symtab = symtab if symtab is not None else {} self.error_env = error_env or FunctionErrorEnvironment( self.func, self.ast, warnstyle) if function_globals is not None: self.function_globals = function_globals else: self.function_globals = self.func.__globals__ self.locals = locals if locals is not None else {} self.template_signature = template_signature self.cfg_transform = cfg_transform self.is_closure = is_closure self.closures = closures if closures is not None else {} self.closure_scope = closure_scope self.refcount_args = refcount_args if ast_metadata is not None: self.ast_metadata = ast_metadata else: self.ast_metadata = metadata.create_metadata_env() self.warn = warn self.warnstyle = warnstyle self.kwargs = kws
def init(self, parent, func, ast, func_signature, name=None, qualified_name=None, mangled_name=None, llvm_module=None, wrap=True, link=True, symtab=None, error_env=None, function_globals=None, locals=None, template_signature=None, is_closure=False, closures=None, closure_scope=None, refcount_args=True, ast_metadata=None, warn=True, warnstyle='fancy', typesystem=None, array=None, postpasses=None, annotate=False, **kws): self.parent = parent self.numba = parent.numba self.func = func self.ast = ast self.func_signature = func_signature if name is None: if self.func: name = self.func.__name__ else: name = self.ast.name if self.func and self.func.__module__: qname = '.'.join([self.func.__module__, name]) else: qname = name if function_globals is not None: self.function_globals = function_globals else: self.function_globals = self.func.__globals__ if self.func: self.module_name = self.func.__module__ or '<unamed.module>' else: self.module_name = self.function_globals.get("__name__", "") if mangled_name is None: mangled_name = naming.specialized_mangle(qname, self.func_signature.args) self.func_name = name self.mangled_name = mangled_name self.qualified_name = qualified_name or name self.llvm_module = (llvm_module if llvm_module else self.numba.llvm_context.module) self._annotate = annotate self.wrap = wrap self.link = link self.llvm_wrapper_func = None self.symtab = symtab if symtab is not None else {} self.error_env = error_env or FunctionErrorEnvironment( self.func, self.ast, warnstyle) self.locals = locals if locals is not None else {} self.template_signature = template_signature self.is_closure = is_closure self.closures = closures if closures is not None else {} self.closure_scope = closure_scope self.kill_attribute_assignments = set() self.refcount_args = refcount_args self.typesystem = typesystem or numba_typesystem if array: self.array = array # assert issubclass(array, NumpyArray) import numba.postpasses self.postpasses = postpasses or numba.postpasses.default_postpasses if ast_metadata is not None: self.ast_metadata = ast_metadata else: self.ast_metadata = metadata.create_metadata_env() self.annotations = collections.defaultdict(list) self.intermediates = [] self.warn = warn self.warnstyle = warnstyle self.kwargs = kws
def init(self, parent, func, ast, func_signature, name=None, qualified_name=None, mangled_name=None, llvm_module=None, wrap=True, link=True, symtab=None, error_env=None, function_globals=None, locals=None, template_signature=None, cfg_transform=None, is_closure=False, closures=None, closure_scope=None, refcount_args=True, ast_metadata=None, warn=True, warnstyle='fancy', typesystem=None, postpasses=None, **kws): self.parent = parent self.numba = parent.numba self.func = func self.ast = ast self.func_signature = func_signature if name is None: if self.func: name = self.func.__name__ else: name = self.ast.name if self.func and self.func.__module__: qname = '.'.join([self.func.__module__, name]) else: qname = name if mangled_name is None: mangled_name = naming.specialized_mangle(qname, self.func_signature.args) self.func_name = name self.mangled_name = mangled_name self.qualified_name = qualified_name or name self.llvm_module = (llvm_module if llvm_module else self.numba.llvm_context.module) self.wrap = wrap self.link = link self.llvm_wrapper_func = None self.symtab = symtab if symtab is not None else {} self.error_env = error_env or FunctionErrorEnvironment(self.func, self.ast, warnstyle) if function_globals is not None: self.function_globals = function_globals else: self.function_globals = self.func.__globals__ self.locals = locals if locals is not None else {} self.template_signature = template_signature self.cfg_transform = cfg_transform self.is_closure = is_closure self.closures = closures if closures is not None else {} self.closure_scope = closure_scope self.refcount_args = refcount_args self.typesystem = typesystem or numba_typesystem import numba.postpasses self.postpasses = postpasses or numba.postpasses.default_postpasses if ast_metadata is not None: self.ast_metadata = ast_metadata else: self.ast_metadata = metadata.create_metadata_env() self.warn = warn self.warnstyle = warnstyle self.kwargs = kws
def init(self, parent, func, ast, func_signature, name=None, qualified_name=None, mangled_name=None, llvm_module=None, wrap=True, link=True, symtab=None, error_env=None, function_globals=None, locals=None, template_signature=None, is_closure=False, closures=None, closure_scope=None, refcount_args=True, ast_metadata=None, warn=True, warnstyle='fancy', typesystem=None, array=None, postpasses=None, annotate=False, **kws): self.parent = parent self.numba = parent.numba self.func = func self.ast = ast self.func_signature = func_signature if name is None: if self.func: name = self.func.__name__ else: name = self.ast.name if self.func and self.func.__module__: qname = '.'.join([self.func.__module__, name]) else: qname = name if function_globals is not None: self.function_globals = function_globals else: self.function_globals = self.func.__globals__ if self.func: self.module_name = self.func.__module__ or '<unamed.module>' else: self.module_name = self.function_globals.get("__name__", "") if mangled_name is None: mangled_name = naming.specialized_mangle(qname, self.func_signature.args) self.func_name = name self.mangled_name = mangled_name self.qualified_name = qualified_name or name self.llvm_module = (llvm_module if llvm_module else self.numba.llvm_context.module) self._annotate = annotate self.wrap = wrap self.link = link self.llvm_wrapper_func = None self.symtab = symtab if symtab is not None else {} self.error_env = error_env or FunctionErrorEnvironment(self.func, self.ast, warnstyle) self.locals = locals if locals is not None else {} self.template_signature = template_signature self.is_closure = is_closure self.closures = closures if closures is not None else {} self.closure_scope = closure_scope self.kill_attribute_assignments = set() self.refcount_args = refcount_args self.typesystem = typesystem or numba_typesystem if array: self.array = array # assert issubclass(array, NumpyArray) import numba.postpasses self.postpasses = postpasses or numba.postpasses.default_postpasses if ast_metadata is not None: self.ast_metadata = ast_metadata else: self.ast_metadata = metadata.create_metadata_env() self.annotations = collections.defaultdict(list) self.intermediates = [] self.warn = warn self.warnstyle = warnstyle self.kwargs = kws