§
    bŠtj�\  ã                   óR  — d Z ddlZddlZ ej        d¦  «        Z ej        d¦  «          G d„ d¦  «        Zd„ Zd„ Zd	„ Z	ej
                             d
 edd¦  «        ¦  «        d„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zej
                             dej        ej        ej        ej        ej        ej        ej        ej        ej        g	¦  «        d„ ¦   «         Zej
                             dddg¦  «        ej
                             di ddidgdœddig¦  «        d„ ¦   «         ¦   «         ZdS )z Unit tests for layout functions.é    NÚnumpyÚscipyc                   óö   — e Zd Zed„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d „ Z#d!„ Z$d"„ Z%d#„ Z&d$„ Z'd%S )&Ú
TestLayoutc                 óÒ   — t          j        dd¦  «        | _        t          j        ¦   «         | _        t          j        | j        d¦  «         t          j        dd¦  «        | _        d S )Né   Úabcdefé   )ÚnxÚgrid_2d_graphÚGiÚGraphÚGsÚadd_pathÚbigG)Úclss    ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/networkx/drawing/tests/test_layout.pyÚsetup_classzTestLayout.setup_class   sO   € åÔ! ! QÑ'Ô'ˆŒÝ”‘”ˆŒÝ
Œ�C”F˜HÑ%Ô%Ð%ÝÔ# B¨Ñ+Ô+ˆŒˆˆó    c                 óÖ  ‡‡— t          j        d¦  «        }t          j        t          d¬¦  «        5  t          j        |dg¬¦  «         d d d ¦  «         n# 1 swxY w Y   dddœŠt          j        t          d¬¦  «        5  t          j        |dd	g‰¬
¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        |ddg‰¬
¦  «        Št          ˆˆfd„dD ¦   «         ¦  «        sJ ‚d S )Né   z!nodes are fixed without positions©Úmatchr   )Úfixed©é   r   ©r   r   ©r   é   r   )r   Úposr   c              3   óf   •K  — | ]+}t                                ‰|         ‰|         ¦  «        V — Œ,d S ©N)ÚnpÚarray_equal)Ú.0ÚnÚoutr    s     €€r   ú	<genexpr>z;TestLayout.test_spring_fixed_without_pos.<locals>.<genexpr>    s9   øè è € ÐBÐB°a•2—>’> # a¤&¨#¨a¬&Ñ1Ô1ÐBÐBÐBÐBÐBÐBr   )r   Ú
path_graphÚpytestÚraisesÚ
ValueErrorÚspring_layoutÚall)ÚselfÚGr'   r    s     @@r   Útest_spring_fixed_without_posz(TestLayout.test_spring_fixed_without_pos   s{  øø€ ÝŒM˜!ÑÔˆåŒ]�:Ð-PÐQÑQÔQð 	+ð 	+ÝÔ˜Q q cÐ*Ñ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð ˜VÐ$Ð$ˆåŒ]�:Ð-PÐQÑQÔQð 	7ð 	7ÝÔ˜Q q¨! f°#Ð6Ñ6Ô6Ð6ð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7õ Ô˜q¨¨A¨°CÐ8Ñ8Ô8ˆÝÐBÐBÐBÐBÐB¸6ÐBÑBÔBÑBÔBÐBÐBÐBÐBÐBs#   ²AÁAÁAÂB'Â'B+Â.B+c                 ó  ‡— dd l Št          j        ¦   «         }|                     g d¢¦  «         ddi}dg}t          j        |||¬¦  «        }t          ˆfd„|                     ¦   «         D ¦   «         ¦  «        }|r
J d¦   «         ‚d S )Nr   )©r   r   ©r   r   )r   r   )r   é   ©ç        r7   ©r    r   c              3   óL   •K  — | ]}|D ]}‰                      |¦  «        V — ŒŒd S r"   )Úisnan)r%   ÚcoordsÚcÚmaths      €r   r(   z2TestLayout.test_spring_init_pos.<locals>.<genexpr>,   s:   øè è € ÐOÐO¨ÈÐOÐOÀ1�d—j’j ‘m”mÐOÐOÐOÐOÐOÐOÐOr   zvalues should not be nan)r=   r   r   Úadd_edges_fromÚfruchterman_reingold_layoutÚanyÚvalues)r/   r0   Úinit_posÚ	fixed_posr    Úhas_nanr=   s         @r   Útest_spring_init_poszTestLayout.test_spring_init_pos"   s�   ø€ àˆˆˆåŒH‰JŒJˆØ	×ÒÐ9Ð9Ð9Ñ:Ô:Ð:à�z�?ˆØ�Cˆ	ÝÔ,¨Q°HÀIÐNÑNÔNˆÝÐOÐOÐOÐO°#·*²*±,´,ÐOÑOÔOÑOÔOˆØÐ6Ð6Ð6Ñ6Ô6ˆ{Ð6Ð6r   c                 óÄ  — g }t          j        |¦  «         t          j        |¦  «         t          j        |¦  «         t          j        |¦  «         t          j        |¦  «         t          j        |¦  «         t          j        |¦  «         t          j        ||¦  «         t          j	        |¦  «         t          j
        |¦  «         t          j        |¦  «         d S r"   )r   Úrandom_layoutÚcircular_layoutÚplanar_layoutr-   r?   Úspectral_layoutÚshell_layoutÚbipartite_layoutÚspiral_layoutÚmultipartite_layoutÚkamada_kawai_layout©r/   r0   s     r   Útest_smoke_empty_graphz!TestLayout.test_smoke_empty_graph/   sÉ   € ØˆÝ
Ô˜ÑÔÐÝ
Ô˜1ÑÔÐÝ
Ô˜ÑÔÐÝ
Ô˜ÑÔÐÝ
Ô& qÑ)Ô)Ð)Ý
Ô˜1ÑÔÐÝ
Œ˜ÑÔÐÝ
Ô˜A˜qÑ!Ô!Ð!Ý
Ô˜ÑÔÐÝ
Ô˜qÑ!Ô!Ð!Ý
Ô˜qÑ!Ô!Ð!Ð!Ð!r   c                 ó*  — | j         }t          j        |¦  «         t          j        |¦  «         t          j        |¦  «         t          j        |¦  «         t          j        |¦  «         t          j        |¦  «         t          j        | j        ¦  «         t          j	        |¦  «         t          j	        | 
                    ¦   «         ¦  «         t          j	        | j        ¦  «         t          j	        | j         
                    ¦   «         ¦  «         t          j        |¦  «         t          j        |¦  «         t          j        |¦  «         t          j        |d¬¦  «         t          j        |d¬¦  «         t          j        |¦  «         d S ©Nr   ©Údimr5   )r   r   rG   rH   rI   r-   Úforceatlas2_layoutr?   r   rJ   Úto_directedrK   rM   rO   Ú
