def next__SetIterObject(space, w_setiter): content = w_setiter.content if content is not None: if w_setiter.len != len(content): w_setiter.len = -1 # Make this error state sticky raise OperationError(space.w_RuntimeError, space.wrap("Set changed size during iteration")) # look for the next entry w_result = w_setiter.next_entry() if w_result is not None: w_setiter.pos += 1 return w_result # no more entries w_setiter.content = None raise OperationError(space.w_StopIteration, space.w_None)
def set_remove__Set_settypedef(space, w_left, w_item): w_f = space.newfrozenset(make_setdata_from_w_iterable(space, w_item)) try: del w_left.setdata[w_f] except KeyError: raise OperationError(space.w_KeyError, space.call_method(w_item, '__repr__'))
def set_remove__Set_Set(space, w_left, w_item): w_f = space.newfrozenset(w_item.setdata) try: del w_left.setdata[w_f] except KeyError: raise OperationError(space.w_KeyError, space.call_method(w_item,'__repr__'))
def pow__Complex_Complex_ANY(space, w_complex1, w_complex2, thirdArg): if not space.is_w(thirdArg, space.w_None): raise OperationError(space.w_ValueError, space.wrap('complex modulo')) try: v = _w2t(space, w_complex1) exponent = _w2t(space, w_complex2) int_exponent = int(exponent[0]) if exponent[1] == 0.0 and exponent[0] == int_exponent: p = _powi(v, int_exponent) else: p = _pow(v, exponent) except ZeroDivisionError: raise OperationError(space.w_ZeroDivisionError, space.wrap("0.0 to a negative or complex power")) except OverflowError: raise OperationError(space.w_OverflowError, space.wrap("complex exponentiation")) return _t2w(space, p)
def set_remove__Set_Set(space, w_left, w_item): # optimization only (the general case is set_remove__Set_settypedef) w_f = space.newfrozenset(w_item.setdata) try: del w_left.setdata[w_f] except KeyError: raise OperationError(space.w_KeyError, space.call_method(w_item, '__repr__'))
def set_pop__Set(space, w_left): if len(w_left.setdata) == 0: raise OperationError(space.w_KeyError, space.wrap('pop from an empty set')) w_keys = w_left.setdata.keys() w_value = w_keys[0] del w_left.setdata[w_value] return w_value
def cmp__Set_settypedef(space, w_left, w_other): # hack hack until we get the expected result raise OperationError(space.w_TypeError, space.wrap('cannot compare sets using cmp()'))
def set_remove__Set_ANY(space, w_left, w_item): try: del w_left.setdata[w_item] except KeyError: raise OperationError(space.w_KeyError, space.call_method(w_item, '__repr__'))
def int__Complex(space, w_complex): raise OperationError(space.w_TypeError, space.wrap("can't convert complex to int; use int(abs(z))"))
def float__Complex(space, w_complex): raise OperationError(space.w_TypeError, space.wrap("can't convert complex to float; use abs(z)"))
def lt__Complex_Complex(space, w_complex1, w_complex2): raise OperationError(space.w_TypeError, space.wrap('cannot compare complex numbers using <, <=, >, >='))
def floordiv__Complex_Complex(space, w_complex1, w_complex2): try: div = _quot(_w2t(space, w_complex1), _w2t(space, w_complex2)) except ZeroDivisionError, e: raise OperationError(space.w_ZeroDivisionError, space.wrap("complex floordiv()"))
def mod__Complex_Complex(space, w_complex1, w_complex2): try: div = _quot(_w2t(space, w_complex1), _w2t(space, w_complex2)) except ZeroDivisionError, e: raise OperationError(space.w_ZeroDivisionError, space.wrap("complex remainder"))
def div__Complex_Complex(space, w_complex1, w_complex2): try: return _t2w(space, _quot(_w2t(space, w_complex1), _w2t(space, w_complex2))) except ZeroDivisionError, e: raise OperationError(space.w_ZeroDivisionError, space.wrap(str(e)))
def delegate_Long2Complex(space, w_long): try: dval = w_long.tofloat() except OverflowError, e: raise OperationError(space.w_OverflowError, space.wrap(str(e)))
def cmp__Set_Set(space, w_left, w_other): raise OperationError(space.w_TypeError, space.wrap('cannot compare sets using cmp()'))