+
    )•üiØ  ã                   óx  € ^ RI t ^ RIHt ^ RIHt ^ RIt^ RI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R tR tR tR tR tR tR t R t!R t"R t#R  t$]PJ                  PM                  R"]'! R# U Uu. uF  p R# F  pW3NK  	  K  	  upp 4      4      R! 4       t(R# u upp i )$é    N)Úproduct)Údedentc                  ó
  € \         P                  ! ^^\         P                  R7      p V P                   F9  pR\	        \        R4      V,           4      ,           V P                  V,          R&   K;  	  \        R4      P                  4       p\        R4      P                  4       p\         P                  ! V RR7      pR	P                  V4      V8X  g   Q h\         P                  ! V R
R7      pR	P                  V4      V8X  g   Q hR# )é   ©ÚrÚhÚcreate_usingÚnode_ÚaÚlabeluÁ   
        â•™â”€â”€ 0
            â”œâ”€â•¼ 1
            â”‚   â”œâ”€â•¼ 3
            â”‚   â””â”€â•¼ 4
            â””â”€â•¼ 2
                â”œâ”€â•¼ 5
                â””â”€â•¼ 6
        uä   
        â•™â”€â”€ node_a
            â”œâ”€â•¼ node_b
            â”‚   â”œâ”€â•¼ node_d
            â”‚   â””â”€â•¼ node_e
            â””â”€â•¼ node_c
                â”œâ”€â•¼ node_f
                â””â”€â•¼ node_g
        F)Úwith_labelsÚ
