[pypy-commit] pypy remove-remaining-smm: Add remaining __r*__ to complex.
Manuel Jacob
noreply at buildbot.pypy.org
Mon Feb 24 00:19:02 CET 2014
Author: Manuel Jacob
Branch: remove-remaining-smm
Changeset: r69306:5f3f540c4ba5
Date: 2014-02-23 23:04 +0100
http://bitbucket.org/pypy/pypy/changeset/5f3f540c4ba5/
Log: Add remaining __r*__ to complex.
diff --git a/pypy/objspace/std/complexobject.py b/pypy/objspace/std/complexobject.py
--- a/pypy/objspace/std/complexobject.py
+++ b/pypy/objspace/std/complexobject.py
@@ -18,12 +18,6 @@
from rpython.rlib.rstring import ParseStringError
-# ERRORCODES
-
-ERR_WRONG_SECOND = "complex() can't take second arg if first is a string"
-ERR_MALFORMED = "complex() arg is a malformed string"
-
-
class W_AbstractComplexObject(W_Object):
__slots__ = ()
@@ -215,6 +209,9 @@
return (space.float_w(space.float(w_complex)), 0.0)
+ERR_MALFORMED = "complex() arg is a malformed string"
+
+
class W_ComplexObject(W_AbstractComplexObject):
"""This is a reimplementation of the CPython "PyComplexObject"
"""
@@ -367,6 +364,10 @@
w_rhs = to_complex(space, w_rhs)
return self.mul(w_rhs)
+ def descr_rmul(self, space, w_lhs):
+ w_lhs = to_complex(space, w_lhs)
+ return w_lhs.mul(self)
+
def descr_truediv(self, space, w_rhs):
w_rhs = to_complex(space, w_rhs)
try:
@@ -374,15 +375,29 @@
except ZeroDivisionError, e:
raise OperationError(space.w_ZeroDivisionError, space.wrap(str(e)))
+ def descr_rtruediv(self, space, w_lhs):
+ w_lhs = to_complex(space, w_lhs)
+ try:
+ return w_lhs.div(self)
+ except ZeroDivisionError, e:
+ raise OperationError(space.w_ZeroDivisionError, space.wrap(str(e)))
+
def descr_floordiv(self, space, w_rhs):
w_rhs = to_complex(space, w_rhs)
- w_rhs = to_complex(space, w_rhs)
# don't care about the slight slowdown you get from using divmod
try:
return self.divmod(space, w_rhs)[0]
except ZeroDivisionError, e:
raise OperationError(space.w_ZeroDivisionError, space.wrap(str(e)))
+ def descr_rfloordiv(self, space, w_lhs):
+ w_lhs = to_complex(space, w_lhs)
+ # don't care about the slight slowdown you get from using divmod
+ try:
+ return w_lhs.divmod(space, self)[0]
+ except ZeroDivisionError, e:
+ raise OperationError(space.w_ZeroDivisionError, space.wrap(str(e)))
+
def descr_mod(self, space, w_rhs):
w_rhs = to_complex(space, w_rhs)
try:
@@ -390,6 +405,13 @@
except ZeroDivisionError, e:
raise OperationError(space.w_ZeroDivisionError, space.wrap(str(e)))
+ def descr_rmod(self, space, w_lhs):
+ w_lhs = to_complex(space, w_lhs)
+ try:
+ return w_lhs.divmod(space, self)[1]
+ except ZeroDivisionError, e:
+ raise OperationError(space.w_ZeroDivisionError, space.wrap(str(e)))
+
def descr_divmod(self, space, w_rhs):
w_rhs = to_complex(space, w_rhs)
try:
@@ -398,6 +420,14 @@
raise OperationError(space.w_ZeroDivisionError, space.wrap(str(e)))
return space.newtuple([div, mod])
+ def descr_rdivmod(self, space, w_lhs):
+ w_lhs = to_complex(space, w_lhs)
+ try:
+ div, mod = w_lhs.divmod(space, self)
+ except ZeroDivisionError, e:
+ raise OperationError(space.w_ZeroDivisionError, space.wrap(str(e)))
+ return space.newtuple([div, mod])
+
@unwrap_spec(w_third_arg=WrappedDefault(None))
def descr_pow(self, space, w_exponent, w_third_arg):
w_exponent = to_complex(space, w_exponent)
@@ -558,11 +588,17 @@
__sub__ = interp2app(W_ComplexObject.descr_sub),
__rsub__ = interp2app(W_ComplexObject.descr_rsub),
__mul__ = interp2app(W_ComplexObject.descr_mul),
+ __rmul__ = interp2app(W_ComplexObject.descr_rmul),
__div__ = interp2app(W_ComplexObject.descr_truediv),
+ __rdiv__ = interp2app(W_ComplexObject.descr_rtruediv),
__truediv__ = interp2app(W_ComplexObject.descr_truediv),
+ __rtruediv__ = interp2app(W_ComplexObject.descr_rtruediv),
__floordiv__ = interp2app(W_ComplexObject.descr_floordiv),
+ __rfloordiv__ = interp2app(W_ComplexObject.descr_rfloordiv),
__mod__ = interp2app(W_ComplexObject.descr_mod),
+ __rmod__ = interp2app(W_ComplexObject.descr_rmod),
__divmod__ = interp2app(W_ComplexObject.descr_divmod),
+ __rdivmod__ = interp2app(W_ComplexObject.descr_rdivmod),
__pow__ = interp2app(W_ComplexObject.descr_pow),
)
More information about the pypy-commit
mailing list