
    Vh                     h    d dl Z d dl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)    Nc            	      J   t        j                  ddddddd      } | j                         D cg c]  }|h }}t         j                  j	                  | |      }t         j                  j                  |       }t         j                  j	                  | |      |kD  sJ y c c}w 	N            ?;On?      
   average_degreemin_communityseed)nxLFR_benchmark_graphnodes	community
modularitylouvain_communities)Gu	partitionmods       `/home/dcms/DCMS/lib/python3.12/site-packages/networkx/algorithms/community/tests/test_louvain.pytest_modularity_increaser      s    
QU1BR	A  ggi(!(I(
,,
!
!!Y
/C003I<<""1i03666	 )s   
B c            	      `   t        j                  ddddddd      } | j                         }t         j                  j	                  |       }t         j                  j	                  |      }t         j                  j                  | |      sJ t         j                  j                  ||      sJ y r   )r   r   to_directedr   r   is_partition)r   Hr   
partition2s       r   test_valid_partitionr!      s    
QU1BR	A 	
A003I11!4J<<$$Q	222<<$$Q
333    c                      t        j                         } h dh dh dh dg}t         j                  j                  | dd       }||k(  sJ y )N   r         r      	                           r	      r                                          r
                   !   r&   r   weight)r   karate_club_graphr   r   )r   partr   s      r   test_karate_club_partitionrI      sN    
A2 3	D 0040HI9r"   c                     t        j                  d      } t         j                  j                  | d      }t	        |      }|D cg c]  }|j                          }}|d   |d   k(  sJ t	        |      }|d   |d   k(  sJ y c c}w )Nr=   *   r   r   )r   
path_graphr   louvain_partitionsnextcopy)r   
parts_iter
first_parts
first_copysecond_parts         r   test_partition_iteratorrV   *   s    
bA000<Jj!J$./q!&&(/J/ a=JqM)))z"Ka=JqM))) 0s   Bc            	         t        j                         } t         j                  j                  | dd       }h dh dh dh dg}||k(  sJ | j	                  t        d      D cg c]
  }|||dz  f c}       t         j                  j                  | dd	      }||k7  sJ t         j                  j                  | dd       }||k(  sJ y c c}w )
Nr&   rE   r$   r/   r3   r:   r(     rF   )r   rG   r   r   add_weighted_edges_fromrange)r   expected_partitionrH   ir   s        r   test_undirected_selfloopsr]   6   s    
A99!!D9Q2 3	D %%%qBA1a$h/BC0080LI9 0040HI9 Cs   $Cc            	         t        j                         } | j                  t        d             g d}| j	                  |       t         j
                  j                  | dd       }| j                  t        d      D cg c]
  }|||dz  f c}       t         j
                  j                  | dd      }||k7  sJ t         j
                  j                  | dd       }||k(  sJ y c c}w )Nr)   )r   r&   )r   r%   )r%   r   )r&   r%   )r&   r   r   r0   r0   r   )r'   r;   )r;   r'   r(   r   )r   r(   {   rE   r   rX   rF   )r   DiGraphadd_nodes_fromrZ   add_edges_fromr   r   rY   )r   G_edgesG_expected_partitionr\   G_partitions        r   test_directed_selfloopsrj   K   s    


AU2YG W<<;;ACPT;UqBA1a$h/BC,,2213x2PK.... ,,2213t2LK.... Cs   >C'c                     t        j                         } t        j                         }| j                  t        d             |j                  g d       g d}g d}| j	                  |       |j	                  |       h dddhdhd	hd
dhddhg}t         j
                  j                  | dd      }h dh dh dg}t         j
                  j                  |dd      }||k(  sJ ||k(  sJ y)zS
    Test 2 cases that were looping infinitely
    from issues #5175 and #5704
    r   )r%   r&   r   r0   r	   r1   r'   r;   r(   r   r)   r_   ))r%   r&   )r%   r1   )r%   r(   )r&   r   )r&   r0   )r&   r	   r`   ra   )r0   r	   )r	   r0   )r1   r'   )r1   r;   rb   )r(   r)   )r   r)   )r)   r   >   r   r%   r&   r   r0   r	   r1   r;   r'   r(   rc   NrE   >   r&   r   r0   r	   >   r%   r1   r'   r;   >   r(   r   r)   )r   rd   re   rZ   rf   r   r   )r   r   rg   H_edgesrh   ri   H_expected_partitionH_partitions           r   test_directed_partitionro   h   s    
 	

A


