def __init__(self, name, space, path, modpath, level=0): self.path = path self.modpath = [os.path.dirname(self.path)] + modpath self.frame = ExecutionFrame(None, None) ModuleObject.__init__(self, name, ModuleNamespace(space, name), level=level) TreeReporter.__init__(self, None) return
def __init__(self, parent_reporter, parent_frame, parent_space, anchor, name, argnames, defaults, variargs, kwargs, tree): TreeReporter.__init__(self, parent_reporter) def maprec(func, x): if isinstance(x, tuple): return tuple(maprec(func, y) for y in x) else: return func(x) self.name = name # prepare local variables that hold passed arguments. self.space = Namespace(parent_space, name) self.frame = ExecutionFrame(None, tree) # handle "**kwd". self.kwarg = None if kwargs: self.kwarg = argnames[-1] del argnames[-1] self.space.register_var(self.kwarg) # handle "*args". self.variarg = None if variargs: self.variarg = argnames[-1] del argnames[-1] self.space.register_var(self.variarg) # handle normal args. self.argnames = tuple(argnames) maprec(lambda argname: self.space.register_var(argname), self.argnames) # build the function body. self.space.register_names(tree.code) self.body = self.FuncBody(name) self.body.set_retval(self.build_evals(tree.code)) self.argvars = maprec(lambda argname: self.space[argname], self.argnames) # assign the default values. self.defaults = tuple(defaults) for (var1, arg1) in zip(self.argvars[-len(defaults):], self.defaults): assign_arg(parent_frame, anchor, var1, arg1) self.frames = set() BuiltinType.__init__(self) return