TN)
ÚnxÚbalanced_treeÚDiGraphÚnodesÚchrÚordr   ÚstripÚgenerate_network_textÚjoin)ÚgraphÚnodeÚnode_targetÚlabel_targetÚrets        Ú`/var/www/html/photoedit/myenv/lib/python3.14/site-packages/networkx/readwrite/tests/test_text.pyÚ*test_generate_network_text_forest_directedr   
   sÛ   € ä×Ò˜q A´B·J±JÔ?€EØ—”ˆØ%,¬s´3°s³8¸dµ?Ó/CÕ%Cˆ‰DÕ˜'Ó"ñ ô ð	ó
÷ eƒgð ô ð	ó
÷ eƒgð ô ×
"Ò
" 5°eÔ
<€CØ9‰9S‹>˜[Ô(Ð(Ð(ô ×
"Ò
" 5°dÔ
;€CØ9‰9S‹>˜\Ô)Ð)Ò)ó    c                  ó$  € R  p V ! \         P                  ! 4       4      R8X  g   Q hV ! \         P                  ! 4       4      R8X  g   Q hV ! \         P                  ! 4       RR7      R8X  g   Q hV ! \         P                  ! 4       RR7      R8X  g   Q hR# )c                 ón   € . p\         P                  ! WP                  3R R/VB  RP                  V4      # )ÚendÚ r   )r   Úwrite_network_textÚappendr   )ÚgÚkwÚprintbufs   &, r   Ú
_graph_strÚ7test_write_network_text_empty_graph.<locals>._graph_str2   s2   € ØˆÜ
×Ò˜a§¡Ñ?°bÐ?¸BÒ?Øy‰y˜Ó"Ð"r    u   â•™T)Ú
ascii_onlyÚ+N)r   r   ÚGraph)r*   s    r   Ú#test_write_network_text_empty_graphr/   1   sq   € ò#ñ
 ”b—j’j“lÓ# uÔ,Ð,Ð,Ù”b—h’h“jÓ! UÔ*Ð*Ð*Ù”b—j’j“l¨tÔ4¸Ô;Ð;Ð;Ù”b—h’h“j¨TÔ2°cÔ9Ð9Ò9r    c                  ó\  € \         P                  ! 4       p V P                  . RO4       V P                  ^^4       . pVP                  p\         P
                  ! WRR7       \         P
                  ! WRRR7       RP                  V4      p\        R4      P                  4       pW48X  g   Q hR# )	é   r$   ©Úpathr#   T©r3   r,   r#   r   u›   
        â•Ÿâ”€â”€ 1
        â•Ÿâ”€â”€ 2
        â•Ž   â””â”€â•¼ 4
        â•™â”€â”€ 3
        +-- 1
        +-- 2
        :   L-> 4
        +-- 3
        N©r1   r   é   é   )	r   r   Úadd_nodes_fromÚadd_edger&   r%   r   r   r   )r'   ÚlinesÚwriteÚtextÚtargets        r   Ú+test_write_network_text_within_forest_glyphr>   =   sŽ   € Ü

Š
‹€AØ×Ñ’\Ô"Ø‡JJˆq!ÔØ€EØL‰L€EÜ×Ò˜!¨RÕ0Ü×Ò˜!°D¸bÕAØ9‰9UÓ€DÜð		ó÷ eƒgð ð Œ>ÐŠ>r    c                  ó  € \         P                  ! ^^\         P                  R7      p \         P                  ! ^^\         P                  R7      p\         P                  ! W.4      pRP	                  \         P
                  ! V4      4      p\        R4      P                  4       pW48X  g   Q h\         P                  ! ^^\         P                  R7      p\         P                  ! WV.4      pRP	                  \         P
                  ! V. R
OR7      4      p\        R4      P                  4       pW48X  g   Q hRP	                  \         P
                  ! V. R
ORR7      4      p\        R4      P                  4       pW48X  g   Q hR	# )r   r   r   u‰  
        â•Ÿâ”€â”€ 0
        â•Ž   â”œâ”€â•¼ 1
        â•Ž   â”‚   â”œâ”€â•¼ 3
        â•Ž   â”‚   â””â”€â•¼ 4
        â•Ž   â””â”€â•¼ 2
        â•Ž       â”œâ”€â•¼ 5
        â•Ž       â””â”€â•¼ 6
        â•™â”€â”€ 7
            â”œâ”€â•¼ 8
            â”‚   â”œâ”€â•¼ 10
            â”‚   â””â”€â•¼ 11
            â””â”€â•¼ 9
                â”œâ”€â•¼ 12
                â””â”€â•¼ 13
        ©ÚsourcesuT  
        â•Ÿâ”€â”€ 0
        â•Ž   â”œâ”€â•¼ 1
        â•Ž   â”‚   â”œâ”€â•¼ 3
        â•Ž   â”‚   â””â”€â•¼ 4
        â•Ž   â””â”€â•¼ 2
        â•Ž       â”œâ”€â•¼ 5
        â•Ž       â””â”€â•¼ 6
        â•Ÿâ”€â”€ 14
        â•Ž   â”œâ”€â•¼ 15
        â•Ž   â”‚   â”œâ”€â•¼ 17
        â•Ž   â”‚   â””â”€â•¼ 18
        â•Ž   â””â”€â•¼ 16
        â•Ž       â”œâ”€â•¼ 19
        â•Ž       â””â”€â•¼ 20
        â•™â”€â”€ 7
            â”œâ”€â•¼ 8
            â”‚   â”œâ”€â•¼ 10
            â”‚   â””â”€â•¼ 11
            â””â”€â•¼ 9
                â”œâ”€â•¼ 12
                â””â”€â•¼ 13
        T©rA   r,   a²  
        +-- 0
        :   |-> 1
        :   |   |-> 3
        :   |   L-> 4
        :   L-> 2
        :       |-> 5
        :       L-> 6
        +-- 14
        :   |-> 15
        :   |   |-> 17
        :   |   L-> 18
        :   L-> 16
        :       |-> 19
        :       L-> 20
        +-- 7
            |-> 8
            |   |-> 10
            |   L-> 11
            L-> 9
                |-> 12
                L-> 13
        N)r   é   é   )r   r   r   Údisjoint_union_allr   r   r   r   )Útree1Útree2Úforestr   r=   Útree3s         r   Ú.test_generate_network_text_directed_multi_treerJ   U   s<  € Ü×Ò˜q A´B·J±JÔ?€EÜ×Ò˜q A´B·J±JÔ?€EÜ×"Ò" E >Ó2€FØ
)‰)”B×,Ò,¨VÓ4Ó
5€Cäð	ó÷" eƒgð# ð$ Œ=Ðˆ=ä×Ò˜q A´B·J±JÔ?€EÜ×"Ò" E°%Ð#8Ó9€FØ
)‰)”B×,Ò,¨VºZÔHÓ
I€Cäð	ó÷0 eƒgð1 ð2 Œ=Ðˆ=à
)‰)Ü
× Ò  ²ÈÔMó€Cô ð	ó÷0 eƒgð1 ð2 Œ=ÐŠ=r    c                  ó‚  € \         P                  ! ^^\         P                  R7      p \         P                  ! ^^\         P                  R7      p\         P                  ! YP                   Uu/ uF  q"V\        V 4      ,           bK  	  up4      p\         P                  ! W4      pRP                  \         P                  ! V^ ^.R7      4      p\        R4      P                  4       pWE8X  g   Q hRP                  \         P                  ! V^ ^.RR7      4      p\        R4      P                  4       pWE8X  g   Q hR# u upi )	r   r   r   r@   u‰  
        â•Ÿâ”€â”€ 0
        â•Ž   â”œâ”€â”€ 1
        â•Ž   â”‚   â”œâ”€â”€ 3
        â•Ž   â”‚   â””â”€â”€ 4
        â•Ž   â””â”€â”€ 2
        â•Ž       â”œâ”€â”€ 5
        â•Ž       â””â”€â”€ 6
        â•™â”€â”€ 7
            â”œâ”€â”€ 8
            â”‚   â”œâ”€â”€ 10
            â”‚   â””â”€â”€ 11
            â””â”€â”€ 9
                â”œâ”€â”€ 12
                â””â”€â”€ 13
        TrB   a!  
        +-- 0
        :   |-- 1
        :   |   |-- 3
        :   |   L-- 4
        :   L-- 2
        :       |-- 5
        :       L-- 6
        +-- 7
            |-- 8
            |   |-- 10
            |   L-- 11
            L-- 9
                |-- 12
                L-- 13
        N)r   r   r.   Úrelabel_nodesr   ÚlenÚunionr   r   r   r   )rF   rG   ÚnrH   r   r=   s         r   Ú0test_generate_network_text_undirected_multi_treerP   ®   s  € Ü×Ò˜q A´B·H±HÔ=€EÜ×Ò˜q A´B·H±HÔ=€EÜ×Ò˜UÇÂÓ$LÁ¸1¨¬C°«J­Ò%6ÁÑ$LÓM€EÜXŠXeÓ#€FØ
)‰)”B×,Ò,¨V¸aÀ¸VÔDÓ
E€Cäð	ó÷" eƒgð# ð$ Œ=Ðˆ=à
)‰)”B×,Ò,¨V¸aÀ¸VÐPTÔUÓ
V€Cäð	ó÷" eƒgð# ð$ Œ=ÐŠ=ùòY %Ms   Á-D<
c                  óx  € \         P                  ! ^^\         P                  R7      p \        R4      P	                  4       pRP                  \         P                  ! V ^ .R7      4      pW!8X  g   Q h\        R4      P	                  4       pRP                  \         P                  ! V ^.R7      4      pW#8X  g   Q hR# )r   r   uÁ   
        â•™â”€â”€ 0
            â”œâ”€â”€ 1
            â”‚   â”œâ”€â”€ 3
            â”‚   â””â”€â”€ 4
            â””â”€â”€ 2
                â”œâ”€â”€ 5
                â””â”€â”€ 6
        r   r@   uÇ   
        â•™â”€â”€ 2
            â”œâ”€â”€ 0
            â”‚   â””â”€â”€ 1
            â”‚       â”œâ”€â”€ 3
            â”‚       â””â”€â”€ 4
            â”œâ”€â”€ 5
            â””â”€â”€ 6
        N)r   r   r.   r   r   r   r   )r   Únode_target0r   Únode_target2s       r   Ú,test_generate_network_text_forest_undirectedrT   à   s¨   € ä×Ò˜q A´B·H±HÔ=€Eäð	ó
÷ eƒgð ð )‰)”B×,Ò,¨U¸Q¸CÔ@Ó
A€CØÔÐÐô ð	ó
÷ eƒgð ð )‰)”B×,Ò,¨U¸Q¸CÔ@Ó
A€CØÔÐÒr    c            
     óD  € \         P                  ! \         P                  ! ^^\         P                  R7      \         P                  ! ^^\         P                  R7      \         P                  ! ^^\         P                  R7      .4      p \	        R4      P                  4       p\	        R4      P                  4       pRP                  \         P                  ! W P                  R7      4      pRP                  \         P                  ! V 4      4      pW18X  g   Q hWB8X  g   Q hR# )zš
When sources are directly specified, we won't be able to determine when we
are in the last component, so there will always be a trailing, leftmost
pipe.
r   uå   
        â•Ÿâ”€â”€ 0
        â•Ž   â”œâ”€â•¼ 1
        â•Ž   â””â”€â•¼ 2
        â•Ÿâ”€â”€ 3
        â•Ž   â””â”€â•¼ 4
        â•Ž       â””â”€â•¼ 5
        â•Ÿâ”€â”€ 6
        â•Ž   â”œâ”€â•¼ 7
        â•Ž   â””â”€â•¼ 8
        uá   
        â•Ÿâ”€â”€ 0
        â•Ž   â”œâ”€â•¼ 1
        â•Ž   â””â”€â•¼ 2
        â•Ÿâ”€â”€ 3
        â•Ž   â””â”€â•¼ 4
        â•Ž       â””â”€â•¼ 5
        â•™â”€â”€ 6
            â”œâ”€â•¼ 7
            â””â”€â•¼ 8
        r   r@   N)	r   rE   r   r   r   r   r   r   r   )r   Útarget1Útarget2Úgot1Úgot2s        r   Ú0test_generate_network_text_overspecified_sourcesrZ     sá   € ô ×!Ò!ä×Ò˜q A´B·J±JÔ?Ü×Ò˜q A´B·J±JÔ?Ü×Ò˜q A´B·J±JÔ?ð	
ó€Eô ð
	ó÷ eƒgð ô ð
	ó÷ eƒgð ð 9‰9”R×-Ò-¨e¿[¹[ÔIÓJ€DØ9‰9”R×-Ò-¨eÓ4Ó5€DØŒ?Ðˆ?ØŒ?ÐŠ?r    c                 óØ  € \         P                  ! 4       p V P                  . R
O4       . pVP                  pV! R4       \         P                  ! WRR7       \        V P                  V P                  4       F=  w  r4V! RV RV R24       V P                  W44       \         P                  ! WRR7       K?  	  RP                  V4      p\        R4      P                  4       pWe8X  g   Q hR	# )úK
Walk through the cases going from a disconnected to fully connected graph
ú--- initial state ---r$   r2   ú--- add_edge(ú, ú) ---r   uk  
        --- initial state ---
        â•Ÿâ”€â”€ 1
        â•Ÿâ”€â”€ 2
        â•Ÿâ”€â”€ 3
        â•™â”€â”€ 4
        --- add_edge(1, 1) ---
        â•Ÿâ”€â”€ 1 â•¾ 1
        â•Ž   â””â”€â•¼  ...
        â•Ÿâ”€â”€ 2
        â•Ÿâ”€â”€ 3
        â•™â”€â”€ 4
        --- add_edge(1, 2) ---
        â•Ÿâ”€â”€ 1 â•¾ 1
        â•Ž   â”œâ”€â•¼ 2
        â•Ž   â””â”€â•¼  ...
        â•Ÿâ”€â”€ 3
        â•™â”€â”€ 4
        --- add_edge(1, 3) ---
        â•Ÿâ”€â”€ 1 â•¾ 1
        â•Ž   â”œâ”€â•¼ 2
        â•Ž   â”œâ”€â•¼ 3
        â•Ž   â””â”€â•¼  ...
        â•™â”€â”€ 4
        --- add_edge(1, 4) ---
        â•™â”€â”€ 1 â•¾ 1
            â”œâ”€â•¼ 2
            â”œâ”€â•¼ 3
            â”œâ”€â•¼ 4
            â””â”€â•¼  ...
        --- add_edge(2, 1) ---
        â•™â”€â”€ 2 â•¾ 1
            â””â”€â•¼ 1 â•¾ 1
                â”œâ”€â•¼ 3
                â”œâ”€â•¼ 4
                â””â”€â•¼  ...
        --- add_edge(2, 2) ---
        â•™â”€â”€ 1 â•¾ 1, 2
            â”œâ”€â•¼ 2 â•¾ 2
            â”‚   â””â”€â•¼  ...
            â”œâ”€â•¼ 3
            â”œâ”€â•¼ 4
            â””â”€â•¼  ...
        --- add_edge(2, 3) ---
        â•™â”€â”€ 1 â•¾ 1, 2
            â”œâ”€â•¼ 2 â•¾ 2
            â”‚   â”œâ”€â•¼ 3 â•¾ 1
            â”‚   â””â”€â•¼  ...
            â”œâ”€â•¼ 4
            â””â”€â•¼  ...
        --- add_edge(2, 4) ---
        â•™â”€â”€ 1 â•¾ 1, 2
            â”œâ”€â•¼ 2 â•¾ 2
            â”‚   â”œâ”€â•¼ 3 â•¾ 1
            â”‚   â”œâ”€â•¼ 4 â•¾ 1
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- add_edge(3, 1) ---
        â•™â”€â”€ 2 â•¾ 1, 2
            â”œâ”€â•¼ 1 â•¾ 1, 3
            â”‚   â”œâ”€â•¼ 3 â•¾ 2
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”œâ”€â•¼ 4 â•¾ 2
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- add_edge(3, 2) ---
        â•™â”€â”€ 3 â•¾ 1, 2
            â”œâ”€â•¼ 1 â•¾ 1, 2
            â”‚   â”œâ”€â•¼ 2 â•¾ 2, 3
            â”‚   â”‚   â”œâ”€â•¼ 4 â•¾ 1
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- add_edge(3, 3) ---
        â•™â”€â”€ 1 â•¾ 1, 2, 3
            â”œâ”€â•¼ 2 â•¾ 2, 3
            â”‚   â”œâ”€â•¼ 3 â•¾ 1, 3
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”œâ”€â•¼ 4 â•¾ 1
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- add_edge(3, 4) ---
        â•™â”€â”€ 1 â•¾ 1, 2, 3
            â”œâ”€â•¼ 2 â•¾ 2, 3
            â”‚   â”œâ”€â•¼ 3 â•¾ 1, 3
            â”‚   â”‚   â”œâ”€â•¼ 4 â•¾ 1, 2
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- add_edge(4, 1) ---
        â•™â”€â”€ 2 â•¾ 1, 2, 3
            â”œâ”€â•¼ 1 â•¾ 1, 3, 4
            â”‚   â”œâ”€â•¼ 3 â•¾ 2, 3
            â”‚   â”‚   â”œâ”€â•¼ 4 â•¾ 1, 2
            â”‚   â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- add_edge(4, 2) ---
        â•™â”€â”€ 3 â•¾ 1, 2, 3
            â”œâ”€â•¼ 1 â•¾ 1, 2, 4
            â”‚   â”œâ”€â•¼ 2 â•¾ 2, 3, 4
            â”‚   â”‚   â”œâ”€â•¼ 4 â•¾ 1, 3
            â”‚   â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- add_edge(4, 3) ---
        â•™â”€â”€ 4 â•¾ 1, 2, 3
            â”œâ”€â•¼ 1 â•¾ 1, 2, 3
            â”‚   â”œâ”€â•¼ 2 â•¾ 2, 3, 4
            â”‚   â”‚   â”œâ”€â•¼ 3 â•¾ 1, 3, 4
            â”‚   â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- add_edge(4, 4) ---
        â•™â”€â”€ 1 â•¾ 1, 2, 3, 4
            â”œâ”€â•¼ 2 â•¾ 2, 3, 4
            â”‚   â”œâ”€â•¼ 3 â•¾ 1, 3, 4
            â”‚   â”‚   â”œâ”€â•¼ 4 â•¾ 1, 2, 4
            â”‚   â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        Nr5   )r   r   r8   r&   r%   r   r   r9   r   r   r   ©r   r:   r;   ÚiÚjr<   r=   s          r   Ú4test_write_network_text_iterative_add_directed_edgesrd   5  sÎ   € ô JŠJ‹L€EØ	×ÑšÔ&Ø€EØL‰L€EÙ	Ð
!Ô"Ü×Ò˜%°Õ4Ü˜Ÿ™ U§[¡[Ö1‰ˆÙ˜a˜S  1 # UÐ+Ô,Ø‰qÔÜ
×Ò˜e°R×8ñ 2ð 9‰9UÓ€Däð}	ó÷~ eƒgð ð@ Œ>ÐŠ>r    c                 óè  € \         P                  ! 4       p V P                  . R
O4       . pVP                  pV! R4       \         P                  ! WRR7       \        V P                  V P                  4       FE  w  r4W48X  d   K  V! RV RV R24       V P                  W44       \         P                  ! WRR7       KG  	  RP                  V4      p\        R4      P                  4       pWe8X  g   Q hR	# )r\   r]   r$   r2   r^   r_   r`   r   uø  
        --- initial state ---
        â•Ÿâ”€â”€ 1
        â•Ÿâ”€â”€ 2
        â•Ÿâ”€â”€ 3
        â•™â”€â”€ 4
        --- add_edge(1, 2) ---
        â•Ÿâ”€â”€ 3
        â•Ÿâ”€â”€ 4
        â•™â”€â”€ 1
            â””â”€â”€ 2
        --- add_edge(1, 3) ---
        â•Ÿâ”€â”€ 4
        â•™â”€â”€ 2
            â””â”€â”€ 1
                â””â”€â”€ 3
        --- add_edge(1, 4) ---
        â•™â”€â”€ 2
            â””â”€â”€ 1
                â”œâ”€â”€ 3
                â””â”€â”€ 4
        --- add_edge(2, 1) ---
        â•™â”€â”€ 2
            â””â”€â”€ 1
                â”œâ”€â”€ 3
                â””â”€â”€ 4
        --- add_edge(2, 3) ---
        â•™â”€â”€ 4
            â””â”€â”€ 1
                â”œâ”€â”€ 2
                â”‚   â””â”€â”€ 3 â”€ 1
                â””â”€â”€  ...
        --- add_edge(2, 4) ---
        â•™â”€â”€ 3
            â”œâ”€â”€ 1
            â”‚   â”œâ”€â”€ 2 â”€ 3
            â”‚   â”‚   â””â”€â”€ 4 â”€ 1
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        --- add_edge(3, 1) ---
        â•™â”€â”€ 3
            â”œâ”€â”€ 1
            â”‚   â”œâ”€â”€ 2 â”€ 3
            â”‚   â”‚   â””â”€â”€ 4 â”€ 1
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        --- add_edge(3, 2) ---
        â•™â”€â”€ 3
            â”œâ”€â”€ 1
            â”‚   â”œâ”€â”€ 2 â”€ 3
            â”‚   â”‚   â””â”€â”€ 4 â”€ 1
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        --- add_edge(3, 4) ---
        â•™â”€â”€ 1
            â”œâ”€â”€ 2
            â”‚   â”œâ”€â”€ 3 â”€ 1
            â”‚   â”‚   â””â”€â”€ 4 â”€ 1, 2
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        --- add_edge(4, 1) ---
        â•™â”€â”€ 1
            â”œâ”€â”€ 2
            â”‚   â”œâ”€â”€ 3 â”€ 1
            â”‚   â”‚   â””â”€â”€ 4 â”€ 1, 2
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        --- add_edge(4, 2) ---
        â•™â”€â”€ 1
            â”œâ”€â”€ 2
            â”‚   â”œâ”€â”€ 3 â”€ 1
            â”‚   â”‚   â””â”€â”€ 4 â”€ 1, 2
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        --- add_edge(4, 3) ---
        â•™â”€â”€ 1
            â”œâ”€â”€ 2
            â”‚   â”œâ”€â”€ 3 â”€ 1
            â”‚   â”‚   â””â”€â”€ 4 â”€ 1, 2
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        Nr5   )r   r.   r8   r&   r%   r   r   r9   r   r   r   ra   s          r   Ú6test_write_network_text_iterative_add_undirected_edgesrf   È  sÖ   € ô HŠH‹J€EØ	×ÑšÔ&Ø€EØL‰L€EÙ	Ð
!Ô"Ü×Ò˜%°Õ4Ü˜Ÿ™ U§[¡[Ö1‰ˆØŒ6ÙÙ˜a˜S  1 # UÐ+Ô,Ø‰qÔÜ
×Ò˜e°R×8ñ 2ð 9‰9UÓ€DÜðQ	óS÷f eƒgðg ðh Œ>ÐŠ>r    c                 óz  € \         P                  ! R4      p \        P                  ! 4       pVP	                  . RO4       \        \        VP                  VP                  4      4      pV P                  V4       VP                  VR,          4       . pVP                  pV! R4       \        P                  ! WRR7       VR,           F=  w  rVV! RV RV R	24       VP                  WV4       \        P                  ! WRR7       K?  	  R
P                  V4      p\        R4      P                  4       pW‡8X  g   Q hR# )r\   i°y.+:r   é   Nr]   r$   r2   :rh   é   Nr^   r_   r`   r   u7  
        --- initial state ---
        â•™â”€â”€ 3 â•¾ 5
            â””â”€â•¼ 2 â•¾ 2
                â”œâ”€â•¼ 4 â•¾ 4
                â”‚   â”œâ”€â•¼ 5
                â”‚   â”‚   â”œâ”€â•¼ 1 â•¾ 1
                â”‚   â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â””â”€â•¼  ...
                â””â”€â•¼  ...
        --- add_edge(4, 1) ---
        â•™â”€â”€ 3 â•¾ 5
            â””â”€â•¼ 2 â•¾ 2
                â”œâ”€â•¼ 4 â•¾ 4
                â”‚   â”œâ”€â•¼ 5
                â”‚   â”‚   â”œâ”€â•¼ 1 â•¾ 1, 4
                â”‚   â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â””â”€â•¼  ...
                â””â”€â•¼  ...
        --- add_edge(2, 1) ---
        â•™â”€â”€ 3 â•¾ 5
            â””â”€â•¼ 2 â•¾ 2
                â”œâ”€â•¼ 4 â•¾ 4
                â”‚   â”œâ”€â•¼ 5
                â”‚   â”‚   â”œâ”€â•¼ 1 â•¾ 1, 4, 2
                â”‚   â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â””â”€â•¼  ...
                â””â”€â•¼  ...
        --- add_edge(5, 2) ---
        â•™â”€â”€ 3 â•¾ 5
            â””â”€â•¼ 2 â•¾ 2, 5
                â”œâ”€â•¼ 4 â•¾ 4
                â”‚   â”œâ”€â•¼ 5
                â”‚   â”‚   â”œâ”€â•¼ 1 â•¾ 1, 4, 2
                â”‚   â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â””â”€â•¼  ...
                â””â”€â•¼  ...
        --- add_edge(1, 5) ---
        â•™â”€â”€ 3 â•¾ 5
            â””â”€â•¼ 2 â•¾ 2, 5
                â”œâ”€â•¼ 4 â•¾ 4
                â”‚   â”œâ”€â•¼ 5 â•¾ 1
                â”‚   â”‚   â”œâ”€â•¼ 1 â•¾ 1, 4, 2
                â”‚   â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â””â”€â•¼  ...
                â””â”€â•¼  ...

        N)r1   r   r6   r7   é   )ÚrandomÚRandomr   r   r8   Úlistr   r   ÚshuffleÚadd_edges_fromr&   r%   r9   r   r   r   )	Úrngr   Úpossible_edgesr:   r;   rb   rc   r<   r=   s	            r   Ú;test_write_network_text_iterative_add_random_directed_edgesrr   0  s  € ô
 -Š-˜	Ó
