[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