o
    ˷eI                     @   s2   d dl Z d dlZd dlZd dlZG dd dZdS )    Nc                   @   s   e Zd Zedd Zdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-S ).TestGEXFc                 C   s  d| _ t | _| jjddd | jjddd | jjdddd t| j d| _	d	| _
t | _d
di| jjd< | jjdddddd | jjdddddd | jjdddddd | jjdddddd | jjddddd | jjdddd | jjdddd | jjdddd | jjdddd t| j
d| _d| _t | _| jjddd | jjddd | jjdddd t| jd| _d S )Nar  <?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.2draft" version="1.2">
    <graph mode="static" defaultedgetype="directed">
        <nodes>
            <node id="0" label="Hello" />
            <node id="1" label="Word" />
        </nodes>
        <edges>
            <edge id="0" source="0" target="1" />
        </edges>
    </graph>
</gexf>
0Hello)label1World)idUTF-8a]  <?xml version="1.0" encoding="UTF-8"?><gexf xmlns="http://www.gexf.net/1.2draft" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gexf.net/1.2draft http://www.gexf.net/1.2draft/gexf.xsd" version="1.2">
  <meta lastmodifieddate="2009-03-20">
    <creator>Gephi.org</creator>
    <description>A Web network</description>
  </meta>
  <graph defaultedgetype="directed">
    <attributes class="node">
      <attribute id="0" title="url" type="string"/>
      <attribute id="1" title="indegree" type="integer"/>
      <attribute id="2" title="frog" type="boolean">
        <default>true</default>
      </attribute>
    </attributes>
    <nodes>
      <node id="0" label="Gephi">
        <attvalues>
          <attvalue for="0" value="https://gephi.org"/>
          <attvalue for="1" value="1"/>
          <attvalue for="2" value="false"/>
        </attvalues>
      </node>
      <node id="1" label="Webatlas">
        <attvalues>
          <attvalue for="0" value="http://webatlas.fr"/>
          <attvalue for="1" value="2"/>
          <attvalue for="2" value="false"/>
        </attvalues>
      </node>
      <node id="2" label="RTGI">
        <attvalues>
          <attvalue for="0" value="http://rtgi.fr"/>
          <attvalue for="1" value="1"/>
          <attvalue for="2" value="true"/>
        </attvalues>
      </node>
      <node id="3" label="BarabasiLab">
        <attvalues>
          <attvalue for="0" value="http://barabasilab.com"/>
          <attvalue for="1" value="1"/>
          <attvalue for="2" value="true"/>
        </attvalues>
      </node>
    </nodes>
    <edges>
      <edge id="0" source="0" target="1" label="foo"/>
      <edge id="1" source="0" target="2"/>
      <edge id="2" source="1" target="0"/>
      <edge id="3" source="2" target="1"/>
      <edge id="4" source="0" target="3"/>
    </edges>
  </graph>
</gexf>
frogTnode_defaultGephizhttps://gephi.org   F)r   urlindegreer
   Webatlaszhttp://webatlas.fr   2RTGIzhttp://rtgi.fr3BarabasiLabzhttp://barabasilab.comfoor   r   4at  <?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.2draft" version="1.2">
    <graph mode="static" defaultedgetype="undirected">
        <nodes>
            <node id="0" label="Hello" />
            <node id="1" label="Word" />
        </nodes>
        <edges>
            <edge id="0" source="0" target="1" />
        </edges>
    </graph>
</gexf>
)simple_directed_datanxDiGraphsimple_directed_graphadd_nodeadd_edgeioBytesIOencodesimple_directed_fhattribute_dataattribute_graphgraphattribute_fhsimple_undirected_dataGraphsimple_undirected_graphsimple_undirected_fh)cls r,   Y/var/www/ideatree/venv/lib/python3.10/site-packages/networkx/readwrite/tests/test_gexf.pysetup_class
   sN   

8





zTestGEXF.setup_classc                 C   s~   | j }t| j}t| t| ksJ t| t| ks%J t|jddt|jddks7J | jd d S NTdatar   )r   r   	read_gexfr"   sortednodesedgesseekselfGHr,   r,   r-   !test_read_simple_directed_graphml   s   $z*TestGEXF.test_read_simple_directed_graphmlc                 C   s   | j }t }t|| |d t|}t| t| ks%J t|	 t|	 ks3J t|j	ddt|j	ddksEJ | j
d d S )Nr   Tr0   )r   r   r    r   
write_gexfr6   r2   r3   r4   r5   r"   r8   r9   fhr:   r,   r,   r-   'test_write_read_simple_directed_graphml   s   

