Author: Brian Kearns <[email protected]>
Branch: 
Changeset: r68230:38abc15e315d
Date: 2013-11-18 20:10 -0500
http://bitbucket.org/pypy/pypy/changeset/38abc15e315d/

Log:    provide dtype.descr for simple dtypes

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
@@ -151,6 +151,14 @@
                 endian = NPY_NATBYTE
         return space.wrap("%s%s%s" % (endian, basic, size))
 
+    def descr_get_descr(self, space):
+        if not self.is_record_type():
+            return space.newlist([space.newtuple([space.wrap(""),
+                                                  self.descr_get_str(space)])])
+        else:
+            raise OperationError(space.w_NotImplementedError, space.wrap(
+                "descr not implemented for record types"))
+
     def descr_get_base(self, space):
         return space.wrap(self.base)
 
@@ -447,6 +455,7 @@
     fields = GetSetProperty(W_Dtype.descr_get_fields),
     names = GetSetProperty(W_Dtype.descr_get_names),
     hasobject = GetSetProperty(W_Dtype.descr_get_hasobject),
+    descr = GetSetProperty(W_Dtype.descr_get_descr),
 )
 W_Dtype.typedef.acceptable_as_base_class = False
 
diff --git a/pypy/module/micronumpy/test/test_dtypes.py 
b/pypy/module/micronumpy/test/test_dtypes.py
--- a/pypy/module/micronumpy/test/test_dtypes.py
+++ b/pypy/module/micronumpy/test/test_dtypes.py
@@ -832,6 +832,17 @@
         assert x.dtype == int8
         assert (x == array(42)).all()
 
+    def test_descr(self):
+        import numpy as np
+        assert np.dtype('<i8').descr == [('', '<i8')]
+        assert np.dtype('|S4').descr == [('', '|S4')]
+        d = [('test', '<i8'), ('blah', '<i2', (2, 3))]
+        import sys
+        if '__pypy__' in sys.builtin_module_names:
+            raises(NotImplementedError, "np.dtype(d).descr")
+        else:
+            assert np.dtype(d).descr == d
+
 class AppTestStrUnicodeDtypes(BaseNumpyAppTest):
     def test_mro(self):
         from numpypy import str_, unicode_, character, flexible, generic
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to