Author: Brian Kearns <[email protected]>
Branch:
Changeset: r67718:26bd75c83407
Date: 2013-10-29 20:22 -0400
http://bitbucket.org/pypy/pypy/changeset/26bd75c83407/
Log: test/fix scalar construction default values
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
@@ -34,7 +34,7 @@
from pypy.module.micronumpy.interp_dtype import get_dtype_cache
return get_dtype_cache(space).dtypes_by_name[name]
- def new(space, w_subtype, w_value):
+ def new(space, w_subtype, w_value=None):
dtype = _get_dtype(space)
return dtype.itemtype.coerce_subtype(space, w_subtype, w_value)
diff --git a/pypy/module/micronumpy/test/test_scalar.py
b/pypy/module/micronumpy/test/test_scalar.py
--- a/pypy/module/micronumpy/test/test_scalar.py
+++ b/pypy/module/micronumpy/test/test_scalar.py
@@ -3,6 +3,21 @@
class AppTestScalar(BaseNumpyAppTest):
spaceconfig = dict(usemodules=["micronumpy", "binascii", "struct"])
+ def test_init(self):
+ import numpypy as np
+ import math
+ assert np.intp() == np.intp(0)
+ assert np.intp('123') == np.intp(123)
+ raises(TypeError, np.intp, None)
+ assert np.float64() == np.float64(0)
+ assert math.isnan(np.float64(None))
+ assert np.bool_() == np.bool_(False)
+ assert np.bool_('abc') == np.bool_(True)
+ assert np.bool_(None) == np.bool_(False)
+ assert np.complex_() == np.complex_(0)
+ #raises(TypeError, np.complex_, '1+2j')
+ assert math.isnan(np.complex_(None))
+
def test_pickle(self):
from numpypy import dtype, int32, float64, complex128, zeros, sum
from numpypy.core.multiarray import scalar
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
@@ -347,6 +347,8 @@
return self._coerce(space, w_item)
def _coerce(self, space, w_item):
+ if space.is_none(w_item):
+ return self.box(False)
return self.box(space.is_true(w_item))
def to_builtin_type(self, space, w_item):
@@ -410,6 +412,8 @@
_mixin_ = True
def _base_coerce(self, space, w_item):
+ if w_item is None:
+ return self.box(0)
return self.box(space.int_w(space.call_function(space.w_int, w_item)))
def _coerce(self, space, w_item):
return self._base_coerce(space, w_item)
@@ -629,6 +633,8 @@
_mixin_ = True
def _coerce(self, space, w_item):
+ if w_item is None:
+ return self.box(0.0)
if space.is_none(w_item):
return self.box(rfloat.NAN)
return self.box(space.float_w(space.call_function(space.w_float,
w_item)))
@@ -999,6 +1005,10 @@
_mixin_ = True
def _coerce(self, space, w_item):
+ if w_item is None:
+ return self.box_complex(0.0, 0.0)
+ if space.is_none(w_item):
+ return self.box_complex(rfloat.NAN, rfloat.NAN)
w_item = space.call_function(space.w_complex, w_item)
real, imag = space.unpackcomplex(w_item)
return self.box_complex(real, imag)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit