
    Vh(                         d dl Z d dlZd dlmZ  e j
                  d      Z e j
                  d      Z G d d      Ze j                  j                  dd      d	        Zy)
    N)graphs_equalnumpyscipyc                       e 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 Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestConvertScipyc                 .   t        j                  dd      | _        t        j                  dt         j                        | _        | j                  t        j                               | _        | j                  t        j                               | _	        y )N
      create_using)
nxbarbell_graphG1cycle_graphDiGraphG2create_weightedGraphG3G4selfs    Q/home/dcms/DCMS/lib/python3.12/site-packages/networkx/tests/test_convert_scipy.pysetup_methodzTestConvertScipy.setup_method   s\    ""2q).."**=&&rxxz2&&rzz|4    c                 ~     G d d      }t        j                  t        j                  t        j                  |       y )Nc                       e Zd ZdZy)+TestConvertScipy.test_exceptions.<locals>.GN)__name__
__module____qualname__format r   r   Gr      s    Fr   r$   )pytestraisesr   NetworkXErrorto_networkx_graph)r   r$   s     r   test_exceptionsz TestConvertScipy.test_exceptions   s*    	 	 	b&&(<(<a@r   c                 4   t        j                  d      }t        |j                               }|D cg c]  \  }}|	 }}}|D cg c]  \  }}|	 }}}|D cg c]  }|dz   	 }	}t	        |||	      }
|j                  |
       |S c c}}w c c}}w c c}w )N   r	   )r   r   listedgeszipadd_weighted_edges_from)r   r$   geuvsourcedestsweightexs              r   r   z TestConvertScipy.create_weighted   s    NN1O !"1!"" da  "()Q!b&))v&	!!"% # )s   B	BBc                 <   t        j                  ||      }t        j                  ||      sJ t        j                  ||      }t        j                  ||      sJ t        j                  d|      j                  |      }t        j                  ||      sJ |j                         }t        j                  d|      j                  |      }t        j                  ||      sJ |j                         }t        j                  d|      j                  |      }t        j                  ||      sJ |j                         }	t        j                  d|      j                  |	      }t        j                  ||      sJ |j                         }
t        j                  d|      j                  |
      }t        j                  ||      sJ |j                         }t        j                  d|      j                  |      }t        j                  ||      sJ y )Nr   r   )r   from_scipy_sparse_arrayis_isomorphicr(   empty_graph	__class__tocsrtocootocsctodensetoarray)r   r$   Ar   GGGWGIACSRACOOACSCADAAs               r   identity_conversionz$TestConvertScipy.identity_conversion"   s   ''E2&&&!!!,?2&&&^^A|,66q92&&&wwy^^A|,66t<2&&&wwy^^A|,66t<2&&&wwy^^A|,66t<2&&&YY[^^A|,66r:2&&&YY[^^A|,66r:2&&&r   c                     t         j                  j                  g dg dg      }t        j                  t
        j                  t
        j                  |       y)z(Conversion from non-square sparse array.)      r
   )r+         N)spsparse	lil_arrayr%   r&   r   r'   r:   r   rC   s     r   
test_shapezTestConvertScipy.test_shape@   s7    III 67b&&(B(BAFr   c                     t        j                  | j                        }| j                  | j                  |t        j                                y)z0Conversion from graph to sparse matrix to graph.N)r   to_scipy_sparse_arrayr   rL   r   rU   s     r   test_identity_graph_matrixz+TestConvertScipy.test_identity_graph_matrixE   2    $$TWW-  !RXXZ8r   c                     t        j                  | j                        }| j                  | j                  |t        j                                y)z4Conversion from digraph to sparse matrix to digraph.N)r   rX   r   rL   r   rU   s     r   test_identity_digraph_matrixz-TestConvertScipy.test_identity_digraph_matrixJ   2    $$TWW-  !RZZ\:r   c                     t        j                  | j                        }| j                  | j                  |t        j                                y)zBConversion from weighted graph to sparse matrix to weighted graph.N)r   rX   r   rL   r   rU   s     r   #test_identity_weighted_graph_matrixz4TestConvertScipy.test_identity_weighted_graph_matrixO   rZ   r   c                     t        j                  | j                        }| j                  | j                  |t        j                                y)zFConversion from weighted digraph to sparse matrix to weighted digraph.N)r   rX   r   rL   r   rU   s     r   %test_identity_weighted_digraph_matrixz6TestConvertScipy.test_identity_weighted_digraph_matrixT   r]   r   c                 d   t        j                  d      }t        j                  d      }t        |j                               }t        j                  ||      }t        j
                  |      }t        j                  ||      sJ t        j                  t         j                  t         j                  |g        |dgz   }t        j                  t         j                  t         j                  ||       g d}t        j                  t         j                  t         j                  ||       y)z>Conversion from graph to sparse matrix to graph with nodelist.r+   r
   nodelistr   )r   rN   rO   N)
