
    Vh$                         d dl Z d dlZd dlmZ d dlmZmZ d Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Z G d d      Zy)    N)k_components)
_AntiGraph_samec                 t    i }t         | j                               D ]  \  }}|D ]  }|D ]  }|||<   	   |S N)sorteditems)r   k_numkcompscompnodes         h/home/dcms/DCMS/lib/python3.12/site-packages/networkx/algorithms/approximation/tests/test_kcomponents.pybuild_k_number_dictr   	   sY    E-<--/0  5 	 D  d 	   L    c                     t        j                  t        j                  ddg      d      } t        j                  | d      }|j	                         D ci c]  \  }}||
 }}}|d   |d   f|d   |d   f|d   |d	   f|d
   |d   ffD ]F  }| j                         dz   }t        j                         }t        j                  | |      } | j                  |dz   |d          | j                  ||d          t        j                  d      }t        j                  | |      } | j                  |dz   |dz          | j                  |dz   |dz          | j                  |dz   |dz          t        j                  | |      } | |dz      }	| j                  |dz          |	D ]  }
| j                  |dz   |
        | j                  |dz   |dz          I | S c c}}w )N   labelslabel_attributer   r      r   r      r   r      r   r   r   r   r   r   r   r   r         r      r      
         nxconvert_node_labels_to_integers
grid_graphget_node_attributesr	   orderpetersen_graphdisjoint_unionadd_edgecomplete_graphremove_node)Grlabelsr   vr   nodesnew_nodePKnbrsnbrs              r   graph_example_1r=      s   
**
q!fx	A $$Q1G&}}/tq!ad/F/ 
(	(	(	(	 0 779q=a#	

8a<q*	

8U1X&a a#	

8a<B/	

8a<B/	

8a<B/a#B	hm$ 	+CJJx"}c*	+	

8b=(Q,/506 H; 0s   Gc                     t        j                  t        j                  ddg      d      } t        j                  | d      }|j	                         D ci c]  \  }}||
 }}}|d   |d   f|d   |d   ffD ]F  }| j                         dz   }t        j                         }t        j                  | |      } | j                  |dz   |d	          | j                  ||d          t        j                  d      }t        j                  | |      } | j                  |d
z   |dz          | j                  |dz   |dz          | j                  |dz   |dz          t        j                  | |      } | |dz      }	| j                  |dz          |	D ]  }
| j                  |dz   |
        | j                  |dz   |dz          I |d   |d   f|d   |d   ffD ]f  }| j                         dz   }t        j                         }t        j                  | |      } | j                  |dz   |d	          | j                  ||d          t        j                  d      }t        j                  | |      } | j                  |d
z   |dz          | j                  |dz   |dz          | j                  |dz   |dz          t        j                  | |      } | |dz      }	| j                  |dz          |	D ]  }
| j                  |dz   |
        | |dz      }| j                  |dz          |D ]  }
| j                  |dz   |
        i | S c c}}w )Nr   r   r   r   r   r    r!   r   r   r"   r#   r   r$   r   r%   r&   r'   r(      r   r   r   r   	      r)   )r4   r5   r   r6   r   r7   r8   r9   r:   r;   r<   nbrs2s               r   torrents_and_ferraro_graphrC   <   s2   
**
q!fx	A $$Q1G&}}/tq!ad/F/&>6&>2VF^VF^4TU 0779q=a#	

8a<q*	

8U1X&a a#	

8a<B/	

8a<B/	

8a<B/a#B	hm$ 	+CJJx"}c*	+ 	


