
    wg(                         d dl Z  e j                  d      Z e j                  d      Zd dlZd dlmZmZm	Z	 d dl
mZ  G d d      Ze j                  j                  dd	      d
        Zy)    Nnumpyscipy)barbell_graphcycle_graph
path_graph)graphs_equalc                       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        dd      | _        t        dt        j                        | _        | j                  t        j                               | _        | j                  t        j                               | _	        y )N
      create_using)
r   G1r   nxDiGraphG2create_weightedGraphG3G4selfs    f/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/networkx/tests/test_convert_scipy.pysetup_methodzTestConvertScipy.setup_method   sR    A&brzz:&&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                     t        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   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    NO !"1!"" da  "()Q!b&))v&	!!"% # )s   A?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   rD   s     r   
test_shapezTestConvertScipy.test_shapeA   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   rM   r   rV   s     r   test_identity_graph_matrixz+TestConvertScipy.test_identity_graph_matrixF   2    $$TWW-  !RXXZ8r   c                     t        j                  | j                        }| j                  | j                  |t        j                                y)z4Conversion from digraph to sparse matrix to digraph.N)r   rY   r   rM   r   rV   s     r   test_identity_digraph_matrixz-TestConvertScipy.test_identity_digraph_matrixK   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   rY   r   rM   r   rV   s     r   #test_identity_weighted_graph_matrixz4TestConvertScipy.test_identity_weighted_graph_matrixP   r[   r   c                     t        j                  | j                        }| j                  | j                  |t        j                                y)zFConversion from weighted digraph to sparse matrix to weighted digraph.N)r   rY   r   rM   r   rV   s     r   %test_identity_weighted_digraph_matrixz6TestConvertScipy.test_identity_weighted_digraph_matrixU   r^   r   c                 <   t        d      }t        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   rO   rP   N)
r   r-   nodesr   rY   r   r<   r&   r'   r(   )r   P4P3re   rD   GAlong_nlnon_nls           r   test_nodelistzTestConvertScipy.test_nodelistZ   s    ]]
#$$R(;XXa[B'''b&&(@(@"rRaS.b&&(@(@"wW b&&(@(@"vVr   c                    t        j                         }|j                  d t        d      D               t	        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rO         ?333333?)r8   otherNr$   .0ns     r   	<genexpr>z7TestConvertScipy.test_weight_keyword.<locals>.<genexpr>n         WAq1us&CDW   r   r,   r8   rq   rr   rs   
r   r   add_edges_fromranger   rY   nptestingassert_equalrB   r   WP4rh   rD   s       r   test_weight_keywordz$TestConvertScipy.test_weight_keywordl   s    hhjWeTUhWW]$$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                 4   t        j                         }|j                  d t        d      D               t	        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_keyword{   s   hhjWeTUhWW]$$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                 "   t        j                  t        j                        5  t        j                         }|j                  d t        d      D               t        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}   r   rY   )r   r   rh   s      r   test_format_keyword_raisez*TestConvertScipy.test_format_keyword_raise   sn    ]]2++, 	=((*C CH8  A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(   rY   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 )NrO   r   )	r   r   add_noderY   r~   r   r   rC   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 )	NrO   rP   r   )r   rP   rO   rd   r   r   rO   )rO   r   r   r   rO   r   )	r   r   add_edgerY   r~   r   r   rC   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rO   rO   rO   rP   r   r   r,   rP   r   r,   rd   r   )rO   r   rO   )	r   r   rY   r~   r   r   rC   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   rO   r   r   r   rd   r   r   )r   r   r   )	r   r   rY   r~   r   r   rC   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.

        rO   rP   )r   r   r   rO   rO   r   rz   T)parallel_edgesr   F)r   r   r   r   r   r   r8   N)rS   rT   	csr_arrayr   r   r0   r   r;   r   MultiDiGraphr|   set)r   rD   expectedr.   r3   r4   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   rO   r   rz   N)rS   rT   r   r   r;   
MultiGraphr   r   )r   rD   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   rM   rW   rZ   r]   r`   rb   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   rO   r8   r   rP   )r   r   rP   )r   r   rO   )rP   rO   r   N)	r   r   r|   rS   rT   	coo_arrayasformatr   r;   )r   r   rD   s      r   $test_from_scipy_sparse_array_formatsr   
  s     xxzHHa=!Ha=!Ha=!Ha=!Ha=!Ha=!	
	 			Y	9=>GGVA""<"<Q"?@@@r   )r&   importorskipr~   rS   networkxr   networkx.generators.classicr   r   r   networkx.utilsr   r
   markparametrizer   r$   r   r   <module>r      sn    V!V!  N N '|) |)~ *?@A AAr   