
    Vh'              
       T   d Z ddlZddlZddlZddlZddlmZmZm	Z	  ej                  d      Z ej                  d      Z ej                  d      Z ej                  d      Z ej                  d      Zd	d
ddifd
dddifgZd	d
dddfd
ddddfgZej$                  j'                  dei fei fei fei feddiff      d        Zd Zej$                  j'                  dei efei efeddieff      d        Zej.                  d        Zd Zd Zd Zd Zd Z G d d       Zd! Zy)"z
Unit tests for edgelists.
    N)edges_equalgraphs_equalnodes_equalz;
    # comment line
    1 2
    # comment line
    2 3
    zC
    # comment line
    1 2 2.0
    # comment line
    2 3 3.0
    zY
    # comment line
    1 2 {'weight':2.0}
    # comment line
    2 3 {'weight':3.0}
    zy
    # comment line
    1 2 {'weight':2.0, 'color':'green'}
    # comment line
    2 3 {'weight':3.0, 'color':'red'}
    z}
    # comment line
    1, 2, {'weight':2.0, 'color':'green'}
    # comment line
    2, 3, {'weight':3.0, 'color':'red'}
          weight       @         @green)r   colorred)dataextra_kwargs	delimiter,c                     t        j                  | j                  d            }t        j                  |ft
        dd|}t        |j                         ddg      sJ y )Nutf-8Fnodetyper   r   r   r   r
   ioBytesIOencodenxread_edgelistintr   edges)r   r   bytesIOGs       V/home/dcms/DCMS/lib/python3.12/site-packages/networkx/readwrite/tests/test_edgelist.pytest_read_edgelist_no_datar$   F   sR     jjW-.G
K3UKlKAqwwy66"2333    c                      t        j                  t        j                  d            } t	        j
                  | t              }t        |j                  d      t              sJ y )Nr   r   Tr   )
r   r   edges_with_valuesr   r   read_weighted_edgelistr   r   r    _expected_edges_weights)r!   r"   s     r#   test_read_weighted_edgelistr,   V   sJ    jj*11':;G
!!'C8AqwwDw)+BCCCr%   )r   r   expectedc                     t        j                  | j                  d            }t        j                  |fdt
        i|}t        |j                  d      |      sJ y )Nr   r   Tr(   r   )r   r   r-   r!   r"   s        r#   test_read_edgelist_with_datar/   \   sP     jjW-.G
?3?,?AqwwDw)8444r%   c                  T    t        j                         } | j                  g d       | S )N))r   r   r   )r   r
   g      ;@)r
      r   )r   Graphadd_weighted_edges_from)r"   s    r#   example_graphr4   j   s!    

AFGHr%   c                     | }t        j                  g dt              }t        |j                  |j                        sJ t        |j                  |j                        sJ y )Nz1 22 33 4r'   r   parse_edgelistr   r   nodesr   r    r4   r"   Hs      r#   test_parse_edgelist_no_datar>   q   sJ    A
/#>Aqww(((qww(((r%   c                     | }t        j                  g dt              }t        |j                  |j                        sJ t        |j                  d      |j                  d            sJ y )N)z1 2 {'weight': 3}z2 3 {'weight': 27}z3 4 {'weight': 3.0}r'   Tr(   r9   r<   s      r#   "test_parse_edgelist_with_data_dictr@   x   s]    A
JUX	A qww(((qwwDw)1777+=>>>r%   c                     | }t        j                  g dt        dt        ff      }t	        |j
                  |j
                        sJ t        |j                  d      |j                  d            sJ y )N1 2 3z2 3 27z3 4 3.0r   r   Tr(   )r   r:   r   floatr   r;   r   r    r<   s      r#   "test_parse_edgelist_with_data_listrE      sf    A
&Xu<M;O	A qww(((qwwDw)1777+=>>>r%   c                      g d} t        j                  | t              }t        |j	                               ddgk(  sJ t        j                  t        d      5  g d} t        j                  | d       d d d        t        j                  t        d	      5  g d
} t        j                  | t               d d d        t        j                  t        d      5  g d} t        j                  | t        dt        fdt        ff       d d d        t        j                  t        d      5  g d} t        j                  | t        dt        ff       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   mxY w# 1 sw Y   y xY w)N)z1;2r7   r8   r'   r   )r
   r1   zFailed to convert nodes)matchr6   nopezFailed to convert edge data)rC   r7   r8   znot the same lengthrB   r   capacityr   zFailed to convert)z1 2 't1'z2 3 't3'z3 4 't3')
