def flat_list(source):
    """Make sure `source` is a list, else wrap it, and return a flat list.

    :param source: source list
    :returns: flat list
    """
    if not isinstance(source, (list, tuple)):
        source = [source]
    r = []
    list(map(lambda x: r.extend(x)
        if isinstance(x, (list, tuple))
        else r.append(x), source))

    return r