def isnone(col: Union[str, ColumnElement]) -> Func:
    """
    Returns a function that checks if the column value is `None` (NULL in DB).

    Args:
        col (str | Column): Column to check if it's None or not.
            If a string is provided, it is assumed to be the name of the column.
            If a Column is provided, it is assumed to be a column in the dataset.

    Returns:
        Func: A `Func` object that represents the isnone function.
            Returns True if column value is None, otherwise False.

    Example:
        ```py
        dc.mutate(test=ifelse(isnone("col"), "EMPTY", "NOT_EMPTY"))
        ```

    Notes:
        - The result column will always be of type bool.
    """
    if isinstance(col, str):
        # if string is provided, it is assumed to be the name of the column
        col = Column(col)

    return case((col.is_(None) if col is not None else True, True), else_=False)

    Returns a function that checks if the column value is `None` (NULL in DB).

    Args:
        col (str | Column): Column to check if it's None or not.
            If a string is provided, it is assumed to be the name of the column.
            If a Column is provided, it is assumed to be a column in the dataset.

    Returns:
        Func: A `Func` object that represents the isnone function.
            Returns True if column value is None, otherwise False.

    Example:
        ```py
        dc.mutate(test=ifelse(isnone("col"), "EMPTY", "NOT_EMPTY"))
        ```

    Notes:
        - The result column will always be of type bool.
    
src/datachain/func/conditional.py