arf_layoutrP   s     r   Útest_smoke_intzTestLayout.test_smoke_int=   sR  € ØŒGˆÝ
Ô˜ÑÔÐÝ
Ô˜1ÑÔÐÝ
Ô˜ÑÔÐÝ
Ô˜ÑÔÐÝ
Ô˜aÑ Ô Ð Ý
Ô& qÑ)Ô)Ð)Ý
Ô& t¤yÑ1Ô1Ð1Ý
Ô˜1ÑÔÐÝ
Ô˜1Ÿ=š=™?œ?Ñ+Ô+Ð+Ý
Ô˜4œ9Ñ%Ô%Ð%Ý
Ô˜4œ9×0Ò0Ñ2Ô2Ñ3Ô3Ð3Ý
Œ˜ÑÔÐÝ
Ô˜ÑÔÐÝ
Ô˜qÑ!Ô!Ð!Ý
Ô˜q aÐ(Ñ(Ô(Ð(Ý
Ô˜q aÐ(Ñ(Ô(Ð(Ý
Œ�aÑÔÐÐÐr   c                 ó$  — | j         }t          j        |¦  «         t          j        |¦  «         t          j        |¦  «         t          j        |¦  «         t          j        |¦  «         t          j        |¦  «         t          j        |¦  «         t          j	        |¦  «         t          j
        |¦  «         t          j        |¦  «         t          j        |d¬¦  «         t          j        |d¬¦  «         t          j        |¦  «         d S rS   )r   r   rG   rH   rI   r-   rV   r?   rJ   rK   rM   rO   rX   rP   s     r   Útest_smoke_stringzTestLayout.test_smoke_stringQ   sô   € ØŒGˆÝ
Ô˜ÑÔÐÝ
Ô˜1ÑÔÐÝ
Ô˜ÑÔÐÝ
Ô˜ÑÔÐÝ
Ô˜aÑ Ô Ð Ý
Ô& qÑ)Ô)Ð)Ý
Ô˜1ÑÔÐÝ
Œ˜ÑÔÐÝ
Ô˜ÑÔÐÝ
Ô˜qÑ!Ô!Ð!Ý
Ô˜q aÐ(Ñ(Ô(Ð(Ý
Ô˜q aÐ(Ñ(Ô(Ð(Ý
Œ�aÑÔÐÐÐr   c                 ó¸  — t                                |¦  «        }||z
  }||z   }t                                t          |                     ¦   «         ¦  «        ¦  «        }|                     d¦  «        |                     d¦  «        z
  }|d|z  k                         ¦   «         sJ ‚||k                         ¦   «         sJ ‚||k                         ¦   «         sJ ‚d S )Nr   r   )r#   ÚarrayÚlistrA   ÚmaxÚminr.   )r/   r    ÚscaleÚcenterÚlowÚhiÚvposÚlengths           r   Úcheck_scale_and_centerz!TestLayout.check_scale_and_centera   sÃ   € Ý—’˜&Ñ!Ô!ˆØ�u‰nˆØ�e‰^ˆÝ�xŠx�˜SŸZšZ™\œ\Ñ*Ô*Ñ+Ô+ˆØ—’˜!‘”˜tŸxšx¨™{œ{Ñ*ˆØ˜!˜e™)Ò#×(Ò(Ñ*Ô*Ð*Ð*Ð*Ø˜’× Ò Ñ"Ô"Ð"Ð"Ð"Ø˜’
×ÒÑ!Ô!Ð!Ð!Ð!Ð!Ð!r   c                 óž  — | j         }d}t          j        d¦  «        }|                     d¦  «          |t          j        ||¬¦  «        dd¬¦  «          |t          j        |d|¬¦  «        d|¬¦  «          |t          j        |d|¬¦  «        d|¬¦  «          |t          j        |d|¬¦  «        d|¬¦  «          |t          j        |d|¬¦  «        d|¬¦  «          |t          j	        |d|¬¦  «        d|¬¦  «          |t          j
        |d|¬¦  «        d|¬¦  «         d} |t          j
        |d	d|¬
¦  «        d|¬¦  «         d S )N)r   r   é	   ©rb   ç      à?)g      @g      @©ra   rb   r   )r   r5   r   r5   )rU   ra   rb   ©rg   r   Úcomplete_graphÚadd_noderG   r-   rJ   rH   rK   rM   rO   ©r/   Úscr<   r0   s       r   Útest_scale_and_center_argz$TestLayout.test_scale_and_center_argk   s�  € ØÔ(ˆØˆÝÔ˜aÑ Ô ˆØ	�
Š
�1‰ŒˆØ
ˆ�2Ô˜A aÐ(Ñ(Ô(°¸JÐGÑGÔGÐGà
ˆ�2Ô˜A Q¨qÐ1Ñ1Ô1¸À1ÐEÑEÔEÐEØ
ˆ�2Ô˜a q°Ð3Ñ3Ô3¸1ÀQÐGÑGÔGÐGØ
ˆ�2Ô˜a q°Ð3Ñ3Ô3¸1ÀQÐGÑGÔGÐGØ
ˆ�2Œ?˜1 A¨aÐ0Ñ0Ô0¸À!ÐDÑDÔDÐDØ
ˆ�2Ô˜A Q¨qÐ1Ñ1Ô1¸À1ÐEÑEÔEÐEØ
ˆ�2Ô! !¨1°QÐ7Ñ7Ô7¸qÈÐKÑKÔKÐKàˆØ
ˆ�2Ô! !¨°!¸AÐ>Ñ>Ô>ÀaÐPQÐRÑRÔRÐRÐRÐRr   c                 ó‚   — t          j        d¦  «        }t          j        t           j        t           j        |¦  «         d S )Nri   )r   rn   r*   r+   ÚNetworkXExceptionrI   rP   s     r   Ú#test_planar_layout_non_planar_inputz.TestLayout.test_planar_layout_non_planar_input|   s2   € ÝÔ˜aÑ Ô ˆÝŒ•bÔ*­BÔ,<¸aÑ@Ô@Ð@Ð@Ð@r   c                 ó’   — t          j        ¦   «         }|                     ddgddgddgdœ¦  «         t          j        |¦  «         d S )Nr   r   r   ©r   r   r   )r   ÚPlanarEmbeddingÚset_datarI   )r/   Ú	embeddings     r   Ú(test_smoke_planar_layout_embedding_inputz3TestLayout.test_smoke_planar_layout_embedding_input€   sQ   € ÝÔ&Ñ(Ô(ˆ	Ø×Ò  1˜v¨1¨a¨&°a¸°VÐ<Ð<Ñ=Ô=Ð=Ý
Ô˜Ñ#Ô#Ð#Ð#Ð#r   c                 ór  — | j         }d}t          j        d¦  «        }|                     d¦  «          |t          j        |¦  «        dd¬¦  «          |t          j        |¦  «        d|¬¦  «          |t          j        |¦  «        d|¬¦  «          |t          j        |¦  «        d|¬¦  «          |t          j        |¦  «        d|¬¦  «          |t          j	        |¦  «        d|¬¦  «          |t          j
        |¦  «        d|¬¦  «         d} |t          j
        |d¬	¦  «        d|¬¦  «         d S )