r   r:   r   listr    pytestraises	TypeError
IndexErrorrD   )linesr"   s     r#   test_parse_edgelistrP      sH   !E
%#.A	?vv....	y(A	B 2%
%&12 
y(E	F /'
%#./ 
z)>	? 
.
C%'8:s:K&L	

 
y(;	< J4
%#h5F4HIJ J2 2/ /
 
J Js0   E  E,/E8/(F E),E58FFc                      ddg} t        j                  | d       }t        j                  | D cg c]  }|j                  d       c}      }t	        |j
                  |j
                        sJ y c c}w )Nznode#1 node#2znode#2 node#3)comments )r   r:   r2   splitr   r    )edgelistr"   er=   s       r#   test_comments_NonerW      s\    1H
(T2A
11!''#,12Aqww((( 2s   A1c                   d    e Zd Ze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y)TestEdgelistc                    t        j                  d      | _        g d}| j                  j                  |       | j                  j	                  d       t        j
                  | j                        | _        t        j                         | _        | j                  j                  g d       t        j                  | j                        | _        y )Ntest)name))ab)r^   c)r_   d)r`   rV   )rV   f)r]   ra   g)r   r      rc   )r   r   r   )r
   r
   *   )r   r2   r"   add_edges_fromadd_nodeDiGraphDG
MultiGraphXGr3   MultiDiGraphXDG)clsrV   s     r#   setup_classzTestEdgelist.setup_class   s    f%TQsCEE"&&'TU//#&&)r%   c                     t        j                         }t        j                         }|j	                  ddg       t        j
                  ||d       |j                  d       |j                         dk(  sJ y )Nr   r   Fr(   r   s   1 2
2 3
r   r   r   r2   rf   write_edgelistseekreadselffhr"   s      r#   test_write_edgelist_1z"TestEdgelist.test_write_edgelist_1   s\    ZZ\HHJ	&&)*
!Re,

wwyM)))r%   c                     t        j                         }t        j                         }|j	                  ddg       t        j
                  ||d       |j                  d       |j                         dk(  sJ y )Nr   r   Tr(   r   s   1 2 {}
2 3 {}
rq   ru   s      r#   test_write_edgelist_2z"TestEdgelist.test_write_edgelist_2   s]    ZZ\HHJ	&&)*
!Rd+

wwy////r%   c                     t        j                         }t        j                         }|j	                  ddd       |j	                  ddd       t        j
                  ||d       |j                  d	       |j                         d
k(  sJ y )Nr   r   r	   r   r
   r   Tr(   r   s(   1 2 {'weight': 2.0}
2 3 {'weight': 3.0}
r   r   r   r2   add_edgerr   rs   rt   ru   s      r#   test_write_edgelist_3z"TestEdgelist.test_write_edgelist_3   sn    ZZ\HHJ	

1a
$	

1a
$
!Rd+

wwyIIIIr%   c                 "   t        j                         }t        j                         }|j	                  ddd       |j	                  ddd       t        j
                  ||dg       |j                  d	       |j                         d
k(  sJ y )Nr   r   r	   r|   r
   r   r   r(   r   s   1 2 2.0
2 3 3.0
r}   ru   s      r#   test_write_edgelist_4z"TestEdgelist.test_write_edgelist_4   sp    ZZ\HHJ	

1a
$	

1a
$
!Rl3

wwy1111r%   c                 `   t        j                         }t        d      t        d      z   t        d      z   }t        d      t        d      z   t        d      z   } |j                  |dfi |di |d	z  }t        j                  ||       t        j
                  |      }t        ||      sJ y )
N(	  {         D  	Radioheadr
   el.txtr   r2   chrr~   rr   r   r   rv   tmp_pathr"   name1name2fnamer=   s          r#   test_unicodezTestEdgelist.test_unicode   s    HHJD	CH$s4y0D	CI%C0

5+4%48#
!U#U#Aq!!!r%   c                 z   t        j                         }t        d      t        d      z   t        d      z   }t        d      t        d      z   t        d      z   } |j                  |dfi |di |d	z  }t	        j
                  t              5  t        j                  ||d
       d d d        y # 1 sw Y   y xY w)Nr   r   r   r   r   r   r   r
   r   latin-1encoding)r   r2   r   r~   rK   rL   UnicodeEncodeErrorrr   )rv   r   r"   r   r   r   s         r#   test_latin1_issuezTestEdgelist.test_latin1_issue   s    HHJD	CH$s4y0D	CI%C0

