def infer_function_execution(self, function_execution): """ Created to be used by inheritance. """ if self.tree_node.is_generator(): return set([iterable.Generator(self.evaluator, function_execution)]) else: return function_execution.get_return_values()
def infer_function_execution(self, function_execution): """ Created to be used by inheritance. """ yield_exprs = get_yield_exprs(self.evaluator, self.tree_node) if yield_exprs: return set( [iterable.Generator(self.evaluator, function_execution)]) else: return function_execution.get_return_values()
def get_return_types(self, evaluate_generator=False): func = self.base # Feed the listeners, with the params. for listener in func.listeners: listener.execute(self._get_params()) if func.is_generator and not evaluate_generator: return [iterable.Generator(self._evaluator, func, self.var_args)] else: stmts = docstrings.find_return_types(self._evaluator, func) for r in self.returns: if r is not None: stmts += self._evaluator.eval_statement(r) return stmts
def get_return_types(self, evaluate_generator=False): func = self.base # Feed the listeners, with the params. for listener in func.listeners: listener.execute(self._get_params()) if func.listeners: # If we do have listeners, that means that there's not a regular # execution ongoing. In this case Jedi is interested in the # inserted params, not in the actual execution of the function. return [] if func.is_generator and not evaluate_generator: return [iterable.Generator(self._evaluator, func, self.var_args)] else: stmts = list(docstrings.find_return_types(self._evaluator, func)) for r in self.returns: if r is not None: stmts += self._evaluator.eval_statement(r) return stmts
def py__call__(self, evaluator, params): if self.base.is_generator(): return [iterable.Generator(evaluator, self, params)] else: return FunctionExecution(evaluator, self, params).get_return_types()