r   
path_graphr,   nodesrX   r   r;   r%   r&   r'   )r   P4P3rd   rC   GAlong_nlnon_nls           r   test_nodelistzTestConvertScipy.test_nodelistY   s    ]]1]]1
#$$R(;XXa[B'''b&&(@(@"rRaS.b&&(@(@"wW b&&(@(@"vVr   c                    t        j                         }|j                  d t        d      D               t        j                  d      }t        j
                  |      }t        j                  j                  |j                         t        j
                  |d       j                                t        j                  j                  d|j                         z  t        j
                  |      j                                t        j                  j                  d|j                         z  t        j
                  |d      j                                y )Nc              3   2   K   | ]  }||d z   dddf  ywrN         ?333333?)r7   otherNr#   .0ns     r   	<genexpr>z7TestConvertScipy.test_weight_keyword.<locals>.<genexpr>m         WAq1us&CDW   r
   r+   r7   rq   rr   rs   
r   r   add_edges_fromrangerf   rX   nptestingassert_equalrA   r   WP4rh   rC   s       r   test_weight_keywordz$TestConvertScipy.test_weight_keywordk   s    hhjWeTUhWW]]1$$R(


IIK11#dCKKM	
 	

!))+r77<DDF	
 	

!))+r77GLTTV	
r   c                 H   t        j                         }|j                  d t        d      D               t        j                  d      }t        j
                  |d      }t        j                  j                  |j                         t        j
                  |d       j                                t        j
                  |d      }t        j                  j                  |j                         t        j
                  |d       j                                t        j
                  |d      }t        j                  j                  |j                         t        j
                  |d       j                                t        j
                  |d	      }t        j                  j                  |j                         t        j
                  |d       j                                t        j
                  |d
      }t        j                  j                  |j                         t        j
                  |d       j                                t        j
                  |d      }t        j                  j                  |j                         t        j
                  |d       j                                t        j
                  |d      }t        j                  j                  |j                         t        j
                  |d       j                                y )Nc              3   2   K   | ]  }||d z   dddf  ywrp   r#   rt   s     r   rw   z7TestConvertScipy.test_format_keyword.<locals>.<genexpr>|   rx   ry   r
   r+   csrr"   rz   csccoobsrlildiadokr{   r   s       r   test_format_keywordz$TestConvertScipy.test_format_keywordz   s#   hhjWeTUhWW]]1$$R6


IIK11#dCKKM	
 $$R6


IIK11#dCKKM	
 $$R6


IIK11#dCKKM	
 $$R6


IIK11#dCKKM	
 $$R6


IIK11#dCKKM	
 $$R6


IIK11#dCKKM	
 $$R6


IIK11#dCKKM	
r   c                 6   t        j                  t        j                        5  t        j                         }|j                  d t        d      D               t        j                  d      }t        j                  |d       d d d        y # 1 sw Y   y xY w)Nc              3   2   K   | ]  }||d z   dddf  ywrp   r#   rt   s     r   rw   z=TestConvertScipy.test_format_keyword_raise.<locals>.<genexpr>   s%      >?AEcC89ry   r
   r+   	any_otherr   )	r%   r&   r   r'   r   r|   r}   rf   rX   )r   r   rh   s      r   test_format_keyword_raisez*TestConvertScipy.test_format_keyword_raise   ss    ]]2++, 	=((*C CH8  q!B$$R<	= 	= 	=s   A"BBc                     t        j                  t        j                        5  t        j                  t        j
                                d d d        y # 1 sw Y   y xY w)N)r%   r&   r   r'   rX   r   r   s    r   test_null_raisez TestConvertScipy.test_null_raise   s=    ]]2++, 	1$$RXXZ0	1 	1 	1s   (AAc                     t        j                         }|j                  d       t        j                  |      }t        j
                  j                  |j                         t        j                  dgg             y )NrN   r   )	r   r   add_noderX   r~   r   r   rB   arrayr   r$   Ms      r   
test_emptyzTestConvertScipy.test_empty   sN    HHJ	