5+4%48#]]-. 	<a;	< 	< 	<s   B11B:c                    t        j                         }dt        d      z   dz   }t        d      dz   } |j                  |dfi |di |dz  }t        j                  ||d	
       t        j
                  |d	
      }t        ||      sJ y )NBj   rk   berr   r
   r   r   r   r   r   s          r#   test_latin1zTestEdgelist.test_latin1   s    HHJs3x$&C5 

5+4%48#
!UY7UY7Aq!!!r%   c                    | j                   }|dz  }t        j                  ||       t        j                  |      }t        j                  |      }||usJ |j	                  d       t        t        |      t        |            sJ t        t        |j                               t        |j                                     sJ y )Nr   rb   )	r"   r   rr   r   remove_noder   rJ   r   r    rv   r   r"   r   r=   H2s         r#   test_edgelist_graphz TestEdgelist.test_edgelist_graph   s    FF8#
!U#U#e${{	c47DG,,,4	?DO<<<r%   c                    | j                   }|dz  }t        j                  ||       t        j                  |t        j                               }t        j                  |t        j                               }||usJ |j                  d       t        t        |      t        |            sJ t        t        |j                               t        |j                                     sJ y )Nr   )create_usingrb   )
ri   r   rr   r   rh   r   r   rJ   r   r    r   s         r#   test_edgelist_digraphz"TestEdgelist.test_edgelist_digraph  s    GG8#
!U#U>e"**,?{{	c47DG,,,4	?DO<<<r%   c                    t        j                  | j                        }|dz  }t        j                  ||       t        j                  |t
              }|j                  t        t        j                  |                   t        t        |      t        |            sJ t        t        |j                               t        |j                                     sJ y )Nr   r'   )r   convert_node_labels_to_integersr"   rr   r   r   remove_nodes_fromrJ   isolatesr   r   r    )rv   r   r"   r   r=   s        r#   test_edgelist_integersz#TestEdgelist.test_edgelist_integers  s    ..tvv68#
!U#US1	DQ0147DG,,,4	?DO<<<r%   c                    | j                   }|dz  }t        j                  ||       t        j                  |t        t        j
                               }t        j                  |t        t        j
                               }||usJ t        t        |      t        |            sJ t        t        |j                               t        |j                                     sJ y Nr   )r   r   )
rk   r   rr   r   r   rj   r   rJ   r   r    r   s         r#   test_edgelist_multigraphz%TestEdgelist.test_edgelist_multigraph  s    GG8#
!U#USr}}OecP{{47DG,,,4	?DO<<<r%   c                    | j                   }|dz  }t        j                  ||       t        j                  |t        t        j
                               }t        j                  |t        t        j
                               }||usJ t        t        |      t        |            sJ t        t        |j                               t        |j                                     sJ y r   )
rm   r   rr   r   r   rl   r   rJ   r   r    r   s         r#   test_edgelist_multidigraphz'TestEdgelist.test_edgelist_multidigraph!  s    HH8#
!U#USr?PQec@QR{{47DG,,,4	?DO<<<r%   N)__name__
__module____qualname__classmethodro   rx   rz   r   r   r   r   r   r   r   r   r   r    r%   r#   rY   rY      sQ    * **0J2"<	"	=	====r%   rY   c                      t        j                  d      } t        j                  | dt        dt
        fg      }t        |j                  d            g dk(  sJ y)zSee gh-7462

    Input when printed looks like::

        1       2       3
        2       3
        3       4       3.0

    Note the trailing \t after the `3` in the second row, indicating an empty
    data value.
    z1	2	3
2	3	
3	4	3.0	value)r   r   r   r(   ))r   r   3)r   r
    )r
   r1   z3.0N)r   StringIOr   r:   r   strsortedr    )sr"   s     r#   'test_edgelist_consistent_strip_handlingr   ,  sO     	01A
!tc'3@PQA!''w''(,TTTTr%   ) __doc__r   textwraprK   networkxr   networkx.utilsr   r   r   dedentedges_no_datar)   edges_with_weightedges_with_multiple_attrsedges_with_multiple_attrs_csvr+   _expected_edges_multiattrmarkparametrizer$   r,   r/   fixturer4   r>   r@   rE   rP   rW   rY   r   r   r%   r#   <module>r      s   
    A A $HOO  $HOO  ,HOO  !0!  q8S/2QHc?4KL cG,-cE*+  		B	B	"B'	&c(:;	4	4D (	B 78	"B(AB	&c(:<UV55  )??J2)~= ~=BUr%   