+
    �°³j"c  ã                   óŽ  € R t ^ RIt^ RIt]P                  ! R4      t]P                  ! R4        ! R R4      tR tR tR t	]P                  P                  R	]! ^^4      4      R
 4       tR tR tR tR t]P                  P                  R]P$                  ]P&                  ]P(                  ]P*                  ]P,                  ]P.                  ]P0                  ]P2                  ]P4                  .	4      R 4       t]P                  P                  R]P$                  ]P&                  ]P,                  ]P*                  ]P.                  .4      ]P                  P                  R. RO4      R 4       4       t]P                  P                  RRR.4      ]P                  P                  R/ R^ R/R^ ./R^/.4      R 4       4       tR# )z Unit tests for layout functions.NÚnumpyÚscipyc                   ó¼  a € ] tR t^t o ]R 4       tR tR tR tR t	R t
R tR tR	 tR
 tR tR tR tR tR tR tR tR tR t]P2                  P5                  RR,4      ]P2                  P5                  R]P8                  ]P:                  34      R 4       4       tR tR t R t!R t"R t#R t$R t%R t&R t'R  t(R! t)R" t*R# t+R$ t,R% t-R& t.R' t/R( t0R) t1R*t2V t3R+# )-Ú
TestLayoutc                óì   € \         P                  ! ^^4      V n        \         P                  ! 4       V n        \         P
                  ! V P                  R4       \         P                  ! ^^4      V n        R# )é   ÚabcdefN)ÚnxÚgrid_2d_graphÚGiÚGraphÚGsÚadd_pathÚbigG)Úclss   &Úc/home/luca/screen-checking/.venv/lib/python3.14/site-packages/networkx/drawing/tests/test_layout.pyÚsetup_classÚTestLayout.setup_class   sI   € ä×!Ò! ! QÓ'ˆŒÜ—’“ˆŒÜ
�Š�C—F‘F˜HÔ%Ü×#Ò# B¨Ó+ˆŽó    c                óh  aa€ \         P                  ! ^4      p\        P                  ! \        RR7      ;_uu_ 4        \         P
                  ! V^ .R7       RRR4       ^ R	^R
/o\        P                  ! \        RR7      ;_uu_ 4        \         P
                  ! V^ ^.SR7       RRR4       \         P
                  ! V^ ^.SR7      o\        ;QJ d     VV3R lR 4       F  '       d   K   RM	  RM! VV3R lR 4       4      '       g   Q hR#   + '       g   i     L¿; i  + '       g   i     L„; i)é   z!nodes are fixed without positions©Úmatch)ÚfixedN)r   Úposc              3   ól   <"  € T F)  p\         P                  SV,          SV,          4      x € K+  	  R # 5i©N)ÚnpÚarray_equal)Ú.0ÚnÚoutr   s   & €€r   Ú	<genexpr>Ú;TestLayout.test_spring_fixed_without_pos.<locals>.<genexpr>    s'   øé € ÐB¹6°a”2—>‘> # a¥&¨#¨a­&×1Ð1»6ùs   ƒ14FT©é   r%   ©é    r'   ©r'   é   )r	   Ú
path_graphÚpytestÚraisesÚ
ValueErrorÚspring_layoutÚall)ÚselfÚGr!   r   s   & @@r   Útest_spring_fixed_without_posÚ(TestLayout.test_spring_fixed_without_pos   sÎ   ù€ Ü�MŠM˜!Óˆä�]Š]œ:Ð-P×QÖQÜ×Ò˜Q q cÕ*÷ Rð �&˜!˜VÐ$ˆä�]Š]œ:Ð-P×QÖQÜ×Ò˜Q q¨! f°#Õ6÷ Rô ×Ò˜q¨¨A¨°CÔ8ˆß‹sÕB¹6ÓB�s�sŠsÕB¹6ÓB×BÒBÐBÒB÷ R×Qú÷
 R×Qús   ½DÂ	D!ÄD	Ä!D1	c                óh  a€ ^ RI o\        P                  ! 4       pVP                  . RO4       ^ R/p^ .p\        P                  ! WVR7      p\
        ;QJ d-    V3R lVP                  4        4       F  '       g   K   RM"	  RM! V3R lVP                  4        4       4      pV'       d   Q R4       hR# )	r'   N©r   r   c              3   óV   <"  € T F  q F  pSP                  V4      x € K  	  K   	  R # 5ir   )Úisnan)r   ÚcoordsÚcÚmaths   &  €r   r"   Ú2TestLayout.test_spring_init_pos.<locals>.<genexpr>,   s#   øé € ÐO±,¨ÊÀ1�d—j‘j —m�mÉ‘m³,ùs   ƒ&)TFzvalues should not be nan))r'   r%   ©r%   r)   )r)   r'   )r)   é   ©ç        r?   )r:   r	   r   Úadd_edges_fromÚfruchterman_reingold_layoutÚanyÚvalues)r0   r1   Úinit_posÚ	fixed_posr   Úhas_nanr:   s   &     @r   Útest_spring_init_posÚTestLayout.test_spring_init_pos"   s~   ø€ ãä�HŠH‹JˆØ	×ÑÒ9Ô:à�z�?ˆØ�Cˆ	Ü×,Ò,¨QÀIÔNˆß“#ÔO°#·*±*´,ÓO—#—#’#ÔO°#·*±*´,ÓOÓOˆßÐ6Ð6Ó6ˆ{‘7r   c                óî  € . p\         P                  ! V4       \         P                  ! V4       \         P                  ! V4       \         P                  ! V4       \         P
                  ! V4       \         P                  ! V4       \         P                  ! V4       \         P                  ! W4       \         P                  ! V4       \         P                  ! V4       \         P                  ! V4       R # r   )r	   Úrandom_layoutÚcircular_layoutÚplanar_layoutr.   rA   Úspectral_layoutÚshell_layoutÚbipartite_layoutÚspiral_layoutÚmultipartite_layoutÚkamada_kawai_layout©r0   r1   s   & r   Útest_smoke_empty_graphÚ!TestLayout.test_smoke_empty_graph/   sŸ   € ØˆÜ
×Ò˜ÔÜ
×Ò˜1ÔÜ
×Ò˜ÔÜ
×Ò˜ÔÜ
×&Ò& qÔ)Ü
×Ò˜1ÔÜ
�Š˜ÔÜ
×Ò˜AÔ!Ü
×Ò˜ÔÜ
×Ò˜qÔ!Ü
×Ò˜qÖ!r   c                ó†  € V P                   p\        P                  ! V4       \        P                  ! V4       \        P                  ! V4       \        P
                  ! V4       \        P                  ! V4       \        P                  ! V4       \        P                  ! V P                  4       \        P                  ! V4       \        P                  ! VP                  4       4       \        P                  ! V P                  4       \        P                  ! V P                  P                  4       4       \        P                  ! V4       \        P                  ! V4       \        P                  ! V4       \        P                  ! V^R7       \        P                  ! V^R7       \        P                  ! V4       R# ©r%   ©ÚdimN)r   r	   rJ   rK   rL   r.   Úforceatlas2_layoutrA   r   rM   Úto_directedrN   rP   rR   Ú
