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