
    fi                         d Z ddlZddgZ ej        d          d             Z ej        d          d	d            ZdS )
zUnary operations on graphs    N
complementreverseT)returns_graphc                                                        }|                                |                     fd                                 D                        |S )ar  Returns the graph complement of G.

    Parameters
    ----------
    G : graph
       A NetworkX graph

    Returns
    -------
    GC : A new graph.

    Notes
    -----
    Note that `complement` does not create self-loops and also
    does not produce parallel edges for MultiGraphs.

    Graph, node, and edge data are not propagated to the new graph.

    Examples
    --------
    >>> G = nx.Graph([(1, 2), (1, 3), (2, 3), (3, 4), (3, 5)])
    >>> G_complement = nx.complement(G)
    >>> G_complement.edges()  # This shows the edges of the complemented graph
    EdgeView([(1, 4), (1, 5), (2, 4), (2, 5), (4, 5)])

    c              3   D   K   | ]\  }}D ]}||v||k    ||fV  d S )N ).0nnbrsn2Gs       {/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/networkx/algorithms/operators/unary.py	<genexpr>zcomplement.<locals>.<genexpr>'   sD      WWWQWW"Rt^^qTVww!RwwwwwWW    )	__class__add_nodes_fromadd_edges_from	adjacency)r   Rs   ` r   r   r      sd    8 	
AQWWWWWWW   Hr   c                 ~    |                                  st          j        d          |                     |          S )aa  Returns the reverse directed graph of G.

    Parameters
    ----------
    G : directed graph
        A NetworkX directed graph
    copy : bool
        If True, then a new graph is returned. If False, then the graph is
        reversed in place.

    Returns
    -------
    H : directed graph
        The reversed G.

    Raises
    ------
    NetworkXError
        If graph is undirected.

    Examples
    --------
    >>> G = nx.DiGraph([(1, 2), (1, 3), (2, 3), (3, 4), (3, 5)])
    >>> G_reversed = nx.reverse(G)
    >>> G_reversed.edges()
    OutEdgeView([(2, 1), (3, 1), (3, 2), (4, 3), (5, 3)])

    z#Cannot reverse an undirected graph.)copy)is_directednxNetworkXErrorr   )r   r   s     r   r   r   ,   s:    < ==?? $DEEEyydy###r   )T)__doc__networkxr   __all___dispatchabler   r   r   r   r   <module>r      s           
# %%%    &% F %%% $  $  $ &% $  $  $r   