arf_layoutrS   s   & r   Útest_smoke_intÚTestLayout.test_smoke_int=   s  € Ø�G‰GˆÜ
×Ò˜ÔÜ
×Ò˜1ÔÜ
×Ò˜ÔÜ
×Ò˜ÔÜ
×Ò˜aÔ Ü
×&Ò& qÔ)Ü
×&Ò& t§y¡yÔ1Ü
×Ò˜1ÔÜ
×Ò˜1Ÿ=™=›?Ô+Ü
×Ò˜4Ÿ9™9Ô%Ü
×Ò˜4Ÿ9™9×0Ñ0Ó2Ô3Ü
�Š˜ÔÜ
×Ò˜ÔÜ
×Ò˜qÔ!Ü
×Ò˜q aÕ(Ü
×Ò˜q aÕ(Ü
�Š�aÖr   c                ób  € V P                   p\        P                  ! V4       \        P                  ! V4       \        P                  ! V4       \        P
                  ! V4       \        P                  ! V4       \        P                  ! V4       \        P                  ! V4       \        P                  ! V4       \        P                  ! V4       \        P                  ! V4       \        P                  ! V^R7       \        P                  ! V^R7       \        P                  ! V4       R# rW   )r   r	   rJ   rK   rL   r.   rZ   rA   rM   rN   rP   rR   r\   rS   s   & r   Útest_smoke_stringÚTestLayout.test_smoke_stringQ   sÁ   € Ø�G‰GˆÜ
×Ò˜ÔÜ
×Ò˜1ÔÜ
×Ò˜ÔÜ
×Ò˜ÔÜ
×Ò˜aÔ Ü
×&Ò& qÔ)Ü
×Ò˜1ÔÜ
�Š˜ÔÜ
×Ò˜ÔÜ
×Ò˜qÔ!Ü
×Ò˜q aÕ(Ü
×Ò˜q aÕ(Ü
�Š�aÖr   c                ó¢  € \         P                  V4      pW2,
          pW2,           p\         P                  \        VP                  4       4      4      pVP	                  ^ 4      VP                  ^ 4      ,
          pV^V,          8*  P                  4       '       g   Q hWd8¬  P                  4       '       g   Q hWe8*  P                  4       '       g   Q hR# ©r'   N)r   ÚarrayÚlistrC   ÚmaxÚminr/   )r0   r   ÚscaleÚcenterÚlowÚhiÚvposÚlengths   &&&&    r   Úcheck_scale_and_centerÚ!TestLayout.check_scale_and_centera   s�   € Ü—‘˜&Ó!ˆØ�nˆØ�^ˆÜ�x‰xœ˜SŸZ™Z›\Ó*Ó+ˆØ—‘˜!“˜tŸx™x¨›{Õ*ˆØ˜!˜e�)Ñ#×(Ñ(×*Ò*Ð*Ð*Ø‘× Ñ ×"Ò"Ð"Ð"Ø‘
×Ñ×!Ò!Ð!Ò!r   c           	     ó’  € V P                   pRp\        P                  ! ^	4      pVP                  ^	4       V! \        P                  ! W2R7      RRR7       V! \        P
                  ! V^VR7      ^VR7       V! \        P                  ! V^VR7      ^VR7       V! \        P                  ! V^VR7      ^VR7       V! \        P                  ! V^VR7      ^VR7       V! \        P                  ! V^VR7      ^VR7       V! \        P                  ! V^VR7      ^VR7       RpV! \        P                  ! V^^VR7      ^VR7       R# )	r   ©ri   ç      à?©rh   ri   )rY   rh   ri   N)r   r   )g      @g      @)r)   r=   r   ©rn   r	   Úcomplete_graphÚadd_noderJ   r.   rM   rK   rN   rP   rR   ©r0   Úscr9   r1   s   &   r   Útest_scale_and_center_argÚ$TestLayout.test_scale_and_center_argk   s  € Ø×(Ñ(ˆØˆÜ×Ò˜aÓ ˆØ	�
‰
�1ŒÙ
Œ2×Ò˜AÔ(°¸JÕGá
Œ2×Ò˜A Q¨qÔ1¸À1ÕEÙ
Œ2×Ò˜a q°Ô3¸1ÀQÕGÙ
Œ2×Ò˜a q°Ô3¸1ÀQÕGÙ
Œ2�?Š?˜1 A¨aÔ0¸À!ÕDÙ
Œ2×Ò˜A Q¨qÔ1¸À1ÕEÙ
Œ2×!Ò! !¨1°QÔ7¸qÈÕKàˆÙ
Œ2×!Ò! !¨°!¸AÔ>ÀaÐPQ×Rr   c                óš   € \         P                  ! ^	4      p\        P                  ! \         P                  \         P
                  V4       R# )é	   N)r	   ru   r+   r,   ÚNetworkXExceptionrL   rS   s   & r   Ú#test_planar_layout_non_planar_inputÚ.TestLayout.test_planar_layout_non_planar_input|   s.   € Ü×Ò˜aÓ ˆÜ�Š”b×*Ñ*¬B×,<Ñ,<¸aÖ@r   c           	     ó–   € \         P                  ! 4       pVP                  ^ ^^.^^ ^.^^ ^./4       \         P                  ! V4       R# rc   )r	   ÚPlanarEmbeddingÚset_datarL   )r0   Ú	embeddings   & r   Ú(test_smoke_planar_layout_embedding_inputÚ3TestLayout.test_smoke_planar_layout_embedding_input€   sE   € Ü×&Ò&Ó(ˆ	Ø×Ñ˜A  1˜v q¨1¨a¨&°!°a¸°VÐ<Ô=Ü
×Ò˜Ö#r   c                óh  € V P                   pRp\        P                  ! ^	4      pVP                  ^	4       V! \        P                  ! V4      RRR7       V! \        P
                  ! V4      ^VR7       V! \        P                  ! V4      ^VR7       V! \        P                  ! V4      ^VR7       V! \        P                  ! V4      ^VR7       V! \        P                  ! V4      ^VR7       V! \        P                  ! V4      ^VR7       RpV! \        P                  ! V^R7      ^VR7       R# )r'   rr   rs   rX   Nr&   ©rr   rr   )r'   r'   r'   rt   rw   s   &   r   Útest_default_scale_and_centerÚ(TestLayout.test_default_scale_and_center…   sê   € Ø×(Ñ(ˆØˆÜ×Ò˜aÓ ˆØ	�
‰
�1ŒÙ
Œ2×Ò˜AÓ c°*Õ=Ù
Œ2×Ò˜AÓ a°Õ2Ù
Œ2×Ò˜aÓ ¨°!Õ4Ù
Œ2×Ò˜aÓ ¨°!Õ4Ù
Œ2�?Š?˜1Ó Q¨qÕ1Ù
Œ2×Ò˜AÓ a°Õ2Ù
Œ2×!Ò! !Ó$¨A°aÕ8àˆÙ
Œ2×!Ò! !¨Ô+°1¸Q×?r   c                óê  € \         P                  ! ^4      p\        P                  ! \        \         P
                  V^R7       \        P                  ! \        \         P                  V^R7       \        P                  ! \        \         P                  V^R7       \        P                  ! \        \         P                  V^R7       \        P                  ! \        \         P                  V^R7       R# )r   rX   N)r	   r*   r+   r,   r-   rK   rN   rL   rS   s   & r   Ú(test_circular_planar_and_shell_dim_errorÚ3TestLayout.test_circular_planar_and_shell_dim_error•   s„   € Ü�MŠM˜!ÓˆÜ�Š”j¤"×"4Ñ"4°a¸QÕ?Ü�Š”j¤"§/¡/°1¸!Õ<Ü�Š”j¤"§/¡/°1¸!Õ<Ü�Š”j¤"×"2Ñ"2°A¸1Õ=Ü�Š”j¤"×"2Ñ"2°A¸1×=r   c                ó²  € \         P                  ! V P                  4      p\         P                  P                  P                  V4      pVP                  R8X  g   Q h\         P                  P                  P                  V^R7      pVP                  R8X  g   Q h\         P                  P                  P                  V4      pVP                  R8X  g   Q hR# )é   rX   N©rŽ   r)   ©rŽ   r=   )r	   Úto_numpy_arrayr   ÚdrawingÚlayoutÚ_fruchterman_reingoldÚshapeÚ_sparse_fruchterman_reingold©r0   ÚAr   s   &  r   Útest_adjacency_interface_numpyÚ)TestLayout.test_adjacency_interface_numpy�   sŸ   € Ü×Ò˜dŸg™gÓ&ˆÜ�j‰j×Ñ×5Ñ5°aÓ8ˆØ�y‰y˜FÔ"Ð"Ð"Ü�j‰j×Ñ×5Ñ5°a¸QÐ5Ó?ˆØ�y‰y˜FÔ"Ð"Ð"Ü�j‰j×Ñ×<Ñ<¸QÓ?ˆØ�y‰y˜FÔ"Ð"Ò"r   c                ó¶  € \         P                  ! V P                  R R7      p\         P                  P                  P                  V4      pVP                  R8X  g   Q h\         P                  P                  P                  V4      pVP                  R8X  g   Q h\         P                  P                  P                  V^R7      pVP                  R8X  g   Q hR# )Úd)ÚdtyperX   Nr�   r�   )r	   Úto_scipy_sparse_arrayr   r’   r“   r–   r•   Ú_sparse_spectralr—   s   &  r   Útest_adjacency_interface_scipyÚ)TestLayout.test_adjacency_interface_scipy¦   s¡   € Ü×$Ò$ T§W¡W°CÔ8ˆÜ�j‰j×Ñ×<Ñ<¸QÓ?ˆØ�y‰y˜FÔ"Ð"Ð"Ü�j‰j×Ñ×0Ñ0°Ó3ˆØ�y‰y˜FÔ"Ð"Ð"Ü�j‰j×Ñ×<Ñ<¸QÀAÐ<ÓFˆØ�y‰y˜FÔ"Ð"Ò"r   c                ót  € \         P                  ! ^4      p\         P                  ! V4      pV^ ,          P                  4       '       d   Q h\         P                  ! ^4      p\         P                  ! V^ .^^.^..4      pV^ ,          P                  4       '       d   Q hV^,          P                  4       '       g   Q h\        P
                  P                  V^,          4      ^8:  g   Q h\         P                  ! V^ .^^.^..^ R7      p\        P
                  P                  V^,          4      ^8:  g   Q hR# )r%   )ÚrotateN)r	   r*   rN   rB   r   ÚlinalgÚnorm©r0   r1   rl   s   &  r   Útest_single_nodesÚTestLayout.test_single_nodes¯   sè   € Ü�MŠM˜!ÓˆÜ�Š˜qÓ!ˆØ˜•7—;‘;—=’=Ð Ð Ü�MŠM˜!ÓˆÜ�Š˜q A 3¨¨A¨°°Ð"4Ó5ˆØ˜•7—;‘;—=’=Ð Ð Ø�A�w�{‰{�}Š}Ðˆ}Ü�y‰y�~‰~˜d 1�gÓ&¨!Ô+Ð+Ð+Ü�Š˜q A 3¨¨A¨°°Ð"4¸QÔ?ˆÜ�y‰y�~‰~˜d 1�gÓ&¨!Ô+Ð+Ò+r   c                óŠ   € \         P                  ! V P                  4      p\         P                  ! V P                  VR 7      pR# ©©r   N)r	   rK   r   rZ   ©r0   r   Únposs   &  r   Ú"test_smoke_initial_pos_forceatlas2Ú-TestLayout.test_smoke_initial_pos_forceatlas2»   s,   € Ü× Ò  §¡Ó)ˆÜ×$Ò$ T§W¡W°#Ô6Šr   c                óð   € \         P                  ! V P                  4      pVP                  4        UUu/ uF  w  r#V\	        V4      bK  	  ppp\         P
                  ! V P                  VR 7      pR# u uppi rª   )r	   rK   r   ÚitemsÚtuplerZ   )r0   r   ÚkeyÚvaluer­   s   &    r   Ú+test_smoke_initial_pos_nonarray_forceatlas2Ú6TestLayout.test_smoke_initial_pos_nonarray_forceatlas2¿   sW   € ä× Ò  §¡Ó)ˆØ36·9±9´;Ô?±;¡Z Sˆs”E˜%“LÒ ±;ˆÑ?Ü×$Ò$ T§W¡W°#Ô6Šùó @s   ´A2c                óŠ   € \         P                  ! V P                  4      p\         P                  ! V P                  VR 7      pR# rª   )r	   rK   r   rA   r¬   s   &  r   Ú+test_smoke_initial_pos_fruchterman_reingoldÚ6TestLayout.test_smoke_initial_pos_fruchterman_reingoldÅ   s,   € Ü× Ò  §¡Ó)ˆÜ×-Ò-¨d¯g©g¸3Ô?Šr   c                óŠ   € \         P                  ! V P                  4      p\         P                  ! V P                  VR 7      pR# rª   )r	   rK   r   r\   r¬   s   &  r   Útest_smoke_initial_pos_arfÚ%TestLayout.test_smoke_initial_pos_arfÉ   s*   € Ü× Ò  §¡Ó)ˆÜ�}Š}˜TŸW™W¨#Ô.Šr   ÚmethodÚ	layout_fnc                ó6  € \         P                  ! V P                  4      pV! V P                  W1^ RR7      pVP                  4       VP                  4       8X  g   Q hVP	                  4        F)  w  rV\
        P                  W5,          V4      '       d   K)  Q h	  R# )r'   N)r   r½   Ú
iterationsrh   )r	   rK   r   Úkeysr±   r   Úallclose)r0   r½   r¾   r   r­   ÚnodeÚps   &&&    r   Ú)test_zero_iterations_fruchterman_reingoldÚ4TestLayout.test_zero_iterations_fruchterman_reingoldÍ   sq   € ô
 × Ò  §¡Ó)ˆÙ˜Ÿ™ cÀQÈdÔSˆØ�x‰x‹z˜TŸY™Y›[Ô(Ð(Ð(Ø—z‘z–|‰GˆDÜ—;‘;˜s�y¨!×,Ô,Ð,Ð,ó $r   c                óP  € \         P                  ! V P                  4      p\         P                  ! V P                  V^ R7      pVP	                  4       VP	                  4       8X  g   Q hVP                  4        F)  w  r4\        P                  W,          V4      '       d   K)  Q h	  R# )r'   )r   Úmax_iterN)r	   rK   r   r\   rÁ   r±   r   rÂ   )r0   r   r­   rÃ   rÄ   s   &    r   Útest_zero_iterations_arfÚ#TestLayout.test_zero_iterations_arfØ   sq   € Ü× Ò  §¡Ó)ˆÜ�}Š}˜TŸW™W¨#¸Ô:ˆØ�x‰x‹z˜TŸY™Y›[Ô(Ð(Ð(Ø—z‘z–|‰GˆDÜ—;‘;˜s�y¨!×,Ô,Ð,Ð,ó $r   c                ó¾  € \         P                  ! V P                  4      p\         P                  ! V P                  VR.R7      p\	        VR,          4      \	        VR,          4      8X  g   Q h\         P                  ! V P
                  4      p\         P                  ! V P
                  VR.R7      p\        ^4       F>  pVR,          V,          \        P                  ! VR,          V,          RR7      8X  d   K>  Q h	  \         P                  ! V P                  4      p\         P                  ! V P                  V. R7      p\        V4      \        V4      8X  g   Q hR# )r'   r5   çH¯¼šò×z>©ÚabsNr&   )
