[pypy-commit] pypy object-dtype2: progress on translation

rlamy noreply at buildbot.pypy.org
Fri Apr 17 01:57:22 CEST 2015


Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: object-dtype2
Changeset: r76806:82829532ae2d
Date: 2015-04-17 00:08 +0100
http://bitbucket.org/pypy/pypy/changeset/82829532ae2d/

Log:	progress on translation

diff --git a/pypy/module/micronumpy/types.py b/pypy/module/micronumpy/types.py
--- a/pypy/module/micronumpy/types.py
+++ b/pypy/module/micronumpy/types.py
@@ -1726,7 +1726,7 @@
     def for_computation(v):
         return v
 
-    @simple_binary_op
+    @raw_binary_op
     def eq(self, v1, v2):
         return self.space.eq_w(v1, v2)
 
@@ -1750,23 +1750,23 @@
             return True
         return False
 
-    @simple_binary_op
+    @raw_binary_op
     def logical_and(self, v1, v2):
         if self._obool(v1):
             return v2
         return v1
 
-    @simple_binary_op
+    @raw_binary_op
     def logical_or(self, v1, v2):
         if self._obool(v1):
             return v1
         return v2
 
-    @simple_unary_op
+    @raw_unary_op
     def logical_not(self, v):
         return not self._obool(v)
 
-    @simple_binary_op
+    @raw_binary_op
     def logical_xor(self, v1, v2):
         a = self._obool(v1)
         b = self._obool(v2)
@@ -1816,23 +1816,23 @@
     def square(self, v):
         return self.space.mul(v, v)
 
-    @simple_binary_op
+    @raw_binary_op
     def le(self, v1, v2):
         return self.space.le(v1, v2)
 
-    @simple_binary_op
+    @raw_binary_op
     def ge(self, v1, v2):
         return self.space.ge(v1, v2)
 
-    @simple_binary_op
+    @raw_binary_op
     def lt(self, v1, v2):
         return self.space.lt(v1, v2)
 
-    @simple_binary_op
+    @raw_binary_op
     def gt(self, v1, v2):
         return self.space.gt(v1, v2)
 
-    @simple_binary_op
+    @raw_binary_op
     def ne(self, v1, v2):
         return self.space.ne(v1, v2)
 
diff --git a/pypy/module/micronumpy/ufuncs.py b/pypy/module/micronumpy/ufuncs.py
--- a/pypy/module/micronumpy/ufuncs.py
+++ b/pypy/module/micronumpy/ufuncs.py
@@ -483,7 +483,7 @@
         else:
             out = w_out
             calc_dtype = out.get_dtype()
-        if self.comparison_func and not calc_dtype.is_object():
+        if self.comparison_func:
             res_dtype = get_dtype_cache(space).w_booldtype
         else:
             res_dtype = calc_dtype
@@ -497,13 +497,8 @@
                     out.set_scalar_value(arr)
                 else:
                     out.fill(space, arr)
-            elif isinstance(arr, res_dtype.itemtype.BoxType):
-                if res_dtype.is_object():
-                    out = arr.get_scalar_value()
-                else:
-                    out = arr
             else:
-                out = space.wrap(arr)
+                out = arr
             return out
         if isinstance(w_lhs, boxes.W_GenericBox):
             w_lhs = W_NDimArray.from_scalar(space, w_lhs)
@@ -652,7 +647,7 @@
             # from frompyfunc
             pass
         # mimic NpyIter_AdvancedNew with a nditer
-        w_itershape = space.newlist([space.wrap(i) for i in iter_shape]) 
+        w_itershape = space.newlist([space.wrap(i) for i in iter_shape])
         nd_it = W_NDIter(space, space.newlist(inargs + outargs), w_flags,
                       w_op_flags, w_op_dtypes, w_casting, w_op_axes,
                       w_itershape)
@@ -758,7 +753,7 @@
                 else:
                     raise oefmt(space.w_TypeError, "a type-string for %s " \
                         "requires 1 typecode or %d typecode(s) before and %d" \
-                        " after the -> sign, not '%s'", self.name, self.nin, 
+                        " after the -> sign, not '%s'", self.name, self.nin,
                         self.nout, type_tup)
             except KeyError:
                 raise oefmt(space.w_ValueError, "unknown typecode in" \
@@ -782,11 +777,11 @@
             for j in range(self.nargs):
                 if dtypes[j] is not None and dtypes[j] != _dtypes[i+j]:
                     allok = False
-            if allok:    
+            if allok:
                 break
         else:
             if len(self.funcs) > 1:
-                
+
                 dtypesstr = ''
                 for d in dtypes:
                     if d is None:
@@ -796,7 +791,7 @@
                 _dtypesstr = ','.join(['%s%s%s' % (d.byteorder, d.kind, d.elsize) \
                                 for d in _dtypes])
                 raise oefmt(space.w_TypeError,
-                     "input dtype [%s] did not match any known dtypes [%s] ", 
+                     "input dtype [%s] did not match any known dtypes [%s] ",
                      dtypesstr,_dtypesstr)
             i = 0
         # Fill in empty dtypes
@@ -816,7 +811,7 @@
             assert isinstance(curarg, W_NDimArray)
             if len(arg_shapes[i]) != curarg.ndims():
                 # reshape
-                
+
                 sz = product(curarg.get_shape()) * curarg.get_dtype().elsize
                 with curarg.implementation as storage:
                     inargs[i] = W_NDimArray.from_shape_and_storage(
@@ -874,7 +869,7 @@
                             "%s of gufunc was not specified",
                              self.name, name, _i, core_dim_index, self.signature)
                     target_dims.append(v)
-                arg_shapes.append(iter_shape + target_dims) 
+                arg_shapes.append(iter_shape + target_dims)
                 continue
             n = len(curarg.get_shape()) - num_dims
             if n < 0:
@@ -916,7 +911,7 @@
                     raise oefmt(space.w_ValueError, "%s: %s operand %d has a "
                         "mismatch in its core dimension %d, with gufunc "
                         "signature %s (expected %d, got %d)",
-                         self.name, name, _i, j, 
+                         self.name, name, _i, j,
                          self.signature, matched_dims[core_dim_index],
                          dims_to_match[core_dim_index])
             #print 'adding',iter_shape,'+',dims_to_match,'to arg_shapes'
@@ -1285,7 +1280,7 @@
      w_identity=None, name='', doc='', stack_inputs=False):
     ''' frompyfunc(func, nin, nout) #cpython numpy compatible
         frompyfunc(func, nin, nout, dtypes=None, signature='',
-                   identity=None, name='', doc='', 
+                   identity=None, name='', doc='',
                    stack_inputs=False)
 
     Takes an arbitrary Python function and returns a ufunc.
@@ -1304,7 +1299,7 @@
     dtypes: None or [dtype, ...] of the input, output args for each function,
          or 'match' to force output to exactly match input dtype
          Note that 'match' is a pypy-only extension to allow non-object
-         return dtypes      
+         return dtypes
     signature*: str, default=''
          The mapping of input args to output args, defining the
          inner-loop indexing. If it is empty, the func operates on scalars
@@ -1315,7 +1310,7 @@
     stack_inputs*: boolean, whether the function is of the form
             out = func(*in)  False
             or
-            func(*[in + out])    True 
+            func(*[in + out])    True
 
     only one of out_dtype or signature may be specified
 


More information about the pypy-commit mailing list