def get_return_types(self, check_yields=False): func = self.base if func.isinstance(LambdaWrapper): return self._evaluator.eval_element(self.children[-1]) if func.listeners: # Feed the listeners, with the params. for listener in func.listeners: listener.execute(self._get_params()) # 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 check_yields: types = [] returns = self.yields else: returns = self.returns types = list(docstrings.find_return_types(self._evaluator, func)) for r in returns: check = flow_analysis.break_check(self._evaluator, self, r) if check is flow_analysis.UNREACHABLE: debug.dbg('Return unreachable: %s', r) else: types += self._evaluator.eval_element(r.children[1]) if check is flow_analysis.REACHABLE: debug.dbg('Return reachable: %s', r) break return types
def get_return_values(self, check_yields=False): funcdef = self.tree_node if funcdef.type == 'lambda': return self.evaluator.eval_element(self, funcdef.children[-1]) if check_yields: types = set() returns = funcdef.yields else: returns = funcdef.returns types = set( docstrings.find_return_types(self.get_root_context(), funcdef)) types |= set( pep0484.find_return_types(self.get_root_context(), funcdef)) for r in returns: check = flow_analysis.reachability_check(self, funcdef, r) if check is flow_analysis.UNREACHABLE: debug.dbg('Return unreachable: %s', r) else: if check_yields: types |= set(self._eval_yield(r)) else: types |= self.eval_node(r.children[1]) if check is flow_analysis.REACHABLE: debug.dbg('Return reachable: %s', r) break return types
def get_return_values(self, check_yields=False): funcdef = self.tree_node if funcdef.type == 'lambda': return self.evaluator.eval_element(self, funcdef.children[-1]) if check_yields: types = set() returns = funcdef.yields else: returns = funcdef.returns types = set(docstrings.find_return_types(self.get_root_context(), funcdef)) types |= set(pep0484.find_return_types(self.get_root_context(), funcdef)) for r in returns: check = flow_analysis.reachability_check(self, funcdef, r) if check is flow_analysis.UNREACHABLE: debug.dbg('Return unreachable: %s', r) else: if check_yields: types |= set(self._eval_yield(r)) else: types |= self.eval_node(r.children[1]) if check is flow_analysis.REACHABLE: debug.dbg('Return reachable: %s', r) break return types
def get_return_types(self): func = self.base if func.listeners: # Feed the listeners, with the params. for listener in func.listeners: listener.execute(self._get_params()) # 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 [] types = list(docstrings.find_return_types(self._evaluator, func)) for r in self.returns: if isinstance(r, pr.KeywordStatement): stmt = r.stmt else: stmt = r # Lambdas if stmt is None: continue check = flow_analysis.break_check(self._evaluator, self, r.parent) if check is flow_analysis.UNREACHABLE: debug.dbg('Return unreachable: %s', r) else: types += self._evaluator.eval_statement(stmt) if check is flow_analysis.REACHABLE: debug.dbg('Return reachable: %s', r) break return types
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