r	   rK   r   r.   r²   r   Úranger+   ÚapproxÚlen)r0   r   r­   Úaxiss   &   r   Ú$test_fixed_node_fruchterman_reingoldÚ/TestLayout.test_fixed_node_fruchterman_reingoldß   sû   € ä× Ò  §¡Ó)ˆÜ×Ò §¡¨S¸¸ÔAˆÜ�S˜•[Ó!¤U¨4°­<Ó%8Ô8Ð8Ð8ä× Ò  §¡Ó+ˆÜ×Ò §	¡	¨s¸6¸(ÔCˆÜ˜!–HˆDØ�v•;˜tÕ$¬¯ª°d¸6µlÀ4Õ6HÈdÔ(SÖSÐSÐSñ ô × Ò  §¡Ó)ˆÜ×Ò §¡¨S¸Ô;ˆÜ�4‹yœC ›HÔ$Ð$Ò$r   c                ó  € \         P                  ! ^4      p\         P                  ! VRR7       \         P                  ! VRR7      p\	        V^ ,          4      R8X  g   Q h\         P
                  ! VRR7      p\	        V^ ,          4      R8X  g   Q h\         P                  ! VRR7      p\	        V^ ,          4      R8X  g   Q h\         P                  ! VRR7      p\	        V^ ,          4      R8X  g   Q h\         P                  ! VRR7      p\	        V^ ,          4      R8X  g   Q h\         P                  ! VRR7      p\	        V^ ,          4      R8X  g   Q h\         P                  ! VRR7      p\	        V^ ,          4      R8X  g   Q hR# ©r%   rq   Nr$   )r	   r*   rJ   rK   r²   rL   r.   rA   rM   rN   rP   r¦   s   &  r   Útest_center_parameterÚ TestLayout.test_center_parameterî   s6  € Ü�MŠM˜!ÓˆÜ
×Ò˜ 6Õ*Ü×!Ò! !¨FÔ3ˆÜ�T˜!•W‹~ Ô'Ð'Ð'Ü×Ò ¨&Ô1ˆÜ�T˜!•W‹~ Ô'Ð'Ð'Ü×Ò ¨&Ô1ˆÜ�T˜!•W‹~ Ô'Ð'Ð'Ü×-Ò-¨a¸Ô?ˆÜ�T˜!•W‹~ Ô'Ð'Ð'Ü×!Ò! !¨FÔ3ˆÜ�T˜!•W‹~ Ô'Ð'Ð'Ü�Š˜q¨Ô0ˆÜ�T˜!•W‹~ Ô'Ð'Ð'Ü×Ò ¨&Ô1ˆÜ�T˜!•W‹~ Ô'Ð'Ò'r   c                ó  € \         P                  ! ^4      p\        \         P                  4      \        \         P                  4      8X  g   Q h\
        P                  ! \        \         P                  VRR7       \
        P                  ! \        \         P                  VRR7       \
        P                  ! \        \         P                  VRR7       \
        P                  ! \        \         P                  VRR7       \
        P                  ! \        \         P                  V^RR7       \
        P                  ! \        \         P                  VRR7       \
        P                  ! \        \         P                  V^RR7       \
        P                  ! \        \         P                  VRR7       \
        P                  ! \        \         P                  VRR7       \
        P                  ! \        \         P                  VRR7       R# )r%   rq   )rY   ri   N)r%   r%   r%   r$   )r	   r*   Úidr.   rA   r+   r,   r-   rJ   rK   rL   rM   rN   rP   rR   rS   s   & r   Útest_center_wrong_dimensionsÚ'TestLayout.test_center_wrong_dimensions   s&  € Ü�MŠM˜!ÓˆÜ”"×"Ñ"Ó#¤r¬"×*HÑ*HÓ'IÔIÐIÐIÜ�Š”j¤"×"2Ñ"2°A¸iÕHÜ�Š”j¤"×"4Ñ"4°aÀ	ÕJÜ�Š”j¤"×"2Ñ"2°A¸iÕHÜ�Š”j¤"×"2Ñ"2°A¸iÕHÜ�Š”j¤"×"2Ñ"2°A¸1ÀVÕLÜ�Š”j¤"×"4Ñ"4°aÀ	ÕJÜ�Š”j¤"×"4Ñ"4°a¸QÀvÕNÜ�Š”j¤"§/¡/°1¸YÕGÜ�Š”j¤"×"2Ñ"2°A¸iÕHÜ�Š”j¤"×"8Ñ"8¸!ÀI×Nr   c                ó~  € \         P                  ! 4       p\         P                  ! VRR7      pV/ 8X  g   Q h\         P                  ! VRR7      pV/ 8X  g   Q h\         P                  ! VRR7      pV/ 8X  g   Q h\         P
                  ! W4      pV/ 8X  g   Q h\         P                  ! VRR7      pV/ 8X  g   Q h\         P                  ! VRR7      pV/ 8X  g   Q h\         P                  ! VRR7      pV/ 8X  g   Q h\         P                  ! VRR7      pV/ 8X  g   Q h\         P                  ! VRR7      pV/ 8X  g   Q h\         P                  ! VRR7      pV/ 8X  g   Q h\         P                  ! VRR7      pV/ 8X  g   Q h\         P                  ! V4      pV/ 8X  g   Q h\         P                  ! V4      pV/ 8X  g   Q hR# rÖ   )r	   Úempty_graphrJ   rK   rL   rO   r.   rA   rM   rN   rP   rQ   rR   rZ   r\   r¦   s   &  r   Útest_empty_graphÚTestLayout.test_empty_graph  sŠ  € Ü�NŠNÓˆÜ×Ò ¨&Ô1ˆØ�rŒzÐˆzÜ×!Ò! !¨FÔ3ˆØ�rŒzÐˆzÜ×Ò ¨&Ô1ˆØ�rŒzÐˆzÜ×"Ò" 1Ó(ˆØ�rŒzÐˆzÜ×Ò ¨&Ô1ˆØ�rŒzÐˆzÜ×-Ò-¨a¸Ô?ˆØ�rŒzÐˆzÜ×!Ò! !¨FÔ3ˆØ�rŒzÐˆzÜ�Š˜q¨Ô0ˆØ�rŒzÐˆzÜ×Ò ¨&Ô1ˆØ�rŒzÐˆzÜ×%Ò% a°Ô7ˆØ�rŒzÐˆzÜ×%Ò% a°Ô7ˆØ�rŒzÐˆzÜ×$Ò$ QÓ'ˆØ�rŒzÐˆzÜ�}Š}˜QÓˆØ�rŒzÐŠzr   c           	     ó”  € \         P                  ! ^^4      p\         P                  P                  V4      w  r#\         P                  ! W4      p\        V4      \        V4      8X  g   Q hV\        V4      ^ ,          ,          ^ ,          pV\        V4      ^ ,          ,          ^ ,          pV F  pWG,          ^ ,          V8X  d   K  Q h	  V F  pWG,          ^ ,          V8X  d   K  Q h	  \         P                  ! WRR^^R7      p\        V4      \        V4      8X  g   Q hV\        V4      ^ ,          ,          ^,          pV\        V4      ^ ,          ,          ^,          p	V F  pWG,          ^,          V8X  d   K  Q h	  V F  pWG,          ^,          V	8X  d   K  Q h	  \        P                  ! \        \         P                  WRR7       R# )r=   Ú
horizontal)Úalignri   rh   Úaspect_ratioÚfoo©rã   N©r)   r)   )
r	   Úcomplete_bipartite_graphÚ	bipartiteÚsetsrO   rÑ   re   r+   r,   r-   )
r0   r1   ÚtopÚbottomrl   Útop_xÚbottom_xrÃ   Útop_yÚbottom_ys
   &         r   Útest_bipartite_layoutÚ TestLayout.test_bipartite_layout+  ss  € Ü×'Ò'¨¨1Ó-ˆÜ—l‘l×'Ñ'¨Ó*‰ˆä×"Ò" 1Ó*ˆÜ�4‹yœC ›FÔ"Ð"Ð"à”T˜#“Y˜q•\Õ" 1Õ%ˆØœ˜V› Q�Õ(¨Õ+ˆÛˆDØ•:˜a•= EÖ)Ð)Ð)ñ ãˆDØ•:˜a•= HÖ,Ð,Ð,ñ ô ×"Ò"Ø˜,¨v¸QÈQô
