def __call__(self, program, pyobject):
        """Evaluates the program string or AST

        :type program: str or rope.base.oi.type_hinting.evaluate.SymbolBase
        :rtype: rope.base.pyobjects.PyDefinedObject | rope.base.pyobjects.PyObject or None
        """
        ast = self.compile(program) if isinstance(program, pycompat.string_types) else program
        return ast.evaluate(pyobject)
def __call__ ( self , program , pyobject ) : ast = self . compile ( program ) if isinstance ( program , pycompat . string_types ) else program return ast . evaluate ( pyobject )
Evaluates the program string or AST

        :type program: str or rope.base.oi.type_hinting.evaluate.SymbolBase
        :rtype: rope.base.pyobjects.PyDefinedObject | rope.base.pyobjects.PyObject or None