def get_every_edge_attributes(G, ignore_key=[]):
    """
    Get all the possible value for all attributes for edges of the graph
    except the ones on a given ignore list.
    See also get_specific_edge_attributes

    Parameters
    ----------
    G : networkx Graph/DiGraph/MultiGraph/MultiDiGraph/...
        Graph where we want to simplify an attribute.

    ignore_key : list or singleton, optional
        Key we want to ignore. The default is [].

    Returns
    -------
    attr_dict : dict
        Dictionary of every possible values for every attributes except the
        ignored ones.

    """
    attr_dict = dict()
    for edge in G.edges:
        for attr in list(G.edges[edge].keys()):
            if isinstance(ignore_key, list):
                if attr in ignore_key:
                    pass
                elif attr in attr_dict:
                    if G.edges[edge][attr] in attr_dict[attr]:
                        pass
                    else:
                        attr_dict[attr].append(G.edges[edge][attr])
                else:
                    attr_dict[attr] = [G.edges[edge][attr]]
            else:
                if attr is ignore_key:
                    pass
                elif attr in attr_dict:
                    if G.edges[edge][attr] in attr_dict[attr]:
                        pass
                    else:
                        attr_dict[attr].append(G.edges[edge][attr])
                else:
                    attr_dict[attr] = [G.edges[edge][attr]]
    return attr_dict