def _get_frame(self, context, stack_values): frame = Frame() for index, argument in enumerate(self.arguments): argument_name, argument_type, default = argument try: value = stack_values[index] if argument_type == self.REFERENCE: if not isinstance(value, W_Variable): NonVariablePassedByReference(context).handle() frame.variables[argument_name] = space.variable(space.null()) else: frame.variables[argument_name] = value else: frame.set_variable(argument_name, value.deref()) except IndexError: if default is None: MissingArgument(context, index + 1, self).handle() frame.variables[argument_name] = space.variable(space.null()) else: frame.variables[argument_name] = space.variable(default) return frame
def set_variable(self, name, w_value): if name in self.variables: self.variables[name].set_value(w_value.deref()) else: self.variables[name] = space.variable(w_value.deref())