Ë
    D^(hý  ã                   ó„   — d Z ddlZg d¢Zej                  d„ «       Zej                  d„ «       Zej                  d„ «       Zy)z8
Functions for identifying isolate (degree zero) nodes.
é    N)Ú
is_isolateÚisolatesÚnumber_of_isolatesc                 ó*   — | j                  |«      dk(  S )a-  Determines whether a node is an isolate.

    An *isolate* is a node with no neighbors (that is, with degree
    zero). For directed graphs, this means no in-neighbors and no
    out-neighbors.

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

    n : node
        A node in `G`.

    Returns
    -------
    is_isolate : bool
       True if and only if `n` has no neighbors.

    Examples
    --------
    >>> G = nx.Graph()
    >>> G.add_edge(1, 2)
    >>> G.add_node(3)
    >>> nx.is_isolate(G, 2)
    False
    >>> nx.is_isolate(G, 3)
    True
    r   ©Údegree)ÚGÚns     úY/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/networkx/algorithms/isolate.pyr   r   
   s   € ð< �8‰8�A‹;˜!ÑÐó    c                 ó0   — d„ | j                  «       D «       S )aÐ  Iterator over isolates in the graph.

    An *isolate* is a node with no neighbors (that is, with degree
    zero). For directed graphs, this means no in-neighbors and no
    out-neighbors.

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

    Returns
    -------
    iterator
        An iterator over the isolates of `G`.

    Examples
    --------
    To get a list of all isolates of a graph, use the :class:`list`
    constructor::

        >>> G = nx.Graph()
        >>> G.add_edge(1, 2)
        >>> G.add_node(3)
        >>> list(nx.isolates(G))
        [3]

    To remove all isolates in the graph, first create a list of the
    isolates, then use :meth:`Graph.remove_nodes_from`::

        >>> G.remove_nodes_from(list(nx.isolates(G)))
        >>> list(G)
        [1, 2]

    For digraphs, isolates have zero in-degree and zero out_degre::

        >>> G = nx.DiGraph([(0, 1), (1, 2)])
        >>> G.add_node(3)
        >>> list(nx.isolates(G))
        [3]

    c              3   ó2   K  — | ]  \  }}|d k(  sŒ|–— Œ y­w)r   N© )Ú.0r
   Úds      r   ú	<genexpr>zisolates.<locals>.<genexpr>V   s   è ø€ Ò/‘$�!�Q¨¨Q«ŒAÑ/ùs   ‚�r   ©r	   s    r   r   r   +   s   € ñV 0˜!Ÿ(™(›*Ô/Ð/r   c                 ó8   — t        d„ t        | «      D «       «      S )a\  Returns the number of isolates in the graph.

    An *isolate* is a node with no neighbors (that is, with degree
    zero). For directed graphs, this means no in-neighbors and no
    out-neighbors.

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

    Returns
    -------
    int
        The number of degree zero nodes in the graph `G`.

    c              3   ó    K  — | ]  }d –— Œ y­w)é   Nr   )r   Úvs     r   r   z%number_of_isolates.<locals>.<genexpr>k   s   è ø€ Ò&�QŒqÑ&ùs   ‚)Úsumr   r   s    r   r   r   Y   s   € ô$ Ñ&œ( 1›+Ô&Ó&Ð&r   )Ú__doc__ÚnetworkxÚnxÚ__all__Ú_dispatchabler   r   r   r   r   r   ú<module>r      sd   ðñó â
:€ð ×Ññó ðð@ ×Ññ*0ó ð*0ðZ ×Ññ'ó ñ'r   