def METHOD_NAME(
    df: Union[pd.DataFrame, dd.DataFrame],
    column: str,
    output_format: str = "standard",
    inplace: bool = False,
    errors: str = "coerce",
    progress: bool = True,
) -> pd.DataFrame:
    """
    Clean Cuban identity card numbers (NIs) type data in a DataFrame column.
    Parameters
    ----------
        df
            A pandas or Dask DataFrame containing the data to be cleaned.
        col
            The name of the column containing data of NI type.
        output_format
            The output format of standardized number string.
            If output_format = 'compact', return string without any separators or whitespace.
            If output_format = 'standard', return string with proper separators and whitespace.
            If output_format = 'birthdate', return the date of birth.
            If output_format = 'gender', return the gender (M/F) from the person's NI.
            Note: in the case of NI, the compact format is the same as the standard one.
            (default: "standard")
        inplace
           If True, delete the column containing the data that was cleaned.
           Otherwise, keep the original column.
           (default: False)
        errors
            How to handle parsing errors.
            - ‘coerce’: invalid parsing will be set to NaN.
            - ‘ignore’: invalid parsing will return the input.
            - ‘raise’: invalid parsing will raise an exception.
            (default: 'coerce')
        progress
            If True, display a progress bar.
            (default: True)
    Examples
    --------
    Clean a column of NI data.
    >>> df = pd.DataFrame({
            "ni": [
            '91021027775',
            '9102102777A',]
            })
    >>> clean_cu_ni(df, 'ni')
            ni                      ni_clean
    0       91021027775             91021027775
    1       9102102777A             NaN
    """
    if output_format not in {"compact", "standard", "birthdate", "gender"}:
        raise ValueError(
            f"output_format {output_format} is invalid. "
            'It needs to be "compact", "standard", "birthdate" or "gender".'
        )
    # convert to dask
    df = to_dask(df)
    # To clean, create a new column "clean_code_tup" which contains
    # the cleaned values and code indicating how the initial value was
    # changed in a tuple. Then split the column of tuples and count the
    # amount of different codes to produce the report
    df["clean_code_tup"] = df[column].map_partitions(
        lambda srs: [_format(x, output_format, errors) for x in srs],
        meta=object,
    )
    df = df.assign(
        _temp_=df["clean_code_tup"].map(itemgetter(0)),
    )
    df = df.rename(columns={"_temp_": f"{column}_clean"})
    df = df.drop(columns=["clean_code_tup"])
    if inplace:
        df[column] = df[f"{column}_clean"]
        df = df.drop(columns=f"{column}_clean")
        df = df.rename(columns={column: f"{column}_clean"})
    with ProgressBar(minimum=1, disable=not progress):
        df = df.compute()
    return df