def non_neighbors(graph, node, t=None):
    """Returns the non-neighbors of the node in the graph at time t.

        Parameters
        ----------
        graph : DyNetx graph
            Graph to find neighbors.

        node : node
            The node whose neighbors will be returned.

        t : snapshot id (default=None)
            If None the non-neighbors are identified on the flattened graph.


        Returns
        -------
        non_neighbors : iterator
            Iterator of nodes in the graph that are not neighbors of the node.
        """
    if graph.is_directed():
        values = chain(graph.predecessors(node, t=t), graph.successors(node, t=t))
    else:
        values = graph.neighbors(node, t=t)

    nbors = set(values) | {node}
    return (nnode for nnode in graph if nnode not in nbors)