"€CÜJŠJ‹L€EØ	×ÑšÔ)Üœ' %§+¡+¨u¯{©{Ó;Ó<€NØ‡KKÔØ	×Ñ˜¨Õ,Ô-Ø€EØL‰L€EÙ	Ð
!Ô"Ü×Ò˜%°Õ4Ø˜t×$Ð$‰ˆÙ˜a˜S  1 # UÐ+Ô,Ø‰qÔÜ
×Ò˜e°R×8ñ %ð 9‰9UÓ€DÜð4	ó6÷l eƒgðm ðn Œ>ÐŠ>r    c                  ó|  € \         P                  ! 4       p V P                  ^^4       V P                  ^^4       V P                  ^^4       V P                  ^^4       V P                  ^^4       V P                  ^^4       V P                  ^^4       V P                  4       pV P                  ^^4       V P                  ^^4       V P                  ^^4       . pVP                  pV! R4       \         P
                  ! WRR7       V! R4       \         P
                  ! WRR7       V! R4       \         P
                  ! VP                  4       V^.RR7       V! R4       \         P
                  ! V P                  4       V^.RR7       RP                  V4      p\        R4      P                  4       pWT8X  g   Q hR	# )
r1   ú--- directed case ---r$   r2   z"--- add (1, 8), (4, 2), (6, 3) ---ú--- undirected case ---©r3   rA   r#   r   u  
        --- directed case ---
        â•™â”€â”€ 1
            â”œâ”€â•¼ 2
            â”‚   â””â”€â•¼ 3
            â”‚       â””â”€â•¼ 4
            â””â”€â•¼ 5
                â””â”€â•¼ 6
                    â”œâ”€â•¼ 7
                    â””â”€â•¼ 8
        --- add (1, 8), (4, 2), (6, 3) ---
        â•™â”€â”€ 1
            â”œâ”€â•¼ 2 â•¾ 4
            â”‚   â””â”€â•¼ 3 â•¾ 6
            â”‚       â””â”€â•¼ 4
            â”‚           â””â”€â•¼  ...
            â”œâ”€â•¼ 5
            â”‚   â””â”€â•¼ 6
            â”‚       â”œâ”€â•¼ 7
            â”‚       â”œâ”€â•¼ 8 â•¾ 1
            â”‚       â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- undirected case ---
        â•™â”€â”€ 1
            â”œâ”€â”€ 2
            â”‚   â””â”€â”€ 3
            â”‚       â””â”€â”€ 4
            â””â”€â”€ 5
                â””â”€â”€ 6
                    â”œâ”€â”€ 7
                    â””â”€â”€ 8
        --- add (1, 8), (4, 2), (6, 3) ---
        â•™â”€â”€ 1
            â”œâ”€â”€ 2
            â”‚   â”œâ”€â”€ 3
            â”‚   â”‚   â”œâ”€â”€ 4 â”€ 2
            â”‚   â”‚   â””â”€â”€ 6
            â”‚   â”‚       â”œâ”€â”€ 5 â”€ 1
            â”‚   â”‚       â”œâ”€â”€ 7
            â”‚   â”‚       â””â”€â”€ 8 â”€ 1
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        N)
r   r   r9   Úcopyr&   r%   Úto_undirectedr   r   r   )r'   Úorigr:   r;   r<   r=   s         r   Ú%test_write_network_text_nearly_forestrz   ~  sj  € Ü