Nr   ri   rk   ©rk   rk   rl   r   )r   r   r   r5   rT   rm   rp   s       r   Útest_default_scale_and_centerz(TestLayout.test_default_scale_and_center…   sM  € ØÔ(ˆØˆÝÔ˜aÑ Ô ˆØ	�
Š
�1‰ŒˆØ
ˆ�2Ô˜AÑÔ c°*Ð=Ñ=Ô=Ð=Ø
ˆ�2Ô˜AÑÔ a°Ð2Ñ2Ô2Ð2Ø
ˆ�2Ô˜aÑ Ô ¨°!Ð4Ñ4Ô4Ð4Ø
ˆ�2Ô˜aÑ Ô ¨°!Ð4Ñ4Ô4Ð4Ø
ˆ�2Œ?˜1ÑÔ Q¨qÐ1Ñ1Ô1Ð1Ø
ˆ�2Ô˜AÑÔ a°Ð2Ñ2Ô2Ð2Ø
ˆ�2Ô! !Ñ$Ô$¨A°aÐ8Ñ8Ô8Ð8àˆØ
ˆ�2Ô! !¨Ð+Ñ+Ô+°1¸QÐ?Ñ?Ô?Ð?Ð?Ð?r   c                 ó´  — t          j        d¦  «        }t          j        t          t           j        |d¬¦  «         t          j        t          t           j        |d¬¦  «         t          j        t          t           j        |d¬¦  «         t          j        t          t           j        |d¬¦  «         t          j        t          t           j        |d¬¦  «         d S )Nr   r   rT   r5   )r   r)   r*   r+   r,   rH   rK   rI   rP   s     r   Ú(test_circular_planar_and_shell_dim_errorz3TestLayout.test_circular_planar_and_shell_dim_error•   s¡   € ÝŒM˜!ÑÔˆÝŒ•j¥"Ô"4°a¸QÐ?Ñ?Ô?Ð?ÝŒ•j¥"¤/°1¸!Ð<Ñ<Ô<Ð<ÝŒ•j¥"¤/°1¸!Ð<Ñ<Ô<Ð<ÝŒ•j¥"Ô"2°A¸1Ð=Ñ=Ô=Ð=ÝŒ•j¥"Ô"2°A¸1Ð=Ñ=Ô=Ð=Ð=Ð=r   c                 ób  — t          j        | j        ¦  «        }t           j        j                             |¦  «        }|j        dk    sJ ‚t           j        j                             |d¬¦  «        }|j        dk    sJ ‚t           j        j                             |¦  «        }|j        dk    sJ ‚d S )N©é   r   r5   rT   ©rƒ   r5   )r   Úto_numpy_arrayr   ÚdrawingÚlayoutÚ_fruchterman_reingoldÚshapeÚ_sparse_fruchterman_reingold©r/   ÚAr    s      r   Útest_adjacency_interface_numpyz)TestLayout.test_adjacency_interface_numpy�   s    € ÝÔ˜dœgÑ&Ô&ˆÝŒjÔ×5Ò5°aÑ8Ô8ˆØŒy˜FÒ"Ð"Ð"Ð"ÝŒjÔ×5Ò5°a¸QÐ5Ñ?Ô?ˆØŒy˜FÒ"Ð"Ð"Ð"ÝŒjÔ×<Ò<¸QÑ?Ô?ˆØŒy˜FÒ"Ð"Ð"Ð"Ð"Ð"r   c                 óf  — t          j        | j        d¬¦  «        }t           j        j                             |¦  «        }|j        dk    sJ ‚t           j        j                             |¦  «        }|j        dk    sJ ‚t           j        j                             |d¬¦  «        }|j        dk    sJ ‚d S )NÚd)Údtyper‚   r5   rT   r„   )r   Úto_scipy_sparse_arrayr   r†   r‡   rŠ   r‰   Ú_sparse_spectralr‹   s      r   Útest_adjacency_interface_scipyz)TestLayout.test_adjacency_interface_scipy¦   s¥   € ÝÔ$ T¤W°CÐ8Ñ8Ô8ˆÝŒjÔ×<Ò<¸QÑ?Ô?ˆØŒy˜FÒ"Ð"Ð"Ð"ÝŒjÔ×0Ò0°Ñ3Ô3ˆØŒy˜FÒ"Ð"Ð"Ð"ÝŒjÔ×<Ò<¸QÀAÐ<ÑFÔFˆØŒy˜FÒ"Ð"Ð"Ð"Ð"Ð"r   c                 óF  — t          j        d¦  «        }t          j        |¦  «        }|d                              ¦   «         rJ ‚t          j        d¦  «        }t          j        |dgddgdgg¦  «        }|d                              ¦   «         rJ ‚|d                              ¦   «         sJ ‚t          j                             |d         ¦  «        dk    sJ ‚t          j        |dgddgdggd¬¦  «        }t          j                             |d         ¦  «        dk    sJ ‚d S )Nr   r   r   r   r5   )Úrotate)r   r)   rK   r@   r#   ÚlinalgÚnorm©r/   r0   re   s      r   Útest_single_nodeszTestLayout.test_single_nodes¯   s  € ÝŒM˜!ÑÔˆÝŒ˜qÑ!Ô!ˆØ˜”7—;’;‘=”=Ð Ð Ð ÝŒM˜!ÑÔˆÝŒ˜q A 3¨¨A¨°°Ð"4Ñ5Ô5ˆØ˜”7—;’;‘=”=Ð Ð Ð Ø�AŒw�{Š{‰}Œ}ÐÐˆ}ÝŒy�~Š~˜d 1œgÑ&Ô&¨!Ò+Ð+Ð+Ð+ÝŒ˜q A 3¨¨A¨°°Ð"4¸QÐ?Ñ?Ô?ˆÝŒy�~Š~˜d 1œgÑ&Ô&¨!Ò+Ð+Ð+Ð+Ð+Ð+r   c                 ón   — t          j        | j        ¦  «        }t          j        | j        |¬¦  «        }d S ©N©r    )r   rH   r   rV   ©r/   r    Únposs      r   Ú"test_smoke_initial_pos_forceatlas2z-TestLayout.test_smoke_initial_pos_forceatlas2»   s/   € ÝÔ  ¤Ñ)Ô)ˆÝÔ$ T¤W°#Ð6Ñ6Ô6ˆˆˆr   c                 ón   — t          j        | j        ¦  «        }t          j        | j        |¬¦  «        }d S r›   )r   rH   r   r?   r�   s      r   Ú+test_smoke_initial_pos_fruchterman_reingoldz6TestLayout.test_smoke_initial_pos_fruchterman_reingold¿   s/   € ÝÔ  ¤Ñ)Ô)ˆÝÔ-¨d¬g¸3Ð?Ñ?Ô?ˆˆˆr   c                 ón   — t          j        | j        ¦  «        }t          j        | j        |¬¦  «        }d S r›   )r   rH   r   rX   r�   s      r   Útest_smoke_initial_pos_arfz%TestLayout.test_smoke_initial_pos_arfÃ   s.   € ÝÔ  ¤Ñ)Ô)ˆÝŒ}˜TœW¨#Ð.Ñ.Ô.ˆˆˆr   c                 óÆ  — t          j        | j        ¦  «        }t          j        | j        |dg¬¦  «        }t	          |d         ¦  «        t	          |d         ¦  «        k    sJ ‚t          j        | j        ¦  «        }t          j        | j        |dg¬¦  «        }t          d¦  «        D ]6}|d         |         t          j        |d         |         d¬¦  «        k    sJ ‚Œ7d S )Nr   r8   r   çH¯¼šò×z>©Úabs)	r   rH   r   r-   Útupler   Úranger*   Úapprox)r/   r    rž   Úaxiss       r   Ú$test_fixed_node_fruchterman_reingoldz/TestLayout.test_fixed_node_fruchterman_reingoldÇ   sÝ   € åÔ  ¤Ñ)Ô)ˆÝÔ ¤¨S¸¸ÐAÑAÔAˆÝ�S˜”[Ñ!Ô!¥U¨4°¬<Ñ%8Ô%8Ò8Ð8Ð8Ð8åÔ  ¤Ñ+Ô+ˆÝÔ ¤	¨s¸6¸(ÐCÑCÔCˆÝ˜!‘H”Hð 	Tð 	TˆDØ�v”;˜tÔ$­¬°d¸6´lÀ4Ô6HÈdÐ(SÑ(SÔ(SÒSÐSÐSÐSÐSð	Tð 	Tr   c                 ó  — t          j        d¦  «        }t          j        |d¬¦  «         t          j        |d¬¦  «        }t	          |d         ¦  «        dk    sJ ‚t          j        |d¬¦  «        }t	          |d         ¦  «        dk    sJ ‚t          j        |d¬¦  «        }t	          |d         ¦  «        dk    sJ ‚t          j        |d¬¦  «        }t	          |d         ¦  «        dk    sJ ‚t          j        |d¬¦  «        }t	          |d         ¦  «        dk    sJ ‚t          j	        |d¬¦  «        }t	          |d         ¦  «        dk    sJ ‚t          j
        |d¬¦  «        }t	          |d         ¦  «        dk    sJ ‚d S )Nr   r   rj   r   )r   r)   rG   rH   r¨   rI   r-   r?   rJ   rK   rM   r˜   s      r   Útest_center_parameterz TestLayout.test_center_parameterÒ   s|  € ÝŒM˜!ÑÔˆÝ