ˆô �4‹yœC ›FÔ"Ð"Ð"à”T˜#“Y˜q•\Õ" 1Õ%ˆØœ˜V› Q�Õ(¨Õ+ˆÛˆDØ•:˜a•= EÖ)Ð)Ð)ñ ãˆDØ•:˜a•= HÖ,Ð,Ð,ñ ô 	�Š”j¤"×"5Ñ"5°qÀU×Kr   c                óf  aa€ R
p\         P                  ! V!  p\         P                  ! V4      o\        S4      \        V4      8X  g   Q h^ oV F{  pSV,           p\        ;QJ d1    VV3R l\        S^,           V4       4       F  '       d   K   RM&	  RM"! VV3R l\        S^,           V4       4       4      '       g   Q hSV,          oK}  	  \         P                  ! VR^RR7      o\        S4      \        V4      8X  g   Q h^ oV F{  pSV,           p\        ;QJ d1    VV3R l\        S^,           V4       4       F  '       d   K   RM&	  RM"! VV3R l\        S^,           V4       4       4      '       g   Q hSV,          oK}  	  \        P                  ! \        \         P                  VRR7       R	# )r'   c              3   óf   <"  € T F&  pSS,          ^ ,          SV,          ^ ,          8H  x € K(  	  R# 5irc   © ©r   ÚiÚstartrl   s   & €€r   r"   Ú6TestLayout.test_multipartite_layout.<locals>.<genexpr>Q  ó(   øé € ÐSÑ=R¸�t˜E•{ 1•~¨¨a­°­Ö3Ó=Rùó   ƒ.1FTrâ   )rã   rh   ri   c              3   óf   <"  € T F&  pSS,          ^,          SV,          ^,          8H  x € K(  	  R# 5i)r%   Nrõ   rö   s   & €€r   r"   rù   Z  rú   rû   rå   ræ   N)r'   r   é   r)   é   rç   )	r	   Úcomplete_multipartite_graphrQ   rÑ   r/   rÏ   r+   r,   r-   )r0   Úsizesr1   r    Úendrø   rl   s   &    @@r   Útest_multipartite_layoutÚ#TestLayout.test_multipartite_layoutG  sB  ù€ ØˆÜ×*Ò*¨EÑ2ˆä×%Ò% aÓ(ˆÜ�4‹yœC ›FÔ"Ð"Ð"àˆÛˆAØ˜!•)ˆCß“3ÕS¼UÀ5È1Å9ÈcÔ=RÓS—3—3’3ÕS¼UÀ5È1Å9ÈcÔ=RÓS×SÒSÐSÐSØ�Q�JŠEñ ô
 ×%Ò% a¨|À1ÈVÔTˆÜ�4‹yœC ›FÔ"Ð"Ð"àˆÛˆAØ˜!•)ˆCß“3ÕS¼UÀ5È1Å9ÈcÔ=RÓS—3—3’3ÕS¼UÀ5È1Å9ÈcÔ=RÓS×SÒSÐSÐSØ�Q�JŠEñ ô
 	�Š”j¤"×"8Ñ"8¸!À5×Ir   c                ó¼  € \         P                  P                  P                  p\        P                  R R.4      p^\        P                  RR.RR..4      ,          pV! V\        V^ ^R7      w  rEV\        P                  ! R