Š
‹€AØ‡JJˆq!ÔØ‡JJˆq!ÔØ‡JJˆq!ÔØ‡JJˆq!ÔØ‡JJˆq!ÔØ‡JJˆq!ÔØ‡JJˆq!ÔØ6‰6‹8€DØ‡JJˆq!ÔØ‡JJˆq!ÔØ‡JJˆq!ÔØ€EØL‰L€EÙ	Ð
!Ô"Ü×Ò˜$°Õ3Ù	Ð
.Ô/Ü×Ò˜!¨RÕ0Ù	Ð
#Ô$Ü×Ò˜$×,Ñ,Ó.°UÀQÀCÈRÕPÙ	Ð
.Ô/Ü×Ò˜!Ÿ/™/Ó+°%À!ÀÈ"ÕMØ9‰9UÓ€DÜð*	ó,÷X eƒgðY ðZ Œ>ÐŠ>r    c                  ó†  € \         P                  P                  ^\         P                  R7      p . pVP                  pV! R4       \         P
                  ! WRRR7       V! R4       \         P
                  ! V P                  4       VRRR7       RP                  V4      p\        R4      P                  4       pWC8X  g   Q hR	# )
rj   ©r
   rt   Tr$   r4   ru   r   aN  
        --- directed case ---
        +-- 0 <- 1, 2, 3, 4
            |-> 1 <- 2, 3, 4
            |   |-> 2 <- 0, 3, 4
            |   |   |-> 3 <- 0, 1, 4
            |   |   |   |-> 4 <- 0, 1, 2
            |   |   |   |   L->  ...
            |   |   |   L->  ...
            |   |   L->  ...
            |   L->  ...
            L->  ...
        --- undirected case ---
        +-- 0
            |-- 1
            |   |-- 2 - 0
            |   |   |-- 3 - 0, 1
            |   |   |   L-- 4 - 0, 1, 2
            |   |   L--  ...
            |   L--  ...
            L--  ...
        N)
r   Ú
generatorsÚcomplete_graphr   r&   r%   rx   r   r   r   ©r   r:   r;   r<   r=   s        r   Ú1test_write_network_text_complete_graph_ascii_onlyr€   Æ  s¤   € ÜM‰M×(Ñ(¨¼¿¹Ð(ÓD€EØ€EØL‰L€EÙ	Ð
!Ô"Ü×Ò˜%¸À"ÕEÙ	Ð
#Ô$Ü×Ò˜%×-Ñ-Ó/°eÈÐRTÕUØ9‰9UÓ€DÜð	ó÷. eƒgð/ ð0 Œ>ÐŠ>r    c                  ór  € \         P                  P                  ^\         P                  R7      p V P                   F  pRV R2V P                  V,          R&   K  	  . pVP
                  p\         P                  ! WRRRR7       R	P                  V4      p\        R
4      P                  4       pWT8X  g   Q hR# )rj   r|   zNode(n=Ú)r   TFr$   )r3   r   r,   r#   r   uK  
        â•™â”€â”€ Node(n=0) â•¾ Node(n=1), Node(n=2), Node(n=3), Node(n=4)
            â”œâ”€â•¼ Node(n=1) â•¾ Node(n=2), Node(n=3), Node(n=4)
            â”‚   â”œâ”€â•¼ Node(n=2) â•¾ Node(n=0), Node(n=3), Node(n=4)
            â”‚   â”‚   â”œâ”€â•¼ Node(n=3) â•¾ Node(n=0), Node(n=1), Node(n=4)
            â”‚   â”‚   â”‚   â”œâ”€â•¼ Node(n=4) â•¾ Node(n=0), Node(n=1), Node(n=2)
            â”‚   â”‚   â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        N)
r   r}   r~   r   r   r&   r%   r   r   r   )r   rO   r:   r;   r<   r=   s         r   Ú#test_write_network_text_with_labelsrƒ   ê  s¡   € ÜM‰M×(Ñ(¨¼¿¹Ð(ÓD€EØ[Œ[ˆØ$+¨A¨3¨a .ˆ‰AwÓñ à€EØL‰L€EÜ×Ò˜%¸È%ÐUWÕXØ9‰9UÓ€Dô ð	ó÷ eƒgð ð Œ>ÐŠ>r    c                  óÔ  € . p V P                   pR	 FF  p\        P                  P                  V4      pV! RV R24       \        P                  ! W1RR7       KH  	  R	 FU  p\        P                  P                  V\        P
                  4      pV! RV R24       \        P                  ! W1RR7       KW  	  RP                  V 4      p\        R4      P                  4       pWT8X  g   Q hR# )
