
    fi=                        d Z ddlZddlZej                            dd          d             Zej                            dd          d             Zej                            dd          d	             Zej                            dd
          d             Z	ej                            dg d          d             Z
d Zej                            dd          d             Zej                            dg d          d             Zd Zej                            dej        ej        ej        f          d             Zej                            dej        ej        ej        f          d             Zd Zd Zd Zd ZdS )z?Unit tests for the :mod:`networkx.generators.expanders` module.    Nn)            
   c                 (   t          j        |           }|                                | | z  k    sJ |D ]]}|                    |          dk    sJ t	          |          dk    sJ |D ](}t          |          |k    sJ d|cxk    r| k     sn J )^d S )N   r   r   )nxmargulis_gabber_galil_graphnumber_of_nodesdegreelenint)r   gnodeis       /var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/networkx/generators/tests/test_expanders.py+test_margulis_gabber_galil_graph_propertiesr      s    
&q))A!a%''''  xx~~""""4yyA~~~~ 	 	Aq66Q;;;;::::A:::::::	     c                 \   t          j        d          }t          j        d          }t          j        |           }t	          |j                            t          j        |                                                              }|d         d|	                    d          z  k     sJ d S )Nnumpyscipyr   r   )
pytestimportorskipr   r   sortedlinalgeigvalshadjacency_matrixtoarraysqrt)r   npspr   ws        r   (test_margulis_gabber_galil_graph_eigvalsr&      s    		W	%	%B		W	%	%B
&q))A 	ry!!""5a"8"8"@"@"B"BCCDDAR51rwwqzz>!!!!!!r   p)r   r         c                 X    t          j        |           }t          |          | k    sJ dS )z;Test for the :func:`networkx.chordal_cycle_graph` function.N)r   chordal_cycle_graphr   )r'   Gs     r   test_chordal_cycle_graphr-       s+     	q!!Aq66Q;;;;;;r   )r   r   r(   r)      c                    t          j        |           t                    | k    sJ fdj        D             }fdj        D             }t          |          dk    r|                                | dz
  dz  k    sJ t          |          dk    r|                                | dz
  dz  k    sJ | dz  dk    rj        D ]\  }}||fj        v sJ dS dS )z3Test for the :func:`networkx.paley_graph` function.c                 :    h | ]}                     |          S  )	in_degree.0r   r,   s     r   	<setcomp>z#test_paley_graph.<locals>.<setcomp>4   s%    888!++d##888r   c                 :    h | ]}                     |          S r1   )
out_degreer3   s     r   r5   z#test_paley_graph.<locals>.<setcomp>5   s%    :::$1<<%%:::r      r      N)r   paley_graphr   nodespopedges)r'   
in_degreesout_degreesuvr,   s        @r   test_paley_graphrB   -   s    	qAq66Q;;;;8888888J::::!':::Kz??aJNN$4$4Q1$D$D$D$D{q  [__%6%61q5Q,%F%F%F%F 	1uzzG 	% 	%DAqq6QW$$$$$ z	% 	%r   zd, n)r   r(   r9   r   r9      c                 $   t          j        d           t          j        || d          }t	          |          |k    s
J d            t	          |j                  || z  dz  k    s
J d            t          j        ||           s
J d            d S )Nr     seedShould have n nodesr   Should have n*d/2 edgesShould be d-regular)r   r   r   maybe_regular_expanderr   r=   is_k_regulardr   r,   s      r   test_maybe_regular_expanderrR   @   s    
   
!!QT222Aq66Q;;;-;;;qw<<1q519$$$&?$$$?1a  77"777777r   c                     t          j        d           d\  } }d}t          j        t          j        |          5  t          j        || dd           d d d            n# 1 swxY w Y   t          j        || dd           d S )	Nr   rD   z-Too many iterations in maybe_regular_expandermatchd   i  )	max_triesrJ      r   r   raisesr   NetworkXErrorrN   )rQ   r   msgs      r   %test_maybe_regular_expander_max_triesr]   J   s    
   DAq
9C	r's	3	3	3 B B
!!Q#DAAAAB B B B B B B B B B B B B B B ac======s   A!!A%(A%)r   r   r   r   c                     t          j        d           t          j        d           t          j        |           }t          j        |          s
J d            d S )Nr   r   Should be a regular expander)r   r   r   complete_graphis_regular_expander)r   r,   s     r   test_is_regular_expanderrb   T   sZ    
   
   
!A!!$$DD&DDDDDDr   )rC   rD   rE   )r9   i  c                    t          j        d           t          j        d           t          j        || d          }t	          |          |k    s
J d            t	          |j                  || z  dz  k    s
J d            t          j        ||           s
J d            t          j        |          s
J d	            d S )
Nr   r   rH   rI   rK   r   rL   rM   r_   )r   r   r   random_regular_expander_graphr   r=   rO   ra   rP   s      r   test_random_regular_expanderre   ]   s    
   
   
(AD999Aq66Q;;;-;;;qw<<1q519$$$&?$$$?1a  77"7777!!$$DD&DDDDDDr   c                      t          j        d           t          j        d           t          j        ddd          } t	          |           dk    rt	          | j                  dk    s
J d            d S )	Nr   r   r9   r   rH   )rQ   r   rJ   r   zShould be a complete graph)r   r   r   rd   r   r=   )r,   s    r   2test_random_regular_expander_explicit_constructionrg   i   sq    
   
   
(1===Aq66Q;;3qw<<2---/K-----r   
graph_typec                     t          j        t          j        d          5  t          j        d|            d d d            d S # 1 swxY w Y   d S Nz/`create_using` must be an undirected multigraphrT   r   create_using)r   rZ   r   r[   r   rh   s    r   )test_margulis_gabber_galil_graph_badinputrn   q   s    	
 Q
 
 
 C C 	&qzBBBBC C C C C C C C C C C C C C C C C C   AA	A	c                     t          j        t          j        d          5  t          j        d|            d d d            d S # 1 swxY w Y   d S rj   )r   rZ   r   r[   r+   rm   s    r   !test_chordal_cycle_graph_badinputrq   y   s    	
 Q
 
 
 ; ; 	qz::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;ro   c                      t          j        t          j        d          5  t          j        dt          j                   d d d            d S # 1 swxY w Y   d S )Nz&`create_using` cannot be a multigraph.rT   r   rk   )r   rZ   r   r[   r:   
MultiGraphr1   r   r   test_paley_graph_badinputrt      s    	
 H
 
 
 6 6 	qr}55556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   !AAAc                     t          j        d           t          j        t          j        d          5  t          j        dd           d d d            n# 1 swxY w Y   t          j        t          j        d          5  t          j        dd	           d d d            n# 1 swxY w Y   t          j        t          j        d
          5  t          j        dd           d d d            d S # 1 swxY w Y   d S )Nr   n must be a positive integerrT   r   r   rQ   $d must be greater than or equal to 2r   r   Need n-1>= d to have roomr   r   rY   r1   r   r   $test_maybe_regular_expander_badinputr{      s   
   	r'/M	N	N	N - -
!B!,,,,- - - - - - - - - - - - - - - 
r'/U	V	V	V - -
!B!,,,,- - - - - - - - - - - - - - - 
r'/J	K	K	K , ,
!A++++, , , , , , , , , , , , , , , , , ,s5   AAAB&&B*-B*C55C9<C9c                     t          j        d           t          j        d           t          j        t          j        d          5  t          j        t          j                    d           d d d            d S # 1 swxY w Y   d S )Nr   r   epsilon must be non negativerT   rw   )epsilon)r   r   rZ   r   r[   ra   Graphr1   r   r   !test_is_regular_expander_badinputr      s    
   
   	r'/M	N	N	N 7 7
rxzz266667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s   	(A>>BBc                     t          j        d           t          j        d           t          j        t          j        d          5  t          j        dd           d d d            n# 1 swxY w Y   t          j        t          j        d          5  t          j        d	d
           d d d            n# 1 swxY w Y   t          j        t          j        d          5  t          j        dd           d d d            n# 1 swxY w Y   t          j        t          j        d          5  t          j        ddd           d d d            d S # 1 swxY w Y   d S )Nr   r   rv   rT   rw   r   rx   ry   r   r   rz   r   r   r}   r9   )r   rQ   r~   )r   r   rZ   r   r[   rd   r1   r   r   %test_random_regular_expander_badinputr      sK   
   
   	r'/M	N	N	N 4 4
(233334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 
r'/U	V	V	V 4 4
(233334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 
r'/J	K	K	K 3 3
(122223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
r'/M	N	N	N ? ?
(12>>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?sH   	A,,A03A0B::B>B>%DDD3EEE)__doc__r   networkxr   markparametrizer   r&   r-   rB   rR   r]   rb   re   rg   r   DiGraphMultiDiGraphrn   rq   rt   r{   r   r   r1   r   r   <module>r      s\   E E      .//  0/ .//" " 0/" m,,  -, /00% % 10%$ !;!;!;<<8 8 =<8> > > m,,E E -,E !F!F!FGGE E HGEL L L "*bo'NOOC C POC "*bo'NOO; ; PO;6 6 6
, 
, 
,7 7 7? ? ? ? ?r   