ó
    ™“,jYI  ã                   óÜ   • S SK Jr  S SKrS SKrS SKJr  SSKJr  SSKJ	r
   " S S\5      r " S	 S
\\
5      r " S S5      r " S S\5      r " S S\R                  5      r " S S\5      rg)é    )ÚUserDictN)Úedges_equalé   )ÚBaseAttrGraphTester)Ú	TestGraphc                   óh   • \ 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g)ÚBaseMultiGraphTesteré   c                 óè   • U R                   nUR                  SS5      (       d   eUR                  SS5      (       a   eUR                  SSS5      (       d   eUR                  SSS5      (       a   eg )Nr   r   éÿÿÿÿ)ÚK3Úhas_edge©ÚselfÚGs     Ú´C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\networkx/classes/tests/test_multigraph.pyÚtest_has_edgeÚ"BaseMultiGraphTester.test_has_edge   sn   € Ø�G‰GˆØ�z‰z˜!˜Q×ÑÐÐØ—:‘:˜a ×$Ñ$Ð$Ð$Ø�z‰z˜!˜Q ×"Ñ"Ð"Ð"Ø—:‘:˜a  A×&Ñ&Ð&Ð&Ð&ó    c                 óî   • U R                   nUR                  SS5      S0 0:X  d   eUS   S   S0 0:X  d   eUS   S   S   0 :X  d   eUR                  SS5      b   eUR                  SSS5      0 :X  d   eg )Nr   r   é
   é   )r   Úget_edge_datar   s     r   Útest_get_edge_dataÚ'BaseMultiGraphTester.test_get_edge_data   sŽ   € Ø�G‰GˆØ�‰˜q !Ó$¨¨B¨Ó/Ð/Ð/Ø�‰t�A‰w˜1˜b˜'Ó!Ð!Ð!Ø�‰t�A‰w�q‰z˜RÓÐÐØ�‰˜r 2Ó&Ñ.Ð.Ð.Ø�‰˜q ! QÓ'¨2Ó-Ð-Ñ-r   c                 óŒ   • U R                   n[        UR                  5       5      S0 0S0 0S.S0 0S0 0S.S0 0S0 0S.S.:X  d   eg )Nr   ©r   é   ©r   r   ©r   r   ©r   r   r   )r   ÚdictÚ	adjacencyr   s     r   Útest_adjacencyÚ#BaseMultiGraphTester.test_adjacency   s]   € Ø�G‰GˆÜ�A—K‘K“MÓ"Ø�r�7  2˜wÑ'Ø�r�7  2˜wÑ'Ø�r�7  2˜wÑ'ñ'
ó 
ð 	
ñ 
r   c                 ó¾   • US   S   S   S   US   S   S   S   :X  d   eUS   S   S   S   R                  S5        US   S   S   S   US   S   S   S   :w  d   eg ©Nr   r   r   Úfoo©Úappend©r   ÚHr   s      r   Údeepcopy_edge_attrÚ'BaseMultiGraphTester.deepcopy_edge_attr$   ó�   € Ø�‰t�A‰w�q‰z˜%Ñ  A a¡D¨¡G¨A¡J¨uÑ$5Ó5Ð5Ð5Ø	ˆ!‰ˆQ‰�‰
�5Ñ× Ñ  Ô#Ø�‰t�A‰w�q‰z˜%Ñ  A a¡D¨¡G¨A¡J¨uÑ$5Ó5Ð5Ñ5r   c                 ó¾   • US   S   S   S   US   S   S   S   :X  d   eUS   S   S   S   R                  S5        US   S   S   S   US   S   S   S   :X  d   eg r'   r)   r+   s      r   Úshallow_copy_edge_attrÚ+BaseMultiGraphTester.shallow_copy_edge_attr)   r/   r   c                 óî  • UR                   UR                   :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   eUR	                  5       (       dp  UR	                  5       (       d[  UR                   S   S   S   UR                   S   S   S   L d   eUR                   S   S   S   UR                   S   S   S   L d   eg UR	                  5       (       d"  UR                   Ul        UR                   Ul        UR	                  5       (       d"  UR                   Ul        UR                   Ul        UR
                  UR
                  :X  d   eUR                  UR                  :X  d   eUR                  S   S   S   UR
                  S   S   S   L d   eUR                  S   S   S   UR
                  S   S   S   L d   eg )Nr   r   r   )Ú_adjÚ_nodeÚgraphÚnameÚis_directedÚ_predÚ_succr+   s      r   Úgraphs_equalÚ!BaseMultiGraphTester.graphs_equal.   s™  € Ø�v‰v˜Ÿ™ÓÐÐØ�w‰w˜!Ÿ'™'Ó!Ð!Ð!Ø�w‰w˜!Ÿ'™'Ó!Ð!Ð!Ø�v‰v˜Ÿ™ÓÐÐØ�}‰}�‰ q§}¡}§¡Ø—6‘6˜!‘9˜Q‘< ‘? a§f¡f¨Q¡i°¡l°1¡oÒ5Ð5Ð5Ø—6‘6˜!‘9˜Q‘< ‘? a§f¡f¨Q¡i°¡l°1¡oÒ5Ð5Ñ5à—=‘=—?‘?ØŸ&™&�”ØŸ&™&�”Ø—=‘=—?‘?ØŸ&™&�”ØŸ&™&�”Ø—7‘7˜aŸg™gÓ%Ð%Ð%Ø—7‘7˜aŸg™gÓ%Ð%Ð%Ø—7‘7˜1‘:˜a‘= Ñ# q§w¡w¨q¡z°!¡}°QÑ'7Ò7Ð7Ð7Ø—7‘7˜1‘:˜a‘= Ñ# q§w¡w¨q¡z°!¡}°QÑ'7Ò7Ð7Ñ7r   c                 óÈ  • US   S   S   S   nSUR                   S   S   S   S'   UR                  UR                  :X  d   eX1R                   S   S   S   S'   UR                  UR                  :X  d   eUR                  S   S   nSUR                  S   S'   UR                  UR                  :X  d   eX1R                  S   S'   UR                  UR                  :X  d   eg ©Nr   r   r   r(   Úbaz©Úadjr4   Únodesr5   ©r   r,   r   Úold_foos       r   Úsame_attrdictÚ"BaseMultiGraphTester.same_attrdictB   óÖ   € à�A‘$�q‘'˜!‘*˜UÑ#ˆØ %ˆ�‰ˆa‰�‰�A‰�uÑØ�v‰v˜Ÿ™ÓÐÐØ '�‰ˆa‰�‰�A‰�uÑØ�v‰v˜Ÿ™ÓÐÐà—'‘'˜!‘*˜UÑ#ˆØ!ˆ�‰�‰