$z0TestGEXF.test_write_read_simple_directed_graphmlc                 C   sn   | j }t| j}t| t| ksJ tdd | D tdd | D ks/J | jd d S )Nc                 s       | ]}t |V  qd S Nr3   .0er,   r,   r-   	<genexpr>       z?TestGEXF.test_read_simple_undirected_graphml.<locals>.<genexpr>r   )r)   r   r2   r*   r3   r4   r5   r6   r7   r,   r,   r-   #test_read_simple_undirected_graphml   s   z,TestGEXF.test_read_simple_undirected_graphmlc                 C   s   | j }t| j}t|dt|jddksJ t|jdd}t|jdd}t||D ]
\}}||ks9J q/| jd d S r/   )	r$   r   r2   r&   r3   r4   r5   zipr6   )r8   r9   r:   geheabr,   r,   r-   test_read_attribute_graphml   s   "z$TestGEXF.test_read_attribute_graphmlc                 C   *   d}t |d}ttjtj| d S )Na  <?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.2draft" version='1.2'>
    <graph mode="static" defaultedgetype="undirected" name="">
        <nodes>
            <node id="0" label="Hello" />
            <node id="1" label="Word" />
        </nodes>
        <edges>
            <edge id="0" source="0" target="1" type="directed"/>
        </edges>
    </graph>
</gexf>
r	   r   r    r!   pytestraisesr   NetworkXErrorr2   r8   sr>   r,   r,   r-    test_directed_edge_in_undirected      z)TestGEXF.test_directed_edge_in_undirectedc                 C   rO   )Na  <?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.2draft" version='1.2'>
    <graph mode="static" defaultedgetype="directed" name="">
        <nodes>
            <node id="0" label="Hello" />
            <node id="1" label="Word" />
        </nodes>
        <edges>
            <edge id="0" source="0" target="1" type="undirected"/>
        </edges>
    </graph>
</gexf>
r	   rP   rT   r,   r,   r-    test_undirected_edge_in_directed   rW   z)TestGEXF.test_undirected_edge_in_directedc                 C   rO   )Na   <?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.2draft" version='1.2'>
    <graph mode="static" defaultedgetype="directed" name="">
        <nodes>
            <node id="0" label="Hello">
              <attvalues>
                <attvalue for='0' value='1'/>
              </attvalues>
            </node>
            <node id="1" label="Word" />
        </nodes>
        <edges>
            <edge id="0" source="0" target="1" type="undirected"/>
        </edges>
    </graph>
</gexf>
r	   rP   rT   r,   r,   r-   test_key_raises   s   zTestGEXF.test_key_raisesc                 C   s>   d}t |d}tj|dd}t| ddgksJ d S )Nay  <?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.2draft" version='1.2'>
    <graph mode="static" defaultedgetype="directed" name="">
        <nodes>
            <node id="0" label="Hello" />
            <node id="1" label="Word" />
        </nodes>
        <edges>
            <edge id="0" source="0" target="1"/>
        </edges>
    </graph>
</gexf>
r	   T)relabelr   Word)r   r    r!   r   r2   r3   r4   )r8   rU   r>   r9   r,   r,   r-   test_relabel   s   zTestGEXF.test_relabelc                 C   s   t  }|jdddd t |g d |jdddd d	d
i|jd< ddi|jd< t }t || |	d t j
|td}t| t| ksNJ tdd | D tdd | D ksfJ |jd= |j|jksrJ d S )Nr   r   greenr   color)r   r   r      r   r`   )r   r_   yellowr   r      edge_defaultr   	node_typec                 s   r@   rA   rB   rC   r,   r,   r-   rF     rG   z2TestGEXF.test_default_attribute.<locals>.<genexpr>mode)r   r(   r   add_pathr   r%   r   r    r<   r6   r2   intr3   r4   r5   r=   r,   r,   r-   test_default_attribute   s    
zTestGEXF.test_default_attributec                 C   sp   t  }|jdddd t }t || |d t j|td}t	|dgks+J |j
d d dks6J d S )	Nr   rb   M   r   r   rd   r   77)r   r(   r   r   r    r<   r6   r2   rh   listr4   r=   r,   r,   r-   test_serialize_ints_to_strings  s   
z'TestGEXF.test_serialize_ints_to_stringsc                 C   s   t  }|g d tdD ]'}||j| d< ||j| d< ||j| d< ||j| d< |d |j| d< qd	td
 dt j d}dt 	|}||ksRJ d S )N))r   r   r   r   r   r`      r   r   pidstartr   end<gexf xmlns="http://www.gexf.net/1.2draft" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gexf.net/1.2draft http://www.gexf.net/1.2draft/gexf.xsd" version="1.2">
  <meta lastmodifieddate="%Y-%m-%d">
    <creator>NetworkX a  </creator>
  </meta>
  <graph defaultedgetype="undirected" mode="dynamic" name="" timeformat="long">
    <nodes>
      <node id="0" label="0" pid="0" start="0" end="1" />
      <node id="1" label="1" pid="1" start="1" end="2" />
      <node id="2" label="2" pid="2" start="2" end="3" />
      <node id="3" label="3" pid="3" start="3" end="4" />
    </nodes>
    <edges>
      <edge source="0" target="1" id="0" />
      <edge source="1" target="2" id="1" />
      <edge source="2" target="3" id="2" />
    </edges>
  </graph>