Ô˜ 6Ð*Ñ*Ô*Ð*ÝÔ! !¨FÐ3Ñ3Ô3ˆÝ�T˜!”W‰~Œ~ Ò'Ð'Ð'Ð'ÝÔ ¨&Ð1Ñ1Ô1ˆÝ�T˜!”W‰~Œ~ Ò'Ð'Ð'Ð'ÝÔ ¨&Ð1Ñ1Ô1ˆÝ�T˜!”W‰~Œ~ Ò'Ð'Ð'Ð'ÝÔ-¨a¸Ð?Ñ?Ô?ˆÝ�T˜!”W‰~Œ~ Ò'Ð'Ð'Ð'ÝÔ! !¨FÐ3Ñ3Ô3ˆÝ�T˜!”W‰~Œ~ Ò'Ð'Ð'Ð'ÝŒ˜q¨Ð0Ñ0Ô0ˆÝ�T˜!”W‰~Œ~ Ò'Ð'Ð'Ð'ÝÔ ¨&Ð1Ñ1Ô1ˆÝ�T˜!”W‰~Œ~ Ò'Ð'Ð'Ð'Ð'Ð'r   c                 óª  — t          j        d¦  «        }t          t           j        ¦  «        t          t           j        ¦  «        k    sJ ‚t          j        t          t           j        |d¬¦  «         t          j        t          t           j	        |d¬¦  «         t          j        t          t           j
        |d¬¦  «         t          j        t          t           j        |d¬¦  «         t          j        t          t           j        |dd¬¦  «         t          j        t          t           j        |d¬¦  «         t          j        t          t           j        |dd¬¦  «         t          j        t          t           j        |d¬¦  «         t          j        t          t           j        |d¬¦  «         t          j        t          t           j        |d¬¦  «         d S )Nr   )r   r   r   rj   r5   r   )rU   rb   )r   r)   Úidr-   r?   r*   r+   r,   rG   rH   rI   rJ   rK   rM   rO   rP   s     r   Útest_center_wrong_dimensionsz'TestLayout.test_center_wrong_dimensionsä   sY  € ÝŒM˜!ÑÔˆÝ•"Ô"Ñ#Ô#¥r­"Ô*HÑ'IÔ'IÒIÐIÐIÐIÝŒ•j¥"Ô"2°A¸iÐHÑHÔHÐHÝŒ•j¥"Ô"4°aÀ	ÐJÑJÔJÐJÝŒ•j¥"Ô"2°A¸iÐHÑHÔHÐHÝŒ•j¥"Ô"2°A¸iÐHÑHÔHÐHÝŒ•j¥"Ô"2°A¸1ÀVÐLÑLÔLÐLÝŒ•j¥"Ô"4°aÀ	ÐJÑJÔJÐJÝŒ•j¥"Ô"4°a¸QÀvÐNÑNÔNÐNÝŒ•j¥"¤/°1¸YÐGÑGÔGÐGÝŒ•j¥"Ô"2°A¸iÐHÑHÔHÐHÝŒ•j¥"Ô"8¸!ÀIÐNÑNÔNÐNÐNÐNr   c                 ó.  — t          j        ¦   «         }t          j        |d¬¦  «        }|i k    sJ ‚t          j        |d¬¦  «        }|i k    sJ ‚t          j        |d¬¦  «        }|i k    sJ ‚t          j        ||¦  «        }|i k    sJ ‚t          j        |d¬¦  «        }|i k    sJ ‚t          j        |d¬¦  «        }|i k    sJ ‚t          j        |d¬¦  «        }|i k    sJ ‚t          j	        |d¬¦  «        }|i k    sJ ‚t          j
        |d¬¦  «        }|i k    sJ ‚t          j        |d¬¦  «        }|i k    sJ ‚t          j        |d¬¦  «        }|i k    sJ ‚t          j        |¦  «        }|i k    sJ ‚t          j        |¦  «        }|i k    sJ ‚d S )Nr   rj   )r   Úempty_graphrG   rH   rI   rL   r-   r?   rJ   rK   rM   rN   rO   rV   rX   r˜   s      r   Útest_empty_graphzTestLayout.test_empty_graphò   s¾  € ÝŒNÑÔˆÝÔ ¨&Ð1Ñ1Ô1ˆØ�rŠzˆzˆzˆzÝÔ! !¨FÐ3Ñ3Ô3ˆØ�rŠzˆzˆzˆzÝÔ ¨&Ð1Ñ1Ô1ˆØ�rŠzˆzˆzˆzÝÔ" 1 aÑ(Ô(ˆØ�rŠzˆzˆzˆzÝÔ ¨&Ð1Ñ1Ô1ˆØ�rŠzˆzˆzˆzÝÔ-¨a¸Ð?Ñ?Ô?ˆØ�rŠzˆzˆzˆzÝÔ! !¨FÐ3Ñ3Ô3ˆØ�rŠzˆzˆzˆzÝŒ˜q¨Ð0Ñ0Ô0ˆØ�rŠzˆzˆzˆzÝÔ ¨&Ð1Ñ1Ô1ˆØ�rŠzˆzˆzˆzÝÔ% a°Ð7Ñ7Ô7ˆØ�rŠzˆzˆzˆzÝÔ% a°Ð7Ñ7Ô7ˆØ�rŠzˆzˆzˆzÝÔ$ QÑ'Ô'ˆØ�rŠzˆzˆzˆzÝŒ}˜QÑÔˆØ�rŠzˆzˆzˆzˆzˆzr   c                 óz  — t          j        dd¦  «        }t           j                             |¦  «        \  }}t          j        ||¦  «        }t          |¦  «        t          |¦  «        k    sJ ‚|t          |¦  «        d                  d         }|t          |¦  «        d                  d         }|D ]}||         d         |k    sJ ‚Œ|D ]}||         d         |k    sJ ‚Œt          j        ||dddd¬¦  «        }t          |¦  «        t          |¦  «        k    sJ ‚|t          |¦  «        d                  d         }|t          |¦  «        d                  d         }	|D ]}||         d         |k    sJ ‚Œ|D ]}||         d         |	k    sJ ‚Œt          j        t          t           j        ||d	¬
¦  «         d S )Nr5   r   r   Ú
horizontal©r   r   r   r   )Úalignrb   ra   Úaspect_ratioÚfoo©r¸   )
r   Úcomplete_bipartite_graphÚ	bipartiteÚsetsrL   Úlenr^   r*   r+   r,   )
r/   r0   ÚtopÚbottomre   Útop_xÚbottom_xÚnodeÚtop_yÚbottom_ys
             r   Útest_bipartite_layoutz TestLayout.test_bipartite_layout  sÓ  € ÝÔ'¨¨1Ñ-Ô-ˆÝ”l×'Ò'¨Ñ*Ô*‰ˆˆVåÔ" 1 cÑ*Ô*ˆÝ�4‰yŒy�C ™FœFÒ"Ð"Ð"Ð"à•T˜#‘Y”Y˜q”\Ô" 1Ô%ˆØ�˜V™œ QœÔ(¨Ô+ˆØð 	*ð 	*ˆDØ˜”:˜a”= EÒ)Ð)Ð)Ð)Ð)Øð 	-ð 	-ˆDØ˜”:˜a”= HÒ,Ð,Ð,Ð,Ð,åÔ"Øˆs˜,¨v¸QÈQð