r   z--- undirected k=ú ---r$   r2   z--- directed k=r   ué  
        --- undirected k=0 ---
        â•™
        --- undirected k=1 ---
        â•™â”€â”€ 0
        --- undirected k=2 ---
        â•™â”€â”€ 0
            â””â”€â”€ 1
        --- undirected k=3 ---
        â•™â”€â”€ 0
            â”œâ”€â”€ 1
            â”‚   â””â”€â”€ 2 â”€ 0
            â””â”€â”€  ...
        --- undirected k=4 ---
        â•™â”€â”€ 0
            â”œâ”€â”€ 1
            â”‚   â”œâ”€â”€ 2 â”€ 0
            â”‚   â”‚   â””â”€â”€ 3 â”€ 0, 1
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        --- undirected k=5 ---
        â•™â”€â”€ 0
            â”œâ”€â”€ 1
            â”‚   â”œâ”€â”€ 2 â”€ 0
            â”‚   â”‚   â”œâ”€â”€ 3 â”€ 0, 1
            â”‚   â”‚   â”‚   â””â”€â”€ 4 â”€ 0, 1, 2
            â”‚   â”‚   â””â”€â”€  ...
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        --- directed k=0 ---
        â•™
        --- directed k=1 ---
        â•™â”€â”€ 0
        --- directed k=2 ---
        â•™â”€â”€ 0 â•¾ 1
            â””â”€â•¼ 1
                â””â”€â•¼  ...
        --- directed k=3 ---
        â•™â”€â”€ 0 â•¾ 1, 2
            â”œâ”€â•¼ 1 â•¾ 2
            â”‚   â”œâ”€â•¼ 2 â•¾ 0
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- directed k=4 ---
        â•™â”€â”€ 0 â•¾ 1, 2, 3
            â”œâ”€â•¼ 1 â•¾ 2, 3
            â”‚   â”œâ”€â•¼ 2 â•¾ 0, 3
            â”‚   â”‚   â”œâ”€â•¼ 3 â•¾ 0, 1
            â”‚   â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- directed k=5 ---
        â•™â”€â”€ 0 â•¾ 1, 2, 3, 4
            â”œâ”€â•¼ 1 â•¾ 2, 3, 4
            â”‚   â”œâ”€â•¼ 2 â•¾ 0, 3, 4
            â”‚   â”‚   â”œâ”€â•¼ 3 â•¾ 0, 1, 4
            â”‚   â”‚   â”‚   â”œâ”€â•¼ 4 â•¾ 0, 1, 2
            â”‚   â”‚   â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        N)r   r1   r   r6   r7   rj   )	r&   r   r}   r~   r%   r   r   r   r   )r:   r;   Úkr'   r<   r=   s         r   Ú'test_write_network_text_complete_graphsr‡     sÓ   € Ø€EØL‰L€EÛˆÜM‰M×(Ñ(¨Ó+ˆÙÐ! !  DÐ)Ô*Ü
×Ò˜a°×4ñ  ó
  ˆÜM‰M×(Ñ(¨¬B¯J©JÓ7ˆÙ ˜s $Ð'Ô(Ü
×Ò˜a°×4ñ  ð 9‰9UÓ€DÜð@	óB÷D eƒgðE ðF Œ>ÐŠ>r    c                  ó`  € \         P                  ! 4       p V P                  ^^4       V P                  ^^4       V P                  ^^4       V P                  ^^4       V P                  ^^4       V P                  ^^4       V P                  ^^4       V P                  ^^4       . pVP                  p\	        V P                  4       4      pV F)  pV! RV R24       \         P                  ! WV.RR7       K+  	  RP                  V4      p\        R4      P                  4       pWe8X  g   Q hR# )r1   z--- source node: r…   r$   rv   r   ux  
        --- source node: 1 ---
        â•™â”€â”€ 1 â•¾ 4
            â”œâ”€â•¼ 2
            â”‚   â””â”€â•¼ 4 â•¾ 5
            â”‚       â””â”€â•¼  ...
            â”œâ”€â•¼ 3
            â”‚   â”œâ”€â•¼ 5 â•¾ 1
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼ 6
            â””â”€â•¼  ...
        --- source node: 2 ---
        â•™â”€â”€ 2 â•¾ 1
            â””â”€â•¼ 4 â•¾ 5
                â””â”€â•¼ 1
                    â”œâ”€â•¼ 3
                    â”‚   â”œâ”€â•¼ 5 â•¾ 1
                    â”‚   â”‚   â””â”€â•¼  ...
                    â”‚   â””â”€â•¼ 6
                    â””â”€â•¼  ...
        --- source node: 3 ---
        â•™â”€â”€ 3 â•¾ 1
            â”œâ”€â•¼ 5 â•¾ 1
            â”‚   â””â”€â•¼ 4 â•¾ 2
            â”‚       â””â”€â•¼ 1
            â”‚           â”œâ”€â•¼ 2
            â”‚           â”‚   â””â”€â•¼  ...
            â”‚           â””â”€â•¼  ...
            â””â”€â•¼ 6
        --- source node: 4 ---
        â•™â”€â”€ 4 â•¾ 2, 5
            â””â”€â•¼ 1
                â”œâ”€â•¼ 2
                â”‚   â””â”€â•¼  ...
                â”œâ”€â•¼ 3
                â”‚   â”œâ”€â•¼ 5 â•¾ 1
                â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â””â”€â•¼ 6
                â””â”€â•¼  ...
        --- source node: 5 ---
        â•™â”€â”€ 5 â•¾ 3, 1
            â””â”€â•¼ 4 â•¾ 2
                â””â”€â•¼ 1
                    â”œâ”€â•¼ 2
                    â”‚   â””â”€â•¼  ...
                    â”œâ”€â•¼ 3
                    â”‚   â”œâ”€â•¼ 6
                    â”‚   â””â”€â•¼  ...
                    â””â”€â•¼  ...
        --- source node: 6 ---
        â•™â”€â”€ 6 â•¾ 3
        N)
r   r   r9   r&   Úsortedr   r%   r   r   r   )r'   r:   r;   r   rO   r<   r=   s          r   Ú(test_write_network_text_multiple_sourcesrŠ   X  s  € Ü

Š
‹€AØ‡JJˆq!ÔØ‡JJˆq!ÔØ‡JJˆq!ÔØ‡JJˆq!ÔØ‡JJˆq!ÔØ‡JJˆq!ÔØ‡JJˆq!ÔØ‡JJˆq!ÔØ€EØL‰L€Eô 1—7‘7“9Ó€EÛˆÙÐ! !  DÐ)Ô*Ü
×Ò˜a°a°S¸b×Añ ð 9‰9UÓ€DÜð3	ó5÷j eƒgðk ðl Œ>ÐŠ>r    c                  ó  € \         P                  ! ^\         P                  R7      p . pVP                  p\         P                  ! WRR7       RP                  V4      p\        R4      P                  4       pWC8X  g   Q hR# )rj   r|   r$   r2   r   u¥   
        â•™â”€â”€ 1
            â””â”€â”€ 0
                â”œâ”€â”€ 2
                â”œâ”€â”€ 3
                â”œâ”€â”€ 4
                â””â”€â”€ 5
        N)r   Ú
star_graphr.   r&   r%   r   r   r   r   s        r   Ú"test_write_network_text_star_graphr   ¤  si   € ÜMŠM˜!¬"¯(©(Ô3€EØ€EØL‰L€EÜ×Ò˜%°Õ4Ø9‰9UÓ€DÜð	ó	÷ eƒgð ð Œ>ÐŠ>r    c                  ó  € \         P                  ! ^\         P                  R7      p . pVP                  p\         P                  ! WRR7       RP                  V4      p\        R4      P                  4       pWC8X  g   Q hR# )r6   r|   r$   r2   r   uQ   
        â•™â”€â”€ 0
            â””â”€â”€ 1
                â””â”€â”€ 2
        N)r   Ú
path_graphr.   r&   r%   r   r   r   r   s        r   Ú"test_write_network_text_path_graphr   ·  si   € ÜMŠM˜!¬"¯(©(Ô3€EØ€EØL‰L€EÜ×Ò˜%°Õ4Ø9‰9UÓ€DÜð	ó÷ eƒgð ð Œ>ÐŠ>r    c                  ó  € \         P                  ! ^^\         P                  R7      p . pVP                  p\         P                  ! WRR7       RP                  V4      p\        R4      P                  4       pWC8X  g   Q hR# )r7   r|   r$   r2   r   u  
        â•™â”€â”€ 5
            â””â”€â”€ 4
                â””â”€â”€ 3
                    â”œâ”€â”€ 0
                    â”‚   â”œâ”€â”€ 1 â”€ 3
                    â”‚   â”‚   â””â”€â”€ 2 â”€ 0, 3
                    â”‚   â””â”€â”€  ...
                    â””â”€â”€  ...
        N)r   Úlollipop_graphr.   r&   r%   r   r   r   r   s        r   Ú&test_write_network_text_lollipop_graphr“   Ç  sm   € Ü×Ò˜a ´·±Ô:€EØ€EØL‰L€EÜ×Ò˜%°Õ4Ø9‰9UÓ€DÜð		ó÷ eƒgð ð Œ>ÐŠ>r    c                  ó  € \         P                  ! ^\         P                  R7      p . pVP                  p\         P                  ! WRR7       RP                  V4      p\        R4      P                  4       pWC8X  g   Q hR# )rD   r|   r$   r2   r   uX  
        â•™â”€â”€ 1
            â”œâ”€â”€ 0
            â”‚   â”œâ”€â”€ 2 â”€ 1
            â”‚   â”‚   â””â”€â”€ 3 â”€ 0
            â”‚   â”‚       â””â”€â”€ 4 â”€ 0
            â”‚   â”‚           â””â”€â”€ 5 â”€ 0
            â”‚   â”‚               â””â”€â”€ 6 â”€ 0, 1
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        N)r   Úwheel_graphr.   r&   r%   r   r   r   r   s        r   Ú#test_write_network_text_wheel_graphr–   Ü  si   € ÜNŠN˜1¬2¯8©8Ô4€EØ€EØL‰L€EÜ×Ò˜%°Õ4Ø9‰9UÓ€DÜð
	ó÷ eƒgð ð Œ>ÐŠ>r    c                  ó  € \         P                  ! ^\         P                  R7      p . pVP                  p\         P                  ! WRR7       RP                  V4      p\        R4      P                  4       pWC8X  g   Q hR# )r7   r|   r$   r2   r   uê  
        â•™â”€â”€ 0
            â”œâ”€â”€ 1
            â”‚   â”œâ”€â”€ 2
            â”‚   â”‚   â”œâ”€â”€ 3 â”€ 0
            â”‚   â”‚   â”‚   â””â”€â”€ 7
            â”‚   â”‚   â”‚       â”œâ”€â”€ 6 â”€ 2
            â”‚   â”‚   â”‚       â”‚   â””â”€â”€ 5 â”€ 1
            â”‚   â”‚   â”‚       â”‚       â””â”€â”€ 4 â”€ 0, 7
            â”‚   â”‚   â”‚       â””â”€â”€  ...
            â”‚   â”‚   â””â”€â”€  ...
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        N)r   Úcircular_ladder_graphr.   r&   r%   r   r   r   r   s        r   Ú-test_write_network_text_circular_ladder_graphr™   ò  sk   € Ü×$Ò$ Q´R·X±XÔ>€EØ€EØL‰L€EÜ×Ò˜%°Õ4Ø9‰9UÓ€DÜð	ó÷ eƒgð ð  Œ>ÐŠ>r    c                  ó  € \         P                  ! ^\         P                  R7      p . pVP                  p\         P                  ! WRR7       RP                  V4      p\        R4      P                  4       pWC8X  g   Q hR# )r7   r|   r$   r2   r   u›	  
        â•™â”€â”€ 15
            â”œâ”€â”€ 0
            â”‚   â”œâ”€â”€ 1 â”€ 15
            â”‚   â”‚   â”œâ”€â”€ 2 â”€ 0
            â”‚   â”‚   â”‚   â”œâ”€â”€ 4 â”€ 0
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 9 â”€ 0
            â”‚   â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 22 â”€ 0
            â”‚   â”‚   â”‚   â”‚   â”‚   â””â”€â”€ 38 â”€ 4
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 13 â”€ 2
            â”‚   â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 34 â”€ 2
            â”‚   â”‚   â”‚   â”‚   â”‚   â””â”€â”€ 39 â”€ 4
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 18 â”€ 0
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 30 â”€ 2
            â”‚   â”‚   â”‚   â”‚   â””â”€â”€  ...
            â”‚   â”‚   â”‚   â”œâ”€â”€ 5 â”€ 1
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 12 â”€ 1
            â”‚   â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 29 â”€ 1
            â”‚   â”‚   â”‚   â”‚   â”‚   â””â”€â”€ 40 â”€ 5
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 14 â”€ 2
            â”‚   â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 35 â”€ 2
            â”‚   â”‚   â”‚   â”‚   â”‚   â””â”€â”€ 41 â”€ 5
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 25 â”€ 1
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 31 â”€ 2
            â”‚   â”‚   â”‚   â”‚   â””â”€â”€  ...
            â”‚   â”‚   â”‚   â”œâ”€â”€ 7 â”€ 0
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 20 â”€ 0
            â”‚   â”‚   â”‚   â”‚   â””â”€â”€ 32 â”€ 2
            â”‚   â”‚   â”‚   â”œâ”€â”€ 10 â”€ 1
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 27 â”€ 1
            â”‚   â”‚   â”‚   â”‚   â””â”€â”€ 33 â”€ 2
            â”‚   â”‚   â”‚   â”œâ”€â”€ 16 â”€ 0
            â”‚   â”‚   â”‚   â”œâ”€â”€ 23 â”€ 1
            â”‚   â”‚   â”‚   â””â”€â”€  ...
            â”‚   â”‚   â”œâ”€â”€ 3 â”€ 0
            â”‚   â”‚   â”‚   â”œâ”€â”€ 8 â”€ 0
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 21 â”€ 0
            â”‚   â”‚   â”‚   â”‚   â””â”€â”€ 36 â”€ 3
            â”‚   â”‚   â”‚   â”œâ”€â”€ 11 â”€ 1
            â”‚   â”‚   â”‚   â”‚   â”œâ”€â”€ 28 â”€ 1
            â”‚   â”‚   â”‚   â”‚   â””â”€â”€ 37 â”€ 3
            â”‚   â”‚   â”‚   â”œâ”€â”€ 17 â”€ 0
            â”‚   â”‚   â”‚   â”œâ”€â”€ 24 â”€ 1
            â”‚   â”‚   â”‚   â””â”€â”€  ...
            â”‚   â”‚   â”œâ”€â”€ 6 â”€ 0
            â”‚   â”‚   â”‚   â”œâ”€â”€ 19 â”€ 0
            â”‚   â”‚   â”‚   â””â”€â”€ 26 â”€ 1
            â”‚   â”‚   â””â”€â”€  ...
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        N)r   Ú dorogovtsev_goltsev_mendes_graphr.   r&   r%   r   r   r   r   s        r   Ú8test_write_network_text_dorogovtsev_goltsev_mendes_graphrœ     sn   € Ü×/Ò/°ÄÇÁÔI€EØ€EØL‰L€EÜ×Ò˜%°Õ4Ø9‰9UÓ€DÜð2	ó4÷h eƒgði ðj Œ>ÐŠ>r    c                  óþ  € \         P                  ! ^^\         P                  R7      p . pVP                  pV! R4       \         P                  ! WR^ R7       V! R4       \         P                  ! WR^R7       V! R4       \         P                  ! WR^R7       V! R4       \         P                  ! WR^R7       V! R4       \         P                  ! WR^R7       V! R	4       \         P                  ! V P                  4       VR^ R7       V! R
4       \         P                  ! V P                  4       VR^R7       V! R4       \         P                  ! V P                  4       VR^R7       V! R4       \         P                  ! V P                  4       VR^R7       V! R4       \         P                  ! V P                  4       VR^R7       RP                  V4      p\        R4      P                  4       pWC8X  g   Q hR# )r1   r   ú"--- directed case, max_depth=0 ---r$   ©r3   r#   Ú	max_depthú"--- directed case, max_depth=1 ---ú"--- directed case, max_depth=2 ---ú"--- directed case, max_depth=3 ---z"--- directed case, max_depth=4 ---ú$--- undirected case, max_depth=0 ---ú$--- undirected case, max_depth=1 ---ú$--- undirected case, max_depth=2 ---ú$--- undirected case, max_depth=3 ---z$--- undirected case, max_depth=4 ---r   u  
        --- directed case, max_depth=0 ---
        â•™ ...
        --- directed case, max_depth=1 ---
        â•™â”€â”€ 0
            â””â”€â•¼  ...
        --- directed case, max_depth=2 ---
        â•™â”€â”€ 0
            â””â”€â•¼ 1
                â””â”€â•¼  ...
        --- directed case, max_depth=3 ---
        â•™â”€â”€ 0
            â””â”€â•¼ 1
                â””â”€â•¼ 2
                    â””â”€â•¼  ...
        --- directed case, max_depth=4 ---
        â•™â”€â”€ 0
            â””â”€â•¼ 1
                â””â”€â•¼ 2
                    â””â”€â•¼ 3
        --- undirected case, max_depth=0 ---
        â•™ ...
        --- undirected case, max_depth=1 ---
        â•™â”€â”€ 0 â”€ 1
            â””â”€â”€  ...
        --- undirected case, max_depth=2 ---
        â•™â”€â”€ 0
            â””â”€â”€ 1 â”€ 2
                â””â”€â”€  ...
        --- undirected case, max_depth=3 ---
        â•™â”€â”€ 0
            â””â”€â”€ 1
                â””â”€â”€ 2 â”€ 3
                    â””â”€â”€  ...
        --- undirected case, max_depth=4 ---
        â•™â”€â”€ 0
            â””â”€â”€ 1
                â””â”€â”€ 2
                    â””â”€â”€ 3
        N)	r   r   r   r&   r%   rx   r   r   r   ©ry   r:   r;   r<   r=   s        r   Ú&test_write_network_text_tree_max_depthr©   I  s¥  € Ü×Ò˜a 1´2·:±:Ô>€DØ€EØL‰L€EÙ	Ð
.Ô/Ü×Ò˜$°¸aÕ@Ù	Ð
.Ô/Ü×Ò˜$°¸aÕ@Ù	Ð
.Ô/Ü×Ò˜$°¸aÕ@Ù	Ð
.Ô/Ü×Ò˜$°¸aÕ@Ù	Ð
.Ô/Ü×Ò˜$°¸aÕ@Ù	Ð
0Ô1Ü×Ò˜$×,Ñ,Ó.°UÀÈaÕPÙ	Ð
0Ô1Ü×Ò˜$×,Ñ,Ó.°UÀÈaÕPÙ	Ð
0Ô1Ü×Ò˜$×,Ñ,Ó.°UÀÈaÕPÙ	Ð
0Ô1Ü×Ò˜$×,Ñ,Ó.°UÀÈaÕPÙ	Ð
0Ô1Ü×Ò˜$×,Ñ,Ó.°UÀÈaÕPØ9‰9UÓ€DÜð'	ó)÷R eƒgðS ðT Œ>ÐŠ>r    c                  óä  € \         P                  ! ^
RRRR7      p . pVP                  pV! R4       \         P                  ! WRRR7       V! R	4       \         P                  ! WR^ R7       V! R
4       \         P                  ! WR^R7       V! R4       \         P                  ! WR^R7       V! R4       \         P                  ! WR^R7       V! R4       \         P                  ! V P	                  4       VRRR7       V! R4       \         P                  ! V P	                  4       VR^ R7       V! R4       \         P                  ! V P	                  4       VR^R7       V! R4       \         P                  ! V P	                  4       VR^R7       V! R4       \         P                  ! V P	                  4       VR^R7       RP                  V4      p\        R4      P                  4       pWC8X  g   Q hR# )é
   g333333Ã?TiÈ  ©ÚdirectedÚseedú%--- directed case, max_depth=None ---r$   NrŸ   rž   r¡   r¢   r£   ú'--- undirected case, max_depth=None ---r¤   r¥   r¦   r§   r   uê	  
        --- directed case, max_depth=None ---
        â•Ÿâ”€â”€ 4
        â•Ž   â”œâ”€â•¼ 0 â•¾ 3
        â•Ž   â”œâ”€â•¼ 5 â•¾ 7
        â•Ž   â”‚   â””â”€â•¼ 3
        â•Ž   â”‚       â”œâ”€â•¼ 1 â•¾ 9
        â•Ž   â”‚       â”‚   â””â”€â•¼ 9 â•¾ 6
        â•Ž   â”‚       â”‚       â”œâ”€â•¼ 6
        â•Ž   â”‚       â”‚       â”‚   â””â”€â•¼  ...
        â•Ž   â”‚       â”‚       â”œâ”€â•¼ 7 â•¾ 4
        â•Ž   â”‚       â”‚       â”‚   â”œâ”€â•¼ 2
        â•Ž   â”‚       â”‚       â”‚   â””â”€â•¼  ...
        â•Ž   â”‚       â”‚       â””â”€â•¼  ...
        â•Ž   â”‚       â””â”€â•¼  ...
        â•Ž   â””â”€â•¼  ...
        â•™â”€â”€ 8
        --- directed case, max_depth=0 ---
        â•™ ...
        --- directed case, max_depth=1 ---
        â•Ÿâ”€â”€ 4
        â•Ž   â””â”€â•¼  ...
        â•™â”€â”€ 8
        --- directed case, max_depth=2 ---
        â•Ÿâ”€â”€ 4
        â•Ž   â”œâ”€â•¼ 0 â•¾ 3
        â•Ž   â”œâ”€â•¼ 5 â•¾ 7
        â•Ž   â”‚   â””â”€â•¼  ...
        â•Ž   â””â”€â•¼ 7 â•¾ 9
        â•Ž       â””â”€â•¼  ...
        â•™â”€â”€ 8
        --- directed case, max_depth=3 ---
        â•Ÿâ”€â”€ 4
        â•Ž   â”œâ”€â•¼ 0 â•¾ 3
        â•Ž   â”œâ”€â•¼ 5 â•¾ 7
        â•Ž   â”‚   â””â”€â•¼ 3
        â•Ž   â”‚       â””â”€â•¼  ...
        â•Ž   â””â”€â•¼ 7 â•¾ 9
        â•Ž       â”œâ”€â•¼ 2
        â•Ž       â””â”€â•¼  ...
        â•™â”€â”€ 8
        --- undirected case, max_depth=None ---
        â•Ÿâ”€â”€ 8
        â•™â”€â”€ 2
            â””â”€â”€ 7
                â”œâ”€â”€ 4
                â”‚   â”œâ”€â”€ 0
                â”‚   â”‚   â””â”€â”€ 3
                â”‚   â”‚       â”œâ”€â”€ 1
                â”‚   â”‚       â”‚   â””â”€â”€ 9 â”€ 7
                â”‚   â”‚       â”‚       â””â”€â”€ 6
                â”‚   â”‚       â””â”€â”€ 5 â”€ 4, 7
                â”‚   â””â”€â”€  ...
                â””â”€â”€  ...
        --- undirected case, max_depth=0 ---
        â•™ ...
        --- undirected case, max_depth=1 ---
        â•Ÿâ”€â”€ 8
        â•™â”€â”€ 2 â”€ 7
            â””â”€â”€  ...
        --- undirected case, max_depth=2 ---
        â•Ÿâ”€â”€ 8
        â•™â”€â”€ 2
            â””â”€â”€ 7 â”€ 4, 5, 9
                â””â”€â”€  ...
        --- undirected case, max_depth=3 ---
        â•Ÿâ”€â”€ 8
        â•™â”€â”€ 2
            â””â”€â”€ 7
                â”œâ”€â”€ 4 â”€ 0, 5
                â”‚   â””â”€â”€  ...
                â”œâ”€â”€ 5 â”€ 4, 3
                â”‚   â””â”€â”€  ...
                â””â”€â”€ 9 â”€ 1, 6
                    â””â”€â”€  ...
        )r   Úerdos_renyi_graphr&   r%   rx   r   r   r   r¨   s        r   Ú'test_write_network_text_graph_max_depthr²     s¥  € Ü×Ò  D°4¸eÔD€DØ€EØL‰L€EÙ	Ð
1Ô2Ü×Ò˜$°¸dÕCÙ	Ð
.Ô/Ü×Ò˜$°¸aÕ@Ù	Ð
.Ô/Ü×Ò˜$°¸aÕ@Ù	Ð
.Ô/Ü×Ò˜$°¸aÕ@Ù	Ð
.Ô/Ü×Ò˜$°¸aÕ@Ù	Ð
3Ô4Ü×Ò˜$×,Ñ,Ó.°UÀÈdÕSÙ	Ð
0Ô1Ü×Ò˜$×,Ñ,Ó.°UÀÈaÕPÙ	Ð
0Ô1Ü×Ò˜$×,Ñ,Ó.°UÀÈaÕPÙ	Ð
0Ô1Ü×Ò˜$×,Ñ,Ó.°UÀÈaÕPÙ	Ð
0Ô1Ü×Ò˜$×,Ñ,Ó.°UÀÈaÕPØ9‰9UÓ€DÜðK	óM÷Z eƒgð[ ð\ Œ>ÐŠ>r    c                  óú  € \         P                  ! ^\         P                  4      p . pVP                  pV! R4       \         P                  ! WRRR7       V! R4       \         P                  ! WR^ R7       V! R4       \         P                  ! WR^R7       V! R4       \         P                  ! WR^R7       V! R4       \         P                  ! WR^R7       V! R	4       \         P                  ! V P                  4       VRRR7       V! R
4       \         P                  ! V P                  4       VR^ R7       V! R4       \         P                  ! V P                  4       VR^R7       V! R4       \         P                  ! V P                  4       VR^R7       V! R4       \         P                  ! V P                  4       VR^R7       RP                  V4      p\        R4      P                  4       pWC8X  g   Q hR# )rj   r¯   r$   NrŸ   rž   r¡   r¢   r£   r°   r¤   r¥   r¦   r§   r   uØ	  
        --- directed case, max_depth=None ---
        â•™â”€â”€ 0 â•¾ 1, 2, 3, 4
            â”œâ”€â•¼ 1 â•¾ 2, 3, 4
            â”‚   â”œâ”€â•¼ 2 â•¾ 0, 3, 4
            â”‚   â”‚   â”œâ”€â•¼ 3 â•¾ 0, 1, 4
            â”‚   â”‚   â”‚   â”œâ”€â•¼ 4 â•¾ 0, 1, 2
            â”‚   â”‚   â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- directed case, max_depth=0 ---
        â•™ ...
        --- directed case, max_depth=1 ---
        â•™â”€â”€ 0 â•¾ 1, 2, 3, 4
            â””â”€â•¼  ...
        --- directed case, max_depth=2 ---
        â•™â”€â”€ 0 â•¾ 1, 2, 3, 4
            â”œâ”€â•¼ 1 â•¾ 2, 3, 4
            â”‚   â””â”€â•¼  ...
            â”œâ”€â•¼ 2 â•¾ 1, 3, 4
            â”‚   â””â”€â•¼  ...
            â”œâ”€â•¼ 3 â•¾ 1, 2, 4
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼ 4 â•¾ 1, 2, 3
                â””â”€â•¼  ...
        --- directed case, max_depth=3 ---
        â•™â”€â”€ 0 â•¾ 1, 2, 3, 4
            â”œâ”€â•¼ 1 â•¾ 2, 3, 4
            â”‚   â”œâ”€â•¼ 2 â•¾ 0, 3, 4
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”œâ”€â•¼ 3 â•¾ 0, 2, 4
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â”œâ”€â•¼ 4 â•¾ 0, 2, 3
            â”‚   â”‚   â””â”€â•¼  ...
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼  ...
        --- undirected case, max_depth=None ---
        â•™â”€â”€ 0
            â”œâ”€â”€ 1
            â”‚   â”œâ”€â”€ 2 â”€ 0
            â”‚   â”‚   â”œâ”€â”€ 3 â”€ 0, 1
            â”‚   â”‚   â”‚   â””â”€â”€ 4 â”€ 0, 1, 2
            â”‚   â”‚   â””â”€â”€  ...
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        --- undirected case, max_depth=0 ---
        â•™ ...
        --- undirected case, max_depth=1 ---
        â•™â”€â”€ 0 â”€ 1, 2, 3, 4
            â””â”€â”€  ...
        --- undirected case, max_depth=2 ---
        â•™â”€â”€ 0
            â”œâ”€â”€ 1 â”€ 2, 3, 4
            â”‚   â””â”€â”€  ...
            â”œâ”€â”€ 2 â”€ 1, 3, 4
            â”‚   â””â”€â”€  ...
            â”œâ”€â”€ 3 â”€ 1, 2, 4
            â”‚   â””â”€â”€  ...
            â””â”€â”€ 4 â”€ 1, 2, 3
        --- undirected case, max_depth=3 ---
        â•™â”€â”€ 0
            â”œâ”€â”€ 1
            â”‚   â”œâ”€â”€ 2 â”€ 0, 3, 4
            â”‚   â”‚   â””â”€â”€  ...
            â”‚   â”œâ”€â”€ 3 â”€ 0, 2, 4
            â”‚   â”‚   â””â”€â”€  ...
            â”‚   â””â”€â”€ 4 â”€ 0, 2, 3
            â””â”€â”€  ...
        )	r   r~   r   r&   r%   rx   r   r   r   r¨   s        r   Ú(test_write_network_text_clique_max_depthr´   ù  s¥  € Ü×Ò˜Q¤§
¡
Ó+€DØ€EØL‰L€EÙ	Ð
1Ô2Ü×Ò˜$°¸dÕCÙ	Ð
.Ô/Ü×Ò˜$°¸aÕ@Ù	Ð
.Ô/Ü×Ò˜$°¸aÕ@Ù	Ð
.Ô/Ü×Ò˜$°¸aÕ@Ù	Ð
.Ô/Ü×Ò˜$°¸aÕ@Ù	Ð
3Ô4Ü×Ò˜$×,Ñ,Ó.°UÀÈdÕSÙ	Ð
0Ô1Ü×Ò˜$×,Ñ,Ó.°UÀÈaÕPÙ	Ð
0Ô1Ü×Ò˜$×,Ñ,Ó.°UÀÈaÕPÙ	Ð
0Ô1Ü×Ò˜$×,Ñ,Ó.°UÀÈaÕPÙ	Ð
0Ô1Ü×Ò˜$×,Ñ,Ó.°UÀÈaÕPØ9‰9UÓ€DÜðF	óH÷P eƒgðQ ðR Œ>ÐŠ>r    c                  ó  € \         P                  ! ^RRRR7      p V P                   F’  pRV R2V P                  V,          R&   \        V\	        R4      ,           ^,
          4      V P                  V,          R	&   V^,          ^ 8X  g   Kc  \        V\	        R4      ,           4      V P                  V,          R
&   K”  	  . pVP
                  pV! R4       \         P                  ! WRRRR7       V! R4       \         P                  ! WRRRR7       V! R4       \         P                  ! WR	RRR7       V! R4       \         P                  ! WR
RRR7       RP                  V4      p\        R4      P                  4       pWT8X  g   Q hR# )rj   gš™™™™™Ù?TiVLir¬   zNode(r‚   r   r   r   Úpartz4--- when with_labels=True, uses the 'label' attr ---r$   N)r3   r   r#   r    z4--- when with_labels=False, uses str(node) value ---Fz3--- when with_labels is a string, use that attr ---z:--- fallback to str(node) when the attr does not exist ---r   uj  
        --- when with_labels=True, uses the 'label' attr ---
        â•™â”€â”€ Node(1)
            â””â”€â•¼ Node(3) â•¾ Node(2)
                â”œâ”€â•¼ Node(0)
                â”‚   â”œâ”€â•¼ Node(2) â•¾ Node(3), Node(4)
                â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â””â”€â•¼ Node(4)
                â”‚       â””â”€â•¼  ...
                â””â”€â•¼  ...
        --- when with_labels=False, uses str(node) value ---
        â•™â”€â”€ 1
            â””â”€â•¼ 3 â•¾ 2
                â”œâ”€â•¼ 0
                â”‚   â”œâ”€â•¼ 2 â•¾ 3, 4
                â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â””â”€â•¼ 4
                â”‚       â””â”€â•¼  ...
                â””â”€â•¼  ...
        --- when with_labels is a string, use that attr ---
        â•™â”€â”€ a
            â””â”€â•¼ c â•¾ b
                â”œâ”€â•¼ `
                â”‚   â”œâ”€â•¼ b â•¾ c, d
                â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â””â”€â•¼ d
                â”‚       â””â”€â•¼  ...
                â””â”€â•¼  ...
        --- fallback to str(node) when the attr does not exist ---
        â•™â”€â”€ 1
            â””â”€â•¼ 3 â•¾ c
                â”œâ”€â•¼ a
                â”‚   â”œâ”€â•¼ c â•¾ 3, e
                â”‚   â”‚   â””â”€â•¼  ...
                â”‚   â””â”€â•¼ e
                â”‚       â””â”€â•¼  ...
                â””â”€â•¼  ...
        )
r   r±   r   r   r   r&   r%   r   r   r   )r   r   r:   r;   r<   r=   s         r   Ú$test_write_network_text_custom_labelr·   ^  sQ  € ä× Ò   C°$¸YÔG€EØ—”ˆØ',¨T¨F°! _ˆ‰DÕ˜'Ñ"Ü#& t¬c°#«h¥¸Õ':Ó#;ˆ‰DÕ˜%Ñ Ø!8qŽ=Ü(+¨D´3°s³8­OÓ(<ˆEK‰K˜Õ˜fÓ%ñ	 ð €EØL‰L€EÙ	Ð
@ÔAÜ×Ò˜%¸À2ÐQUÕVÙ	Ð
@ÔAÜ×Ò˜%¸ÀBÐRVÕWÙ	Ð
?Ô@Ü×Ò˜%¸ÀBÐRVÕWÙ	Ð
FÔGÜ×Ò˜%¸ÀRÐSWÕXà9‰9UÓ€DÜð%	ó'÷N eƒgðO ðP Œ>ÐŠ>r    c                  óè  € \         P                  ! ^^\         P                  R7      p V P                  ^ R4       V P                  RR4       V P                  RR4       V P	                  4       pTP                  VP                   UUu. uF  w  r#W28”  g   K  W#3NK  	  upp4       . pVP                  pV! R4       \         P                  ! WRRR7       V! R4       \         P                  ! WRRRR7       V! R4       \         P                  ! WRRR7       V! R	4       \         P                  ! WRRRR7       R
P                  V4      p\        R4      P                  4       pWv8X  g   Q hR# u uppi )r7   r|   z--- Undirected UTF ---r$   T)r3   r#   Úvertical_chainsz--- Undirected ASCI ---)r3   r#   r¹   r,   z--- Directed UTF ---z--- Directed ASCI ---r   uí  
        --- Undirected UTF ---
        â•™â”€â”€ 5
            â”‚
            4
            â”‚
            3
            â”œâ”€â”€ 0
            â”‚   â”œâ”€â”€ 1 â”€ 3
            â”‚   â”‚   â”‚
            â”‚   â”‚   2 â”€ 0, 3
            â”‚   â”œâ”€â”€ -1
            â”‚   â”‚   â”‚
            â”‚   â”‚   -2
            â”‚   â”‚   â”‚
            â”‚   â”‚   -3
            â”‚   â””â”€â”€  ...
            â””â”€â”€  ...
        --- Undirected ASCI ---
        +-- 5
            |
            4
            |
            3
            |-- 0
            |   |-- 1 - 3
            |   |   |
            |   |   2 - 0, 3
            |   |-- -1
            |   |   |
            |   |   -2
            |   |   |
            |   |   -3
            |   L--  ...
            L--  ...
        --- Directed UTF ---
        â•™â”€â”€ 5
            â•½
            4
            â•½
            3
            â”œâ”€â•¼ 0 â•¾ 1, 2
            â”‚   â•½
            â”‚   -1
            â”‚   â•½
            â”‚   -2
            â”‚   â•½
            â”‚   -3
            â”œâ”€â•¼ 1 â•¾ 2
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼ 2
                â””â”€â•¼  ...
        --- Directed ASCI ---
        +-- 5
            !
            4
            !
            3
            |-> 0 <- 1, 2
            |   !
            |   -1
            |   !
            |   -2
            |   !
            |   -3
            |-> 1 <- 2
            |   L->  ...
            L-> 2
                L->  ...
        Néÿÿÿÿéþÿÿÿéýÿÿÿ)r   r’   r.   r9   Úto_directedÚremove_edges_fromÚedgesr&   r%   r   r   r   )Úgraph1Úgraph2ÚuÚvr:   r;   r<   r=   s           r   Ú'test_write_network_text_vertical_chainsrÄ   ž  sF  € Ü×Ò˜q !´"·(±(Ô;€FØ