8b=(Q,//02 &>6&>2VF^VF^4TU +779q=a#	

8a<q*	

8U1X&a a#	

8a<B/	

8a<B/	

8a<B/a#B	hm$ 	+CJJx"}c*	+(Q,	hl# 	+CJJx"}c*	+/+2 Hi 0s   Mc                     t        |       }|j                         D ]?  \  }}|dk  r|D ]/  }| j                  |      }t        j                  |      }||k\  r/J  A y )Nr   )r   r	   subgraphr*   node_connectivity)r4   resultr   
components	componentCr:   s          r   _check_connectivityrK   {   sf    !_F :q5# 	I

9%A$$Q'A6M6	r   c                  .    t               } t        |        y r   )rC   rK   r4   s    r   test_torrents_and_ferraro_graphrN      s    "$Ar   c                  .    t               } t        |        y r   )r=   rK   rM   s    r   test_example_1rP      s    Ar   c                  B    t        j                         } t        |        y r   )r*   karate_club_graphrK   rM   s    r   test_karate_0rS      s    
Ar   c                  p   i ddddddddddddddddd	dd
dddddddddddddddi ddddddddddddddddddddddddddddd dd!dd"d} | j                         }d|d<   d|d<   t        j                         }t        |      }t	        |      }|| |fv sJ y )#Nr   r   r   r"   r   r         r?   r@   r&   r#   r$   r%         r(   r'   rA                                              !   )copyr*   rR   r   r   )karate_k_numapprox_karate_k_numr4   k_compsr
   s        r   test_karate_1rl      s    #	1#	1# 	
1# 	
1	#
 	
1# 	
1# 	
1# 	
1# 	
1# 	
1# 	A# 	A# 	A# 	A# 	A#  	A!#" 	A##$ 	A%#& 	A'#( 	A)#* 	A+#, 	A-#. 	A/#0 	A1#2 	A3#4 	A5#6 	A7#8 	A9#: 	A;#< 	A=#> 	A?#@ 	AA#B 	AC#D 	AE#LH '++-
A1oG(E\#67777r   c                     t               } t        |       }t        |d         dk(  sJ t        |d   D cg c]  }t        |      dk(  s| c}      dk(  sJ t        |d   D cg c]  }t        |      dk(  s| c}      dk(  sJ t        |d         dk(  sJ t        d |d   D              sJ |j	                         D ]=  \  }}|dk  r|D ]-  }t        j                  | j                  |            }||k\  r-J  ? y c c}w c c}w )Nr   r?   rX   r   r   c              3   8   K   | ]  }t        |      d k(    yw)r   N)len).0cs     r   	<genexpr>z0test_example_1_detail_3_and_4.<locals>.<genexpr>   s     .qs1v{.s   )r=   r   ro   allr	   r*   rF   rE   )r4   rG   rq   r   rH   rI   r:   s          r   test_example_1_detail_3_and_4rt      s   A!_F vay>Q6!95aA"56!;;;6!94aA!45:::vay>Q.F1I....   :q5# 	I$$QZZ	%:;A6M6	 64s   D	D%D	9D	c                      t        j                  t        j                        5  t        j                  ddd      } t        |       }d d d        y # 1 sw Y   y xY w)Nr&   g?T)directed)pytestraisesr*   NetworkXNotImplementedgnp_random_graphr   )r4   kcs     r   test_directedr|      sF    	r00	1 C$7!_  s   $AAc                      dddd} dddd}dddd}t        |       sJ t        |      rJ t        |d      sJ t        |      rJ t        |d      rJ y )Nr"   )ABrJ   r   r?   rA   )tolr   )r   )equalslightly_different	differents      r   	test_samer      st    !!$E qq1ab)I<<'(((#+++YYA&&&&r   c                   R    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y)TestAntiGraphc                 H   t        j                  ddd      | _        t        t        j                  | j                              | _        t        j                         | _        t        t        j                  | j                              | _        t        j                         | _
        t        t        j                  | j                              | _        | j                  | j
                  f| j                  | j                  f| j                  | j                  fg| _        y )NrZ   g?*   )seed)r*   rz   Gnpr   
