def calculate_children(evaluator, children): """ Calculate a list of children with operators. """ iterator = iter(children) types = evaluator.eval_element(next(iterator)) for operator in iterator: try:# PATCH: Catches StopIteration error right = next(iterator) if tree.is_node(operator, 'comp_op'): # not in / is not operator = ' '.join(str(c.value) for c in operator.children) # handle lazy evaluation of and/or here. if operator in ('and', 'or'): left_bools = set([left.py__bool__() for left in types]) if left_bools == set([True]): if operator == 'and': types = evaluator.eval_element(right) elif left_bools == set([False]): if operator != 'and': types = evaluator.eval_element(right) # Otherwise continue, because of uncertainty. else: types = calculate(evaluator, types, operator, evaluator.eval_element(right)) except StopIteration: debug.warning('calculate_children StopIteration %s', types) debug.dbg('calculate_children types %s', types) return types
def calculate_children(evaluator, children): """ Calculate a list of children with operators. """ iterator = iter(children) types = evaluator.eval_element(next(iterator)) for operator in iterator: try: # PATCH: Catches StopIteration error right = next(iterator) if tree.is_node(operator, 'comp_op'): # not in / is not operator = ' '.join(str(c.value) for c in operator.children) # handle lazy evaluation of and/or here. if operator in ('and', 'or'): left_bools = set([left.py__bool__() for left in types]) if left_bools == set([True]): if operator == 'and': types = evaluator.eval_element(right) elif left_bools == set([False]): if operator != 'and': types = evaluator.eval_element(right) # Otherwise continue, because of uncertainty. else: types = calculate(evaluator, types, operator, evaluator.eval_element(right)) except StopIteration: debug.warning('calculate_children StopIteration %s', types) debug.dbg('calculate_children types %s', types) return types
def _execute_function(self, params): from spyder.utils.introspection import numpy_docstr if self.type != 'funcdef': return types = set([]) types |= set(numpy_docstr.find_return_types(self.parent_context, self)) debug.dbg('docstrings type return: %s in %s', types, self) for name in self._parse_function_doc()[1].split(): try: bltn_obj = getattr(_builtins, name) except AttributeError: continue else: if bltn_obj is None: # We want to evaluate everything except None. continue bltn_obj = create(self.evaluator, bltn_obj) types |= set(self.evaluator.execute(bltn_obj, params)) for result in types: yield result
def _execute_function(self, params): from spyder.utils.introspection import numpy_docstr if self.type != 'funcdef': return types = set([]) types |= set(numpy_docstr.find_return_types(self.parent_context, self)) debug.dbg('docstrings type return: %s in %s', types, self) for name in self._parse_function_doc()[1].split(): try: bltn_obj = getattr(_builtins, name) except AttributeError: continue else: if bltn_obj is None: # We want to evaluate everything except None. continue bltn_obj = create(self.evaluator, bltn_obj) types |= set(self.evaluator.execute(bltn_obj, params)) for result in types: yield result
def _execute_function(self, evaluator, params): if self.type != 'funcdef': return # patching docstrings here from spyder.utils.introspection import docstrings types = docstrings.find_return_types(evaluator, self) if types: for result in types: debug.dbg('docstrings type return: %s in %s', result, self) yield result # end patch for name in self._parse_function_doc()[1].split(): try: bltn_obj = _create_from_name(builtin, builtin, name) except AttributeError: continue else: if isinstance(bltn_obj, CompiledObject) and bltn_obj.obj is None: # We want everything except None. continue for result in evaluator.execute(bltn_obj, params): yield result
def _execute_function(self, evaluator, params): if self.type != 'funcdef': return # patching docstrings here from spyder.utils.introspection import numpy_docstr types = numpy_docstr.find_return_types(evaluator, self) if types: for result in types: debug.dbg('docstrings type return: %s in %s', result, self) yield result # end patch for name in self._parse_function_doc()[1].split(): try: bltn_obj = _create_from_name(builtin, builtin, name) except AttributeError: continue else: if (isinstance(bltn_obj, CompiledObject) and bltn_obj.obj is None): # We want everything except None. continue for result in evaluator.execute(bltn_obj, params): yield result