def _typeof_nb_type(val, c): if isinstance(val, types.BaseFunction): return val elif isinstance(val, (types.Number, types.Boolean)): return types.NumberClass(val) else: return types.TypeRef(val)
def typeof_type(val, c): """ Type various specific Python types. """ if issubclass(val, BaseException): return types.ExceptionClass(val) if issubclass(val, tuple) and hasattr(val, "_asdict"): return types.NamedTupleClass(val) if issubclass(val, np.generic): return types.NumberClass(numpy_support.from_dtype(val)) from numba.typed import Dict if issubclass(val, Dict): return types.TypeRef(types.DictType) from numba.typed import List if issubclass(val, List): return types.TypeRef(types.ListType)
def test_dtype_values(self): self.assertEqual(typeof(np.int64), types.NumberClass(types.int64)) self.assertEqual(typeof(np.float64), types.NumberClass(types.float64)) self.assertEqual(typeof(np.int32), types.NumberClass(types.int32)) self.assertEqual(typeof(np.int8), types.NumberClass(types.int8))
def resolve___class__(self, ty): return types.NumberClass(ty)
def register_number_classes(register_global): for np_type in np_types: nb_type = getattr(types, np_type.__name__) register_global(np_type, types.NumberClass(nb_type))
def resolve_type(self, ary): # Wrap the numeric type in NumberClass return types.NumberClass(ary.dtype)