complementAnpdavis_southern_women_graphGdAdrR   GkAkGA)clss    r   setup_classzTestAntiGraph.setup_class   s    %%b#B7R]]37734..0BMM#&&12%%'BMM#&&1277CGG$svvsvv&68HIr   c                     | j                   D ]j  \  }}|j                         }t        t        |j	                                     t        t        |j	                                     z   }|||dz
  z  dz  k(  rjJ  y )Nr   r"   )r   r.   ro   listedges)selfr4   r~   nss        r   	test_sizezTestAntiGraph.test_size   sg    GG 	*DAq	ADO$s4	?';;Aa!e))))	*r   c                     | j                   D ]:  \  }}t        |j                               t        |j                               k(  r:J  y r   )r   r   degreer   r4   r~   s      r   test_degreezTestAntiGraph.test_degree   s=    GG 	<DAq!((*%
);;;;	<r   c                     | j                   D ]2  \  }}t        j                  |      t        j                  |      k(  r2J  y r   )r   r*   core_numberr   s      r   test_core_numberzTestAntiGraph.test_core_number   s9    GG 	:DAq>>!$q(9999	:r   c                    | j                   D ]h  \  }}t        j                  |      D cg c]  }t        |       }}t        j                  |      D cg c]  }t        |       }}|D ]  }||v rJ  j y c c}w c c}w r   )r   r*   connected_componentsset)r   r4   r~   rq   gcacr   s          r   test_connected_componentsz'TestAntiGraph.test_connected_components  s     GG 	"DAq"$"9"9!"<=Q#a&=B="$"9"9!"<=Q#a&=B= "rz!z"	"==s   A9A>c                 &   | j                   D ]  \  }}|j                  j                         D ]`  \  }}t        d |j                  j                         D              }t        d |j                  j                         D              }||k(  r`J   y )Nc              3   <   K   | ]  \  }}|t        |      f  y wr   r   rp   r   ads      r   rr   z)TestAntiGraph.test_adj.<locals>.<genexpr>       J51b6":J   c              3   <   K   | ]  \  }}|t        |      f  y wr   r   r   s      r   rr   z)TestAntiGraph.test_adj.<locals>.<genexpr>  r   r   )r   adjr	   r   )r   r4   r~   r   r;   a_adjg_adjs          r   test_adjzTestAntiGraph.test_adj  sv    GG 	&DAq55;;= &4JAEEKKMJJJAEEKKMJJ~%~&	&r   c                     | j                   D ]G  \  }}t        |j                               }|j                         D ]  \  }}|t        |      f|v rJ  I y r   )r   r   	adjacencyr   )r   r4   r~   r   r   r;   s         r   test_adjacencyzTestAntiGraph.test_adjacency  sX    GG 	/DAq'E;;= /43t9~.../	/r   c                     | j                   D ]X  \  }}t        |j                               d   }t        |j	                  |            t        |j	                  |            k(  rXJ  y )Nr   )r   r   r7   r   	neighborsr   r4   r~   r   s       r   test_neighborszTestAntiGraph.test_neighbors  sY    GG 	DDAq	?1%Dq{{4()ST1B-CCCC	Dr   c                     | j                   D ]e  \  }}d}t        j                  t        j                  |j
                  |       t        j                  t        j                  |j
                  |       g y )Nnon_existent_node)r   rw   rx   r*   NetworkXErrorr   r   s       r   test_node_not_in_graphz$TestAntiGraph.test_node_not_in_graph  sR    GG 	?DAq&DMM"**AKK>MM"**AKK>	?r   c                    | j                   D ]0  \  }}t        |j                               d   }t        |j                               dd }|j                  |      |j                  |      k(  sJ t	        d |j                         D              t	        d |j                         D              k(  sJ t	        d |j                         D              t	        d |j                  d	      D              k(  sJ t	        d
 |j                  |      D              t	        d |j                  |      D              k(  r1J  y )Nr   r   r   c              3   &   K   | ]	  \  }}|  y wr    rp   r   ds      r   rr   z6TestAntiGraph.test_degree_thingraph.<locals>.<genexpr>(       0TQq0   c              3   &   K   | ]	  \  }}|  y wr   r   r   s      r   rr   z6TestAntiGraph.test_degree_thingraph.<locals>.<genexpr>(  s     7Qda7Qr   c              3   &   K   | ]	  \  }}|  y wr   r   r   s      r   rr   z6TestAntiGraph.test_degree_thingraph.<locals>.<genexpr>*  r   r   c              3   &   K   | ]	  \  }}|  y wr   r   r   s      r   rr   z6TestAntiGraph.test_degree_thingraph.<locals>.<genexpr>*  s      8a8r   weight)r   c              3   &   K   | ]	  \  }}|  y wr   r   r   s      r   rr   z6TestAntiGraph.test_degree_thingraph.<locals>.<genexpr>-  s     5TQq5r   c              3   &   K   | ]	  \  }}|  y wr   r   r   s      r   rr   z6TestAntiGraph.test_degree_thingraph.<locals>.<genexpr>-  s      =a=r   )r   r   r7   r   sum)r   r4   r~   r   r7   s        r   test_degree_thingraphz#TestAntiGraph.test_degree_thingraph#  s   GG 	DAq	?1%DOAa(E88D>QXXd^3330QXXZ00C7Qahhj7Q4QQQQ0QXXZ00C 8hhhh78 5    5QXXe_55 =hhuo= :   	r   N)__name__
__module____qualname__classmethodr   r   r   r   r   r   r   r   r   r   r   r   r   r   r      sD    J J*<:"&/D
?r   r   )rw   networkxr*   !networkx.algorithms.approximationr   -networkx.algorithms.approximation.kcomponentsr   r   r   r=   rC   rK   rN   rP   rS   rl   rt   r|   r   r   r   r   r   <module>r      sW      : K"J9~


+8\*'F Fr   