Author: Brian Kearns <bdkea...@gmail.com>
Branch: 
Changeset: r69325:00beb1b741ed
Date: 2014-02-23 20:52 -0500
http://bitbucket.org/pypy/pypy/changeset/00beb1b741ed/

Log:    fix some dtype str/repr cases

diff --git a/pypy/module/micronumpy/arrayimpl/sort.py 
b/pypy/module/micronumpy/arrayimpl/sort.py
--- a/pypy/module/micronumpy/arrayimpl/sort.py
+++ b/pypy/module/micronumpy/arrayimpl/sort.py
@@ -10,7 +10,7 @@
 from rpython.rlib.unroll import unrolling_iterable
 from rpython.rlib.rarithmetic import widen
 from rpython.rlib.objectmodel import specialize
-from pypy.interpreter.error import OperationError
+from pypy.interpreter.error import OperationError, oefmt
 from pypy.module.micronumpy.base import W_NDimArray
 from pypy.module.micronumpy import interp_dtype, types
 from pypy.module.micronumpy.iter import AxisIterator
@@ -175,9 +175,9 @@
             return cache._lookup(tp)(arr, space, w_axis,
                                      itemtype.get_element_size())
     # XXX this should probably be changed
-    raise OperationError(space.w_NotImplementedError,
-           space.wrap("sorting of non-numeric types " + \
-                  "'%s' is not implemented" % arr.dtype.get_name(), ))
+    raise oefmt(space.w_NotImplementedError,
+                "sorting of non-numeric types '%s' is not implemented",
+                arr.dtype.name)
 
 all_types = (types.all_float_types + types.all_complex_types +
              types.all_int_types)
@@ -318,9 +318,9 @@
             return cache._lookup(tp)(arr, space, w_axis,
                                      itemtype.get_element_size())
     # XXX this should probably be changed
-    raise OperationError(space.w_NotImplementedError,
-           space.wrap("sorting of non-numeric types " + \
-                  "'%s' is not implemented" % arr.dtype.get_name(), ))
+    raise oefmt(space.w_NotImplementedError,
+                "sorting of non-numeric types '%s' is not implemented",
+                arr.dtype.name)
 
 all_types = (types.all_float_types + types.all_complex_types +
              types.all_int_types)
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
@@ -119,21 +119,30 @@
     def get_size(self):
         return self.size * self.itemtype.get_element_size()
 
-    def get_name(self):
-        if self.char == 'S':
-            return '|S' + str(self.get_size())
-        return self.name
-
     def get_float_dtype(self, space):
         assert self.kind == NPY.COMPLEXLTR
         assert self.float_type is not None
         return get_dtype_cache(space).dtypes_by_name[self.byteorder + 
self.float_type]
 
     def descr_str(self, space):
-        return space.wrap(self.get_name())
+        if not self.is_record_type():
+            if self.char == 'S':
+                s = '|S' + str(self.get_size())
+            else:
+                s = self.name
+            return space.wrap(s)
+        return space.str(self.descr_get_descr(space))
 
     def descr_repr(self, space):
-        return space.wrap("dtype('%s')" % self.get_name())
+        if not self.is_record_type():
+            if self.char == 'S':
+                s = 'S' + str(self.get_size())
+            else:
+                s = self.name
+            r = space.wrap(s)
+        else:
+            r = self.descr_get_descr(space)
+        return space.wrap("dtype(%s)" % space.str_w(space.repr(r)))
 
     def descr_get_itemsize(self, space):
         return space.wrap(self.get_size())
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
@@ -160,6 +160,12 @@
         d = dtype('?')
         assert repr(d) == "dtype('bool')"
         assert str(d) == "bool"
+        d = dtype([('', '<f8')])
+        assert repr(d) == "dtype([('f0', '<f8')])"
+        assert str(d) == "[('f0', '<f8')]"
+        d = dtype('S5')
+        assert repr(d) == "dtype('S5')"
+        assert str(d) == "|S5"
 
     def test_bool_array(self):
         from numpypy import array, False_, True_
@@ -848,6 +854,7 @@
         assert dtype('unicode').str == byteorder + 'U0'
         assert dtype(('string', 7)).str == '|S7'
         assert dtype(('unicode', 7)).str == '<U7'
+        assert dtype([('', 'f8')]).str == "|V8"
 
     def test_intp(self):
         from numpypy import dtype
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to