Esempio n. 1
0
    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()
Esempio n. 2
0
    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
Esempio n. 3
0
    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