‡OOArÔØ
‡OOB˜ÔØ
‡OOB˜Ôà×ÑÓ!€FØ
×Ñ°·²ÔG±©¨ÀÁœf˜q›f±ÒGÔHà€EØL‰L€EÙ	Ð
"Ô#Ü×Ò˜&°"ÀdÕKÙ	Ð
#Ô$Ü×ÒØ °DÀTõñ 
Ð
 Ô!Ü×Ò˜&°"ÀdÕKÙ	Ð
!Ô"Ü×ÒØ °DÀTõð 9‰9UÓ€DÜðE	óG÷N eƒgðO ðP Œ>ÐŠ>ùóu Hs   Â
E.
ÂE.
c                  óP  € \         P                  ! ^^\         P                  R7      p . pVP                  pV! R4       \         P                  ! WRR7       RV P
                  ^,          R&   V! R4       \         P                  ! WRR7       V! R4       V P                  ^^4       \         P                  ! WRR7       V! R	4       RV P
                  ^ ,          R&   \         P                  ! WRR7       R
P                  V4      p\        R4      P                  4       pWC8X  g   Q hR# )r   r   ú--- Original ---r$   r2   TÚcollapseú--- Collapse Node 1 ---ú/--- Add alternate path (5, 3) to collapsed zoneú--- Collapse Node 0 ---r   uT  
        --- Original ---
        â•™â”€â”€ 0
            â”œâ”€â•¼ 1
            â”‚   â”œâ”€â•¼ 3
            â”‚   â”‚   â”œâ”€â•¼ 7
            â”‚   â”‚   â””â”€â•¼ 8
            â”‚   â””â”€â•¼ 4
            â”‚       â”œâ”€â•¼ 9
            â”‚       â””â”€â•¼ 10
            â””â”€â•¼ 2
                â”œâ”€â•¼ 5
                â”‚   â”œâ”€â•¼ 11
                â”‚   â””â”€â•¼ 12
                â””â”€â•¼ 6
                    â”œâ”€â•¼ 13
                    â””â”€â•¼ 14
        --- Collapse Node 1 ---
        â•™â”€â”€ 0
            â”œâ”€â•¼ 1
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼ 2
                â”œâ”€â•¼ 5
                â”‚   â”œâ”€â•¼ 11
                â”‚   â””â”€â•¼ 12
                â””â”€â•¼ 6
                    â”œâ”€â•¼ 13
                    â””â”€â•¼ 14
        --- Add alternate path (5, 3) to collapsed zone
        â•™â”€â”€ 0
            â”œâ”€â•¼ 1
            â”‚   â””â”€â•¼  ...
            â””â”€â•¼ 2
                â”œâ”€â•¼ 5
                â”‚   â”œâ”€â•¼ 11
                â”‚   â”œâ”€â•¼ 12
                â”‚   â””â”€â•¼ 3 â•¾ 1
                â”‚       â”œâ”€â•¼ 7
                â”‚       â””â”€â•¼ 8
                â””â”€â•¼ 6
                    â”œâ”€â•¼ 13
                    â””â”€â•¼ 14
        --- Collapse Node 0 ---
        â•™â”€â”€ 0
            â””â”€â•¼  ...
        N)