�5ÑØ�w‰w˜!Ÿ'™'Ó!Ð!Ð!Ø#�‰�‰
�5ÑØ�w‰w˜!Ÿ'™'Ó!Ð!Ñ!r   c                 óÈ  • US   S   S   S   nSUR                   S   S   S   S'   UR                  UR                  :w  d   eX1R                   S   S   S   S'   UR                  UR                  :X  d   eUR                  S   S   nSUR                  S   S'   UR                  UR                  :w  d   eX1R                  S   S'   UR                  UR                  :X  d   eg r>   r@   rC   s       r   Údifferent_attrdictÚ'BaseMultiGraphTester.different_attrdictP   rG   r   c                 óÎ   • U R                   nU R                  U5        [        R                  " U5      nU R	                  X!5        UR                  5       nU R                  X!5        g ©N)r   Úadd_attributesÚnxÚ
MultiGraphÚis_shallow_copyÚto_undirectedÚis_deepcopy©r   r   r,   s      r   Útest_to_undirectedÚ'BaseMultiGraphTester.test_to_undirected^   sO   € Ø�G‰GˆØ×Ñ˜AÔÜ�MŠM˜!ÓˆØ×Ñ˜QÔ"Ø�O‰OÓˆØ×Ñ˜Õr   c                 óÎ   • U R                   nU R                  U5        [        R                  " U5      nU R	                  X!5        UR                  5       nU R                  X!5        g rL   )r   rM   rN   ÚMultiDiGraphrP   Úto_directedrR   rS   s      r   Útest_to_directedÚ%BaseMultiGraphTester.test_to_directedf   sN   € Ø�G‰GˆØ×Ñ˜AÔÜ�OŠO˜AÓˆØ×Ñ˜QÔ"Ø�M‰M‹OˆØ×Ñ˜Õr   c                 ó,  • U R                   nUR                  SS5        UR                  SS5        UR                  SSSS9  UR                  SSSS9  UR                  SS5      S:X  d   eUR                  SS5        UR                  SS5      S:X  d   eg )Nr   úparallel edge©Úkeyr   r   )r   Úadd_edgeÚremove_edgeÚnumber_of_edgesr   s     r   Útest_number_of_edges_selfloopsÚ3BaseMultiGraphTester.test_number_of_edges_selfloopsn   s�   € Ø�G‰GˆØ	�
‰
�1�aÔØ	�
‰
�1�aÔØ	�
‰
�1�a˜_ˆ
Ñ-Ø	�‰�a˜ ˆÑ0Ø× Ñ   AÓ&¨!Ó+Ð+Ð+Ø	�‰�a˜ÔØ× Ñ   AÓ&¨!Ó+Ð+Ñ+r   c                 óò   • U R                  5       nUR                  SSSS9  UR                  SSSSS9  [        UR                  S   SS05      (       d   e[        UR                  S	   SS05      (       d   eg )
Nr   r   Úbar)r(   r^   Úbiz©r   r   r   r(   )r   r   r^   )ÚGraphr_   r   Úedgesr   s     r   Útest_edge_lookupÚ%BaseMultiGraphTester.test_edge_lookupx   ss   € Ø�J‰J‹LˆØ	�
‰
�1�a˜Uˆ
Ñ#Ø	�
‰
�1�a˜ Eˆ
Ñ*Ü˜1Ÿ7™7 7Ñ+¨e°U¨^×<Ñ<Ð<Ð<Ü˜1Ÿ7™7 ;Ñ/°%¸°×@Ñ@Ð@Ñ@r   c           	      ó¾  ^• U R                  5       mTR                  SSSSS9  TR                  SSSSS9  [        TR                  SS5      TR                  5      (       d   e[        U4S jTR                  S	S
9 5       5      (       d   e[        TR                  S	S	S9SSSSS04SSSSS04/5      (       d   e[        TR                  S	SS9SS/5      (       d   eg )Nr   r   Úk1re   )r^   r(   Úk2r?   c              3   óV   >#   • U  H  u  pn[        UTR                  5      v •  M      g 7frL   )Ú
isinstanceÚedge_attr_dict_factory)Ú.0ÚuÚvÚdr   s       €r   Ú	<genexpr>Ú6BaseMultiGraphTester.test_edge_attr.<locals>.<genexpr>„   s)   øé € ð 
ÚCU¹¸¸aŒJ�q˜!×2Ñ2×3Ð3ÒCUùs   ƒ&)T©Údata©Úkeysry   r(   )r   r   rm   re   )r   r   rn   r?   )rh   r_   rp   r   Úedge_key_dict_factoryÚallri   r   r   s    @r   Útest_edge_attrÚ#BaseMultiGraphTester.test_edge_attr   s  ø€ Ø�J‰J‹LˆØ	�
‰
�1�a˜T uˆ
Ñ-Ø	�
‰
�1�a˜T uˆ
Ñ-Ü˜!Ÿ/™/¨!¨QÓ/°×1HÑ1H×IÑIÐIÐIÜô 
ØCDÇ7Á7ÐPTÀ7ÑCUó
÷ 
ñ 
ð 	
ð 
ô Ø�G‰G˜ DˆGÐ)Ø��D˜5 %˜.Ð)¨A¨q°$¸À¸Ð+GÐH÷
ñ 
ð 	
ð 
ô Ø�G‰G˜ EˆGÐ*Ð-@ÐBUÐ,V÷
ñ 
ð 	
ñ 
r   c                 ó¸  • U R                  5       nUR                  SSSSSSS9  [        UR                  SS	9SSSSSS
.4/5      (       d   eSUS   S   S   S'   [        UR                  SS	9SSSSSS
.4/5      (       d   eSUR                  S   S   S   S'   [        UR                  SS	9SSSSSS
.4/5      (       d   eSUR                  S   S'   [        UR                  SS	9SSSSSS
.4/5      (       d   eSS/UR                  S   S   S   S'   SUR                  S   S   S   S'   [        UR                  SS	9SSSSSSS/SS.4/5      (       d   eg )Nr   r   r   é   re   r(   )r^   ry   Úspamre   Trx   )ry   r‚   re   r   ry   r   é   rg   éÈ   ÚlistdataÚweight)ry   r‚   re   r…   r†   )rh   r_   r   ri   rA   r   s     r   Útest_edge_attr4Ú$BaseMultiGraphTester.test_edge_attr4�   s×  € Ø�J‰J‹LˆØ	�
‰
�1�a˜Q Q¨U¸ˆ
Ñ>ÜØ�G‰G˜ˆGÐ ! Q°¸EÈ%Ñ(PÐ!QÐ R÷
ñ 
ð 	
ð 
ð  ˆˆ!‰ˆQ‰�‰
�6ÑÜØ�G‰G˜ˆGÐ ! Q°¸UÈ5Ñ(QÐ!RÐ S÷
ñ 
ð 	
ð 
ð "$ˆ�‰ˆa‰�‰�A‰�vÑÜØ�G‰G˜ˆGÐ ! Q°¸UÈ5Ñ(QÐ!RÐ S÷
ñ 
ð 	
ð 
ð $&ˆ�‰�Ñ˜Ñ ÜØ�G‰G˜ˆGÐ ! Q°¸UÈ5Ñ(QÐ!RÐ S÷
ñ 
ð 	
ð 
ð ')¨# Yˆ�‰ˆa‰�‰�A‰�zÑ"Ø#%ˆ�‰ˆa‰�‰�A‰�xÑ ÜØ�G‰G˜ˆGÐð Øà "Ø %Ø$Ø%'¨ IØ"$ñð
ð÷
ñ 
ð 	
ñ 
r   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r$   r-   r1   r;   rE   rI   rT   rY   rb   rj   r~   r‡   Ú__static_attributes__r‰   r   r   r	   r	      sI   † ò'ò.ò
ò6ò
6ò
8ò("ò"òòò,òAò
õ $
r   r	   c                   ó  • \ rS rSrS rS rS rSSS.rSS	S
.r\\S.r	SS\	00r
SS\00rSS\SS.00rSS/0rSSS\4SSS\4/rSSS0 4/rSSS\	4/rSSS\4/rSSS\SS.4/r\
S\4\
S\4\S\4\S\4\S\4/r\R*                  R-                  S\5      S 5       r\
\4\\4\\4/r\R*                  R-                  S\5      S 5       r\\\/r\R*                  R-                  S\5      S 5       rS rS rS rS rS r S r!S  r"S! r#S" r$S#r%g$)%ÚTestMultiGraphé¶   c                 ó¢  • [         R                  U l        S0 0S0 0S0 0p2nXS.XS.X#S.S.U l        / SQU l        / SQU l        U R                  5       U l        U R                  U R                  l        0 U R                  l        0 U R                  R                  S'   0 U R                  R                  S'   0 U R                  R                  S'   g )	Nr   r   r   r    r!   ©r    r   r   r   r   )	rN   rO   rh   Úk3adjÚk3edgesÚk3nodesr   r4   r5   )r   Úed1Úed2Úed3s       r   Úsetup_methodÚTestMultiGraph.setup_method·   s¦   € Ü—]‘]ˆŒ
à˜R˜ 1 b '¨A¨r¨7�#ˆØ Ñ)°#Ñ.>ÀsÑCSÑTˆŒ
Ú/ˆŒÚ ˆŒØ—*‘*“,ˆŒØ—z‘zˆ�‰ŒØˆ�‰ŒØˆ�‰�‰�aÑØˆ�‰�‰�aÑØˆ�‰�‰�aÒr   c                 óÄ   • U R                  S/S/S.SS9nUR                  S:X  d   eSSS0 004SSS0 004/n[        UR                  R	                  5       5      U:X  d   eg )Nr   r   r   Útest)r7   r   )rh   r7   ÚsortedrA   Úitems)r   r   Úexpecteds      r   Útest_data_inputÚTestMultiGraph.test_data_inputÅ   sp   € Ø�J‰J˜A˜3 A 3Ñ'¨fˆJÐ5ˆØ�v‰v˜ÓÐÐØ˜˜Q ˜G˜Ð%¨¨A°°2¨w¨<Ð'8Ð9ˆÜ�a—e‘e—k‘k“mÓ$¨Ó0Ð0Ñ0r   c                 óž  • SSS.nSSS.nXS.nSSU00nSSS	U4SSS
U4/nSSS	U4/nU R                  USS9n[        UR                  SSS95      U:X  d   eU R                  US S9n[        UR                  SSS95      U:X  d   eU R                  USS9n[        UR                  SSS95      U:X  d   eU R                  USS9nU R                  [        R                  " U5      5      n[        R
                  " Xx5      SL d   eS HC  n	U R                  [        R                  " U5      U	S9n[        R
                  " Xx5      U	:X  a  MC   e   g )Nr„   r(   ©ÚwÚséÉ   re   r    ÚaÚbr   r   T©Úmultigraph_inputrz   F)TF)rh   Úlistri   rN   Úto_dict_of_dictsÚis_isomorphic)
r   Úedata0Úedata1ÚkeydictÚdodododÚmultiple_edgeÚsingle_edger   r,   Úmgis
             r   Útest_data_multigraph_inputÚ)TestMultiGraph.test_data_multigraph_inputË   su  € à Ñ'ˆØ Ñ'ˆØÑ(ˆØ˜˜g˜Ð'ˆà˜s A vÐ.°°c¸1¸fÐ0EÐFˆØ˜S ! WÐ-Ð.ˆà�J‰J�w°ˆJÐ6ˆÜ�A—G‘G ¨D�GÐ1Ó2°mÓCÐCÐCØ�J‰J�w°ˆJÐ6ˆÜ�A—G‘G ¨D�GÐ1Ó2°mÓCÐCÐCØ�J‰J�w°ˆJÐ7ˆÜ�A—G‘G ¨D�GÐ1Ó2°kÓAÐAÐAð �J‰J�w°ˆJÐ6ˆØ�J‰J”r×*Ò*¨1Ó-Ó.ˆÜ×Ò Ó%¨Ò-Ð-Ð-Û ˆCØ—
‘
œ2×.Ò.¨qÓ1ÀC�
ÐHˆAÜ×#Ò# AÓ)¨SÕ0Ð0Ð0ò !r   r„   r(   r¤   ÚblueÚbox)ÚcolorÚshape)ÚtraitsÚgraphicsr¨   r©   )r¼   r¦   r¼   r½   r   TFzdod, mgi, edgesc                 óÜ   • U R                  XS9n[        UR                  SSS95      U:X  d   e[        R                  " XR                   US9n[        UR                  SSS95      U:X  d   eg )Nrª   Trz   ©Úcreate_usingr«   )rh   r¬   ri   rN   Úto_networkx_graph)r   Údodrµ   ri   r   s        r   Útest_non_multigraph_inputÚ(TestMultiGraph.test_non_multigraph_inputû   si   € à�J‰J�sˆJÐ1ˆÜ�A—G‘G ¨D�GÐ1Ó2°eÓ;Ð;Ð;Ü× Ò  ·:±:ÐPSÑTˆÜ�A—G‘G ¨D�GÐ1Ó2°eÓ;Ð;Ñ;r   z
dod, edgesc                 ód   • U R                  U5      n[        UR                  SSS95      U:X  d   eg )NTrz   )rh   r¬   ri   )r   rÂ   ri   r   s       r   Ú"test_non_multigraph_input_mgi_noneÚ1TestMultiGraph.test_non_multigraph_input_mgi_none  s1   € ð �J‰J�s‹OˆÜ�A—G‘G ¨D�GÐ1Ó2°eÓ;Ð;Ñ;r   rÂ   c                 óÞ   • [         R                  " [        R                  U R                  USS9  [         R                  " [        R                  [        R
                  UU R                  SS9  g )NTrª   r¿   )ÚpytestÚraisesrN   ÚNetworkXErrorrh   rÁ   )r   rÂ   s     r   Útest_non_multigraph_input_raiseÚ.TestMultiGraph.test_non_multigraph_input_raise  sK   € ô 	�Š”b×&Ñ&¨¯
©
°CÈ$ÒOÜ�ŠÜ×ÑÜ× Ñ ØØŸ™Ø!ó	
r   c                 óV  • U R                   nUS   S0 0S0 0S.:X  d   e[        R                  " [        5         UR	                  S5        S S S 5        [        R                  " [
        5         UR	                  S/5        S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)Nr   r   ÚjÚA)r   rÉ   rÊ   ÚKeyErrorÚ__getitem__Ú	TypeErrorr   s     r   Útest_getitemÚTestMultiGraph.test_getitem  sy   € Ø�G‰GˆØ�‰t˜A˜r˜7¨¨2 wÑ/Ó/Ð/Ð/Ü�]Š]œ8Õ$Ø�M‰M˜#Ô÷ %ä�]Š]œ9Õ%Ø�M‰M˜3˜%Ô ÷ &Ð%÷ %Õ$úç%Õ%ús   ¹B	Á-BÂ	
BÂ
B(c                 ó  • U R                   nUR                  S5        UR                  SS0 00SS0 00S.:X  d   e[        R                  " [
        R                  5         UR                  S5        S S S 5        g ! , (       d  f       g = f)Nr   r   r   r   r   )r   Úremove_noderA   rÉ   rÊ   rN   rË   r   s     r   Útest_remove_nodeÚTestMultiGraph.test_remove_node$  sh   € Ø�G‰GˆØ	�‰�aÔØ�u‰u˜Q  B ˜L¨a°!°R°¨\Ñ:Ó:Ð:Ð:Ü�]Š]œ2×+Ñ+Õ,Ø�M‰M˜"Ô÷ -×,Ö,ús   ÁA:Á:
Bc                 ó¦  • U R                  5       nUR                  SS5        UR                  SS0 00SS0 00S.:X  d   eU R                  5       nUR                  " S6   UR                  SS0 00SS0 00S.:X  d   eU R                  5       n[        R                  " [
        5         UR                  S S5        S S S 5        g ! , (       d  f       g = f)Nr   r   r    Úanything)rh   r_   rA   rÉ   rÊ   Ú
ValueErrorr   s     r   Útest_add_edgeÚTestMultiGraph.test_add_edge+  s±   € Ø�J‰J‹LˆØ	�
‰
�1�aÔØ�u‰u˜Q  B ˜L¨a°!°R°¨\Ñ:Ó:Ð:Ð:Ø�J‰J‹LˆØ	�
Š
�FÑØ�u‰u˜Q  B ˜L¨a°!°R°¨\Ñ:Ó:Ð:Ð:Ø�J‰J‹LˆÜ�]Š]œ:Õ&Ø�J‰J�t˜ZÔ(÷ '×&Ö&ús   Â&CÃ
Cc                 ó2  • U R                  5       nUR                  SSSS9  UR                  SS5        UR                  5       S:X  d   eU R                  5       nUR                  SSS0 4/5        UR                  S/5        UR                  5       S:X  d   eg )Nr   r   r]   r   r    )rh   r_   ra   Úadd_edges_fromr   s     r   Útest_add_edge_conflicting_keyÚ,TestMultiGraph.test_add_edge_conflicting_key6  sŽ   € Ø�J‰J‹LˆØ	�
‰
�1�a˜Qˆ
ÑØ	�
‰
�1�aÔØ× Ñ Ó" aÓ'Ð'Ð'Ø�J‰J‹LˆØ	×Ñ˜1˜a  B˜-˜Ô)Ø	×Ñ˜&˜Ô"Ø× Ñ Ó" aÓ'Ð'Ñ'r   c                 ó’  • U R                  5       nUR                  SSSSS04/5        UR                  S0 SS0S.0S0 SS0S.0S.:X  d   eUR                  SSSSS04/SS9  UR                  S0 SS0SS0SS0S.0S0 SS0SS0SS0S.0S.:X  d   eU R                  5       nSSSS04S	S
S/nUR                  U5        SS0SS00 0 S.nUR                  SU0SU0S.:X  d   e[        R
                  " [        R                  5         UR                  S/5        S S S 5        [        R
                  " [        R                  5         UR                  S/5        S S S 5        [        R
                  " [        5         UR                  S/5        S S S 5        g ! , (       d  f       Nƒ= f! , (       d  f       NU= f! , (       d  f       g = f)Nr    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ä   é   )	rh   rà   rA   r4   rÉ   rÊ   rN   rË   rÓ   )r   r   ri   r±   s       r   Útest_add_edges_fromÚ"TestMultiGraph.test_add_edges_from@  sæ  € Ø�J‰J‹LˆØ	×Ñ˜& 1 a¨(°A¨Ð"7Ð8Ô9Ø�u‰uØ�r˜x¨˜mÑ,Ð-Ø�r˜x¨˜mÑ,Ð-ñ
ó 
ð 	
ð 
ð 	
×Ñ˜& 1 a¨(°A¨Ð"7Ð8ÀÐÑCØ�u‰uØ�r˜x¨˜m°¸1°À8ÈQÀ-ÑPÐQØ�r˜x¨˜m°¸1°À8ÈQÀ-ÑPÐQñ
ó 
ð 	
ð 
ð �J‰J‹Lˆà��H˜a�=Ð!Ø$ØØð	
ˆð 	
×Ñ˜ÔØ �m¨°1¨¸"À2ÑFˆØ�v‰v˜a ˜\¨q°'¨lÑ;Ó;Ð;Ð;ô �]Š]œ2×+Ñ+Õ,Ø×Ñ˜d˜VÔ$÷ -ô �]Š]œ2×+Ñ+Õ,Ø×Ñ˜oÐ.Ô/÷ -ô �]Š]œ9Õ%Ø×Ñ˜a˜SÔ!÷ &Ð%÷ -Õ,ú÷ -Õ,ú÷ &Õ%ús$   ÄFÅF'Å:F8Æ
F$Æ'
F5Æ8
Gc                 óÆ   • [         R                  " 5       n[        R                  " [        5         UR                  SSSS0S4/5        SSS5        g! , (       d  f       g= f)z‡add_edges_from expects 4-tuples of the format (u, v, key, data_dict).

Ensure 4-tuples of form (u, v, data_dict, key) raise exception.
r   r   rº   ÚredN)rN   rO   rÉ   rÊ   rÓ   rà   r   s     r   Ú4test_multigraph_add_edges_from_four_tuple_misorderedÚCTestMultiGraph.test_multigraph_add_edges_from_four_tuple_misordereda  sF   € ô
 �MŠM‹OˆÜ�]Š]œ9Õ%à×Ñ˜q ! g¨uÐ%5°qÐ9Ð:Ô;÷ &×%Ö%ús   °AÁ
A c                 óÈ  • U R                   nUR                  SS5        UR                  SS0 00SS0 00S0 0S0 0S.S.:X  d   e[        R                  " [
        R                  5         UR                  SS5        S S S 5        [        R                  " [
        R                  5         UR                  SSSS9  S S S 5        g ! , (       d  f       NM= f! , (       d  f       g = f)Nr   r   r   r    r!   r   r]   )r   r`   rA   rÉ   rÊ   rN   rË   r   s     r   Útest_remove_edgeÚTestMultiGraph.test_remove_edgek  s±   € Ø�G‰GˆØ	�‰�a˜ÔØ�u‰u˜Q  B ˜L¨a°!°R°¨\À1ÀbÀ'ÈqÐRTÈgÑ>VÑWÓWÐWÐWä�]Š]œ2×+Ñ+Õ,Ø�M‰M˜"˜aÔ ÷ -ä�]Š]œ2×+Ñ+Õ,Ø�M‰M˜!˜Q AˆMÑ&÷ -Ð,÷ -Õ,úç,Õ,ús   Á(CÂ'CÃ
CÃ
C!c           	      ó¨  • U R                   R                  5       nUR                  S/5        S0 0nUR                  SU0SU0X"S.S.:X  d   eUR                  S/5        U R                   R	                  SS5        U R                   R                  5       nUR                  [        UR                  SSS95      5        UR                  0 0 0 S.:X  d   eU R                   R                  5       nUR                  [        UR                  S	SS95      5        UR                  0 0 0 S.:X  d   eU R                   R                  5       nUR                  [        UR                  S	S	S95      5        UR                  0 0 0 S.:X  d   eU R                   R                  5       nUR                  S
SSS0 4S/5        UR                  SS0 00SS0 000 S.:X  d   eg )Nr    r   r   r!   )r   r   r   T)ry   r{   F©r   r   r   r   )r   ÚcopyÚremove_edges_fromrA   r_   r¬   ri   ©r   r   Úkds      r   Útest_remove_edges_fromÚ%TestMultiGraph.test_remove_edges_fromu  sž  € Ø�G‰G�L‰L‹NˆØ	×Ñ˜V˜HÔ%Ø�ˆWˆØ�u‰u˜Q ˜G¨¨B¨¸±NÑCÓCÐCÐCØ	×Ñ˜V˜HÔ%Ø�‰×Ñ˜˜AÔØ�G‰G�L‰L‹NˆØ	×ÑœD §¡¨d¸ Ð!>Ó?Ô@Ø�u‰u˜B 2¨"Ñ-Ó-Ð-Ð-Ø�G‰G�L‰L‹NˆØ	×ÑœD §¡¨e¸$ Ð!?Ó@ÔAØ�u‰u˜B 2¨"Ñ-Ó-Ð-Ð-Ø�G‰G�L‰L‹NˆØ	×ÑœD §¡¨e¸% Ð!@ÓAÔBØ�u‰u˜B 2¨"Ñ-Ó-Ð-Ð-Ø�G‰G�L‰L‹NˆØ	×Ñ˜Y¨¨A¨q°"¨°vÐ>Ô?Ø�u‰u˜Q  B ˜L¨a°!°R°¨\¸bÑAÓAÐAÑAr   c                 óº  • U R                   nUR                  SSSS9  UR                  SSSS9  UR                  S0 0S0 0S.S0 0S0 0S.S0 0S0 0S.S.:X  d   eUR                  SS5        S0 0nUR                  S	U0S	U0X"S.S.:X  d   e[        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_   r`   rA   rÉ   rÊ   rN   rË   rô   s      r   Útest_remove_multiedgeÚ$TestMultiGraph.test_remove_multiedge‰  sâ   € Ø�G‰GˆØ	�
‰
�1�a˜_ˆ
Ñ-Ø	�‰�a˜ ˆÑ0Ø�u‰uØ�r�7  2˜wÑ'Ø�r�7  2˜wÑ'Ø�r�7  2˜wÑ'ñ
ó 
ð 	
ð 
ð
 	
�‰�a˜ÔØ�ˆWˆØ�u‰u˜Q ˜G¨¨B¨¸±NÑCÓCÐCÐCÜ�]Š]œ2×+Ñ+Õ,Ø�M‰M˜"˜aÔ ÷ -×,Ö,ús   Â0CÃ
C)rh   r   r”   r•   r–   N)&rŠ   r‹   rŒ   r�   rš   r¡   r¶   ÚetraitsÚ	egraphicsÚedataÚdodod1Údodod2Údodod3Údolr³   r´   Úsingle_edge1Úsingle_edge2Úsingle_edge3ÚcasesrÉ   ÚmarkÚparametrizerÃ   Úmgi_none_casesrÆ   Úraise_casesrÌ   rÔ   rØ   rÝ   rá   rç   rë   rî   rö   rù   rŽ   r‰   r   r   r�   r�   ¶   sØ  † òò1ò1ð4 ˜eÑ$€GØ ¨5Ñ1€IØ¨IÑ6€EØ�C˜�<Ð €FØ�C˜�>Ð"€FØ�C G°%Ñ8Ð9Ð:€FØ��ˆ,€Cà˜3 ¨'Ð2°S¸#¸zÈ9Ð4UÐV€MØ˜˜a Ð$Ð%€KØ˜#˜q %Ð(Ð)€LØ˜#˜q 'Ð*Ð+€LØ˜#˜q¨W¸5Ñ"AÐBÐC€Lð 
��}Ð%Ø	�˜Ð%Ø	�˜Ð%Ø	�˜Ð%Ø	ˆe�[Ð!ð€Eð ‡[�[×ÑÐ.°Ó6ñ<ó 7ð<ð 
�ÐØ	�ÐØ	�Ðð€Nð ‡[�[×Ñ˜\¨>Ó:ñ<ó ;ð<ð
 ˜6 3Ð'€Kà‡[�[×Ñ˜U KÓ0ñ	
ó 1ð	
ò!òò	)ò(ò"òB<ò'òBõ(!r   r�   c                   óH   • \ 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g)ÚTestEdgeSubgraphi™  z;Unit tests for the :meth:`MultiGraph.edge_subgraph` method.c                 ó  • [         R                  " 5       n[         R                  " U[        S5      5        [         R                  " U[        S5      5        [        S5       H  nSU 3UR                  U   S'   M     SUR
                  S   S   S   S'   SUR
                  S   S   S   S'   SUR
                  S	   S
   S   S'   SUR
                  S	   S
   S   S'   SUR                  S'   Xl        UR                  SS/5      U l	        g )Nrå   Únoder7   Úedge010r   r   Úedge011Úedge340rä   ræ   Úedge341r6   rñ   )rä   ræ   r   )
rN   rO   Úadd_pathÚrangerB   rA   r6   r   Úedge_subgraphr,   )r   r   Úis      r   rš   ÚTestEdgeSubgraph.setup_methodœ  sè   € ä�MŠM‹OˆÜ
�Š�A”u˜Q“xÔ Ü
�Š�A”u˜Q“xÔ ä�q–ˆAØ#'¨ s ˆA�G‰G�A‰J�vÓñ à!*ˆ�‰ˆa‰�‰�A‰�vÑØ!*ˆ�‰ˆa‰�‰�A‰�vÑØ!*ˆ�‰ˆa‰�‰�A‰�vÑØ!*ˆ�‰ˆa‰�‰�A‰�vÑØ!ˆ�‰�‰ð ŒØ—‘ )¨YÐ!7Ó8ˆ�r   c                 óZ   • / SQ[        U R                  R                  5       5      :X  d   eg)z.Tests that the subgraph has the correct nodes.©r   r   rä   ræ   N)rž   r,   rB   ©r   s    r   Útest_correct_nodesÚ#TestEdgeSubgraph.test_correct_nodes®  s   € âœv d§f¡f§l¡l£nÓ5Ó5Ð5Ñ5r   c                 óZ   • SS/[        U R                  R                  SSS95      :X  d   eg)z.Tests that the subgraph has the correct edges.)r   r   r   r  )rä   ræ   r   r  Tr7   rz   N)rž   r,   ri   r  s    r   Útest_correct_edgesÚ#TestEdgeSubgraph.test_correct_edges²  s6   € à$Ð&:Ð;¼vØ�F‰F�L‰L˜d¨ˆLÐ0ó@
ó 
ð 	
ñ 
r   c                 ó�   • U R                   R                  S5        / SQ[        U R                  R	                  5       5      :X  d   eg)z[Tests that adding a node to the original graph does not
affect the nodes of the subgraph.

rå   r  N)r   Úadd_noderž   r,   rB   r  s    r   Útest_add_nodeÚTestEdgeSubgraph.test_add_node¸  s1   € ð
 	�‰�‰˜ÔÚœv d§f¡f§l¡l£nÓ5Ó5Ð5Ñ5r   c                 ó�   • U R                   R                  S5        / SQ[        U R                  R	                  5       5      :X  d   eg)zYTests that removing a node in the original graph does
affect the nodes of the subgraph.

r   )r   rä   ræ   N)r   r×   rž   r,   rB   r  s    r   rØ   Ú!TestEdgeSubgraph.test_remove_nodeÀ  s3   € ð
 	�‰×Ñ˜1ÔÚœF 4§6¡6§<¡<£>Ó2Ó2Ð2Ñ2r   c                 óÞ  • U R                    H9  nU R                  R                  U   U R                   R                  U   :X  a  M9   e   SU R                  R                  S   S'   U R                  R                  S   U R                   R                  S   :X  d   eSU R                   R                  S   S'   U R                  R                  S   U R                   R                  S   :X  d   eg)zPTests that the node attribute dictionary of the two graphs is
the same object.

r(   r   r7   re   r   N)r,   r   rB   )r   rt   s     r   Útest_node_attr_dictÚ$TestEdgeSubgraph.test_node_attr_dictÈ  s²   € ð
 —”ˆAØ—6‘6—<‘< ‘? d§f¡f§l¡l°1¡oÕ5Ð5Ð5ñ ð #(ˆ�‰�‰�Q‰˜ÑØ�v‰v�|‰|˜A‰ $§&¡&§,¡,¨q¡/Ó1Ð1Ð1Ø"'ˆ�‰�‰�Q‰˜ÑØ�v‰v�|‰|˜A‰ $§&¡&§,¡,¨q¡/Ó1Ð1Ñ1r   c                 óv  • U R                   R                  SS9 HH  u  pnU R                  R                  U   U   U   U R                   R                  U   U   U   :X  a  MH   e   SU R                  R                  S   S   S   S'   U R                  R                  S   S   S   S   U R                   R                  S   S   S   S   :X  d   eSU R                   R                  S   S	   S   S'   U R                  R                  S   S	   S   S   U R                   R                  S   S	   S   S   :X  d   eg
)zPTests that the edge attribute dictionary of the two graphs is
the same object.

