Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
    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