</gexf>
)
r   OrderedGraphadd_edges_fromranger4   timestrftime__version__joingenerate_gexf)r8   r9   iexpectedobtainedr,   r,   r-   test_write_with_node_attributes  s   z(TestGEXF.test_write_with_node_attributesc                 C   sf   t  }|ddddifddddifdg dtd dt j d	}d
t |}||ks1J d S )Nr   r   r   r   ro   rt   ru   rv   a  </creator>
  </meta>
  <graph defaultedgetype="undirected" mode="static" name="">
    <nodes>
      <node id="0" label="0" />
      <node id="1" label="1" />
      <node id="2" label="2" />
      <node id="3" label="3" />
    </nodes>
    <edges>
      <edge source="0" target="1" id="0" />
      <edge source="1" target="2" id="2" />
      <edge source="2" target="3" id="1" />
    </edges>
  </graph>
</gexf>rw   )r   r(   ry   r{   r|   r}   r~   r   )r8   r9   r   r   r,   r,   r-   test_edge_id_construct8  s   $zTestGEXF.test_edge_id_constructc                 C   s   t d}td}t|dd |dD d |d|d d d	< d
td dtj	 d}d
t|}||ks?J d S )Nnumpyrp   c                 S   s   i | ]}||qS r,   r,   )rD   nr,   r,   r-   
<dictcomp>W  s    z,TestGEXF.test_numpy_type.<locals>.<dictcomp>numberg?r   r   zedge-numberrt   ru   rv   a_  </creator>
  </meta>
  <graph defaultedgetype="undirected" mode="static" name="">
    <attributes mode="static" class="edge">
      <attribute id="1" title="edge-number" type="float" />
    </attributes>
    <attributes mode="static" class="node">
      <attribute id="0" title="number" type="int" />
    </attributes>
    <nodes>
      <node id="0" label="0">
        <attvalues>
          <attvalue for="0" value="0" />
        </attvalues>
      </node>
      <node id="1" label="1">
        <attvalues>
          <attvalue for="0" value="1" />
        </attvalues>
      </node>
      <node id="2" label="2">
        <attvalues>
          <attvalue for="0" value="2" />
        </attvalues>
      </node>
      <node id="3" label="3">
        <attvalues>
          <attvalue for="0" value="3" />
        </attvalues>
      </node>
    </nodes>
    <edges>
      <edge source="0" target="1" id="0">
        <attvalues>
          <attvalue for="1" value="1.1" />
        </attvalues>
      </edge>
      <edge source="1" target="2" id="1" />
      <edge source="2" target="3" id="2" />
    </edges>
  </graph>
</gexf>rw   )rQ   importorskipr   
path_graphset_node_attributesarangefloat64r{   r|   r}   r~   r   )r8   npr9   r   r   r,   r,   r-   test_numpy_typeT  s   

/zTestGEXF.test_numpy_typec                 C   sX   t  }|jddd t }t || |d t j|td}|j	d d s*J d S )Nr   T)testattrr   rd   r   
r   r(   r   r   r    r<   r6   r2   rh   r4   r=   r,   r,   r-   	test_bool  s   
zTestGEXF.test_boolc                 C   s  ddl m} tdtd}}t }|jd|ddd |jd|dd	d |jd
| ddd t }t|| |	d |
 }|	d tj|td}d|v sTJ d|v sZJ d|v s`J |jd d |kskJ ||jd d svJ |jd
 d | ksJ |jd d dksJ |jd d dksJ |jd
 d dksJ |jd d dksJ |jd d d	ksJ |jd
 d dksJ d S )Nr   )isnaninfnanr   rL   )r   strdatakeyr   rM   r`   z-infcrd   s   INFs   NaNs   -INFr   r   networkx_key)mathr   floatr   r(   r   r   r    r<   r6   readr2   rh   r4   )r8   r   r   r   r9   r>   filetextr:   r,   r,   r-   test_specials  s0   