RR7      8X  g   Q hV^ ,          \        P                  ! RRR7      8X  g   Q hV^,          \        P                  ! RRR7      8X  g   Q hR	# )g      @g      @çš™™™™™¹?g       @ç333333Ó?©Ú
meanweightrY   rÌ   rÍ   rr   Ng      Ð?ç      à¿)r	   r’   r“   Ú_kamada_kawai_costfnr   rd   r+   rÐ   )r0   Úcostfnr   ÚinvdistÚcostÚgrads   &     r   Útest_kamada_kawai_costfn_1dÚ&TestLayout.test_kamada_kawai_costfn_1d_  s±   € Ü—‘×"Ñ"×7Ñ7ˆä�h‰h˜˜S�zÓ"ˆØ”b—h‘h  c 
¨S°#¨JÐ7Ó8Õ8ˆá˜C¤ W¸ÀÔB‰
ˆà”v—}’}Ð&8¸tÔDÔDÐDÐDØ�A�wœ&Ÿ-š-¨°DÔ9Ô9Ð9Ð9Ø�A�wœ&Ÿ-š-¨°Ô6Ô6Ð6Ò6r   c           
     ó  € \         P                  P                  P                  pV! VP	                  4       \
        W#VR 7      w  rgRV,          \
        P                  \
        P                  V^ R7      ^,          4      ,          p\        VP                  ^ ,          4       FŠ  p	\        V	^,           VP                  ^ ,          4       F_  p
\
        P                  P                  W,          W,          ,
          4      pW‹W),          V
,          ,          R,
          ^,          ,          pKa  	  KŒ  	  V\        P                  ! VRR7      8X  g   Q hRp\        VP                  ^ ,          4       EF  p\        VP                  ^,          4       Fî  pWÑP                  ^,          ,          V,           pVP                  4       pVV;;,          V,          uu&   V! V\
        W#VP                  ^,          R 7      ^ ,          pVV;;,          ^V,          ,          uu&   V! V\
        W#VP                  ^,          R 7      ^ ,          pW,          \        P                  ! VV,
          ^V,          ,          RR7      8X  d   Kî  Q h	  EK  	  R# )	r  rr   ©rÒ   ç      ð?rÌ   rÍ   g-Cëâ6?çñhãˆµøä>N)r	   r’   r“   r
  Úravelr   ÚsumrÏ   r•   r¤   r¥   r+   rÐ   Úflatten)r0   r   r  ÚmeanwtrY   r  r  r  Úexpected_costr÷   ÚjÚdiffÚdxÚndÚdmÚidxÚpsÚcplusÚcminuss   &&&&&              r   Úcheck_kamada_kawai_costfnÚ$TestLayout.check_kamada_kawai_costfnk  s·  € Ü—‘×"Ñ"×7Ñ7ˆá˜CŸI™I›K¬¨WÈSÔQ‰
ˆà˜f�¤r§v¡v¬b¯f©f°S¸q¨fÓ.AÀQÕ.FÓ'GÕGˆÜ�s—y‘y •|Ö$ˆAÜ˜1˜q�5 #§)¡)¨A¥,Ö/�Ü—y‘y—~‘~ c¥f¨s­v¥oÓ6�Ø¨­°A­Õ"6¸Õ"<ÀÕ!BÕB’ó 0ñ %ð
 ”v—}’} ]¸Ô=Ô=Ð=Ð=àˆÜ˜Ÿ	™	 !�×%ˆBÜ˜CŸI™I a�LÖ)�ØŸ9™9 Q�<Õ'¨"Õ,�Ø—[‘[“]�à�3—˜2•“Ù˜r¤2 wÀsÇyÁyÐQRÅ|ÔTÐUVÕW�à�3—˜1˜r�6Õ!“Ù ¤B¨ÈÏ	É	ÐRSÍÔUÐVWÕX�à•y¤F§M¢M°5¸6µ>ÀaÈ"ÅfÕ2MÐSWÔ$XÖXÐXÐXô *ó &r   c                ó  € ^\         P                  . RO. RO. R	O.4      ,          pRp\         P                  RR