ñ 
ô 
ˆõ �4‰yŒy�C ™FœFÒ"Ð"Ð"Ð"à•T˜#‘Y”Y˜q”\Ô" 1Ô%ˆØ�˜V™œ QœÔ(¨Ô+ˆØð 	*ð 	*ˆDØ˜”:˜a”= EÒ)Ð)Ð)Ð)Ð)Øð 	-ð 	-ˆDØ˜”:˜a”= HÒ,Ð,Ð,Ð,Ð,åŒ•j¥"Ô"5°q¸#ÀUÐKÑKÔKÐKÐKÐKr   c                 óX  ‡‡— d}t          j        |Ž }t          j        |¦  «        Št          ‰¦  «        t          |¦  «        k    sJ ‚dŠ|D ];}‰|z   }t	          ˆˆfd„t          ‰dz   |¦  «        D ¦   «         ¦  «        sJ ‚‰|z  ŠŒ<t          j        |ddd¬¦  «        Št          ‰¦  «        t          |¦  «        k    sJ ‚dŠ|D ];}‰|z   }t	          ˆˆfd	„t          ‰dz   |¦  «        D ¦   «         ¦  «        sJ ‚‰|z  ŠŒ<t          j        t          t           j        |d
¬¦  «         d S )N)r   r   é   r   é   r   c              3   óT   •K  — | ]"}‰‰         d          ‰|         d          k    V — Œ#dS ©r   N© ©r%   ÚiÚstartre   s     €€r   r(   z6TestLayout.test_multipartite_layout.<locals>.<genexpr>5  ó8   øè è € ÐSÐS¸�t˜E”{ 1”~¨¨a¬°¬Ò3ÐSÐSÐSÐSÐSÐSr   r   r¶   r   r·   )r¸   ra   rb   c              3   óT   •K  — | ]"}‰‰         d          ‰|         d          k    V — Œ#dS )r   NrÍ   rÎ   s     €€r   r(   z6TestLayout.test_multipartite_layout.<locals>.<genexpr>>  rÑ   r   rº   r»   )	r   Úcomplete_multipartite_graphrN   r¿   r.   r©   r*   r+   r,   )r/   Úsizesr0   r&   ÚendrÐ   re   s        @@r   Útest_multipartite_layoutz#TestLayout.test_multipartite_layout+  s_  øø€ ØˆÝÔ*¨EÐ2ˆåÔ% aÑ(Ô(ˆÝ�4‰yŒy�C ™FœFÒ"Ð"Ð"Ð"àˆØð 	ð 	ˆAØ˜!‘)ˆCÝÐSÐSÐSÐSÐS½UÀ5È1Á9ÈcÑ=RÔ=RÐSÑSÔSÑSÔSÐSÐSÐSØ�Q‰JˆEˆEåÔ% a¨|À1ÈVÐTÑTÔTˆÝ�4‰yŒy�C ™FœFÒ"Ð"Ð"Ð"àˆØð 	ð 	ˆAØ˜!‘)ˆCÝÐSÐSÐSÐSÐS½UÀ5È1Á9ÈcÑ=RÔ=RÐSÑSÔSÑSÔSÐSÐSÐSØ�Q‰JˆEˆEåŒ•j¥"Ô"8¸!À5ÐIÑIÔIÐIÐIÐIr   c                 ó   — t           j        j        j        }t                               ddg¦  «        }dt                               ddgddgg¦  «        z  } ||t          |dd¬¦  «        \  }}|t          j        d	d
¬¦  «        k    sJ ‚|d         t          j        dd
¬¦  «        k    sJ ‚|d         t          j        dd
¬¦  «        k    sJ ‚d S )Ng      @g      @r   çš™™™™™¹?g       @ç333333Ó?r   ©Ú
meanweightrU   g      Ð?r¥   r¦   ç      à¿rk   )r   r†   r‡   Ú_kamada_kawai_costfnr#   r]   r*   rª   )r/   Úcostfnr    ÚinvdistÚcostÚgrads         r   Útest_kamada_kawai_costfn_1dz&TestLayout.test_kamada_kawai_costfn_1dC  sÔ   € Ý”Ô"Ô7ˆå�hŠh˜˜S�zÑ"Ô"ˆØ•b—h’h  c 
¨S°#¨JÐ7Ñ8Ô8Ñ8ˆà�V˜C¥ W¸ÀÐBÑBÔB‰
ˆˆdà•v”}Ð&8¸tÐDÑDÔDÒDÐDÐDÐDØ�AŒw�&œ-¨°DÐ9Ñ9Ô9Ò9Ð9Ð9Ð9Ø�AŒw�&œ-¨°Ð6Ñ6Ô6Ò6Ð6Ð6Ð6Ð6Ð6r   c           
      ó>  — t           j        j        j        } ||                     ¦   «         t
          |||¬¦  «        \  }}d|z  t
                               t
                               |d¬¦  «        dz  ¦  «        z  }t          |j        d         ¦  «        D ]k}	t          |	dz   |j        d         ¦  «        D ]J}
t
          j	         
                    ||	         ||
         z
  ¦  «        }||||	         |
         z  dz
  dz  z  }ŒKŒl|t          j        |d¬	¦  «        k    sJ ‚d
}t          |j        d         ¦  «        D ]à}t          |j        d         ¦  «        D ]Ã}||j        d         z  |z   }|                     ¦   «         }||xx         |z  cc<    ||t
          |||j        d         ¬¦  «        d         }||xx         d|z  z  cc<    ||t
          |||j        d         ¬¦  «        d         }||         t          j        ||z
  d|z  z  d¬	¦  «        k    sJ ‚ŒÄŒád S )NrÚ   rk   r   ©r«   r   r   ç      ð?r¥   r¦   g-Cëâ6?çñhãˆµøä>)r   r†   r‡   rÝ   Úravelr#   Úsumr©   r‰   r–   r—   r*   rª   Úflatten)r/   r    rß   ÚmeanwtrU   rÞ   rà   rá   Úexpected_costrÏ   ÚjÚdiffÚdxÚndÚdmÚidxÚpsÚcplusÚcminuss                      r   Úcheck_kamada_kawai_costfnz$TestLayout.check_kamada_kawai_costfnO  s;  € Ý”Ô"Ô7ˆà�V˜CŸIšI™KœK­¨WÀÈSÐQÑQÔQ‰
ˆˆdà˜f™¥r§v¢v­b¯fªf°S¸q¨fÑ.AÔ.AÀQÑ.FÑ'GÔ'GÑGˆÝ�s”y ”|Ñ$Ô$ð 	Cð 	CˆAÝ˜1˜q™5 #¤)¨A¤,Ñ/Ô/ð Cð C�Ý”y—~’~ c¨!¤f¨s°1¬v¡oÑ6Ô6�Ø $¨°¬°A¬Ñ"6¸Ñ"<ÀÑ!BÑB��ðCð •v”} ]¸Ð=Ñ=Ô=Ò=Ð=Ð=Ð=àˆÝ˜œ	 !œÑ%Ô%ð 	Yð 	YˆBÝ˜CœI aœLÑ)Ô)ð 
Yð 
Y�Ø˜3œ9 Qœ<Ñ'¨"Ñ,�Ø—[’[‘]”]�à�3��”˜2‘��‘Ø˜˜r¥2 w¸6ÀsÄyÐQRÄ|ÐTÑTÔTÐUVÔW�à�3��”˜1˜r™6Ñ!��‘Ø˜ ¥B¨¸FÈÌ	ÐRSÌÐUÑUÔUÐVWÔX�à˜C”y¥F¤M°5¸6±>ÀaÈ"ÁfÑ2MÐSWÐ$XÑ$XÔ$XÒXÐXÐXÐXÐXð
Yð	Yð 	Yr   c                 óB  — dt                                g d¢g d¢g d¢g¦  «        z  }d}t                                ddgdd	gd
dgg¦  «        }|                      |||d¦  «         t                                g d¢g d¢g d¢g¦  «        }|                      |||d¦  «         d S )Nr   )rØ   çÍÌÌÌÌÌ @ç333333û?)r÷   gš™™™™™É?ç333333ã?)rø   rù   rÙ   rÙ   gÍÌÌÌÌÌô?gš™™™™™	Àgš™™™™™@g333333Ó¿gffffff@g      @r   )gÍÌÌÌÌÌì?g333333!@gffffff!À)iöÿÿÿrÜ   gffffffÀ)g333333"@g333333 Àgš™™™™™ù?r5   )r#   r]   rõ   )r/   rß   rê   r    s       r   Útest_kamada_kawai_costfnz#TestLayout.test_kamada_kawai_costfnj  s¿   € Ø•b—h’h   °°°À/À/À/ÐRÑSÔSÑSˆØˆõ �hŠh˜˜d˜ c¨4 [°3¸°*Ð=Ñ>Ô>ˆà×&Ò& s¨G°V¸QÑ?Ô?Ð?õ �hŠhÐ(Ð(Ð(Ð*;Ð*;Ð*;Ð=MÐ=MÐ=MÐNÑOÔOˆà×&Ò& s¨G°V¸QÑ?Ô?Ð?Ð?Ð?r   c                 ó¸  — | j         }t                               t          t	          j        |d¬¦  «                             ¦   «         ¦  «        ¦  «        }t                               t          t	          j        |d¬¦  «                             ¦   «         ¦  «        ¦  «        }t          j                             |d d…         |dd …         z
  d¬¦  «        }t          j                             |d d…         |dd …         z
  d¬¦  «        }t          |¦  «        t          |¦  «        k    sJ ‚t                               t          t	          j        |d¬¦  «                             ¦   «         ¦  «        ¦  «        }t          j                             |d d…         |dd …         z
  d¬¦  «        }t           
                    |dd …         |d         d	¬