AU2Y89GG$ WW%1vsQC!Q!RI,,2213t2LK(,D,,2213t2LK........r"   c            
         t        j                         } t        j                  | t        | j                        D ci c]  \  }}|||z   c}}d       h dh dh dh dg}t         j
                  j                  | d d      }t         j
                  j                  | dd      }t         j
                  j                  | d	d      }||k(  sJ ||k7  sJ ||k7  sJ ||k7  sJ y c c}}w )
Nfoo)namer$   r/   r3   r:   r&   rF   r   rF   )r   rG   set_edge_attributes	enumerateedgesr   r   )r   r\   edgerH   
partition1r    
partition3s          r   test_none_weight_paramrz      s    
A	y'9:GAtD!a%K:
 	3 3	D 11!Dq1IJ11!E1JJ11!H11MJ:::###! ;s   C(c            	         t        j                  ddddddd      } t        j                  d	d
      }t        j                  |       }t        j                  |      }t         j
                  j                  |       }t         j
                  j                  |      }t         j
                  j                  |      }t         j
                  j                  |      }t         j
                  j                  | |      d   }t         j
                  j                  ||      d   }	t         j
                  j                  ||      d   }
t         j
                  j                  ||      d   }|dk\  sJ |	dk\  sJ |
dk\  sJ |dk\  sJ y )Nr   r   r   r   r	   r
   r   r        rL   r   g?)r   r   gn_graph
MultiGraphMultiDiGraphr   r   partition_quality)r   r   IJr   r    ry   
partition4qualityquality2quality3quality4s               r   test_qualityr      sA   
QU1BR	A 	Cd#A
aA
A003I11!4J11!4J11!4Jll,,Q	:1=G||--a<Q?H||--a<Q?H||--a<Q?Hd??tttr"   c                     t        j                         } t        j                  |       }| j                  ddd       |j                  ddd       | j                  ddd       |j                  ddd       t         j                  j                  | d	      }t         j                  j                  |d	      }t         j                  j                  |d
d      }||cxk(  r|k7  sJ  J y )Nr   r%   r   )rF   r(   r
   )rq   r}   rL   rq   rs   )r   rG   r   add_edger   r   )r   r   rx   r    ry   s        r   test_multigraphr      s    
A
aAJJq!BJJJq!AJJJq!JJJq!J11!$1?J11!$1?J11!E1MJ1z11111r"   c            	      \   t        j                  ddddddd      } t         j                  j                  | d	d
      }t         j                  j                  | d
      }t         j                  j                  | dd
      }t	        |      t	        |      cxk  rt	        |      k  sJ  J y )Nr   r   r   r   r	   r
   r   r   g      ?r*   )
resolutionr   rL   r&   )r   r   r   r   len)r   rx   r    ry   s       r   test_resolutionr      s    
QU1BR	A 11!"1MJ11!"1=J11!1KJz?c*o@Z@@@@@r"   c            	      P   t        j                  ddddddd      } t         j                  j                  | d	d
      }t         j                  j                  | d
      }t         j                  j	                  | |      }t         j                  j	                  | |      }||k  sJ y )Nr   r   r   r   r	   r
   r   r   g333333?r&   )	thresholdr   rL   )r   r   r   r   r   )r   rx   r    mod1mod2s        r   test_thresholdr      s    
QU1BR	A 11!s1KJ11!!1<J<<""1j1D<<""1j1D4<<r"   c                      t        j                         } | j                  t        d             dhdhdhdhdhg}t         j                  j                  |       |k(  sJ y )Nr	   r   r%   r&   r   r0   )r   Graphre   rZ   r   r   )r   expecteds     r   test_empty_graphr      sV    

AU1XaS1#sQC(H<<++A.(:::r"   c            	          t        j                  ddddddd      } t         j                  j                  | d	
      }t	        |d      D ].  \  }}t         j                  j                  | |d	      }||k(  r.J  dkD  sJ t         j                  j                  | |dz   d	      }|k(  sJ t        j                  t        d      5  t         j                  j                  | d       d d d        y # 1 sw Y   y xY w)Nr   r   r   r   r	   r
   r   r   rK   rL   r%   )	max_levelr   z-max_level argument must be a positive integer)matchr   )r   )	r   r   r   rN   ru   r   pytestraises
ValueError)r   rQ   r   r   r   s        r   test_max_levelr      s    
QU1BR	A 000<J(Q7 %	8LL44Q)RT4U	H$$$% q==00i!mRT0UI   	I
 9 	((a(89 9 9s   	"C44C=)r   networkxr   r   r!   rI   rV   r]   rj   ro   rz   r   r   r   r   r   r    r"   r   <module>r      sS     7	4
	**/:2/j$,02	A	;9r"   