.RR.RR..4      pV P                  W1V^4       \         P                  . RO. RO. RO.4      pV P                  W1V^4       R# )r%   r  gÍÌÌÌÌÌô?gš™™™™™@gffffff@g      @N)r  çÍÌÌÌÌÌ @ç333333û?)r&  gš™™™™™É?ç333333ã?)r'  r(  r  gš™™™™™	Àg333333Ó¿)gÍÌÌÌÌÌì?g333333!@gffffff!À)iöÿÿÿr	  gffffffÀ)g333333"@g333333 Àgš™™™™™ù?)r   rd   r#  )r0   r  r  r   s   &   r   Útest_kamada_kawai_costfnÚ#TestLayout.test_kamada_kawai_costfn†  s‚   € Ø”b—h‘h¢²Â/ÐRÓSÕSˆØˆô �h‰h˜˜d˜ c¨4 [°3¸°*Ð=Ó>ˆà×&Ñ& s°V¸QÔ?ô �h‰hÒ(Ò*;Ò=MÐNÓOˆà×&Ñ& s°V¸QÖ?r   c           	     óh  € V P                   p\        P                  \        \        P
                  ! VR R7      P                  4       4      4      p\        P                  \        \        P
                  ! VRR7      P                  4       4      4      p\        P                  P                  VRR
 VR,          ,
          ^R7      p\        P                  P                  VRR
 VR,          ,
          ^R7      p\        V4      \        V4      8”  g   Q h\        P                  \        \        P
                  ! VRR7      P                  4       4      4      p\        P                  P                  VRR
 VR,          ,
          ^R7      p\        P                  VR,          VR
,          RR	7      '       g   Q hR# )gffffffÖ?)Ú
resolutiongÃõ(\�ÂÕ?Nºr%   NNr  T)Úequidistantg{®Gáz„?©Úatoléÿÿÿÿ)r   r   rd   re   r	   rP   rC   r¤   r¥   r  rÂ   )r0   r1   Úpos_standardÚpos_tighterÚ	distancesÚdistances_tighterÚpos_equidistantÚdistances_equidistants   &       r   Útest_spiral_layoutÚTestLayout.test_spiral_layout”  sS  € Ø�G‰Gˆô —x‘x¤¤R×%5Ò%5°aÀDÔ%I×%PÑ%PÓ%RÓ SÓTˆÜ—h‘hœt¤B×$4Ò$4°QÀ4Ô$H×$OÑ$OÓ$QÓRÓSˆÜ—I‘I—N‘N <°°Ð#4°|ÀBÕ7GÕ#GÈa�NÓPˆ	ÜŸI™IŸN™N¨;°s¸Ð+;¸kÈ"½oÕ+MÐTU˜NÓVÐÜ�9‹~¤Ð$5Ó 6Ô6Ð6Ð6ô Ÿ(™(¤4¬×(8Ò(8¸ÈÔ(M×(TÑ(TÓ(VÓ#WÓXˆÜ "§	¡	§¡Ø˜C˜RÐ  ?°2Õ#6Õ6¸Qð !/ó !
Ðô �{‰{Ø! "Õ%Ð'<¸RÕ'@Àtð ÷ 
ò 
ð 	
ò 
r   c                ó´  € \         P                  ! ^
4      p\         P                  ! VRRR7       \         P                  ! VR4      p\        P                  \        VP                  4       4      4      p\        P                  P                  VR,          VRR	 ,
          ^R7      p\        P                  \        P                  V4      ^ RR7      '       g   Q hR# )
é
   Tr   )r.  Ústore_pos_asr-  Nr  gü©ñÒMbP?r/  r1  )r	   r*   rP   Úget_node_attributesr   rd   re   rC   r¤   r¥   rÂ   r  )r0   r1   r   rÄ   Údists   &    r   Útest_spiral_layout_equidistantÚ)TestLayout.test_spiral_layout_equidistantª  s”   € Ü�MŠM˜"ÓˆÜ
×Ò˜¨¸5ÕAÜ×$Ò$ Q¨Ó.ˆä�H‰H”T˜#Ÿ*™*›,Ó'Ó(ˆä�y‰y�~‰~˜a �e a¨¨ f�n°1ˆ~Ó5ˆÜ�{‰{œ2Ÿ7™7 4›=¨!°$ˆ{×7Ò7Ð7Ò7r   c                óð   € V P                   p\        P                  P                  V4      p\        P                  ! V4      pW2 \        P
                  ! WR 7      p\        V4      \        V4      8X  g   Q hR# rª   )r   r	   ÚutilsÚarbitrary_elementrK   rZ   rÑ   ©r0   r1   rÃ   r   s   &   r   Ú*test_forceatlas2_layout_partial_input_testÚ5TestLayout.test_forceatlas2_layout_partial_input_test´  sZ   € à�G‰GˆÜ�x‰x×)Ñ)¨!Ó,ˆÜ× Ò  Ó#ˆØˆIÜ×#Ò# AÔ/ˆÜ�3‹xœ3˜q›6Ô!Ð!Ò!r   c                ó4  € \         P                  ! 4       p\         P                  ! VRR7      p\         P                  ! V4      / 8X  g   Q h\         P                  ! ^4      p^ R^R/p\         P                  ! V4      p\        P
                  P                  \        VP                  4       !   Uu. uF  p\        V4      NK  	  up4      R8  g   Q h\         P                  ! ^4      p^ R^R^R	/p\         P                  ! V4      p^ \        P                  R
4      ^\        P                  R4      ^\        P                  R4      /pVP                  4        F&  w  rgW6,          V8H  P                  4       '       d   K&  Q h	  \         P                  ! V^R7      p^ \        P                  R4      ^\        P                  R4      ^\        P                  R4      /pVP                  4        F&  w  rgW6,          V8H  P                  4       '       d   K&  Q h	  R# u upi )r%   rq   g�íµ ÷Æ°>)rh   Nr$   r>   )r  r  r&   r‡   )r1  r1  )éþÿÿÿrH  rç   )r	   rÞ   rJ   Úrescale_layout_dictr   r¤   r¥   ÚziprC   r  rd   r±   r/   )r0   r1   rl   Ús_vposÚxÚexpectationÚkÚvs   &       r   Útest_rescale_layout_dictÚ#TestLayout.test_rescale_layout_dict½  s°  € Ü�NŠNÓˆÜ×Ò ¨&Ô1ˆÜ×%Ò% dÓ+¨rÔ1Ð1Ð1ä�NŠN˜1ÓˆØ�:˜q *Ð-ˆÜ×'Ò'¨Ó-ˆÜ�y‰y�~‰~¬s°F·M±M³OÒ/DÓEÑ/D¨!œs 1žvÑ/DÑEÓFÈÔMÐMÐMä�NŠN˜1ÓˆØ�6˜1˜f a¨Ð4ˆÜ×'Ò'¨Ó-ˆð Œr�x‰x˜Ó!ØŒr�x‰x˜ÓØŒr�x‰x˜Óð
ˆð
  ×%Ñ%Ö'‰DˆAØ•I ‘N×'Ñ'×)Ô)Ð)Ð)ñ (ä×'Ò'¨°AÔ6ˆàŒr�x‰x˜Ó!ØŒr�x‰x˜ÓØŒr�x‰x˜Óð