1$$Q'


		RXXse_=r   c           	      ^   t        j                         }|j                  dd       |j                  dd       |j                  dd       t        j                  |g d      }t        j
                  j                  |j                         t        j                  g dg dg dg             y )	NrN   rO   r
   )r
   rO   rN   rc   r   r   rN   )rN   r   r   r   rN   r   )	r   r   add_edgerX   r~   r   r   rB   r   r   s      r   test_orderingzTestConvertScipy.test_ordering   sv    JJL	

1a	

1a	

1a$$Q;


IIK9i"CD	
r   c           	         t        j                  dg      }t        j                  |      }t        j                  j                  |j                         t        j                  dgg             |j                  ddg       t        j                  |g d      }t        j                  j                  |j                         t        j                  g dg dg dg             y )	NrN   rN   rN   rO   r
   r
   r+   rO   r
   r+   rc   r   )rN   r   rN   )	r   r   rX   r~   r   r   rB   r   r|   r   s      r   test_selfloop_graphz$TestConvertScipy.test_selfloop_graph   s    HHfX$$Q'


		RXXse_=	&&)*$$Q;


IIK9i"CD	
r   c           	         t        j                  dg      }t        j                  |      }t        j                  j                  |j                         t        j                  dgg             |j                  ddg       t        j                  |g d      }t        j                  j                  |j                         t        j                  g dg dg d	g             y )
Nr   rN   r   r   r   rc   r   r   )r   r   r   )	r   r   rX   r~   r   r   rB   r   r|   r   s      r   test_selfloop_digraphz&TestConvertScipy.test_selfloop_digraph   s    JJx $$Q'


		RXXse_=	&&)*$$Q;


IIK9i"CD	
r   c           	         t         j                  j                  ddgddgg      }t        j                         }g d}|j                  |D cg c]
  \  }}||df c}}       |j                  ddd       t        j                  |dt        j                        }t        ||      sJ t        j                  |dt        j                        }t        ||      sJ g d}t        j                         }|j                  |D cg c]
  \  }}||df c}}       t        j                  |dt        j                        }t        ||      sJ t        j                         }|j                  t        |      d       d|d   d   d	   d
<   t        j                  |dt        j                        }t        ||      sJ yc c}}w c c}}w )zTests that the :func:`networkx.from_scipy_sparse_array` function
        interprets integer weights as the number of parallel edges when
        creating a multigraph.

        rN   rO   )r   r   r   rN   rN   r   rz   T)parallel_edgesr   F)r   r   r   r   r   r   r7   N)rR   rS   	csr_arrayr   r   r/   r   r:   r   MultiDiGraphr|   set)r   rC   expectedr-   r2   r3   actuals          r   +test_from_scipy_sparse_array_parallel_edgesz<TestConvertScipy.test_from_scipy_sparse_array_parallel_edges   s    II!Q!Q 01 ::<(((%)HA1a))HI!Qq)++d
 FH---++e"**
 FH--- 9??$((%)HA1a))HI++d
 FH---??$E
15&'Aq(#++e"//
 FH---7 *I *Is   G
	G
c                    t         j                  j                  ddgddgg      }t        j                  |t        j
                        }t        j
                         }|j                  ddd       t        ||      sJ y)zTests that a symmetric matrix has edges added only once to an
        undirected multigraph when using
        :func:`networkx.from_scipy_sparse_array`.

        r   rN   r   rz   N)rR   rS   r   r   r:   
MultiGraphr   r   )r   rC   r$   r   s       r   test_symmetriczTestConvertScipy.test_symmetric   sk     II!Q!Q 01&&qr}}E==?!Qq)Ax(((r   N)r   r    r!   r   r)   r   rL   rV   rY   r\   r_   ra   rm   r   r   r   r   r   r   r   r   r   r   r#   r   r   r   r   
   sk    5A'<G
9
;
9
;
W$
%
N=1>
	
	
&.P
)r   r   sparse_format)r   r   r   c                 F   t        j                         }|j                  ddddifddddifddddifddddifddddifddddifg       t        j                  j                  g dg dg dg      j                  |       }t        |t        j                  |            sJ y	)
z7Test all formats supported by _generate_weighted_edges.r   rN   r7   r
   rO   )r   r
   rO   )r
   r   rN   )rO   rN   r   N)	r   r   r|   rR   rS   	coo_arrayasformatr   r:   )r   r   rC   s      r   $test_from_scipy_sparse_array_formatsr   	  s     xxzHHa=!Ha=!Ha=!Ha=!Ha=!Ha=!	
	 			Y	9=>GGVA""<"<Q"?@@@r   )r%   networkxr   networkx.utilsr   importorskipr~   rR   r   markparametrizer   r#   r   r   <module>r      sh      'V!V!|) |)~ *?@A AAr   