[pypy-commit] pypy numpy-dtype-refactor: many more tests passing

alex_gaynor noreply at buildbot.pypy.org
Fri Nov 11 17:02:14 CET 2011


Author: Alex Gaynor <alex.gaynor at gmail.com>
Branch: numpy-dtype-refactor
Changeset: r49322:603ee5d09325
Date: 2011-11-10 14:33 -0500
http://bitbucket.org/pypy/pypy/changeset/603ee5d09325/

Log:	many more tests passing

diff --git a/pypy/module/micronumpy/interp_boxes.py b/pypy/module/micronumpy/interp_boxes.py
--- a/pypy/module/micronumpy/interp_boxes.py
+++ b/pypy/module/micronumpy/interp_boxes.py
@@ -31,6 +31,8 @@
             return getattr(interp_ufuncs.get(space), ufunc_name).call(space, [self, w_other])
         return func_with_new_name(impl, "binop_%s_impl" % ufunc_name)
 
+    descr_div = _binop_impl("divide")
+
     descr_eq = _binop_impl("equal")
 
 
@@ -105,6 +107,7 @@
     __int__ = interp2app(W_GenericBox.descr_int),
     __float__ = interp2app(W_GenericBox.descr_float),
 
+    __div__ = interp2app(W_GenericBox.descr_div),
     __eq__ = interp2app(W_GenericBox.descr_eq),
 
 )
diff --git a/pypy/module/micronumpy/interp_dtype.py b/pypy/module/micronumpy/interp_dtype.py
--- a/pypy/module/micronumpy/interp_dtype.py
+++ b/pypy/module/micronumpy/interp_dtype.py
@@ -192,7 +192,7 @@
             types.Float64(),
             num=12,
             kind=FLOATINGLTR,
-            name="float32",
+            name="float64",
             char="d",
             alternate_constructors=[space.w_float],
         )
diff --git a/pypy/module/micronumpy/interp_numarray.py b/pypy/module/micronumpy/interp_numarray.py
--- a/pypy/module/micronumpy/interp_numarray.py
+++ b/pypy/module/micronumpy/interp_numarray.py
@@ -20,7 +20,7 @@
         w_dtype = None
         for w_item in l:
             w_dtype = interp_ufuncs.find_dtype_for_scalar(space, w_item, w_dtype)
-            if w_dtype is space.fromcache(interp_dtype.W_Float64Dtype):
+            if w_dtype is interp_dtype.get_dtype_cache(space).w_float64dtype:
                 break
         if w_dtype is None:
             w_dtype = space.w_None
@@ -177,12 +177,12 @@
         dtype = self.find_dtype()
         if self.find_size() > 1000:
             nums = [
-                dtype.str_format(self.eval(index))
+                dtype.itemtype.str_format(self.eval(index))
                 for index in range(3)
             ]
             nums.append("..." + "," * comma)
             nums.extend([
-                dtype.str_format(self.eval(index))
+                dtype.itemtype.str_format(self.eval(index))
                 for index in range(self.find_size() - 3, self.find_size())
             ])
         else:
@@ -215,8 +215,8 @@
         concrete = self.get_concrete()
         res = "array([" + ", ".join(concrete._getnums(False)) + "]"
         dtype = concrete.find_dtype()
-        if (dtype is not space.fromcache(interp_dtype.W_Float64Dtype) and
-            dtype is not space.fromcache(interp_dtype.W_Int64Dtype)) or not self.find_size():
+        if (dtype is not interp_dtype.get_dtype_cache(space).w_float64dtype and
+            dtype is not interp_dtype.get_dtype_cache(space).w_int64dtype) or not self.find_size():
             res += ", dtype=" + dtype.name
         res += ")"
         return space.wrap(res)
@@ -282,7 +282,7 @@
                                                slice_length, w_value)
 
     def descr_mean(self, space):
-        return space.wrap(space.float_w(self.descr_sum(space))/self.find_size())
+        return space.div(self.descr_sum(space), space.wrap(self.find_size()))
 
     def _sliceloop(self, start, stop, step, source, dest):
         i = start
diff --git a/pypy/module/micronumpy/interp_ufuncs.py b/pypy/module/micronumpy/interp_ufuncs.py
--- a/pypy/module/micronumpy/interp_ufuncs.py
+++ b/pypy/module/micronumpy/interp_ufuncs.py
@@ -234,7 +234,7 @@
                 return dtype
     if promote_to_largest:
         if dt.kind == interp_dtype.BOOLLTR or dt.kind == interp_dtype.SIGNEDLTR:
-            return space.fromcache(interp_dtype.W_Int64Dtype)
+            return interp_dtype.get_dtype_cache(space).w_float64dtype
         elif dt.kind == interp_dtype.FLOATINGLTR:
             return interp_dtype.get_dtype_cache(space).w_float64dtype
         elif dt.kind == interp_dtype.UNSIGNEDLTR:
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
@@ -52,6 +52,9 @@
     def add(self, v1, v2):
         return self.box(self.unbox(v1) + self.unbox(v2))
 
+    def div(self, v1, v2):
+        return self.box(self.unbox(v1) / self.unbox(v2))
+
     def eq(self, v1, v2):
         return self.unbox(v1) == self.unbox(v2)
 
@@ -78,6 +81,10 @@
     def _coerce(self, space, w_item):
         return self.box(space.is_true(w_item))
 
+    def str_format(self, box):
+        value = self.unbox(box)
+        return "True" if value else "False"
+
 class Integer(Primitive):
     def _coerce(self, space, w_item):
         return self.box(space.int_w(space.int(w_item)))


More information about the pypy-commit mailing list