44import os
55import sys
66import copy
7+ import platform
78
89import nose
910
@@ -81,37 +82,45 @@ def is_intent_exact(self,*names):
8182
8283intent = Intent ()
8384
84- class Type (object ):
85- _type_names = ['BOOL' , 'BYTE' , 'UBYTE' , 'SHORT' , 'USHORT' , 'INT' , 'UINT' ,
86- 'LONG' , 'ULONG' , 'LONGLONG' , 'ULONGLONG' ,
87- 'FLOAT' , 'DOUBLE' , 'LONGDOUBLE' , 'CFLOAT' , 'CDOUBLE' ,
88- 'CLONGDOUBLE' ]
89- _type_cache = {}
90-
91- _cast_dict = {'BOOL' :['BOOL' ]}
92- _cast_dict ['BYTE' ] = _cast_dict ['BOOL' ] + ['BYTE' ]
93- _cast_dict ['UBYTE' ] = _cast_dict ['BOOL' ] + ['UBYTE' ]
94- _cast_dict ['BYTE' ] = ['BYTE' ]
95- _cast_dict ['UBYTE' ] = ['UBYTE' ]
96- _cast_dict ['SHORT' ] = _cast_dict ['BYTE' ] + ['UBYTE' , 'SHORT' ]
97- _cast_dict ['USHORT' ] = _cast_dict ['UBYTE' ] + ['BYTE' , 'USHORT' ]
98- _cast_dict ['INT' ] = _cast_dict ['SHORT' ] + ['USHORT' , 'INT' ]
99- _cast_dict ['UINT' ] = _cast_dict ['USHORT' ] + ['SHORT' , 'UINT' ]
100-
101- _cast_dict ['LONG' ] = _cast_dict ['INT' ] + ['LONG' ]
102- _cast_dict ['ULONG' ] = _cast_dict ['UINT' ] + ['ULONG' ]
103-
104- _cast_dict ['LONGLONG' ] = _cast_dict ['LONG' ] + ['LONGLONG' ]
105- _cast_dict ['ULONGLONG' ] = _cast_dict ['ULONG' ] + ['ULONGLONG' ]
106-
107- _cast_dict ['FLOAT' ] = _cast_dict ['SHORT' ] + ['USHORT' , 'FLOAT' ]
108- _cast_dict ['DOUBLE' ] = _cast_dict ['INT' ] + ['UINT' , 'FLOAT' , 'DOUBLE' ]
109- _cast_dict ['LONGDOUBLE' ] = _cast_dict ['LONG' ] + ['ULONG' , 'FLOAT' , 'DOUBLE' , 'LONGDOUBLE' ]
110-
111- _cast_dict ['CFLOAT' ] = _cast_dict ['FLOAT' ] + ['CFLOAT' ]
85+ _type_names = ['BOOL' , 'BYTE' , 'UBYTE' , 'SHORT' , 'USHORT' , 'INT' , 'UINT' ,
86+ 'LONG' , 'ULONG' , 'LONGLONG' , 'ULONGLONG' ,
87+ 'FLOAT' , 'DOUBLE' , 'CFLOAT' ]
88+
89+ _cast_dict = {'BOOL' :['BOOL' ]}
90+ _cast_dict ['BYTE' ] = _cast_dict ['BOOL' ] + ['BYTE' ]
91+ _cast_dict ['UBYTE' ] = _cast_dict ['BOOL' ] + ['UBYTE' ]
92+ _cast_dict ['BYTE' ] = ['BYTE' ]
93+ _cast_dict ['UBYTE' ] = ['UBYTE' ]
94+ _cast_dict ['SHORT' ] = _cast_dict ['BYTE' ] + ['UBYTE' , 'SHORT' ]
95+ _cast_dict ['USHORT' ] = _cast_dict ['UBYTE' ] + ['BYTE' , 'USHORT' ]
96+ _cast_dict ['INT' ] = _cast_dict ['SHORT' ] + ['USHORT' , 'INT' ]
97+ _cast_dict ['UINT' ] = _cast_dict ['USHORT' ] + ['SHORT' , 'UINT' ]
98+
99+ _cast_dict ['LONG' ] = _cast_dict ['INT' ] + ['LONG' ]
100+ _cast_dict ['ULONG' ] = _cast_dict ['UINT' ] + ['ULONG' ]
101+
102+ _cast_dict ['LONGLONG' ] = _cast_dict ['LONG' ] + ['LONGLONG' ]
103+ _cast_dict ['ULONGLONG' ] = _cast_dict ['ULONG' ] + ['ULONGLONG' ]
104+
105+ _cast_dict ['FLOAT' ] = _cast_dict ['SHORT' ] + ['USHORT' , 'FLOAT' ]
106+ _cast_dict ['DOUBLE' ] = _cast_dict ['INT' ] + ['UINT' , 'FLOAT' , 'DOUBLE' ]
107+
108+ _cast_dict ['CFLOAT' ] = _cast_dict ['FLOAT' ] + ['CFLOAT' ]
109+
110+ # (debian) sparc system malloc does not provide the alignment required by
111+ # 16 byte long double types this means the inout intent cannot be satisfied and
112+ # several tests fail as the alignment flag can be randomly true or fals
113+ # when numpy gains an aligned allocator the tests could be enabled again
114+ if 'sparc' not in platform .platform ().lower ():
115+ _type_names .extend (['LONGDOUBLE' , 'CDOUBLE' , 'CLONGDOUBLE' ])
116+ _cast_dict ['LONGDOUBLE' ] = _cast_dict ['LONG' ] + \
117+ ['ULONG' , 'FLOAT' , 'DOUBLE' , 'LONGDOUBLE' ]
118+ _cast_dict ['CLONGDOUBLE' ] = _cast_dict ['LONGDOUBLE' ] + \
119+ ['CFLOAT' , 'CDOUBLE' , 'CLONGDOUBLE' ]
112120 _cast_dict ['CDOUBLE' ] = _cast_dict ['DOUBLE' ] + ['CFLOAT' , 'CDOUBLE' ]
113- _cast_dict ['CLONGDOUBLE' ] = _cast_dict ['LONGDOUBLE' ] + ['CFLOAT' , 'CDOUBLE' , 'CLONGDOUBLE' ]
114121
122+ class Type (object ):
123+ _type_cache = {}
115124
116125 def __new__ (cls , name ):
117126 if isinstance (name , dtype ):
@@ -138,23 +147,23 @@ def _init(self, name):
138147 self .dtypechar = typeinfo [self .NAME ][0 ]
139148
140149 def cast_types (self ):
141- return [self .__class__ (_m ) for _m in self . _cast_dict [self .NAME ]]
150+ return [self .__class__ (_m ) for _m in _cast_dict [self .NAME ]]
142151
143152 def all_types (self ):
144- return [self .__class__ (_m ) for _m in self . _type_names ]
153+ return [self .__class__ (_m ) for _m in _type_names ]
145154
146155 def smaller_types (self ):
147156 bits = typeinfo [self .NAME ][3 ]
148157 types = []
149- for name in self . _type_names :
158+ for name in _type_names :
150159 if typeinfo [name ][3 ]< bits :
151160 types .append (Type (name ))
152161 return types
153162
154163 def equal_types (self ):
155164 bits = typeinfo [self .NAME ][3 ]
156165 types = []
157- for name in self . _type_names :
166+ for name in _type_names :
158167 if name == self .NAME : continue
159168 if typeinfo [name ][3 ]== bits :
160169 types .append (Type (name ))
@@ -163,7 +172,7 @@ def equal_types(self):
163172 def larger_types (self ):
164173 bits = typeinfo [self .NAME ][3 ]
165174 types = []
166- for name in self . _type_names :
175+ for name in _type_names :
167176 if typeinfo [name ][3 ]> bits :
168177 types .append (Type (name ))
169178 return types
@@ -532,7 +541,7 @@ def test_inplace_from_casttype(self):
532541 assert_ (obj .dtype .type is self .type .dtype ) # obj type is changed inplace!
533542
534543
535- for t in Type . _type_names :
544+ for t in _type_names :
536545 exec ('''\
537546 class test_%s_gen(unittest.TestCase,
538547 _test_shared_memory
0 commit comments