def METHOD_NAME(keys, color_engine="auto", map_name="gist_ncar", format="RGBA", shuffle=None, seed=None):
    """
    Return a dict of colors for given keys
    Parameters
    ----------
    color_engine : str 'auto' / 'matplotlib' / 'colorsys' / 'distinctipy'
        The engine to generate colors
    map_name : str
        Used for matplotlib
    format: str
        The output formats, default 'RGBA'
    shuffle : bool or None
        Shuffle or not, default None
        If None then:
        * set to True for matplotlib and colorsys
        * set to False for distinctipy
    seed: int or None
        Set the seed, default None
    Returns
    -------
    dict_colors: dict
        A dict of colors for given keys.
    """
    assert color_engine in ("auto", "distinctipy", "matplotlib", "colorsys")
    possible_formats = ("RGBA",)
    assert format in possible_formats, f"format must be {possible_formats}"
    # select the colormap engine
    if color_engine == "auto":
        if HAVE_MPL:
            color_engine = "matplotlib"
        elif HAVE_DISTINCTIPY:
            # this is the third choice because this is very slow
            color_engine = "distinctipy"
        else:
            color_engine = "colorsys"
    if shuffle is None:
        # distinctipy then False
        shuffle = color_engine != "distinctipy"
        seed = 91
    N = len(keys)
    if color_engine == "distinctipy":
        colors = distinctipy.get_colors(N)
        # add the alpha
        colors = [color + (1.0,) for color in colors]
    elif color_engine == "matplotlib":
        # some map have black or white at border so +10
        margin = max(4, int(N * 0.08))
        cmap = plt.get_cmap(map_name, N + 2 * margin)
        colors = [cmap(i + margin) for i, key in enumerate(keys)]
    elif color_engine == "colorsys":
        import colorsys
        colors = [colorsys.hsv_to_rgb(x * 1.0 / N, 0.5, 0.5) + (1.0,) for x in range(N)]
    if shuffle:
        rng = np.random.RandomState(seed=seed)
        inds = np.arange(N)
        rng.shuffle(inds)
        colors = [colors[i] for i in inds]
    dict_colors = dict(zip(keys, colors))
    return dict_colors