T)r{   r(   r   r   r7   re   rä   ræ   N)r,   ri   r   r4   )r   rs   rt   Úks       r   Útest_edge_attr_dictÚ$TestEdgeSubgraph.test_edge_attr_dictÕ  s%  € ð
 —v‘v—|‘|¨�|Ó.‰GˆA�!Ø—6‘6—;‘;˜q‘> !Ñ$ QÑ'¨4¯6©6¯;©;°q©>¸!Ñ+<¸QÑ+?Õ?Ð?Ð?ñ /ð (-ˆ�‰�‰�A‰�qÑ˜!Ñ˜VÑ$Ø�v‰v�{‰{˜1‰~˜aÑ  Ñ# FÑ+¨t¯v©v¯{©{¸1©~¸aÑ/@ÀÑ/CÀFÑ/KÓKÐKÐKØ',ˆ�‰�‰�A‰�qÑ˜!Ñ˜VÑ$Ø�v‰v�{‰{˜1‰~˜aÑ  Ñ# FÑ+¨t¯v©v¯{©{¸1©~¸aÑ/@ÀÑ/CÀFÑ/KÓKÐKÑKr   c                 ób   • U R                   R                  U R                  R                  L d   eg)zQTests that the graph attribute dictionary of the two graphs
is the same object.

N)r   r6   r,   r  s    r   Útest_graph_attr_dictÚ%TestEdgeSubgraph.test_graph_attr_dictâ  s"   € ð
 �v‰v�|‰|˜tŸv™vŸ|™|Ò+Ð+Ñ+r   )r   r,   N)rŠ   r‹   rŒ   r�   Ú__doc__rš   r  r  r!  rØ   r&  r*  r-  rŽ   r‰   r   r   r  r  ™  s.   † ÙEò9ò$6ò
