def _scalar_ty(cls, value, cast_ty): """ Returns the scalar Weld type of a scalar Python value. If the value is not a scalar, returns None. For primitive 'int' values, returns 'cast_ty'. This returns 'None' if the value type is not supported. Parameters ---------- value : any value whose dtype to obtain. Returns ------- np.dtype """ if hasattr(value, 'dtype') and hasattr(value, 'shape') and value.shape == (): return wenp.dtype_to_weld_type(value.dtype) if isinstance(value, int): return cast_ty if isinstance(value, float): return F64() if isinstance(value, bool): return Bool()
def _supports_grizzly(cls, data): """ Returns the Weld type if data supports Grizzly operation, or returns `None` otherwise. Parameters ---------- data : np.array """ if not isinstance(data, np.ndarray) or data.ndim != 1: return None elem_type = wenp.dtype_to_weld_type(data.dtype) return WeldVec(elem_type) if elem_type is not None else None
def supported(cls, data): """ Returns whether the given ndarray supports Grizzly operation. Parameters ---------- data : np.array Examples ------- >>> GrizzlySeries.supported(np.array([1,2,3], dtype='int32')) vec[i32] >>> GrizzlySeries.supported(np.array(["foo","bar"], dtype='object')) >>> GrizzlySeries.supported(np.array(["foo","bar"], dtype='S')) vec[vec[i8]] """ if not isinstance(data, np.ndarray) or data.ndim != 1: return None if data.dtype.char == 'S': elem_type = WeldVec(I8()) else: elem_type = wenp.dtype_to_weld_type(data.dtype) return WeldVec(elem_type) if elem_type is not None else None