¦  «        sJ ‚d S )NgffffffÖ?)Ú
resolutiongÃõ(\�ÂÕ?éÿÿÿÿr   rä   T)Úequidistantg{®Gáz„?©Úatol)r   r#   r]   r^   r   rM   rA   r–   r—   rè   Úallclose)r/   r0   Úpos_standardÚpos_tighterÚ	distancesÚdistances_tighterÚpos_equidistantÚdistances_equidistants           r   Útest_spiral_layoutzTestLayout.test_spiral_layoutx  s§  € ØŒGˆõ —x’x¥¥RÔ%5°aÀDÐ%IÑ%IÔ%I×%PÒ%PÑ%RÔ%RÑ SÔ SÑTÔTˆÝ—h’h�t¥BÔ$4°QÀ4Ð$HÑ$HÔ$H×$OÒ$OÑ$QÔ$QÑRÔRÑSÔSˆÝ”I—N’N <°°°Ô#4°|ÀAÀBÀBÔ7GÑ#GÈa�NÑPÔPˆ	ÝœIŸNšN¨;°s¸°sÔ+;¸kÈ!È"È"¼oÑ+MÐTU˜NÑVÔVÐÝ�9‰~Œ~¥Ð$5Ñ 6Ô 6Ò6Ð6Ð6Ð6õ Ÿ(š(¥4­Ô(8¸ÈÐ(MÑ(MÔ(M×(TÒ(TÑ(VÔ(VÑ#WÔ#WÑXÔXˆÝ "¤	§¢Ø˜C˜R˜CÔ  ?°1°2°2Ô#6Ñ6¸Qð !/ñ !
ô !
Ðõ �{Š{Ø! ! " "Ô%Ð'<¸RÔ'@Àtð ñ 
ô 
ð 	
ð 	
ð 
ð 	
ð 	
r   c                 óÎ  — t          j        d¦  «        }t          j        |dd¬¦  «         t          j        |d¦  «        }t                               t          |                     ¦   «         ¦  «        ¦  «        }t          j         	                    |dd …         |d d…         z
  d¬¦  «        }t           
                    t                               |¦  «        dd	¬
¦  «        sJ ‚d S )Né
   Tr    )rþ   Ústore_pos_asr   rý   rä   r   gü©ñÒMbP?rÿ   )r   r)   rM   Úget_node_attributesr#   r]   r^   rA   r–   r—   r  rí   )r/   r0   r    ÚpÚdists        r   Útest_spiral_layout_equidistantz)TestLayout.test_spiral_layout_equidistantŽ  sµ   € ÝŒM˜"ÑÔˆÝ
Ô˜¨¸5ÐAÑAÔAÐAÝÔ$ Q¨Ñ.Ô.ˆå�HŠH•T˜#Ÿ*š*™,œ,Ñ'Ô'Ñ(Ô(ˆåŒy�~Š~˜a   œe a¨¨¨¤f™n°1ˆ~Ñ5Ô5ˆÝ�{Š{�2Ÿ7š7 4™=œ=¨!°$ˆ{Ñ7Ô7Ð7Ð7Ð7Ð7Ð7r   c                 óð   — | j         }t          j                             |¦  «        }t          j        |¦  «        }||= t          j        ||¬¦  «        }t          |¦  «        t          |¦  «        k    sJ ‚d S r›   )r   r   ÚutilsÚarbitrary_elementrH   rV   r¿   ©r/   r0   rÄ   r    s       r   Ú*test_forceatlas2_layout_partial_input_testz5TestLayout.test_forceatlas2_layout_partial_input_test˜  sm   € àŒGˆÝŒx×)Ò)¨!Ñ,Ô,ˆÝÔ  Ñ#Ô#ˆØ�ˆIÝÔ# A¨3Ð/Ñ/Ô/ˆÝ�3‰xŒx�3˜q™6œ6Ò!Ð!Ð!Ð!Ð!Ð!r   c                 ó  — t          j        ¦   «         }t          j        |d¬¦  «        }t          j        |¦  «        i k    sJ ‚t          j        d¦  «        }dddœ}t          j        |¦  «        }t          j                             d„ t          |                     ¦   «         Ž D ¦   «         ¦  «        dk     sJ ‚t          j        d	¦  «        }d
dddœ}t          j        |¦  «        }t           	                    d¦  «        t           	                    d¦  «        t           	                    d
¦  «        dœ}| 
                    ¦   «         D ]%\  }}||         |k                         ¦   «         sJ ‚Œ&t          j        |d¬¦  «        }t           	                    d¦  «        t           	                    d¦  «        t           	                    d
¦  «        dœ}| 
                    ¦   «         D ]%\  }}||         |k                         ¦   «         sJ ‚Œ&d S )Nr   rj   r   r6   )rå   rå   r3   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rÍ   )rè   )r%   Úxs     r   ú
<listcomp>z7TestLayout.test_rescale_layout_dict.<locals>.<listcomp>©  s   € ÐEÐEÐE¨!�s 1™vœvÐEÐEÐEr   g�íµ ÷Æ°>r5   r   r}   rw   )rý   rý   )ra   )éþÿÿÿr  r·   )r   r³   rG   Úrescale_layout_dictr#   r–   r—   ÚziprA   r]   Úitemsr.   )r/   r0   re   Ús_vposÚexpectationÚkÚvs          r   Útest_rescale_layout_dictz#TestLayout.test_rescale_layout_dict¡  sð  € ÝŒNÑÔˆÝÔ ¨&Ð1Ñ1Ô1ˆÝÔ% dÑ+Ô+¨rÒ1Ð1Ð1Ð1åŒN˜1ÑÔˆØ *Ð-Ð-ˆÝÔ'¨Ñ-Ô-ˆÝŒy�~Š~ÐEÐE­s°F·M²M±O´OÐ/DÐEÑEÔEÑFÔFÈÒMÐMÐMÐMåŒN˜1ÑÔˆØ˜f¨Ð4Ð4ˆÝÔ'¨Ñ-Ô-ˆõ �xŠx˜Ñ!Ô!Ý�xŠx˜ÑÔÝ�xŠx˜ÑÔð
ð 
ˆð
  ×%Ò%Ñ'Ô'ð 	*ð 	*‰DˆAˆqØ˜1”I ’N×'Ò'Ñ)Ô)Ð)Ð)Ð)Ð)ÝÔ'¨°AÐ6Ñ6Ô6ˆå�xŠx˜Ñ!Ô!Ý�xŠx˜ÑÔÝ�xŠx˜ÑÔð
ð 
ˆð
  ×%Ò%Ñ'Ô'ð 	*ð 	*‰DˆAˆqØ˜1”I ’N×'Ò'Ñ)Ô)Ð)Ð)Ð)Ð)ð	*ð 	*r   c                 óð   — | j         }t          j                             |¦  «        }t          j        |¦  «        }||= t          j        ||¬¦  «        }t          |¦  «        t          |¦  «        k    sJ ‚d S r›   )r   r   r  r  rH   rX   r¿   r  s       r   Ú"test_arf_layout_partial_input_testz-TestLayout.test_arf_layout_partial_input_test¿  sl   € àŒGˆÝŒx×)Ò)¨!Ñ,Ô,ˆÝÔ  Ñ#Ô#ˆØ�ˆIÝŒm˜A 3Ð'Ñ'Ô'ˆÝ�3‰xŒx�3˜q™6œ6Ò!Ð!Ð!Ð!Ð!Ð!r   c                 ób   — | j         }t          j        t          t          j        |d¬¦  «         dS )zl
        Checks input parameters correctly raises errors. For example,  `a` should be larger than 1
        rý   )r0   ÚaN)r   r*   r+   r,   r   rX   rP   s     r   Ú test_arf_layout_negative_a_checkz+TestLayout.test_arf_layout_negative_a_checkÈ  s,   € ð ŒGˆÝŒ•j¥"¤-°1¸Ð;Ñ;Ô;Ð;Ð;Ð;r   c                 óÄ   — | j         }t          j        |d¬¦  «         t          j        |d¬¦  «         t          j        |d¬¦  «         t          j        |d¬¦  «         d S )Né*   )Úseed)r   r   rG   r-   rX   rV   rP   s     r   Útest_smoke_seed_inputz TestLayout.test_smoke_seed_inputÏ  sf   € ØŒGˆÝ