zTestGEXF.test_specialsc                 C   sd   t  }ddg}|jd|d t }t || |d t j|td}|j	d d |ks0J d S )N)r   r   r`   )	   r   r   r   )r   r   rd   r   r   )r8   r9   
list_valuer>   r:   r,   r,   r-   test_simple_list  s   
zTestGEXF.test_simple_listc                 C   s   t  }|jdddd d|jd< t }t || |d t j|t	d}t
| t
| ks5J t
d	d
 | D t
d	d
 | D ksMJ d S )Nr   r   r]   r^   dynamicrf   r   rd   c                 s   r@   rA   rB   rC   r,   r,   r-   rF     rG   z-TestGEXF.test_dynamic_mode.<locals>.<genexpr>)r   r(   r   r%   r   r    r<   r6   r2   rh   r3   r4   r5   r=   r,   r,   r-   test_dynamic_mode  s   

zTestGEXF.test_dynamic_modec              	   C   s   t  }|jdddd |jdddd |jddddd	ddd
 |jddddddd |dd t }t || |d t j|t	d}t
| t
| ksUJ t
dd | D t
dd | D ksmJ d S )Nr   r   r]   r^   r   r   r   r`   
undirected)r   wighttyperr   rs   r   )r   r   rr   rs   rd   c                 s   r@   rA   rB   rC   r,   r,   r-   rF     rG   zCTestGEXF.test_multigraph_with_missing_attributes.<locals>.<genexpr>)r   
MultiGraphr   r   r   r    r<   r6   r2   rh   r3   r4   r5   r=   r,   r,   r-   'test_multigraph_with_missing_attributes  s   
z0TestGEXF.test_multigraph_with_missing_attributesc                 C   s  t  }|jdddd ddi|jd d< dddd	|jd d d
< dddd|jd d d< d|jd d d< d|jd d d< t }t j||dd |d t j|t	d}t
| t
| ksgJ t
dd | D t
dd | D ksJ t  }|jdddd ddi|jd d< dddd	|jd d d
< ddddd|jd d d< d|jd d d< d|jd d d< t }t || |d t j|t	d}t
| t
| ksJ t
dd | D t
dd | D ksJ d S )Nr   r   r]   r^   size6   vizr   )xyzposition   )rgrM   r_   zhttp://random.urlshaper   	thickness1.1draftversionrd   c                 s   r@   rA   rB   rC   r,   r,   r-   rF     rG   z7TestGEXF.test_missing_viz_attributes.<locals>.<genexpr>g      ?)r   r   rM   rL   zftp://random.urlc                 s   r@   rA   rB   rC   r,   r,   r-   rF     rG   r   r(   r   r4   r   r    r<   r6   r2   rh   r3   r5   r=   r,   r,   r-   test_missing_viz_attributes  s<   

z$TestGEXF.test_missing_viz_attributesc                 C   sH  t  }|jdddd dg|jd d< t }t || |d t j|t	d}t
| t
| ks8J t
dd	 | D t
dd	 | D ksPJ t  }|jdddd dg|jd d
< t }t j||dd |d t j|t	d}t
| t
| ksJ t
dd	 | D t
dd	 | D ksJ d S )Nr   r   r]   r^   rn   spellsrd   c                 s   r@   rA   rB   rC   r,   r,   r-   rF   	  rG   z0TestGEXF.test_slice_and_spell.<locals>.<genexpr>slicesr   r   c                 s   r@   rA   rB   rC   r,   r,   r-   rF     rG   r   r=   r,   r,   r-   test_slice_and_spell  s,   

zTestGEXF.test_slice_and_spellc                 C   s   t  }|jdddddgd t }t || |d t j|td}t	|
 t	|
 ks3J t	dd	 | D t	dd	 | D ksKJ d S )
Nr   r   r]   r   r   )r   r_   parentsrd   c                 s   r@   rA   rB   rC   r,   r,   r-   rF   !  rG   z+TestGEXF.test_add_parent.<locals>.<genexpr>)r   r(   r   r   r    r<   r6   r2   rh   r3   r4   r5   r=   r,   r,   r-   test_add_parent  s   
zTestGEXF.test_add_parentN)__name__
__module____qualname__classmethodr.   r;   r?   rH   rN   rV   rX   rY   r\   ri   rm   r   r   r   r   r   r   r   r   r   r   r   r,   r,   r,   r-   r   	   s0    
|	

#8
 
"r   )r   r{   rQ   networkxr   r   r,   r,   r,   r-   <module>   s
    