ˆð
  ×%Ñ%Ö'‰DˆAØ•I ‘N×'Ñ'×)Ô)Ð)Ð)ó (ùò' Fs   Â/Hc                óð   € V P                   p\        P                  P                  V4      p\        P                  ! V4      pW2 \        P
                  ! WR 7      p\        V4      \        V4      8X  g   Q hR# rª   )r   r	   rB  rC  rK   r\   rÑ   rD  s   &   r   Ú"test_arf_layout_partial_input_testÚ-TestLayout.test_arf_layout_partial_input_testÛ  sX   € à�G‰GˆÜ�x‰x×)Ñ)¨!Ó,ˆÜ× Ò  Ó#ˆØˆIÜ�mŠm˜AÔ'ˆÜ�3‹xœ3˜q›6Ô!Ð!Ò!r   c                óv   € V P                   p\        P                  ! \        \        P
                  VRR7       R# )z\
Checks input parameters correctly raises errors. For example,  `a` should be larger than 1
)r1   ÚaNr1  )r   r+   r,   r-   r	   r\   rS   s   & r   Ú test_arf_layout_negative_a_checkÚ+TestLayout.test_arf_layout_negative_a_checkä  s#   € ð �G‰GˆÜ�Š”j¤"§-¡-°1¸×;r   c                óÞ   € V P                   p\        P                  ! V^*R7       \        P                  ! V^*R7       \        P                  ! V^*R7       \        P
                  ! V^*R7       R# )é*   )ÚseedN)r   r	   rJ   r.   r\   rZ   rS   s   & r   Útest_smoke_seed_inputÚ TestLayout.test_smoke_seed_inputë  sI   € Ø�G‰GˆÜ
×Ò˜ Õ$Ü
×Ò˜ Õ$Ü
�Š�a˜bÕ!Ü
×Ò˜a b×)r   c                ó°   € \         P                  ! ^4      p\        ^4       Uu/ uF  q"V^,
          R.bK  	  pp\         P                  ! WR7      pR# u upi )r=   r?   r«   N©r	   r*   rÏ   rZ   ©r0   r1   r÷   Úorig_posÚnew_poss   &    r   Útest_node_at_centerÚTestLayout.test_node_at_centerò  sG   € ä�MŠM˜!ÓˆÜ-2°1¬XÓ6©X¨˜˜A�˜s�|’O©XˆÐ6Ü×'Ò'¨Ô8Šùò 7s   ¤Ac                ó²   € \         P                  ! ^4      p\        ^4       Uu/ uF  q"V^,
          R.bK  	  pp\         P                  ! W^*R7      pR# u upi )r=   r?   )r   r[  Nr_  r`  s   &    r   Útest_initial_only_some_posÚ%TestLayout.test_initial_only_some_posø  sI   € Ü�MŠM˜!ÓˆÜ-2°1¬XÓ6©X¨˜˜A�˜s�|’O©XˆÐ6Ü×'Ò'¨¸bÔAŠùò 7s   ¤Arõ   N)ÚforceÚenergy)4Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Úclassmethodr   r2   rG   rT   r]   r`   rn   ry   r~   r„   rˆ   r‹   r™   r    r§   r®   rµ   r¸   r»   r+   ÚmarkÚparametrizer	   r.   rA   rÅ   rÉ   rÓ   r×   rÛ   rß   rñ   r  r  r#  r)  r8  r?  rE  rP  rS  rW  r\  rc  rf  Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r   r      s4  ø‡ € Øñ,ó ð,òCò7ò"òò(ò "òSò"Aò$ò
@ò >ò#ò#ò
,ò7ò7ò@ò/ð ‡[�[×Ñ˜XÐ':Ó;Ø‡[�[×ÑØ�b×&Ñ&¨×(FÑ(FÐGóñ-óó <ð-ò-ò%ò(ò$Oòò:Lò8Jò0
7òYò6@ò
ò,8ò"ò*ò<"ò<ò*ò9÷Bð Br   r   c                 óP  € \         P                  ! 4       p V P                  ^ RR7       V P                  ^RR7       V P                  ^RR7       V P                  ^RR7       V P                  . RO4       \         P                  ! V 4      p\        V4      \        V 4      8X  g   Q hR# )zSee gh-5123.Ús0©ÚsubsetÚs1N)r(   )r'   r=   r<   )r	   r   rv   r@   rQ   rÑ   ©r1   r   s     r   Ú4test_multipartite_layout_nonnumeric_partition_labelsrz  þ  s‚   € ä
�Š‹
€AØ‡J�Jˆq˜€JÔØ‡J�Jˆq˜€JÔØ‡J�Jˆq˜€JÔØ‡J�Jˆq˜€JÔØ×ÑÒ-Ô.Ü
×
 Ò
  Ó
#€CÜˆs‹8”s˜1“vÔÐÒr   c                 ó�  € \         P                  ! 4       p \        \        RR4      4      pVP	                  4        F  w  r#V P                  W#R7       K  	  \         P                  ! V RR7      p\         P                  P                  V4      p\         P                  ! V RVR	7      p\        VP	                  4       VP	                  4       4       F*  w  w  rxw  ršWy8X  d   WŠ8H  P                  4       '       d   K*  Q h	  VR,          R,          VR,          R,          8X  g   Q hVR,          R,          VR,          R,          u;8  d-   VR,          R,          u;8  d   VR,          R,          8  g   Q h Q hR
V P                  R,          R&   \         P                  ! V 4      pVP                  4       VP                  4       8X  g   Q hR# )zcReturn the layers in sorted order if the layers of the multipartite
graph are sortable. See gh-5691rV  Úbr9   rœ   Úerv  râ   ræ   )rã   Ú
subset_keyÚlayer_0rw  N)rV  r|  r9   rœ   r}  )r)   r=   r%   r)   r   r1  )r	   r   ÚdictrJ  r±   rv   rQ   rB  Úgroupsr/   ÚnodesrÁ   )r1   Ú
node_grouprÃ   Úlayerr   ÚlayersÚpos_from_layersÚn1Úp1Ún2Úp2Ú
pos_nosorts               r   Ú$test_multipartite_layout_layer_orderrŒ  
  s^  € ô 	�Š‹
€AÜ”cÐ3°_ÓEÓF€JØ!×'Ñ'Ö)‰ˆØ	�
‰
�4ˆ
Ö&ñ *ô ×
 Ò
  ¨,Ô