ò6ò3ò2òLõ,r   r  c                   ó   • \ rS rSrSrg)ÚCustomDictClassiê  r‰   N)rŠ   r‹   rŒ   r�   rŽ   r‰   r   r   r1  r1  ê  s   † Úr   r1  c                   ó0   • \ rS rSr\r\r\r\r\r	\r
\rSrg)ÚMultiGraphSubClassiî  r‰   N)rŠ   r‹   rŒ   r�   r1  Únode_dict_factoryÚnode_attr_dict_factoryÚadjlist_outer_dict_factoryÚadjlist_inner_dict_factoryr|   rq   Úgraph_attr_dict_factoryrŽ   r‰   r   r   r3  r3  î  s,   † Ø'ÐØ,ÐØ!0ÐØ!0ÐØ+ÐØ,ÐØ-Ór   r3  c                   ó   • \ rS rSrS rSrg)ÚTestMultiGraphSubclassiø  c                 óÄ  • [         U l        / SQU l        / SQU l        U R                  5       U l        U R                  R                  U R                  R                  5       U R                  R                  5       U R                  R                  5       S.5      U R                  l        0 0 0 S.U R                  l        U R                   HW  nU R                   HD  nX:w  d  M
  S0 0nX0R                  R                  U   U'   X0R                  R                  U   U'   MF     MY     U R                  R                  5       U R                  l
        U R                  R                  5       U R                  R                  S'   U R                  R                  5       U R                  R                  S'   U R                  R                  5       U R                  R                  S'   g )Nr“   r!   r   r   r   )r3  rh   r•   r–   r   r6  r7  r4   r9   r4  r5   r5  )r   rs   rt   ru   s       r   rš   Ú#TestMultiGraphSubclass.setup_methodù  sP  € Ü'ˆŒ
