[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