Author: Brian Kearns <[email protected]>
Branch: 
Changeset: r69023:eabb5dd86586
Date: 2014-01-30 17:24 -0500
http://bitbucket.org/pypy/pypy/changeset/eabb5dd86586/

Log:    fix numpy dtype char aliases

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
@@ -803,29 +803,19 @@
         for dtype in reversed(self.builtin_dtypes):
             self.dtypes_by_num[dtype.num] = dtype
             self.dtypes_by_name[dtype.name] = dtype
-            can_name = dtype.kind + str(dtype.get_size())
-            self.dtypes_by_name[can_name] = dtype
-            self.dtypes_by_name[NPY_NATBYTE + can_name] = dtype
-            self.dtypes_by_name[NPY_NATIVE + can_name] = dtype
-            new_name = NPY_OPPBYTE + can_name
-            itemtype = type(dtype.itemtype)(False)
-            self.dtypes_by_name[new_name] = W_Dtype(
-                itemtype, dtype.num, dtype.kind, new_name, dtype.char,
-                dtype.w_box_type, byteorder=NPY_OPPBYTE,
-                float_type=dtype.float_type)
-            if dtype.kind != dtype.char:
-                can_name = dtype.char
+            for can_name in [dtype.kind + str(dtype.get_size()),
+                             dtype.char]:
+                self.dtypes_by_name[can_name] = dtype
                 self.dtypes_by_name[NPY_NATBYTE + can_name] = dtype
                 self.dtypes_by_name[NPY_NATIVE + can_name] = dtype
                 new_name = NPY_OPPBYTE + can_name
+                itemtype = type(dtype.itemtype)(False)
                 self.dtypes_by_name[new_name] = W_Dtype(
                     itemtype, dtype.num, dtype.kind, new_name, dtype.char,
                     dtype.w_box_type, byteorder=NPY_OPPBYTE,
                     float_type=dtype.float_type)
-
             for alias in dtype.aliases:
                 self.dtypes_by_name[alias] = dtype
-            self.dtypes_by_name[dtype.char] = dtype
 
         typeinfo_full = {
             'LONGLONG': self.w_int64dtype,
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
@@ -788,6 +788,14 @@
         assert dtype('>i8').str == '>i8'
         assert dtype('int8').str == '|i1'
         assert dtype('float').str == byteorder + 'f8'
+        assert dtype('f').str == byteorder + 'f4'
+        assert dtype('=f').str == byteorder + 'f4'
+        assert dtype('>f').str == '>f4'
+        assert dtype('<f').str == '<f4'
+        assert dtype('d').str == byteorder + 'f8'
+        assert dtype('=d').str == byteorder + 'f8'
+        assert dtype('>d').str == '>f8'
+        assert dtype('<d').str == '<f8'
         # strange
         assert dtype('string').str == '|S0'
         assert dtype('unicode').str == byteorder + 'U0'
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to