def __init__(self, source, filename="", baseexpr=None): if hasattr(self, '_compiled'): return self._source = source self._baseexpr = baseexpr or getattr(self.__class__, '_baseexpr', None) or self.__class__ self._filename = filename if not isinstance(source, ast.Node): RExpression.__init__(self, source, filename) source = self._get_tree() else: if not (isinstance(source, ast.Expression)): source = ast.Expression(source) source.filename = filename walk(source, InlineFuncsVisitor(self._filename, self._baseexpr)) gen = self.CodeGeneratorClass(source) self._compiled = gen.getCode()
def _get_tree(self): tree = RExpression._get_tree(self) walk(tree, InlineFuncsVisitor(self.filename, self._baseexpr)) return tree