r   r   r   r&   r%   r   r9   r   r   r   r   s        r   Útest_collapse_directedrË     sö   € Ü×Ò˜q A´B·J±JÔ?€EØ€EØL‰L€EÙ	Ð
ÔÜ×Ò˜%°Õ4Ø!%€E‡KK…N:ÑÙ	Ð
#Ô$Ü×Ò˜%°Õ4Ù	Ð
;Ô<Ø	‡NN1aÔÜ×Ò˜%°Õ4Ù	Ð
#Ô$Ø!%€E‡KK…N:ÑÜ×Ò˜%°Õ4Ø9‰9UÓ€DÜð-	ó/÷^ eƒgð_ ð` Œ>ÐŠ>r    c                  ó`  € \         P                  ! ^^\         P                  R7      p . pVP                  pV! R4       \         P                  ! WR^ .R7       RV P
                  ^,          R&   V! R4       \         P                  ! WR^ .R7       V! R4       V P                  ^^4       \         P                  ! WR^ .R7       V! R	4       RV P
                  ^ ,          R&   \         P                  ! WR^ .R7       R
P                  V4      p\        R4      P                  4       pWC8X  g   Q hR# )r   r   rÆ   r$   )r3   r#   rA   TrÇ   rÈ   rÉ   rÊ   r   uo  
        --- Original ---
        â•™â”€â”€ 0
            â”œâ”€â”€ 1
            â”‚   â”œâ”€â”€ 3
            â”‚   â”‚   â”œâ”€â”€ 7
            â”‚   â”‚   â””â”€â”€ 8
            â”‚   â””â”€â”€ 4
            â”‚       â”œâ”€â”€ 9
            â”‚       â””â”€â”€ 10
            â””â”€â”€ 2
                â”œâ”€â”€ 5
                â”‚   â”œâ”€â”€ 11
                â”‚   â””â”€â”€ 12
                â””â”€â”€ 6
                    â”œâ”€â”€ 13
                    â””â”€â”€ 14
        --- Collapse Node 1 ---
        â•™â”€â”€ 0
            â”œâ”€â”€ 1 â”€ 3, 4
            â”‚   â””â”€â”€  ...
            â””â”€â”€ 2
                â”œâ”€â”€ 5
                â”‚   â”œâ”€â”€ 11
                â”‚   â””â”€â”€ 12
                â””â”€â”€ 6
                    â”œâ”€â”€ 13
                    â””â”€â”€ 14
        --- Add alternate path (5, 3) to collapsed zone
        â•™â”€â”€ 0
            â”œâ”€â”€ 1 â”€ 3, 4
            â”‚   â””â”€â”€  ...
            â””â”€â”€ 2
                â”œâ”€â”€ 5
                â”‚   â”œâ”€â”€ 11
                â”‚   â”œâ”€â”€ 12
                â”‚   â””â”€â”€ 3 â”€ 1
                â”‚       â”œâ”€â”€ 7
                â”‚       â””â”€â”€ 8
                â””â”€â”€ 6
                    â”œâ”€â”€ 13
                    â””â”€â”€ 14
        --- Collapse Node 0 ---
        â•™â”€â”€ 0 â”€ 1, 2
            â””â”€â”€  ...
        N)
