ó
    ™“,j C  ã                   ó\   • S SK r S SKrS SKJrJrJr   " S S5      rS rS r	 " S S5      r
g)	é    N)Úcheck_planarity_recursiveÚget_counterexampleÚget_counterexample_recursivec                   óh  • \ rS rSrSr\S!S j5       rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\R<                  R?                  S\ RB                  \ RD                  45      S 5       r#\R<                  R?                  S/ SQ5      S 5       r$S r%g)"ÚTestLRPlanarityé   aH  Nose Unit tests for the :mod:`networkx.algorithms.planarity` module.

Tests three things:
1. Check that the result is correct
    (returns planar if and only if the graph is actually planar)
2. In case a counter example is returned: Check if it is correct
3. In case an embedding is returned: Check if its actually an embedding
Nc                 ó  • [         R                  " U S5      u  p#[        U S5      u  pEUb$  U(       a  SnOSnX:X  d   U5       eX:X  d   U5       eU(       a  [        X5        [        X5        g[	        X5        [	        X5        g)zôRaises an exception if the lr_planarity check returns a wrong result

Parameters
----------
G : NetworkX graph
is_planar : bool
    The expected result of the planarity check.
    If set to None only counter example or embedding are verified.

TNz/Wrong planarity check result. Should be planar.z3Wrong planarity check result. Should be non-planar.)ÚnxÚcheck_planarityr   Úcheck_embeddingÚcheck_counterexample)ÚGÚ	is_planarÚis_planar_lrÚresultÚis_planar_lr_recÚ
result_recÚmsgs          Ú¶C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\networkx/algorithms/tests/test_planarity.pyÚcheck_graphÚTestLRPlanarity.check_graph   s…   € ô  "×1Ò1°!°TÓ:ÑˆÜ'@ÀÀDÓ'IÑ$ÐàÑ æØG‘àK�ð Ó,Ð1¨cÓ1Ð,ØÓ0Ð5°#Ó5Ð0æä˜AÔ&Ü˜AÕ*ô ! Ô+Ü  Õ/ó    c                 óT   • / SQnU R                  [        R                  " U5      SS9  g )N)©é   é   ©r   é   ©r   é   ©r    é   ©r"   é   )r$   r   ©r   é   )r&   r   ©r   r    ©r    r&   ©r&   r$   T©r   ©r   r
   ÚGraph©ÚselfÚes     r   Útest_simple_planar_graphÚ(TestLRPlanarity.test_simple_planar_graph:   s&   € ò
ˆð 	×ÑœŸš !›°ÐÒ5r   c                 óT   • / SQnU R                  [        R                  " U5      SS9  g )N))r   r   ©r   r   )r   r   )r    r    )r&   r&   r   ©r   r   r%   )r   r&   r'   r   ©r   r&   r(   Tr*   r+   r-   s     r   Útest_planar_with_selfloopÚ)TestLRPlanarity.test_planar_with_selfloopJ   s&   € ò
ˆð 	×ÑœŸš !›°ÐÒ5r   c                 óN   • U R                  [        R                  " SS5      SS9  g )Nr   Fr*   )r   r
   Úcomplete_bipartite_graph©r.   s    r   Ú	test_k3_3ÚTestLRPlanarity.test_k3_3\   s"   € Ø×Ñœ×4Ò4°Q¸Ó:ÀeÐÒLr   c                 óL   • U R                  [        R                  " S5      SS9  g ©Nr&   Fr*   )r   r
   Úcomplete_graphr:   s    r   Útest_k5ÚTestLRPlanarity.test_k5_   s    € Ø×Ñœ×*Ò*¨1Ó-¸ÐÒ?r   c                 óT   • / SQnU R                  [        R                  " U5      SS9  g )N)r   r   ©r   r   r(   ©r&   r"   )r"   r    Tr*   r+   r-   s     r   Útest_multiple_components_planarÚ/TestLRPlanarity.test_multiple_components_planarb   s"   € Ú<ˆØ×ÑœŸš !›°ÐÒ5r   c                 óv   • [         R                  " S5      nUR                  / SQ5        U R                  USS9  g )Nr&   )r#   ©r$   é   )rI   r"   Fr*   )r
   r?   Úadd_edges_fromr   ©r.   r   s     r   Ú#test_multiple_components_non_planarÚ3TestLRPlanarity.test_multiple_components_non_planarf   s6   € Ü×Ò˜aÓ ˆð 	
×ÑÒ1Ô2Ø×Ñ˜ eÐÒ,r   c                 ó–   • [         R                  " S5      n[        S5       H  nUR                  X"5        M     U R	                  USS9  g r>   )r
   r?   ÚrangeÚadd_edger   )r.   r   Úis      r   Útest_non_planar_with_selfloopÚ-TestLRPlanarity.test_non_planar_with_selfloopm   s?   € Ü×Ò˜aÓ ˆä�q–ˆAØ�J‰J�qÖñ à×Ñ˜ eÐÒ,r   c                 óT   • / SQnU R                  [        R                  " U5      SS9  g )N)
r%   )r   r"   ©r   r$   ©r   r"   r   r5   )r   r$   r(   r!   ©r    r$   Fr*   r+   r-   s     r   Útest_non_planar1Ú TestLRPlanarity.test_non_planar1t   s&   € ò
ˆð 	×ÑœŸš !›°ÐÒ6r   c                 óX   • SS/n[         R                  " U5      nU R                  USS9  g )Nr   r3   Tr*   ©r
   r,   r   ©r.   r/   r   s      r   Ú	test_loopÚTestLRPlanarity.test_loop„   s,   € à�VÐˆÜ�HŠH�Q‹KˆØ×Ñ˜ dÐÒ+r   c                 ó|   • SS/n[         R                  " U5      nUR                  SS5        U R                  USS9  g )Nr   r   r   r   Tr*   )r
   r,   Úremove_edger   r\   s      r   Ú	test_compÚTestLRPlanarity.test_compŠ   s:   € à�VÐˆÜ�HŠH�Q‹KˆØ	�‰�a˜ÔØ×Ñ˜ dÐÒ+r   c                 óX   • / SQn[         R                  " U5      nU R                  USS9  g )N)r   r4   ©r   r    r%   rU   )r   rI   )r   é
   ©r   r   r   r'   rV   )r   r$   )r   é	   )r   re   )r   r   r   r(   r!   rW   r)   r#   rH   )r$   rg   ©r$   re   )rI   re   )rg   re   )re   r   Tr*   r[   r\   s      r   Útest_goldner_hararyÚ#TestLRPlanarity.test_goldner_harary‘   s+   € ò
ˆô: �HŠH�Q‹KˆØ×Ñ˜ dÐÒ+r   c                 óT   • [         R                  " / SQ5      nU R                  USS9  g )N)r   r   r   r   r   rC   Tr*   )r
   Ú
MultiGraphr   rK   s     r   Útest_planar_multigraphÚ&TestLRPlanarity.test_planar_multigraph³   s$   € Ü�MŠMÒJÓKˆØ×Ñ˜ dÐÒ+r   c                 ó¢   • [         R                  " [         R                  " S5      5      nUR                  S/S-  5        U R	                  USS9  g )Nr&   r   Fr*   )r
   rl   r?   rJ   r   rK   s     r   Útest_non_planar_multigraphÚ*TestLRPlanarity.test_non_planar_multigraph·   sB   € Ü�MŠMœ"×+Ò+¨AÓ.Ó/ˆØ	×Ñ˜&˜ A™Ô&Ø×Ñ˜ eÐÒ,r   c                 óT   • [         R                  " / SQ5      nU R                  USS9  g )N)r   r   r'   )r    r   )r    r   rd   )r   r   Tr*   )r
   ÚDiGraphr   rK   s     r   Útest_planar_digraphÚ#TestLRPlanarity.test_planar_digraph¼   s$   € Ü�JŠJÒOÓPˆØ×Ñ˜ dÐÒ+r   c                 óÀ   • [         R                  " [         R                  " S5      5      nUR                  SS5        UR                  SS5        U R	                  USS9  g )Nr&   r   r   r    Fr*   )r
   rs   r?   r`   r   rK   s     r   Útest_non_planar_digraphÚ'TestLRPlanarity.test_non_planar_digraphÀ   sJ   € Ü�JŠJ”r×(Ò(¨Ó+Ó,ˆØ	�‰�a˜ÔØ	�‰�a˜ÔØ×Ñ˜ eÐÒ,r   c                 óp   • [         R                  " 5       nUR                  S5        U R                  USS9  g )Nr   Tr*   )r
   r,   Úadd_noder   rK   s     r   Útest_single_componentÚ%TestLRPlanarity.test_single_componentÆ   s+   € ä�HŠH‹JˆØ	�
‰
�1ŒØ×Ñ˜ dÐÒ+r   c                 óT   • [         R                  " / SQ5      nU R                  USS9  g )N)
)r   re   ©r   é   ©r   r   )r$   r   ©r   rI   )rI   r   ©r   r   ©r   r$   )r   re   rU   Tr*   r[   rK   s     r   Útest_graph1ÚTestLRPlanarity.test_graph1Ì   s*   € Ü�HŠHòó
ˆð 	×Ñ˜ dÐÒ+r   c                 óT   • [         R                  " / SQ5      nU R                  USS9  g )N)r   )r    r   )r   r   r(   rh   rU   ©r   r   rV   rD   )r$   r   )r    rI   r�   )r   rg   r~   r#   )r   r"   )r   rI   Fr*   r[   rK   s     r   Útest_graph2ÚTestLRPlanarity.test_graph2Ý   s*   € Ü�HŠHòó
ˆð* 	×Ñ˜ eÐÒ,r   c                 óT   • [         R                  " / SQ5      nU R                  USS9  g )N)rƒ   )r   r   r   )rI   rg   )r    r   rU   r€   rf   r5   r)   r4   )r   r    )r&   r   )r&   r   Fr*   r[   rK   s     r   Útest_graph3ÚTestLRPlanarity.test_graph3õ   s*   € Ü�HŠHòó
ˆð$ 	×Ñ˜ eÐÒ,r   c                 óâ   • [         R                  " [        R                  5         [        R                  " 5       nUR                  S5        [        U5        S S S 5        g ! , (       d  f       g = f©Nr   )ÚpytestÚraisesr
   ÚNetworkXExceptionr,   rz   r   rK   s     r   Útest_counterexample_planarÚ*TestLRPlanarity.test_counterexample_planar
  s>   € Ü�]Š]œ2×/Ñ/Õ0ä—’“
ˆAØ�J‰J�qŒMÜ˜qÔ!÷	 1×0Ö0úó   ¥2A Á 
A.c                 óâ   • [         R                  " [        R                  5         [        R                  " 5       nUR                  S5        [        U5        S S S 5        g ! , (       d  f       g = frŽ   )r�   r�   r
   r‘   r,   rz   r   rK   s     r   Ú$test_counterexample_planar_recursiveÚ4TestLRPlanarity.test_counterexample_planar_recursive  s>   € Ü�]Š]œ2×/Ñ/Õ0ä—’“
ˆAØ�J‰J�qŒMÜ(¨Ô+÷	 1×0Ö0úr”   c                 ód  • Sn[         R                  " U5      n[         R                  " U5      u  p4USL d   eUR                  SS5        U R	                  USS9  UR                  SSS5        UR                  SSS5        U R	                  USS9  UR                  S5        U R	                  USS9  g )	N)©r   r   r   r   r   )r    r   r‚   r‡   Tr   r   r*   r   r   )r‡   r4   )r
   r,   r   r`   r   Úadd_half_edge_ccwÚadd_half_edge_cwÚremove_edges_from)r.   Úedgesr   ÚcertÚPs        r   Ú'test_edge_removal_from_planar_embeddingÚ7TestLRPlanarity.test_edge_removal_from_planar_embedding  s¬   € àHˆÜ�HŠH�U‹OˆÜ×$Ò$ QÓ'‰ˆØ�tŠ|Ðˆ|Ø	�‰�a˜ÔØ×Ñ˜ dÐÑ+Ø	×Ñ˜A˜q !Ô$Ø	×Ñ˜1˜a Ô#Ø×Ñ˜ dÐÑ+Ø	×ÑÐ,Ô-Ø×Ñ˜ dÐÒ+r   Ú
graph_typec                 ó  • U" / SQ5      n[         R                  " U5      u  p4U(       d   eUR                  5       n[        U[         R                  5      (       d   e[        S UR                  SS9 5       5      (       d   eg )N)r™   r™   r   r   ©r   r   r‚   c              3   ó2   #   • U  H  u    pU0 :H  v •  M     g 7f©N© )Ú.0Ú_Úds      r   Ú	<genexpr>ÚLTestLRPlanarity.test_graph_planar_embedding_to_undirected.<locals>.<genexpr>-  s   é € Ð>Ò+=¡  1�A˜–GÒ+=ùs   ‚T©Údata)r
   r   Úto_undirectedÚ
isinstancer,   Úallr�   )r.   r¢   r   r   rŸ   ÚUs         r   Ú)test_graph_planar_embedding_to_undirectedÚ9TestLRPlanarity.test_graph_planar_embedding_to_undirected&  sl   € áÒGÓHˆÜ×)Ò)¨!Ó,‰ˆ	ÞÐˆyØ�O‰OÓˆÜ˜!œRŸX™X×&Ñ&Ð&Ð&ÜÑ>¨1¯7©7¸¨7Ñ+=Ó>×?Ñ?Ð?Ñ?r   zreciprocal, as_view))TT)TF)FTc                 óú   • [         R                  " / SQ5      n[         R                  " U5      u  pEU(       d   e[        R                  " [
        SS9   UR                  XS9  S S S 5        g ! , (       d  f       g = f)N)r™   r   r   r¤   r‚   z%is not supported for PlanarEmbedding.©Úmatch)Ú
reciprocalÚas_view)r
   r,   r   r�   r�   Ú
