except StandardError: # ArithmeticError is not enough: float >> float is a TypeError # TODO : let pylint know about the problem pass except TypeError: # XXX log TypeError continue elif other is YES: yield other else: try: for val in other.infer_binary_op(operator, self, context): yield val except AttributeError: yield YES nodes.Const.infer_binary_op = yes_if_nothing_infered(const_infer_binary_op) def tl_infer_binary_op(self, operator, other, context): for other in other.infer(context): if isinstance(other, self.__class__) and operator == '+': node = self.__class__() elts = [n for elt in self.elts for n in elt.infer(context) if not n is YES] elts += [n for elt in other.elts for n in elt.infer(context) if not n is YES] node.elts = elts yield node elif isinstance(other, nodes.Const) and operator == '*': node = self.__class__() elts = [n for elt in self.elts for n in elt.infer(context)
# TODO : let pylint know about the problem pass except TypeError: # XXX log TypeError continue elif other is YES: yield other else: try: for val in other.infer_binary_op(operator, self, context): yield val except AttributeError: yield YES nodes.Const.infer_binary_op = yes_if_nothing_infered(const_infer_binary_op) def tl_infer_binary_op(self, operator, other, context): for other in other.infer(context): if isinstance(other, self.__class__) and operator == '+': node = self.__class__() elts = [ n for elt in self.elts for n in elt.infer(context) if not n is YES ] elts += [ n for elt in other.elts for n in elt.infer(context) if not n is YES ] node.elts = elts