r   r   r.   r&   r%   r   r9   r   r   r   r   s        r   Útest_collapse_undirectedrÍ   E  s  € Ü×Ò˜q A´B·H±HÔ=€EØ€EØL‰L€EÙ	Ð
ÔÜ×Ò˜%°¸a¸SÕAØ!%€E‡KK…N:ÑÙ	Ð
#Ô$Ü×Ò˜%°¸a¸SÕAÙ	Ð
;Ô<Ø	‡NN1aÔÜ×Ò˜%°¸a¸SÕAÙ	Ð
#Ô$Ø!%€E‡KK…N:ÑÜ×Ò˜%°¸a¸SÕAØ9‰9UÓ€DÜð-	ó/÷^ eƒgð_ ð` Œ>ÐŠ>r    c               #  óF  "  € ^ RI p V P                  ! R4      p^pR EF}  pV'       d   \        P                  M\        P                  p\        ^4       F€  pV! 4       pVP                  \        V4      4       Vx € V^ 8”  g   K1  R F1  p\        V4       F  p\        P                  ! WWW1R7      pVx € K!  	  K3  	  \        P                  ! WT4      x € K‚  	  \        P                  ! ^VR7      x € \        P                  ! ^^VR7      x € V'       d   Kú  \        P                  ! ^VR7      x € \        P                  ! ^VR7      x € \        P                  ! ^^VR7      x € \        P                  ! ^VR7      x € \        P                  ! ^VR7      x € EK€  	  R# 5i)zH
Generate a gauntlet of different test graphs with different properties
Nip7:r¬   r|   r   ©r   r1   )gš™™™™™¹?g333333Ó?g      à?gffffffæ?gÍÌÌÌÌÌì?)rk   rl   r   r   r.   Úranger8   r±   r~   r   r   r˜   rŒ   r’   r•   r›   )	rk   rp   Únum_randomizedr­   ÚclsÚ	num_nodesr   Úpr®   s	            r   Úgenerate_test_graphsrÕ   ˆ  s@  é € ó à
-Š-˜	Ó
"€CØ€Näˆß$ŒbjŠj¬"¯(©(ˆä˜ržˆIá“EˆEØ× Ñ ¤ yÓ!1Ô2ØŠKð ˜1Ž}Û2AÜ % nÖ 5˜Ü "× 4Ò 4Ø%°8ô!˜ð $œó	 !6ñ 3ô ×'Ò'¨	Ó7Ô7ñ #ô" mŠm˜A¨CÔ0Ò0Ü×Ò  a°cÔ:Ò:ß‰xÜ×*Ò*¨1¸3Ô?Ò?Ü—-’- °Ô4Ò4Ü×#Ò# A q°sÔ;Ò;Ü—.’. °Ô5Ò5Ü×5Ò5°aÀcÔJÕJó7 ùs   ‚A>F!ÂBF!ÄB
F!c                óÄ  € ^ RI Hp \        4        F   p\        P                  ! Y3P
                   Uu/ uF  qD\        V4      bK  	  up4      p\        \        P                  ! W0VR7      4      pV! V4      p VP
                  VP
                  8X  g   Q hVP                  VP                  8X  g   Q hK¢  	  R# u upi   \         d    \        P                  ! T4       h i ; i)z½
Write the graph to network text format, then parse it back in, assert it is
the same as the original graph. Passing this test is strong validation of
both the format generator and parser.
)Ú_parse_network_text©r¹   r,   N)Únetworkx.readwrite.textr×   rÕ   r   rL   r   Ústrrm   r   r¿   Ú	Exceptionr%   )r¹   r,   r×   r   rO   r:   Únews   &&     r   Útest_network_text_round_triprÝ   ¯  s¼   € õ  <ä%Ö'ˆÜ× Ò  ¿KºKÓ(H¹K°q¬C°«Fª¹KÑ(HÓIˆÜÜ×$Ò$ØÀ:ôó
ˆñ
 " %Ó(ˆð	Ø—9‘9 §¡Ô+Ð+Ð+Ø—9‘9 §¡Ô+Ð+Ò+ó (ùÚ(Høô ô 	Ü×!Ò! %Ô(Øð	ús   ²B7Á7:B<Â<#CrØ   rÏ   ))rk   Ú	itertoolsr   Útextwrapr   ÚpytestÚnetworkxr   r   r/   r>   rJ   rP   rT   rZ   rd   rf   rr   rz   r€   rƒ   r‡   rŠ   r   r   r“   r–   r™   rœ   r©   r²   r´   r·   rÄ   rË   rÍ   rÕ   ÚmarkÚparametrizeÚtuplerÝ   rØ   s   00r   Ú<module>rå      s(  ðÛ Ý Ý ã ã ò$*òN	:òò0Vòr/òd!òH.òbPòfeòPKò\EòP!òHò6PòfIòXò&ò ò*ò,ò2;ò|CòLgòTbòJ=ò@aòH@òF@òF$KðN ‡×ÑØ%Ù	ñ $*ô	
á#)Û$
ð Ó)á$ñ *Ù#)ò	
óó	ñó	òùó	
s   ÂB6