â/ˆŒÚ ˆŒØ—*‘*“,ˆŒØ—w‘w×9Ñ9à—7‘7×5Ñ5Ó7Ø—7‘7×5Ñ5Ó7Ø—7‘7×5Ñ5Ó7ñó
ˆ�‰Œð  2¨"Ñ-ˆ�‰ŒØ—”ˆAØ—\”\�Ø•6Ø˜B˜�AØ)*—G‘G—L‘L ‘O AÑ&Ø)*—G‘G—L‘L ‘O AÓ&ó	 "ñ ð Ÿ™×1Ñ1Ó3ˆ�‰ŒØŸ7™7×9Ñ9Ó;ˆ�‰�‰�aÑØŸ7™7×9Ñ9Ó;ˆ�‰�‰�aÑØŸ7™7×9Ñ9Ó;ˆ�‰�‰�aÒr   )rh   r   r•   r–   N)rŠ   r‹   rŒ   r�   rš   rŽ   r‰   r   r   r:  r:  ø  s   † õ<r   r:  )Úcollectionsr   rÉ   ÚnetworkxrN   Únetworkx.utilsr   Ú
test_graphr   r   Ú
_TestGraphr	   r�   r  r1  rO   r3  r:  r‰   r   r   Ú<module>rB     sn   ðÝ  ã ã Ý &å +Ý /ôg
Ð.ô g
ôT`!Ð)¨:ô `!÷FN,ñ N,ôb	�hô 	ô.˜Ÿ™ô .ô<˜^õ <r   