Author: mattip <[email protected]>
Branch: object-dtype2
Changeset: r76891:e91a14676362
Date: 2015-04-22 22:07 +0300
http://bitbucket.org/pypy/pypy/changeset/e91a14676362/

Log:    test, fix for numpy object scalar actually becoming the contained
        object

diff --git a/pypy/module/micronumpy/ndarray.py 
b/pypy/module/micronumpy/ndarray.py
--- a/pypy/module/micronumpy/ndarray.py
+++ b/pypy/module/micronumpy/ndarray.py
@@ -202,12 +202,16 @@
             return self
         elif isinstance(w_idx, W_NDimArray) and w_idx.get_dtype().is_bool() \
                 and w_idx.ndims() > 0:
-            return self.getitem_filter(space, w_idx)
+            w_ret = self.getitem_filter(space, w_idx)
         else:
             try:
-                return self.implementation.descr_getitem(space, self, w_idx)
+                w_ret = self.implementation.descr_getitem(space, self, w_idx)
             except ArrayArgumentException:
-                return self.getitem_array_int(space, w_idx)
+                w_ret = self.getitem_array_int(space, w_idx)
+        if isinstance(w_ret, boxes.W_ObjectBox):
+            #return the W_Root object, not a scalar
+            w_ret = w_ret.w_obj
+        return w_ret
 
     def getitem(self, space, index_list):
         return self.implementation.getitem_index(space, index_list)
diff --git a/pypy/module/micronumpy/test/test_object_arrays.py 
b/pypy/module/micronumpy/test/test_object_arrays.py
--- a/pypy/module/micronumpy/test/test_object_arrays.py
+++ b/pypy/module/micronumpy/test/test_object_arrays.py
@@ -117,14 +117,15 @@
         b = np.object_(3)
         b2 = np.object_(3.0)
         c = np.object_([4, 5])
-        d = np.object_([None, {}, []])
-        print type(a)
+        d = np.array([None])[0]
         assert a is None
         assert type(b) is int
         assert type(b2) is float
         assert type(c) is np.ndarray
         assert c.dtype == object
-        assert d.dtype == object
+        assert type(d) is type(None)
+        e = np.object_([None, {}, []])
+        assert e.dtype == object
 
     def test_mem_array_creation_invalid_specification(self):
         # while not specifically testing object dtype, this
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to