
    \MhS                         d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dl	Z	d dl
Zd dlmZmZ  G d d          Zed             Z G d	 d
          Ze	j                            dg df          d             ZdS )    N)literal_eval)contextmanager)dedent)literal_destringizerliteral_stringizerc                       e Zd Zed             Zd Zd Zd Zd Zd Z	e
j                            ddef          d	             Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )	TestGraphc                     d| _         d S )Na2  Creator "me"
Version "xx"
graph [
 comment "This is a sample graph"
 directed 1
 IsPlanar 1
 pos  [ x 0 y 1 ]
 node [
   id 1
   label "Node 1"
   pos [ x 1 y 1 ]
 ]
 node [
    id 2
    pos [ x 1 y 2 ]
    label "Node 2"
    ]
  node [
    id 3
    label "Node 3"
    pos [ x 1 y 3 ]
  ]
  edge [
    source 1
    target 2
    label "Edge from node 1 to node 2"
    color [line "blue" thickness 3]

  ]
  edge [
    source 2
    target 3
    label "Edge from node 2 to node 3"
  ]
  edge [
    source 3
    target 1
    label "Edge from node 3 to node 1"
  ]
]
)simple_data)clss    a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/networkx/readwrite/tests/test_gml.pysetup_classzTestGraph.setup_class   s    (    c                 2    d}t          j        |           d S )Nas  
Creator "Cytoscape"
Version 1.0
graph   [
    node    [
        root_index  -3
        id  -3
        graphics    [
            x   -96.0
            y   -67.0
            w   40.0
            h   40.0
            fill    "#ff9999"
            type    "ellipse"
            outline "#666666"
            outline_width   1.5
        ]
        label   "node2"
    ]
    node    [
        root_index  -2
        id  -2
        graphics    [
            x   63.0
            y   37.0
            w   40.0
            h   40.0
            fill    "#ff9999"
            type    "ellipse"
            outline "#666666"
            outline_width   1.5
        ]
        label   "node1"
    ]
    node    [
        root_index  -1
        id  -1
        graphics    [
            x   -31.0
            y   -17.0
            w   40.0
            h   40.0
            fill    "#ff9999"
            type    "ellipse"
            outline "#666666"
            outline_width   1.5
        ]
        label   "node0"
    ]
    edge    [
        root_index  -2
        target  -2
        source  -1
        graphics    [
            width   1.5
            fill    "#0000ff"
            type    "line"
            Line    [
            ]
            source_arrow    0
            target_arrow    3
        ]
        label   "DirectedEdge"
    ]
    edge    [
        root_index  -1
        target  -1
        source  -3
        graphics    [
            width   1.5
            fill    "#0000ff"
            type    "line"
            Line    [
            ]
            source_arrow    0
            target_arrow    3
        ]
        label   "DirectedEdge"
    ]
]
)nx	parse_gml)selfcytoscape_examples     r   test_parse_gml_cytoscape_bugz&TestGraph.test_parse_gml_cytoscape_bug;   s%    Pb 	&'''''r   c                 ^   t          j        | j        d          }t          |                                          g dk    sJ t          |                                          g dk    sJ t          |                    d                    ddd	d
dddfddddifddddifgk    sJ d S )Nlabelr   Node 1Node 2Node 3))r   r   )r   r   )r   r   Tdatar   r   blue   )line	thicknesszEdge from node 1 to node 2)colorr   r   zEdge from node 2 to node 3zEdge from node 3 to node 1)r   r   r   sortednodesedgesr   Gs     r   test_parse_gmlzTestGraph.test_parse_gml   s    L)999aggii  $B$B$BBBBBaggii   %
 %
 %
 
 
 
 
 agg4g(())&,1==9  x'+G!HIx'+G!HI.
 
 
 
 
 
 
r   c                    |dz  }t          |d          5 }|                    | j                   d d d            n# 1 swxY w Y   t          j        |d          }t          j        | j        d          }t          |                    d                    t          |                    d                    k    sJ t          |                    d                    t          |                    d                    k    sJ d S )Ntest.gmlwr   r   Tr   )	openwriter   r   read_gmlr   r$   r%   r&   )r   tmp_pathfnamefhGinr(   s         r   test_read_gmlzTestGraph.test_read_gml   s.   :%% 	'HHT%&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'k%w///L)999agg4g(())VCII4I4H4H-I-IIIIIagg4g(())VCII4I4H4H-I-IIIIIIIs   =AAc                     d}t          j                    }|                    d           d                    t          j        |t
                              }||k    sJ d S )Nz0graph [
  node [
    id 0
    label "1203"
  ]
]i  

stringizer)r   Graphadd_nodejoingenerate_gmlr   )r   answerr(   r   s       r   test_labels_are_stringsz!TestGraph.test_labels_are_strings   sZ     HJJ	

4yy7IJJJKKv~~~~~~r   c                     d}t          j        |                    d                    }|                    d           t	          j        t          j        t          j        |d           d S )Nz
graph
[
        label   ""
        directed        1
        node
        [
                id      0
                label   "same"
        ]
        node
        [
                id      1
                label   "same"
        ]
]
zUTF-8r   r   r   )	ioBytesIOencodeseekpytestraisesr   NetworkXErrorr/   )r   r   r2   s      r   test_relabel_duplicatez TestGraph.test_relabel_duplicate   sY    " ZG,,--



b&RwGGGGGGr   r8   Nc                     t          j                    }|                    dd           d                    t          j        ||                    }d}||k    sJ d S )N)r      )rI   r   r6   r7   zgraph [
  node [
    id 0
    label "(0,1)"
  ]
  node [
    id 1
    label "(1,0)"
  ]
  edge [
    source 0
    target 1
  ]
])r   r9   add_edger;   r<   )r   r8   r(   r   r=   s        r   test_tuplelabelszTestGraph.test_tuplelabels   s]     HJJ	

66"""yyzBBBCC v~~~~~~r   c                    t          j        d          }d|_        dt          d          z   }||j        d         d<   t          |dz  d          5 }t          j        ||           |                    d           |                                	                                
                    d	          }d d d            n# 1 swxY w Y   d
}||k    sJ d S )NrI   zpath_graph(1)z*This is "quoted" and this is a copyright:    r   demor+   w+basciizgraph [
  name "path_graph(1)"
  node [
    id 0
    label "0"
    demo "This is &#34;quoted&#34; and this is a copyright: &#169;"
  ]
])r   
path_graphnamechrr%   r-   	write_gmlrC   readstripdecode)r   r0   r(   attrfobjr   r=   s          r   test_quoteszTestGraph.test_quotes   s    M! ;c#hhF!
6(Z'// 	74LD!!!IIaLLL99;;$$&&--g66D		7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7
 v~~~~~~s   A$CCCc                    dt          d          z   }t          j                    }|                    |           t	          |dz  d          5 }t          j        ||           |                    d           |                                                                	                    d          }d d d            n# 1 swxY w Y   d}||k    sJ d S )NnoderM   r+   rO   r   rP   z6graph [
  node [
    id 0
    label "node&#169;"
  ]
])
rS   r   r9   r:   r-   rT   rC   rU   rV   rW   r   r0   r\   r(   rY   r   r=   s          r   test_unicode_nodezTestGraph.test_unicode_node   s    C HJJ	

4(Z'// 	74LD!!!IIaLLL99;;$$&&--g66D		7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7
 v~~~~~~s   A$B>>CCc                    d}t          j                    }|                    |           t          |dz  d          5 }t          j        ||           |                    d           |                                                                                    d          }d d d            n# 1 swxY w Y   d}||k    sJ d S )Ng      ?r+   rO   r   rP   z/graph [
  node [
    id 0
    label "1.0"
  ]
])	r   r9   r:   r-   rT   rC   rU   rV   rW   r]   s          r   test_float_labelzTestGraph.test_float_label  s    HJJ	

4(Z'// 	74LD!!!IIaLLL99;;$$&&--g66D		7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7
 v~~~~~~s   A$B..B25B2c                 @   t          d          t          d          t          d          g}	 dd l}||j        |j        |j        dz  gz  }n# t          $ r ||z  }Y nw xY wt          j        t          |                    }t          t          |                    }t          j
        ||d           t          |j                  fdt          |          D             }t          j        ||d           t          |d	z  d
          5 }t          j        ||           |                    d           |                                                                                    d          }d}||k    sJ |                    d           t          j        |          }	t          |          D ]\  }
}|	j        t-          |
                   d         }t/          j        |          rt/          j        |          sJ n||k    sJ |
         }t-          |d                   t-          |d                   f}|	j        |         d         }t/          j        |          rt/          j        |          sJ ||k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nnanz+infz-infr   	nodefloatc                 (    i | ]\  }}|         |S  rf   ).0ivaluer&   s      r   
<dictcomp>z6TestGraph.test_special_float_label.<locals>.<dictcomp>.  s#    KKKXQq5KKKr   	edgefloatr+   rO   rP   a  graph [
  node [
    id 0
    label "0"
    nodefloat NAN
  ]
  node [
    id 1
    label "1"
    nodefloat +INF
  ]
  node [
    id 2
    label "2"
    nodefloat -INF
  ]
  node [
    id 3
    label "3"
    nodefloat NAN
  ]
  node [
    id 4
    label "4"
    nodefloat +INF
  ]
  node [
    id 5
    label "5"
    nodefloat -INF
  ]
  edge [
    source 0
    target 1
    edgefloat NAN
  ]
  edge [
    source 0
    target 5
    edgefloat +INF
  ]
  edge [
    source 1
    target 2
    edgefloat -INF
  ]
  edge [
    source 2
    target 3
    edgefloat NAN
  ]
  edge [
    source 3
    target 4
    edgefloat +INF
  ]
  edge [
    source 4
    target 5
    edgefloat -INF
  ]
]rI   )floatnumpyrb   infImportErrorr   cycle_graphlendict	enumerateset_node_attributeslistr&   set_edge_attributesr-   rT   rC   rU   rV   rW   r/   r%   strmathisnan)r   r0   special_floatsnpr(   attrsrY   r   r=   graphindxri   
node_valueedgestring_edge
edge_valuer&   s                   @r   test_special_float_labelz"TestGraph.test_special_float_label!  s   ,,fuV}}E	-rvrvrv{;;NN 	- 	- 	-n,NNN	- N3~..//Y~..//
q%555QWKKKK>1J1JKKK
q%555(Z'// T	/4LD!!!IIaLLL99;;$$&&--g66D=F| 6>>>>IIaLLLK%%E(88 / /e"[T3K@
:e$$ /:j111111%....T{"47||Sa\\:"[5kB
:e$$ /:j111111%...../OT	/ T	/ T	/ T	/ T	/ T	/ T	/ T	/ T	/ T	/ T	/ T	/ T	/ T	/ T	/ T	/ T	/ T	/s$   A A A E7JJJc                     t          j        d          }d|j        d         k    sJ t          j        d          }d|j        k    sJ d|j        vsJ d S )Nz*graph [ name "x" node [ id 0 label "x" ] ]xrR   z!graph [ node [ id 0 label "x" ] ] )r   r   r}   rR   r'   s     r   	test_namezTestGraph.test_name  sa    LEFFagfo%%%%L<==QV||||QW$$$$$$r   c           	      <   dD ]}dD ]}d}|"|dt          t          |                    z   z  }|"|dt          t          |                    z   z  }|dz  }|dz  }|dz  }t          j        |          }t	          |          |                                k    sJ t	          |          |                                k    sJ d}|d	u r|d
z  }|d	u r|dz  }|dz  }|r|dz  }|dz  }|d                    t          j        |                    k    sJ d S )N)NFTzgraph [z
 directed z multigraph z node [ id 0 label "0" ]z edge [ source 0 target 0 ]z ]zgraph [
Tz  directed 1
z  multigraph 1
zG  node [
    id 0
    label "0"
  ]
  edge [
    source 0
    target 0
z
    key 0
z  ]
]r6   )	rw   intr   r   boolis_directedis_multigraphr;   r<   )r   directed
multigraphgmlr(   s        r   test_graph_typeszTestGraph.test_graph_types  sq   + 	< 	<H1 < <
'<#c(mm*<*<<<C)>CJ,@,@@@C1144tL%%H~~8888J''1??+<+<<<<<!t##++C%%--C    )=(Cxdii(:(:;;;;;;;9<	< 	<r   c                    ddddddddt          d	          d
idgg}|                    t          d                     |                    t          d                     t          j                    }||_        ||j        d<   |                    ddd|i           |                    ddd|           d	                    t          j
        |t                              }t          j        |t                    }||j        k    sJ ||d|j        k    sJ t          |                    d                    ddd|idfgk    sJ t          |                    d                    ddd|dfgk    sJ t          j                    }d|j        d<   t          j        t          j
        |          t                    }|j        d         dk    sJ d S )NTFl      Fx:^V gF"'z"&&amp;&&#34;")   DD  )rI      )r   3iDD z{2.3j, 1 - 2.3j, ()}r   r   rc   )r   r   g      )rl   r   r6   r7   destringizer)rR   r   r   frozenset([1, 2, 3]))rS   appendr   r   r9   rR   r}   r:   rJ   r;   r<   r   r   r   ru   r%   r&   )r   r   r(   r   s       r   test_data_typeszTestGraph.test_data_types  s   &#f++v6A
 	CLL!!!L!788999HJJ	

1"FD>
222	

1at$
///ii6HIIIJJL+?@@@qv~~~~d++qw6666AGGG&&''QVTN0S0S,T+UUUUUAGGG&&''QT43P3P,Q+RRRRRHJJ0L++,GGGwv"8888888r   c                     d}t          j        |          }dt          d          z   dz   |j        k    sJ d                    t          j        |                    }d}d|z   dz   }||k    sJ d S )	NzTgraph [
  name "&amp;&#34;&#xf;&#x4444;&#1234567890;&#x1234567890abcdef;&unknown;"
]z&"r   z*&#1234567890;&#x1234567890abcdef;&unknown;r6   z##1234567890;&#38;#x1234567890abcdefz,graph [
  name "&#38;&#34;&#15;&#17476;&#38;z;&#38;unknown;"
])r   r   rS   rR   r;   r<   )r   r   r(   alnur=   s        r   test_escape_unescapezTestGraph.test_escape_unescape  s     Ls6{{"%QQv    ii**++4( 	 }}}}}}r   c                    t          j        t          t          d           t          j        t          t          d           t          j        t          t          t                     t          j        t          t          t          g d                     t          j        t          t          t                     t          |dz  d          5 }|                    t          j	        dz              |
                    d           t          j        t          j        t          j        |           d d d            n# 1 swxY w Y   d } |d	d
g            |d            |d            |d            |d            |d            |d            |d            |d            |d            |d            |d            |d           t          j        dd            |d            |d            |d            |d           t          j        d            |d            |d             |d!           t          j        d"           t          j        d#           t          j        d$            |d%           t          j        d&           t          j        d'           t          j        d(            |d)           d* }t          j                    }d+|j        d+<    ||           t          j                    }d+|j        d,<    ||           t          j                    }t          g d          |j        d-<    ||t          .           d S )/N(r   rI   r   r    r+   rO   s   graph[]r   c                 Z    t          j        t          j        t          j        |            d S N)rD   rE   r   rF   r   )r   s    r   assert_parse_errorz5TestGraph.test_exceptions.<locals>.assert_parse_error  s!    M"*BL#>>>>>r   z	graph [

]r   z
Creator ""0zgraph ]zgraph [ 1 ]zgraph [ 1.E+2 ]zgraph [ "A" ]zgraph [ ] graph ]zgraph [ ] graph [ ]zgraph [ data [1, 2, 3] ]zgraph [ node [ ] ]zgraph [ node [ id 0 ] ]zgraph [ node [ id "a" ] ]idr   z5graph [ node [ id 0 label 0 ] node [ id 0 label 1 ] ]z5graph [ node [ id 0 label 0 ] node [ id 1 label 0 ] ]z(graph [ node [ id 0 label 0 ] edge [ ] ]z1graph [ node [ id 0 label 0 ] edge [ source 0 ] ]z9graph [edge [ source 0 target 0 ] node [ id 0 label 0 ] ]z:graph [ node [ id 0 label 0 ] edge [ source 1 target 0 ] ]z:graph [ node [ id 0 label 0 ] edge [ source 0 target 1 ] ]zkgraph [ node [ id 0 label 0 ] node [ id 1 label 1 ] edge [ source 0 target 1 ] edge [ source 1 target 0 ] ]zvgraph [ node [ id 0 label 0 ] node [ id 1 label 1 ] edge [ source 0 target 1 ] edge [ source 1 target 0 ] directed 1 ]zwgraph [ node [ id 0 label 0 ] node [ id 1 label 1 ] edge [ source 0 target 1 ] edge [ source 0 target 1 ]multigraph 1 ]z}graph [ node [ id 0 label 0 ] node [ id 1 label 1 ] edge [ source 0 target 1 key 0 ] edge [ source 0 target 1 ]multigraph 1 ]zgraph [ node [ id 0 label 0 ] node [ id 1 label 1 ] edge [ source 0 target 1 key 0 ] edge [ source 0 target 1 key 0 ]multigraph 1 ]zgraph [ node [ id 0 label 0 ] node [ id 1 label 1 ] edge [ source 0 target 1 key 0 ] edge [ source 1 target 0 key 0 ]directed 1 multigraph 1 ]z9graph [edge [ source a target a ] node [ id a label b ] ]zgraph [ node [ id n42 label 0 ] node [ id x43 label 1 ]edge [ source n42 target x43 key 0 ]edge [ source x43 target n42 key 0 ]directed 1 multigraph 1 ]uE   graph [edge [ source '䈀' target '䈀' ] node [ id '䈀' label b ] ]c                  P     t          j        t          j         fd           d S )Nc                  @    t          t          j         i           S r   )ru   r   r<   argskwargss   r   <lambda>zJTestGraph.test_exceptions.<locals>.assert_generate_error.<locals>.<lambda>.  s    $r/O/O/O*P*P r   )rD   rE   r   rF   r   s   ``r   assert_generate_errorz8TestGraph.test_exceptions.<locals>.assert_generate_error,  s7    M "P"P"P"P"P    r   r    r   r   r7   )rD   rE   
ValueErrorr   r   	frozensetr-   r.   codecsBOM_UTF8rC   r   rF   r/   r   r9   r}   )r   r0   fr   r   r(   s         r   test_exceptionszTestGraph.test_exceptions  s7   j"6<<<j"68NOOOj"68LMMMj"4i			6J6JKKKj"46HIII(Z'// 	<1GGFOj0111FF1IIIM"*BK;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<
	? 	? 	? 	M3/0002<(((39%%%=))),---?+++.///01115666/0004555
0====RSSSRSSSEFFFNOOO
PQQQWXXXWXXXF	
 	
 	
 		
 	
 	

 		
 	
 	

 		
 	
 	

 		
 	
 	

 	(	
 	
 	
 	PQQQ
(	
 	
 	
 	/	
 	
 	

	 	 	
 HJJ
a   HJJa   HJJ#III..a,>??????s   A"D;;D?D?c                    t          j        | j        d          t          j                  g dk    sJ fdt          j                  D             }|g dk    sJ t          j        | j        d           t          j                  g dk    sJ fdt          j                  D             }|g dk    sJ d S )Nr   r   r   c                 6    g | ]}j         |         d          S r   r%   rg   nr(   s     r   
<listcomp>z.TestGraph.test_label_kwarg.<locals>.<listcomp>>  $    ???!!'!*W%???r   r   c                 6    g | ]}j         |         d          S r   r   r   s     r   r   z.TestGraph.test_label_kwarg.<locals>.<listcomp>C  r   r   )r   r   r   r$   r%   )r   labelsr(   s     @r   test_label_kwargzTestGraph.test_label_kwarg;  s    L)666ag)))++++????vag???7777777L)666ag)))++++????vag???777777777r   c                 v   t          j                    }dddddddd} |j        di | |d
z  }t          j        ||           t          j        |          }|j        d	                                         D ]@\  }}|dk    s|dk    rt          |t                    sJ )t          |t                    sJ Ad S )Nl    i   r      il        )toosmallsmallmed1med2med3bigtoobigNoder+   r   r   )r   )
r   r9   r:   rT   r/   r%   items
isinstancerw   r   )r   r0   r(   numbersr1   G2rX   ri   s           r   test_outofrange_integersz"TestGraph.test_outofrange_integersF  s     HJJ '
 
 	
%%W%%%:%
Q[8F+1133 	. 	.KD%z!!TX%5%5!%------!%------		. 	.r   c                 ^    d}t          j        |          }|j        d         dddk    sJ d S )Nz
graph
[
    node
    [
	    id 0
	    label "multiline node"
	    label2 "multiline1
    multiline2
    multiline3"
	    alt_name "id 0"
    ]
]
zmultiline nodez multiline1 multiline2 multiline3zid 0)label2alt_name)r   r   r%   )r   multiline_exampler(   s      r   test_multilinezTestGraph.test_multilinea  sU     L*++w'(8-
 -
 
 
 
 
 
 
r   )__name__
__module____qualname__classmethodr   r   r)   r4   r>   rG   rD   markparametrizer   rK   rZ   r^   r`   r   r   r   r   r   r   r   r   r   rf   r   r   r	   r	      sx       ) ) [)VS( S( S(j
 
 
,J J J  H H H, [\D2D+EFF  GF,  ,  "  "d/ d/ d/L% % %< < <@9 9 98  ([@ [@ [@z	8 	8 	8. . .6
 
 
 
 
r   r	   c               #   b   K   t          j                    } | V  |                     d           d S )Nr   )r@   rA   rC   )_file_handles    r   	byte_filer   x  s7      :<<L
ar   c                   &    e Zd Zd Zd Zd Zd ZdS )TestPropertyListsc                 J   t          j                    }|                    dg d           t                      5 }t          j        ||           d d d            n# 1 swxY w Y   |                                                                }|t          d          k    sJ d S )Nn1)elementr   rI         @TF
propertiesa7              graph [
              node [
                id 0
                label "n1"
                properties "element"
                properties 0
                properties 1
                properties 2.5
                properties 1
                properties 0
              ]
            ]
        r   r9   r:   r   rT   rU   rW   r   r   gr   results       r   3test_writing_graph_with_multi_element_property_listzETestPropertyLists.test_writing_graph_with_multi_element_property_list  s    HJJ	

4$G$G$G
HHH[[ 	ALA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	""
 
 
 
 
 
 
 
s   AA!$A!c                 H   t          j                    }|                    ddg           t                      5 }t          j        ||           d d d            n# 1 swxY w Y   |                                                                }|t          d          k    sJ d S )Nr   r   r   z            graph [
              node [
                id 0
                label "n1"
                properties "_networkx_list_start"
                properties "element"
              ]
            ]
        r   r   s       r   1test_writing_graph_with_one_element_property_listzCTestPropertyLists.test_writing_graph_with_one_element_property_list  s    HJJ	

4YK
000[[ 	ALA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	""	
 
 
 
 
 
 
 
s   AA #A c                 Z   t                      5 }|                    t          d                              d                     |                    d           t          j        |          }d d d            n# 1 swxY w Y   |                    d          d         dg dik    sJ d S )	Na  
              graph [
                node [
                  id 0
                  label "n1"
                  properties "element"
                  properties 0
                  properties 1
                  properties 2.5
                ]
              ]
            rP   r   Tr   r   r   )r   r   rI   r   r   r.   r   rB   rC   r   r/   r%   r   r   r}   s      r   %test_reading_graph_with_list_propertyz7TestPropertyLists.test_reading_graph_with_list_property  s    [[ 	#AGG  &//    FF1IIIKNNE%	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#& {{{%%d+>T>T>T/UUUUUUU   AA::A>A>c                 X   t                      5 }|                    t          d                              d                     |                    d           t          j        |          }d d d            n# 1 swxY w Y   |                    d          d         ddgik    sJ d S )	Nz
              graph [
                node [
                  id 0
                  label "n1"
                  properties "_networkx_list_start"
                  properties "element"
                ]
              ]
            rP   r   Tr   r   r   r   r   r   s      r   4test_reading_graph_with_single_element_list_propertyzFTestPropertyLists.test_reading_graph_with_single_element_list_property  s    [[ 	#AGG	  &//   FF1IIIKNNE!	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#" {{{%%d+yk/JJJJJJJr   N)r   r   r   r   r   r   r   rf   r   r   r   r     sX        
 
 
0
 
 
(V V V,K K K K Kr   r   collrf   c                 :   t          j        d          }| |j        d         d<   t          j                    }t          j        ||           |                    d           t          j        |          }|j        d         d         | k    sJ t          j        |ddd          }t           j	        
                    ||          sJ |                    d           t          j        |t                    }t           j	        
                    ||          sJ d S )Nr   r   testr   rI   )r   1r   )r   rQ   r%   r@   rA   rT   rC   r/   relabel_nodesutilsgraphs_equalr   )r   r(   r   Hs       r   test_stringize_empty_list_tupler     s    
aAAGAJv

ALAFF1III
AA73<4'''' 	!!,,--A8  A&&&&& FF1III
AC(((A8  A&&&&&&&r   )r   r@   rx   astr   
contextlibr   textwrapr   rD   networkxr   networkx.readwrite.gmlr   r   r	   r   r   r   r   r   rf   r   r   <module>r     sD    				        % % % % % %            K K K K K K K Kg	
 g	
 g	
 g	
 g	
 g	
 g	
 g	
T   UK UK UK UK UK UK UK UKp "b**' ' +*' ' 'r   