Ô˜ Ð$Ñ$Ô$Ð$Ý
Ô˜ Ð$Ñ$Ô$Ð$Ý
Œ�a˜bÐ!Ñ!Ô!Ð!Ý
Ô˜a bÐ)Ñ)Ô)Ð)Ð)Ð)r   c                 óŒ   — t          j        d¦  «        }d„ t          d¦  «        D ¦   «         }t          j        ||¬¦  «        }d S )Nr5   c                 ó   — i | ]
}||d z
  dg“ŒS ©r   r7   rÍ   ©r%   rÏ   s     r   ú
<dictcomp>z2TestLayout.test_node_at_center.<locals>.<dictcomp>Ù  ó"   € Ð6Ð6Ð6¨�A˜˜A™˜s�|Ð6Ð6Ð6r   rœ   ©r   r)   r©   rV   ©r/   r0   Úorig_posÚnew_poss       r   Útest_node_at_centerzTestLayout.test_node_at_centerÖ  sC   € åŒM˜!ÑÔˆØ6Ð6­U°1©X¬XÐ6Ñ6Ô6ˆÝÔ'¨¨xÐ8Ñ8Ô8ˆˆˆr   c                 óŽ   — t          j        d¦  «        }d„ t          d¦  «        D ¦   «         }t          j        ||d¬¦  «        }d S )Nr5   c                 ó   — i | ]
}||d z
  dg“ŒS r-  rÍ   r.  s     r   r/  z9TestLayout.test_initial_only_some_pos.<locals>.<dictcomp>Þ  r0  r   r   r(  )r    r)  r1  r2  s       r   Útest_initial_only_some_posz%TestLayout.test_initial_only_some_posÜ  sE   € ÝŒM˜!ÑÔˆØ6Ð6­U°1©X¬XÐ6Ñ6Ô6ˆÝÔ'¨¨x¸bÐAÑAÔAˆˆˆr   N)(Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r1   rE   rQ   rY   r[   rg   rr   ru   r{   r~   r€   r�   r“   r™   rŸ   r¡   r£   r¬   r®   r±   r´   rÇ   rÖ   râ   rõ   rú   r  r  r  r!  r#  r&  r*  r5  r8  rÍ   r   r   r   r      s`  € € € € € Øð,ð ,ñ „[ð,ðCð Cð Cð7ð 7ð 7ð"ð "ð "ðð ð ð(ð ð ð "ð "ð "ðSð Sð Sð"Að Að Að$ð $ð $ð
@ð @ð @ð >ð >ð >ð#ð #ð #ð#ð #ð #ð
,ð 
,ð 
,ð7ð 7ð 7ð@ð @ð @ð/ð /ð /ð	Tð 	Tð 	Tð(ð (ð (ð$Oð Oð Oðð ð ð:Lð Lð Lð8Jð Jð Jð0
7ð 
7ð 
7ðYð Yð Yð6@ð @ð @ð
ð 
ð 
ð,8ð 8ð 8ð"ð "ð "ð*ð *ð *ð<"ð "ð "ð<ð <ð <ð*ð *ð *ð9ð 9ð 9ðBð Bð Bð Bð Br   r   c                  ó~  — t          j        ¦   «         } |                      dd¬¦  «         |                      dd¬¦  «         |                      dd¬¦  «         |                      dd¬¦  «         |                      g d¢¦  «         t          j        | ¦  «        }t          |¦  «        t          | ¦  «        k    sJ ‚d	S )
zSee gh-5123.r   Ús0©Úsubsetr   r   Ús1r5   )r   )r   r5   r4   N)r   r   ro   r>   rN   r¿   ©r0   r    s     r   Ú4test_multipartite_layout_nonnumeric_partition_labelsrC  â  s³   € å
Œ‰
Œ
€AØ‡J‚Jˆq˜€JÑÔÐØ‡J‚Jˆq˜€JÑÔÐØ‡J‚Jˆq˜€JÑÔÐØ‡J‚Jˆq˜€JÑÔÐØ×ÒÐ-Ð-Ð-Ñ.Ô.Ð.Ý
Ô
  Ñ
#Ô
#€CÝˆs‰8Œ8•s˜1‘v”vÒÐÐÐÐÐr   c                  ó�  — t          j        ¦   «         } t          t          dd¦  «        ¦  «        }|                     ¦   «         D ]\  }}|                      ||¬¦  «         Œt          j        | d¬¦  «        }t           j                             |¦  «        }t          j        | d|¬¦  «        }t          |                     ¦   «         |                     ¦   «         ¦  «        D ]+\  \  }}\  }	}
||	k    r||
k     	                    ¦   «         sJ ‚Œ,|d         d         |d	         d         k    sJ ‚|d
         d         |d         d         cxk     r%|d         d         cxk     r|d         d         k     sn J ‚d| j
        d         d<   t          j        | ¦  «        }|                     ¦   «         |                     ¦   «         k    sJ ‚dS )zgReturn the layers in sorted order if the layers of the multipartite
    graph are sortable. See gh-5691)r%  Úbr<   r�   Úe)r   r5   r   r   r   r?  r¶   r»   )r¸   Ú
subset_keyr%  rý   r�   r<   rE  rF  Úlayer_0r@  N)r   r   Údictr  r  ro   rN   r  Úgroupsr.   ÚnodesÚkeys)r0   Ú
node_grouprÄ   Úlayerr    ÚlayersÚpos_from_layersÚn1Úp1Ún2Úp2Ú
pos_nosorts               r   Ú$test_multipartite_layout_layer_orderrV  î  s½  € õ 	Œ‰
Œ
€AÝ•cÐ3°_ÑEÔEÑFÔF€JØ!×'Ò'Ñ)Ô)ð 'ð '‰ˆˆeØ	�
Š
�4 ˆ
Ñ&Ô&Ð&Ð&õ Ô
  ¨,Ð
7Ñ
7Ô
7€CåŒX�_Š_˜ZÑ(Ô(€FÝÔ,¨Q°lÈvÐVÑVÔV€OÝ! #§)¢)¡+¤+¨×/DÒ/DÑ/FÔ/FÑGÔGð -ð -Ñ‰ˆˆR‘(�2�rØ�RŠxˆx˜R 2šXŸNšNÑ,Ô,ˆxˆxÐ,ˆxð ˆsŒ8�BŒ<˜3˜sœ8 Bœ<Ò'Ð'Ð'Ð'àˆsŒ8�BŒ<˜#˜cœ( 2œ,ÐDÐDÒDÐD¨¨S¬°"¬ÐDÐDÒDÐD¸¸C¼À¼ÒDÐDÐDÐDÐDÐDð '€A„GˆC„L�ÑÝÔ'¨Ñ*Ô*€JØ�?Š?ÑÔ §¢¡
¤
Ò*Ð*Ð*Ð*Ð*Ð*r   c                 óÊ   — t                                t          |                      ¦   «         ¦  «        ¦  «        dd…df         }t                                |d¬¦  «        \  }}|S )zJHelper function to extract the number of nodes in each layer of bfs_layoutNr   T)Úreturn_counts)r#   r]   r^   rA   Úunique)r    r  Ú_Úlayer_counts       r   Ú_num_nodes_per_bfs_layerr\  	  sO   € å
�Š•�c—j’j‘l”lÑ#Ô#Ñ$Ô$ Q Q Q¨ TÔ*€AÝ—Y’Y˜q°�YÑ5Ô5�N€A€{ØÐr   r&   r   rÉ   c                 óä   — t          j        | ¦  «        }t          j        |dd¬¦  «         t          j        |d¦  «        }t                               t          |¦  «        d| dz
  g¦  «        sJ ‚dS )zrThe complete graph should result in two layers: the starting node and
    a second layer containing all neighbors.r   r    )rÐ   r  r   N)r   rn   Ú
