§
    bŠtj  ã                   ób   — d dl mZ d dlZddgZdd„Z ej        dd¬	¦  «        dd
„¦   «         ZdS )é    )ÚchainNÚ	tree_dataÚ
tree_graphÚidÚchildrenc                 óŒ  ‡‡‡— |                       ¦   «         |                      ¦   «         dz   k    rt          d¦  «        ‚|                      ¦   «         st          d¦  «        ‚t	          j        | ¦  «        st          d¦  «        ‚‰‰k    rt	          j        d¦  «        ‚ˆˆˆfd„Ši | j        |         ¥‰|‰ ‰|| ¦  «        i¥S )a  Returns data in tree format that is suitable for JSON serialization
    and use in JavaScript documents.

    Parameters
    ----------
    G : NetworkX graph
       G must be an oriented tree

    root : node
       The root of the tree

    ident : string
        Attribute name for storing NetworkX-internal graph data. `ident` must
        have a different value than `children`. The default is 'id'.

    children : string
        Attribute name for storing NetworkX-internal graph data. `children`
        must have a different value than `ident`. The default is 'children'.

    Returns
    -------
    data : dict
       A dictionary with node-link formatted data.

    Raises
    ------
    NetworkXError
        If `children` and `ident` attributes are identical.

    Examples
    --------
    >>> from networkx.readwrite import json_graph
    >>> G = nx.DiGraph([(1, 2)])
    >>> data = json_graph.tree_data(G, root=1)

    To serialize with json

    >>> import json
    >>> s = json.dumps(data)

    Notes
    -----
    Node attributes are stored in this format but keys
    for attributes must be strings if you want to serialize with JSON.

    Graph and edge attributes are not stored.

    See Also
    --------
    tree_graph, node_link_data, adjacency_data
    é   zG is not a tree.zG is not directed.zG is not weakly connected.z5The values for `id` and `children` must be different.c                 óÆ   •— ||          }t          |¦  «        dk    rg S g }|D ]=}i |j        |         ¥‰	|i¥} ‰||¦  «        }|r||‰<   |                     |¦  «         Œ>|S )Nr   )ÚlenÚnodesÚappend)
ÚnÚGÚnbrsÚ	children_ÚchildÚdÚcÚadd_childrenr   Úidents
          €€€ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/networkx/readwrite/json_graph/tree.pyr   ztree_data.<locals>.add_childrenF   s�   ø€ Ø�ŒtˆÝˆt‰9Œ9˜Š>ˆ>ØˆIØˆ	Øð 	 ð 	 ˆEØ0�1”7˜5”>Ð0 5¨%Ð0Ð0ˆAØ�˜U AÑ&Ô&ˆAØð  Ø��(‘Ø×Ò˜QÑÔÐÐØÐó    )Únumber_of_nodesÚnumber_of_edgesÚ	TypeErrorÚis_directedÚnxÚis_weakly_connectedÚNetworkXErrorr   )r   Úrootr   r   r   s     ``@r   r   r      sî   øøø€ ðh 	×ÒÑÔ˜a×/Ò/Ñ1Ô1°AÑ5Ò5Ð5ÝÐ*Ñ+Ô+Ð+Ø�=Š=‰?Œ?ð .ÝÐ,Ñ-Ô-Ð-ÝÔ! !Ñ$Ô$ð 6ÝÐ4Ñ5Ô5Ð5à�ÒÐÝÔÐVÑWÔWÐWðð ð ð ð ð ð ð KˆaŒg�dŒmÐJ˜U D¨(°L°LÀÀqÑ4IÔ4IÐJÐJÐJr   T)ÚgraphsÚreturns_graphc                 óö   ‡‡‡‡— t          j        ¦   «         Šˆˆˆˆfd„Š| ‰         }|                      ‰g ¦  «        }ˆˆfd„|                      ¦   «         D ¦   «         } ‰j        |fi |¤Ž  ‰||¦  «         ‰S )a  Returns graph from tree data format.

    Parameters
    ----------
    data : dict
        Tree formatted graph data

    ident : string
        Attribute name for storing NetworkX-internal graph data. `ident` must
        have a different value than `children`. The default is 'id'.

    children : string
        Attribute name for storing NetworkX-internal graph data. `children`
        must have a different value than `ident`. The default is 'children'.

    Returns
    -------
    G : NetworkX DiGraph

    Examples
    --------
    >>> from networkx.readwrite import json_graph
    >>> G = nx.DiGraph([(1, 2)])
    >>> data = json_graph.tree_data(G, root=1)
    >>> H = json_graph.tree_graph(data)

    See Also
    --------
    tree_data, node_link_data, adjacency_data
    c                 óô   •— |D ]s}|‰	         }‰                      | |¦  «         |                     ‰g ¦  «        }|r ‰||¦  «         ˆˆ	fd„|                     ¦   «         D ¦   «         } ‰j        |fi |¤Ž Œtd S )Nc                 óN   •— i | ]!\  }}|‰k    ¯|‰k    ¯t          |¦  «        |“Œ"S © ©Ústr©Ú.0ÚkÚvr   r   s      €€r   ú
<dictcomp>z4tree_graph.<locals>.add_children.<locals>.<dictcomp>   s9   ø€ ð ð ð Ù"˜a °a¸5²j°jÀQÈ(Â]À]•�A‘”˜À]À]À]r   )Úadd_edgeÚgetÚitemsÚadd_node)
Úparentr   Údatar   ÚgrandchildrenÚnodedatar   r   Úgraphr   s
         €€€€r   r   z tree_graph.<locals>.add_childrenx   sº   ø€ Øð 		.ð 		.ˆDØ˜”KˆEØ�NŠN˜6 5Ñ)Ô)Ð)Ø ŸHšH X¨rÑ2Ô2ˆMØð 3Ø�˜U MÑ2Ô2Ð2ðð ð ð ð Ø&*§j¢j¡l¤lðñ ô ˆHð ˆEŒN˜5Ð-Ð- HÐ-Ð-Ð-Ð-ð		.ð 		.r   c                 óN   •— i | ]!\  }}|‰k    ¯|‰k    ¯t          |¦  «        |“Œ"S r&   r'   r)   s      €€r   r-   ztree_graph.<locals>.<dictcomp>†   s2   ø€ ÐSÐSÐS™d˜a °a¸5²j°jÀQÈ(Â]À]•�A‘”˜À]À]À]r   )r   ÚDiGraphr/   r0   r1   )r3   r   r   r    r   r5   r   r6   s    ``   @@r   r   r   V   s¯   øøøø€ õ@ ŒJ‰LŒL€Eð
.ð 
.ð 
.ð 
.ð 
.ð 
.ð 
.ð 
.ð �Œ;€DØ—’˜ 2Ñ&Ô&€IØSÐSÐSÐSÐS d§j¢j¡l¤lÐSÑSÔS€HØ€E„N�4Ð$Ð$˜8Ð$Ð$Ð$Ø€L��yÑ!Ô!Ð!Ø€Lr   )r   r   )Ú	itertoolsr   Únetworkxr   Ú__all__r   Ú_dispatchabler   r&   r   r   ú<module>r=      s‡   ðØ Ð Ð Ð Ð Ð à Ð Ð Ð à˜Ð
%€ðKKð KKð KKð KKð\ €Ô˜¨TÐ2Ñ2Ô2ð2ð 2ð 2ñ 3Ô2ð2ð 2ð 2r   