ValueErrorr¯   )r.   r¸   r¹   r   r   rŸ   s         r   Ú6test_planar_embedding_to_undirected_invalid_parametersÚFTestLRPlanarity.test_planar_embedding_to_undirected_invalid_parameters/  sW   € ô �HŠHÒ=Ó>ˆÜ×)Ò)¨!Ó,‰ˆ	ÞÐˆyÜ�]Š]œ:Ð-TÓUØ�O‰O zˆOÑC÷ V×UÖUús   ÁA,Á,
A:r§   r¦   )&Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ústaticmethodr   r0   r6   r;   r@   rE   rL   rR   rX   r]   ra   ri   rm   rp   rt   rw   r{   r„   rˆ   r‹   r’   r–   r    r�   ÚmarkÚparametrizer
   r,   rl   r³   r»   Ú__static_attributes__r§   r   r   r   r      sí   † ñð ó"0ó ð"0òH6ò 6ò$Mò@ò6ò-ò-ò7ò ,ò,ò ,òD,ò-ò
,ò-ò,ò,ò"-ò0-ò*"ò,ò,ð ‡[�[×Ñ˜\¨B¯H©H°b·m±mÐ+DÓEñ@ó Fð@ð ‡[�[×ÑØÒKóñDóóDr   r   c                 óî  • [        U[        R                  5      (       d  [        R                  " S5      eUR	                  5         [        U R                  5      [        UR                  5      :X  d   S5       e[        5       nU R                   HC  nUS   US   :w  d  M  UR                  US   US   45        UR                  US   US   45        ME     U[        UR                  5      :X  d   S5       eg)a  Raises an exception if the combinatorial embedding is not correct

Parameters
----------
G : NetworkX graph
embedding : a dict mapping nodes to a list of edges
    This specifies the ordering of the outgoing edges from a node for
    a combinatorial embedding

Notes
-----
Checks the following things:
    - The type of the embedding is correct
    - The nodes and edges match the original graph
    - Every half edge has its matching opposite half edge
    - No intersections of edges (checked by Euler's formula)
z-Bad embedding. Not of type nx.PlanarEmbeddingz4Bad embedding. Nodes don't match the original graph.r   r   z4Bad embedding. Edges don't match the original graph.N)	r°   r
   ÚPlanarEmbeddingr‘   Úcheck_structureÚsetÚnodesr�   Úadd)r   Ú	embeddingÚg_edgesÚedges       r   r   r   <  sÞ   € ô& �i¤×!3Ñ!3×4Ñ4Ü×"Ò"Ð#RÓSÐSð ×ÑÔô ˆq�w‰w‹<œ3˜yŸ™Ó/Ó/ð Ø>óÐ/ô
 ‹e€GØ—”ˆØ�‰7�d˜1‘gÕØ�K‰K˜˜a™ $ q¡'Ð*Ô+Ø�K‰K˜˜a™ $ q¡'Ð*Ö+ñ ð ”c˜)Ÿ/™/Ó*Ó*ð Ø>óÑ*r   c                 ó”  • [         R                  " U5      nU H,  nUR                  X"5      (       d  M  UR                  X"5        M.     [	        U5      n[        U5      S:”  a¤  UR                  5       nXA;  a  M&  UR                  U   nUS:X  ag  [        X   5      n[        U5      n[        U5      nUR                  U5        UR                  U5        UR                  U5        UR                  X'5        [        U5      S:”  a  M¤  [        U5      S:X  aG  [         R                  " [         R                  " S5      U5      (       d  [         R                  " S5      eg[        U5      S:X  aH  [         R                  " [         R                   " SS5      U5      (       d  [         R                  " S5      eg[         R                  " S5      e)z±Raises an exception if the counterexample is wrong.

Parameters
----------
G : NetworkX graph
subdivision_nodes : set
    A set of nodes inducing a subgraph as a counterexample
r   r   r&   zBad counter example.r"   r   N)r
   r,   Úhas_edger`   ÚlistÚlenÚpopÚdegreeÚiterÚnextÚappendÚremove_noderP   Úis_isomorphicr?   r‘   r9   )r   Ú	sub_graphÚuÚcontractÚcontract_noderÔ   Ú	neighborsÚvs           r   r   r   f  s~  € ô —’˜Ó#€Ió ˆØ×Ñ˜a×#Ó#Ø×!Ñ! !Ö'ñ ô
 �I‹€Hô ˆh‹-˜!Ó
Ø Ÿ™›ˆØÓ)áØ×!Ñ! -Ñ0ˆà�Q‹;ä˜YÑ5Ó6ˆIÜ�Y“ˆAÜ�Y“ˆAà�O‰O˜AÔØ�O‰O˜AÔà×!Ñ! -Ô0Ø×Ñ˜qÔ$ô# ˆh‹-˜!Õ
ô( ˆ9ƒ~˜ÓÜ×Ò¤× 1Ò 1°!Ó 4°i×@Ñ@Ü×&Ò&Ð'=Ó>Ð>ð Aä	ˆY‹˜1Ó	Ü×Ò¤× ;Ò ;¸A¸qÓ AÀ9×MÑMÜ×&Ò&Ð'=Ó>Ð>ð Nô ×"Ò"Ð#9Ó:Ð:r   c                   ól   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS r\S 5       rSrg)ÚTestPlanarEmbeddingClassi™  c                 ór  • [         R                  " 5       nUR                  SS5        [        R                  " [         R
                  SS9   UR                  SSSS9  S S S 5        [        R                  " [         R
                  SS9   UR                  SSSS	9  S S S 5        [        R                  " [         R
                  S
S9   UR                  SSSSS9  S S S 5        [        R                  " [         R
                  SS9   UR                  SS5        S S S 5        UR                  SSSS9  UR                  SSSS	9  [        UR                  SS95      SSSSS.4SSSSS.4SSSSS.4/:X  d   eg ! , (       d  f       GN= f! , (       d  f       Nò= f! , (       d  f       NÅ= f! , (       d  f       N˜= f)Nr   r   z!Invalid clockwise reference node.r¶   r   r   ©Úcwz(Invalid counterclockwise reference node.©Úccwz$Only one of cw/ccw can be specified.©rä   ræ   zNNode already has out-half-edge\(s\), either cw or ccw reference node required.Tr­   )ræ   rä   )r
   rÇ   Úadd_half_edger�   r�   r‘   Úsortedr�   ©r.   rÌ   s     r   Útest_add_half_edgeÚ+TestPlanarEmbeddingClass.test_add_half_edgeš  s¡  € Ü×&Ò&Ó(ˆ	Ø×Ñ  1Ô%Ü�]Š]Ü× Ñ Ð(Kó
ð ×#Ñ# A q¨QÐ#Ñ/÷
ô �]Š]Ü× Ñ Ð(Ró
ð ×#Ñ# A q¨aÐ#Ñ0÷
ô �]Š]Ü× Ñ Ð(Nó
ð ×#Ñ# A q¨Q°AÐ#Ñ6÷
ô �]Š]Ü× Ñ ð6ó
ð ×#Ñ# A qÔ)÷
ð 	×Ñ  1¨ÐÑ+Ø×Ñ  1¨!ÐÑ,Ü�i—o‘o¨4�oÐ0Ó1Ø�˜1 AÑ&Ð'Ø�˜! AÑ&Ð'Ø�˜! AÑ&Ð'ð6
ó 
ð 	
ñ 
÷/
ö 
ú÷
õ 
ú÷
õ 
ú÷
õ 
ús0   ÁE4ÂFÃFÄF(Å4
FÆ
FÆ
F%Æ(
F6c                 ól   • U R                  S5      nUR                  5       n/ SQS/S/S/S.nX#:X  d   eg )Nr    )r   r   r   r   )r   r   r   r   )Úget_star_embeddingÚget_data)r.   rÌ   r®   Údata_cmps       r   Útest_get_dataÚ&TestPlanarEmbeddingClass.test_get_dataº  s@   € Ø×+Ñ+¨AÓ.ˆ	Ø×!Ñ!Ó#ˆÚ  a S¨a¨S°a°SÑ9ˆØÓÐÑr   c           
      ó‚  • [         R                  " 5       nUR                  / SQ/ SQSS// SQ/ SQSS// SQS	.5        UR                  S
5        UR	                  5         [         R                  " 5       nUR                  SS// SQSS// SQSS/SS// SQS	.5        [         R
                  R                  X5      (       d   eg )N)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    r&   r"   r$   ))r&   r    r%   )r   r"   r   )r
   rÇ   Úset_datarœ   rÈ   ÚutilsÚgraphs_equal)r.   rÌ   Úembedding_expecteds      r   Útest_edge_removalÚ*TestPlanarEmbeddingClass.test_edge_removalÀ  sÁ   € Ü×&Ò&Ó(ˆ	Ø×ÑâÚØ�q�6ÚÚØ�q�6Úñô
	
ð 	×#Ñ#Ð$4Ô5Ø×!Ñ!Ô#Ü×/Ò/Ó1ÐØ×#Ñ#à�q�6ÚØ�q�6ÚØ�q�6Ø�q�6Úñô
	
ô �x‰x×$Ñ$ Y×CÑCÐCÑCr   c                 óÚ   • [         R                  " S0 0S0 0S.5      n[        R                  " [         R                  5         UR                  5         S S S 5        g ! , (       d  f       g = f)Nr   r   r   ©r
   rÇ   r�   r�   r‘   rÈ   rê   s     r   Útest_missing_edge_orientationÚ6TestPlanarEmbeddingClass.test_missing_edge_orientationÞ  sI   € Ü×&Ò&¨A¨r¨7¸¸2°wÑ'?Ó@ˆ	Ü�]Š]œ2×/Ñ/Õ0à×%Ñ%Ô'÷ 1×0Ö0ús   ÁAÁ
A*c                 óò   • [         R                  " SSSS.0SSSS.0S0 0S0 0S.5      n[        R                  " [         R                  5         UR                  5         S S S 5        g ! , (       d  f       g = f)Nr   rç   r   r   )r   r   r   r   rû   rê   s     r   Útest_invalid_edge_orientationÚ6TestPlanarEmbeddingClass.test_invalid_edge_orientationä  sk   € Ü×&Ò&à˜a¨Ñ*Ð+Ø˜a¨Ñ*Ð+Ø�r�7Ø�r�7ñ	ó
ˆ	ô �]Š]œ2×/Ñ/Õ0Ø×%Ñ%Ô'÷ 1×0Ö0ús   ÁA(Á(
A6c                 óî   • [         R                  " 5       nUR                  SS5        [        R                  " [         R
                  5         UR                  5         S S S 5        g ! , (       d  f       g = f©Nr   r   )r
   rÇ   rè   r�   r�   r‘   rÈ   rê   s     r   Útest_missing_half_edgeÚ/TestPlanarEmbeddingClass.test_missing_half_edgeð  sJ   € Ü×&Ò&Ó(ˆ	Ø×Ñ  1Ô%Ü�]Š]œ2×/Ñ/Õ0à×%Ñ%Ô'÷ 1×0Ö0ús   ÁA&Á&
A4c                 óH  • [         R                  " 5       n[        S5       H0  nS n[        S5       H  nX$:w  d  M
  UR                  X$US9  UnM     M2     [        R
                  " [         R                  5         UR                  5         S S S 5        g ! , (       d  f       g = f)Nr&   rã   )r
   rÇ   rO   rè   r�   r�   r‘   rÈ   )r.   rÌ   rQ   ÚrefÚjs        r   Ú!test_not_fulfilling_euler_formulaÚ:TestPlanarEmbeddingClass.test_not_fulfilling_euler_formula÷  sz   € Ü×&Ò&Ó(ˆ	Ü�q–ˆAØˆCÜ˜1–X�Ø•6Ø×+Ñ+¨A°SÐ+Ñ9Ø’Có ñ ô �]Š]œ2×/Ñ/Õ0Ø×%Ñ%Ô'÷ 1×0Ö0ús   Á9BÂ
B!c                 óÊ   • [         R                  " 5       n[        R                  " [         R                  SS9   UR                  SSSS9  S S S 5        g ! , (       d  f       g = f)NzInvalid reference node.r¶   r   r   r   rå   )r
   rÇ   r�   r�   r‘   rè   rê   s     r   Útest_missing_referenceÚ/TestPlanarEmbeddingClass.test_missing_reference  sG   € Ü×&Ò&Ó(ˆ	Ü�]Š]œ2×/Ñ/Ð7PÓQØ×#Ñ# A q¨aÐ#Ñ0÷ R×QÖQús   ¹AÁ
A"c                 óR   • [         R                  " 5       nUR                  SS5        g r  )r
   rÇ   Úconnect_componentsrê   s     r   Útest_connect_componentsÚ0TestPlanarEmbeddingClass.test_connect_components  s    € Ü×&Ò&Ó(ˆ	Ø×$Ñ$ Q¨Õ*r   c                 ó®   • [         R                  " 5       nUR                  SS5        UR                  SS5        UR                  SS5      nUSS/:X  d   eg r  )r
   rÇ   rè   Útraverse_face)r.   rÌ   Úfaces      r   Útest_successful_face_traversalÚ7TestPlanarEmbeddingClass.test_successful_face_traversal  sR   € Ü×&Ò&Ó(ˆ	Ø×Ñ  1Ô%Ø×Ñ  1Ô%Ø×&Ñ& q¨!Ó,ˆØ˜˜1�v‹~Ð‰~r   c                 óê   • [         R                  " SSSS.0SSSS.0S.5      n[        R                  " [         R                  5         UR                  SS5        S S S 5        g ! , (       d  f       g = f)Nr   r   rç   r   r   )r
   rÇ   r�   r�   r‘   r  rê   s     r   Ú test_unsuccessful_face_traversalÚ9TestPlanarEmbeddingClass.test_unsuccessful_face_traversal  s^   € Ü×&Ò&Ø˜1 QÑ'Ð(¨a¸À!Ñ1DÐ-EÑFó
ˆ	ô �]Š]œ2×/Ñ/Õ0Ø×#Ñ# A qÔ)÷ 1×0Ö0ús   ÁA$Á$
A2c                 ó  • [         R                  " 5       nUR                  S5        UR                  S/5        [        R
                  " [        5         UR                  SS5        S S S 5        [        R
                  " [        5         UR                  SS/5        S S S 5        [        R
                  " [        5         UR                  SS/5        S S S 5        g ! , (       d  f       N{= f! , (       d  f       NV= f! , (       d  f       g = f)	Né*   )é   é   r   r   r‚   rd   )r   r   i^  )r   r    é}   )
r
   rÇ   rz   Úadd_nodes_fromr�   r�   ÚNotImplementedErrorrP   rJ   Úadd_weighted_edges_fromrê   s     r   Útest_forbidden_methodsÚ/TestPlanarEmbeddingClass.test_forbidden_methods  s´   € Ü×&Ò&Ó(ˆ	Ø×Ñ˜2ÔØ× Ñ  ( Ô,Ü�]Š]Ô.Õ/Ø×Ñ˜q !Ô$÷ 0ä�]Š]Ô.Õ/Ø×$Ñ$ f¨fÐ%5Ô6÷ 0ä�]Š]Ô.Õ/Ø×-Ñ-¨{¸KÐ.HÔI÷ 0Ð/÷	 0Õ/úç/Õ/úç/Õ/ús$   ÁCÂC,Â>C=Ã
C)Ã,
C:Ã=
Dc                 ó¢   • [         R                  " 5       nS n[        SU 5       H'  nUR                  SX2S9  UnUR                  US5        M)     U$ )Nr   r   rã   )r
   rÇ   rO   rè   )ÚnrÌ   r  rQ   s       r   rî   Ú+TestPlanarEmbeddingClass.get_star_embedding$  sU   € ä×&Ò&Ó(ˆ	ØˆÜ�q˜!–ˆAØ×#Ñ# A qÐ#Ñ1ØˆCØ×#Ñ# A qÖ)ñ ð Ðr   r§   N)r½   r¾   r¿   rÀ   rë   rñ   rø   rü   rÿ   r  r  r  r  r  r  r!  rÂ   rî   rÅ   r§   r   r   rá   rá   ™  sU   † ò
ò@ òDò<(ò
(ò(ò	(ò1ò
+òò*ò	Jð ñó ór   rá   )r�   Únetworkxr
   Únetworkx.algorithms.planarityr   r   r   r   r   r   rá   r§   r   r   Ú<module>r(     s<   ðÛ ã ÷ñ ÷nDñ nDòb	'òT0;÷fSò Sr   