7€Cä�X‰X�_‰_˜ZÓ(€FÜ×,Ò,¨Q°lÈvÔV€OÜ! #§)¡)£+¨×/DÑ/DÓ/FÖGÑ‰ˆ‘(�2ØŒx˜R™XŸN™N×,Ô,Ð,Ð,ñ Hð ˆs�8�B�<˜3˜s�8 B�<Ô'Ð'Ð'àˆs�8�B�<˜#˜c�( 2�,ÖD¨¨S­°"­ÖD¸¸C½À½ÔDÐDÑDÐDÐDð '€A‡G�GˆC…L�ÑÜ×'Ò'¨Ó*€JØ�?‰?Ó §¡£
Ô*Ð*Ò*r   c                óž   € \         P                  \        V P                  4       4      4      R,          p\         P	                  VRR7      w  r#V# )zJHelper function to extract the number of nodes in each layer of bfs_layoutT)Úreturn_counts):NNNr'   )r   rd   re   rC   Úunique)r   rL  Ú_Úlayer_counts   &   r   Ú_num_nodes_per_bfs_layerr’  %  s:   € ä
�‰”�c—j‘j“lÓ#Ó$ TÕ*€AÜ—Y‘Y˜q°�YÓ5�N€AØÐr   r    c                óò   € \         P                  ! V 4      p\         P                  ! V^ RR7       \         P                  ! VR4      p\        P                  \        V4      ^V ^,
          .4      '       g   Q hR# )znThe complete graph should result in two layers: the starting node and
a second layer containing all neighbors.r   )rø   r<  N)r	   ru   Ú
bfs_layoutr=  r   r   r’  )r    r1   r   s   &  r   Útest_bfs_layout_complete_graphr•  ,  s[   € ô 	×Ò˜!Ó€AÜ‡M‚M�!˜1¨5Õ1Ü
×
 Ò
   EÓ
*€CÜ�>‰>Ô2°3Ó7¸!¸QÀ½U¸×DÒDÐDÒDr   c                  ó¾  € \         P                  ! ^^4      p \         P                  ! V ^ R7      p. ROp\        P	                  \        V4      V4      '       g   Q h\         P                  ! V ^R7      p\        P	                  \        V4      V4      '       g   Q h\         P                  ! V ^R7      p. ROp\        P	                  \        V4      V4      '       g   Q hR# )r   ©rø   N)r%   r   r%   r%   r%   r%   r   )r%   r)   r)   rþ   )r	   Úbarbell_graphr”  r   r   r’  )r1   r   Úexpected_nodes_per_layers      r   Útest_bfs_layout_barbellrš  6  sª   € Ü
×Ò˜˜AÓ€Aä
�-Š-˜ Ô
#€Câ4ÐÜ�>‰>Ô2°3Ó7Ð9Q×RÒRÐRÐRä
�-Š-˜ Ô
$€CÜ�>‰>Ô2°3Ó7Ð9Q×RÒRÐRÐRä
�-Š-˜ Ô
#€Câ+ÐÜ�>‰>Ô2°3Ó7Ð9Q×RÒRÐRÒRr   c                  ó  € \         P                  ! ^4      p V P                  RR.4       \        P                  ! \         P
                  RR7      ;_uu_ 4        \         P                  ! V ^ R7       RRR4       R#   + '       g   i     R# ; i)r   z#bfs_layout didn't include all nodesr   r—  N)r;  é   )rœ  é   )r	   ru   r@   r+   r,   ÚNetworkXErrorr”  )r1   s    r   Útest_bfs_layout_disconnectedrŸ  G  s[   € Ü
×Ò˜!Ó€AØ×Ñ�h Ð)Ô*Ü	�Š”r×'Ñ'Ð/T×	UÖ	UÜ
�Š�a˜qÕ!÷ 
V×	U×	UÒ	Uús   ÁA;Á;B	c                  ó&  € \         P                  ! ^4      p \        P                  ! \         P                  RR7      ;_uu_ 4        \         P
                  ! V 4       RRR4       \         P
                  ! V ^^.R7      pR#   + '       g   i     L,; i)r   zGraph is not bipartiter   N)r‚  )r	   ru   r+   r,   rž  rO   ry  s     r   Ú>test_bipartite_layout_default_nodes_raises_non_bipartite_inputr¡  N  s`   € Ü
×Ò˜!Ó€AÜ	�Š”r×'Ñ'Ð/G×	HÖ	HÜ
×Ò˜AÔ÷ 
Iô ×
Ò
˜a¨¨1 vÔ
.‚C÷ 
I×	Hús   ÁB Â B	c                  óz  a€ \         P                  ! ^^4      p \         P                  ! V 4      p\         P                  P	                  V 4       Fd  pV Uu. uF  q1V,          ^ ,          NK  	  upo\
        ;QJ d    V3R lS 4       F  '       d   K   RM	  RM! V3R lS 4       4      '       d   Kd  Q h	  R# u upi )r=   c              3   ób   <"  € T F$  q\         P                  ! S^ ,          4      8H  x € K&  	  R# 5irc   )r+   rÐ   )r   rL  Úxss   & €r   r"   Ú6test_bipartite_layout_default_nodes.<locals>.<genexpr>\  s!   øé € Ð9±b°œŸš b¨¥eÓ,Ö,³bùs   ƒ,/FTN)r	   rè   rO   ré   rê   r/   )r1   r   ÚnodesetrN  r¤  s       @r   Ú#test_bipartite_layout_default_nodesr§  V  s„   ø€ Ü
×#Ò# A qÓ)€AÜ
×
Ò
˜aÓ
 €Cä—<‘<×$Ñ$ QÖ'ˆÙ!(Ó)¡˜A�!�f�Q�iˆi¡Ñ)ˆß‹sÔ9±bÓ9�s�sŠsÔ9±bÓ9×9Ô9Ð9Ð9ó (ùÚ)s   ÁB8r“   c                óî   € \         P                  ! ^4      pRP                  . RO4      p\        P                  ! \
        VR7      ;_uu_ 4        V ! VRR7       RRR4       R#   + '       g   i     R# ; i)z>Test all layouts that support dim kwarg handle invalid inputs.Ú|r   rX   N)z negative dimensions.*not allowedzcan only handle 2zcannot handle.*2r1  )r	   r*   Újoinr+   r,   r-   )r“   r1   Úvalid_err_msgss   &  r   Útest_layouts_negative_dimr¬  _  sQ   € ô  	�Š�aÓ€AØ—X‘Xò	
ó€Nô 
�Š”z¨×	8Ö	8Ùˆq�bÕ÷ 
9×	8×	8Ò	8ús   ÁA#Á#A4	rY   c                óÌ   € \         P                  ! ^4      pV ! W!R7      p\        V4      \        V4      8X  g   Q hVP                  4        F  p\        V4      V8X  d   K  Q h	  R# )z1Test layouts that support unrestricted dim kwarg.rX   N)r	   r*   rÑ   rC   )r“   rY   r1   r   r8   s   &&   r   Útest_dim_parameterr®  {  sT   € ô 	�Š�aÓ€AÙ
�Ô
€CÜˆs‹8”s˜1“vÔÐÐØ—*‘*–,ˆÜ�6‹{˜cÖ!Ð!Ð!ó r   Úextra_layout_kwargsr   r   c                ó>  € \         P                  ! V 4      pRp\         P                  ! V3RVRV/VB p\         P                  ! V3RRRV/VB p\        P	                  \        VP                  4       4      \        VP                  4       4      RR7      '       g   Q hR# )z;Expect 'force' layout for n < 500 and 'energy' for n >= 500iÏxÁ	r½   r[  Úautor  r/  N)r	   Úcycle_graphr.   r   rÂ   re   rC   )Ú	num_nodesÚexpected_methodr¯  r1   r[  ÚexpectedÚactuals   &&&    r   Ú'test_spring_layout_graph_size_heuristicr·  �  s˜   € ô 	�Š�yÓ!€Aà€Dô ×ÒØ	ñØ!ðØ(,ðØ0Cñ€Hô ×Ò˜aÑQ¨ÐQ°TÐQÐ=PÑQ€FÜ�;‰;”t˜HŸO™OÓ-Ó.´°V·]±]³_Ó0EÈDˆ;×QÒQÐQÒQr   )r=   r   r   )r³  r´  )éd   rh  )iõ  ri  r&   )Ú__doc__r+   Únetworkxr	   Úimportorskipr   r   rz  rŒ  r’  ro  rp  rÏ   r•  rš  rŸ  r¡  r§  rJ   rK   rN   r.   rR   rM   rL   rP   rZ   r¬  r®  r·  rõ   r   r   Ú<module>r¼     så  ðÙ &ã ã à×Ò˜Ó!€Ø × Ò �GÔ ÷pBñ pBòf	ò+ò6ð ‡�×Ñ˜™e A q›kÓ*ñEó +ðEòSò""ò/ò:ð ‡�×ÑØà
×ÑØ
×ÑØ
�‰Ø
×ÑØ
×ÑØ
×ÑØ
×ÑØ
×ÑØ
×Ñð
óñóðð ‡�×ÑØà
×ÑØ
×ÑØ
×ÑØ
×ÑØ
×Ñðó	ð ‡�×Ñ˜¢	Ó*ñ"ó +ó	ð"ð ‡�×ÑØ$ ~°Ð&Góð ‡�×ÑØà
Ø	��F�˜W q cÐ*Ø	�ˆ
ðóñRóóòRr   