bfs_layoutr  r#   r$   r\  )r&   r0   r    s      r   Útest_bfs_layout_complete_graphr_    sn   € õ 	Ô˜!ÑÔ€AÝ„M�!˜1¨5Ð1Ñ1Ô1Ð1Ý
Ô
   EÑ
*Ô
*€CÝ�>Š>Õ2°3Ñ7Ô7¸!¸QÀ¹U¸ÑDÔDÐDÐDÐDÐDÐDr   c                  óÀ  — t          j        dd¦  «        } t          j        | d¬¦  «        }g d¢}t                               t          |¦  «        |¦  «        sJ ‚t          j        | d¬¦  «        }t                               t          |¦  «        |¦  «        sJ ‚t          j        | d¬¦  «        }g d¢}t                               t          |¦  «        |¦  «        sJ ‚d S )	Nr   r5   r   ©rÐ   )r   r   r   r   r   r   r   é   rƒ   )r   r   r   rÊ   )r   Úbarbell_graphr^  r#   r$   r\  )r0   r    Úexpected_nodes_per_layers      r   Útest_bfs_layout_barbellre    sØ   € Ý
Ô˜˜AÑÔ€Aå
Œ-˜ Ð
#Ñ
#Ô
#€Cà4Ð4Ð4ÐÝ�>Š>Õ2°3Ñ7Ô7Ð9QÑRÔRÐRÐRÐRå
Œ-˜ Ð
$Ñ
$Ô
$€CÝ�>Š>Õ2°3Ñ7Ô7Ð9QÑRÔRÐRÐRÐRå
Œ-˜ Ð
#Ñ
#Ô
#€Cà+˜|˜|ÐÝ�>Š>Õ2°3Ñ7Ô7Ð9QÑRÔRÐRÐRÐRÐRÐRr   c                  óú   — t          j        d¦  «        } |                      ddg¦  «         t          j        t           j        d¬¦  «        5  t          j        | d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   )r
  é   )rg  rb  z#bfs_layout didn't include all nodesr   r   ra  )r   rn   r>   r*   r+   ÚNetworkXErrorr^  )r0   s    r   Útest_bfs_layout_disconnectedri  +  s½   € Ý
Ô˜!ÑÔ€AØ×Ò�h Ð)Ñ*Ô*Ð*Ý	Œ•rÔ'Ð/TÐ	UÑ	UÔ	Uð "ð "Ý
Œ�a˜qÐ!Ñ!Ô!Ð!ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð "ð "s   ÁA0Á0A4Á7A4c                  óö   — t          j        d¦  «        } t          j        t           j        d¬¦  «        5  t          j        | ¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        | ddg¬¦  «        }d S )Nr   zGraph is not bipartiter   r   r5   )rK  )r   rn   r*   r+   rh  rL   rB  s     r   Ú>test_bipartite_layout_default_nodes_raises_non_bipartite_inputrk  2  s°   € Ý
Ô˜!ÑÔ€AÝ	Œ•rÔ'Ð/GÐ	HÑ	HÔ	Hð ð Ý
Ô˜AÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ Ô
˜a¨¨1 vÐ
.Ñ
.Ô
.€C€C€Cs   µAÁAÁAc                  óö   ‡‡— t          j        dd¦  «        } t          j        | ¦  «        Št           j                             | ¦  «        D ]-}ˆfd„|D ¦   «         Št          ˆfd„‰D ¦   «         ¦  «        sJ ‚Œ.d S )Nr5   c                 ó,   •— g | ]}‰|         d          ‘ŒS )r   rÍ   )r%   r  r    s     €r   r  z7test_bipartite_layout_default_nodes.<locals>.<listcomp>?  s!   ø€ Ð)Ð)Ð)˜Aˆc�!Œf�QŒiÐ)Ð)Ð)r   c              3   óT   •K  — | ]"}|t          j        ‰d          ¦  «        k    V — Œ#dS rÌ   )r*   rª   )r%   r  Úxss     €r   r(   z6test_bipartite_layout_default_nodes.<locals>.<genexpr>@  s6   øè è € Ð9Ð9°�1�œ b¨¤eÑ,Ô,Ò,Ð9Ð9Ð9Ð9Ð9Ð9r   )r   r¼   rL   r½   r¾   r.   )r0   Únodesetr    ro  s     @@r   Ú#test_bipartite_layout_default_nodesrq  :  s”   øø€ Ý
Ô# A qÑ)Ô)€AÝ
Ô
˜aÑ
 Ô
 €Cå”<×$Ò$ QÑ'Ô'ð :ð :ˆØ)Ð)Ð)Ð) Ð)Ñ)Ô)ˆÝÐ9Ð9Ð9Ð9°bÐ9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9ð:ð :r   r‡   c                 óÞ   — t          j        d¦  «        }d                     g d¢¦  «        }t          j        t
          |¬¦  «        5   | |d¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z>Test all layouts that support dim kwarg handle invalid inputs.r   ú|)z negative dimensions.*not allowedzcan only handle 2zcannot handle.*2r   rý   rT   N)r   r)   Újoinr*   r+   r,   )r‡   r0   Úvalid_err_msgss      r   Útest_layouts_negative_dimrv  C  sÅ   € õ  	Œ�aÑÔ€AØ—X’Xð	
ð 	
ð 	
ñô €Nõ 
Œ•z¨Ð	8Ñ	8Ô	8ð ð Øˆˆq�bÐÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÁA"Á"A&Á)A&)Ú	num_nodesÚexpected_method)éd   Úforce)iõ  ÚenergyÚextra_layout_kwargsr   r8   rU   r5   c                 ó@  — t          j        | ¦  «        }d}t          j        |f||dœ|¤Ž}t          j        |fd|dœ|¤Ž}t                               t          |                     ¦   «         ¦  «        t          |                     ¦   «         ¦  «        d¬¦  «        sJ ‚dS )z;Expect 'force' layout for n < 500 and 'energy' for n >= 500iÏxÁ	)Úmethodr)  Úautoræ   rÿ   N)r   Úcycle_graphr-   r#   r  r^   rA   )rw  rx  r|  r0   r)  ÚexpectedÚactuals          r   Ú'test_spring_layout_graph_size_heuristicrƒ  _  s®   € õ 	Œ�yÑ!Ô!€Aà€Dõ ÔØ	ðØ!¨ðð Ø0Cðð €Hõ Ô˜aÐQ¨°TÐQÐQÐ=PÐQÐQ€FÝ�;Š;•t˜HŸOšOÑ-Ô-Ñ.Ô.µ°V·]²]±_´_Ñ0EÔ0EÈDˆ;ÑQÔQÐQÐQÐQÐQÐQr   )Ú__doc__r*   Únetworkxr   Úimportorskipr#   r   rC  rV  r\  ÚmarkÚparametrizer©   r_  re  ri  rk  rq  rG   rH   rK   r-   rO   rJ   rI   rM   rV   rv  rƒ  rÍ   r   r   ú<module>r‰     s  ðØ &Ð &à €€€à Ð Ð Ð à€VÔ˜Ñ!Ô!€Ø €Ô �GÑ Ô Ð ðTBð TBð TBð TBð TBñ TBô TBð TBðn	ð 	ð 	ð+ð +ð +ð6ð ð ð „×Ò˜˜e˜e A q™kœkÑ*Ô*ðEð Eñ +Ô*ðEðSð Sð Sð""ð "ð "ð/ð /ð /ð:ð :ð :ð „×ÒØà
ÔØ
ÔØ
ŒØ
ÔØ
ÔØ
ÔØ
ÔØ
ÔØ
Ôð
ñô ðð ñô ðð „×ÒØ$ ~°Ð&Gñô ð „×ÒØà
Ø�F� q cÐ*Ð*Ø	�ˆ
ðñô ðRð Rñô ñô ðRð Rð Rr   