
    9 j                     2   S r SSKrSSKr\R                  R                  SS5      S 5       r\R                  R                  SS5      S 5       r\R                  R                  SS5      S	 5       r\R                  R                  SS
5      S 5       r	\R                  R                  S/ SQ5      S 5       r
S rS r\R                  R                  SS5      S 5       r\R                  R                  S/ SQ5      S 5       rS r\R                  R                  S\R                   \R"                  \R$                  45      S 5       r\R                  R                  S\R                   \R"                  \R$                  45      S 5       rS rS rS rS rg)z?Unit tests for the :mod:`networkx.generators.expanders` module.    Nn)            
   c                    [         R                  " U 5      nUR                  5       X -  :X  d   eU HW  nUR                  U5      S:X  d   e[	        U5      S:X  d   eU H&  n[        U5      U:X  d   eSUs=::  a	  U :  a  M#   e   e   MY     g )N   r   r   )nxmargulis_gabber_galil_graphnumber_of_nodesdegreelenint)r   gnodeis       y/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/networkx/generators/tests/test_expanders.py+test_margulis_gabber_galil_graph_propertiesr      s    
&&q)A!%'''xx~"""4yA~~Aq6Q;;:A:::      c                 N   [         R                  " S5      n[         R                  " S5      n[        R                  " U 5      n[	        UR
                  R                  [        R                  " U5      R                  5       5      5      nUS   SUR                  S5      -  :  d   eg )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 	ryy!!""5"5a"8"@"@"BCDAR51rwwqz>!!!r   p)r   r         c                 R    [         R                  " U 5      n[        U5      U :X  d   eg)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q6Q;;r   )r   r   r(   r)      c                    [         R                  " U 5      n[        U5      U :X  d   eUR                   Vs1 s H  o!R	                  U5      iM     nnUR                   Vs1 s H  o!R                  U5      iM     nn[        U5      S:X  a  UR                  5       U S-
  S-  :X  d   e[        U5      S:X  a  UR                  5       U S-
  S-  :X  d   eU S-  S:X  a)  UR                   H  u  pVXe4UR                  ;   a  M   e   ggs  snf s  snf )z3Test for the :func:`networkx.paley_graph` function.   r      N)r   paley_graphr   nodes	in_degree
out_degreepopedges)r'   r,   r   
in_degreesout_degreesuvs          r   test_paley_graphr<   -   s     	qAq6Q;;018++d#J823'':'$<<%'K:z?aJNN$4Q1$DDD{q [__%61q5Q,%FFF 	1uzGGDA6QWW$$$   9:s   D D
zd, n)r   r(   r1   r   r1      c                    [         R                  " S5        [        R                  " XSS9n[	        U5      U:X  d   S5       e[	        UR
                  5      X-  S-  :X  d   S5       e[        R                  " X 5      (       d   S5       eg )Nr     seedShould have n nodesr   Should have n*d/2 edgesShould be d-regular)r   r   r   maybe_regular_expander_graphr   r7   is_k_regulardr   r,   s      r   !test_maybe_regular_expander_graphrL   @   su    
 
''48Aq6Q;---;qww<1519$?&??$??1  7"77 r   c                     [         R                  " S5        Su  pSn[         R                  " [        R                  US9   [        R
                  " XSSS9  S S S 5        [        R
                  " XSSS9  g ! , (       d  f       N%= f)	Nr   r>   z3Too many iterations in maybe_regular_expander_graphmatchd   i  )	max_triesrD      r   r   raisesr   NetworkXErrorrH   )rK   r   msgs      r   +test_maybe_regular_expander_graph_max_triesrW   J   sd    
 DA
?C	r''s	3
''$G 
4 ##ACdC 
4	3s    A66
Bc                  z   [         R                  " S5        Su  p[         R                  " 5          [        R                  " XSS9nS S S 5        [        W5      U:X  d   S5       e[        UR                  5      X-  S-  :X  d   S5       e[        R                  " X 5      (       d   S5       eg ! , (       d  f       Nl= f)	Nr   r=   rB   rC   rE   r   rF   rG   )r   r   deprecated_callr   maybe_regular_expanderr   r7   rI   rJ   s      r   &test_maybe_regular_expander_deprecatedr[   T   s    
 DA				!%%a6 
" q6Q;---;qww<1519$?&??$??1  7"77  
"	!s   B,,
B:)r   r   r   r   c                     [         R                  " S5        [         R                  " S5        [        R                  " U 5      n[        R                  " U5      (       d   S5       eg )Nr   r   Should be a regular expander)r   r   r   complete_graphis_regular_expander)r   r,   s     r   test_is_regular_expanderr`   _   sK    
 
 
!A!!!$$D&DD$r   )r=   r>   r?   )r1   i  c                    [         R                  " S5        [         R                  " S5        [        R                  " XSS9n[	        U5      U:X  d   S5       e[	        UR
                  5      X-  S-  :X  d   S5       e[        R                  " X 5      (       d   S5       e[        R                  " U5      (       d   S	5       eg )
Nr   r   rB   rC   rE   r   rF   rG   r]   )r   r   r   random_regular_expander_graphr   r7   rI   r_   rJ   s      r   test_random_regular_expanderrc   h   s    
 
 
((D9Aq6Q;---;qww<1519$?&??$??1  7"77 !!!$$D&DD$r   c                      [         R                  " S5        [         R                  " S5        [        R                  " SSSS9n [	        U 5      S:X  a  [	        U R
                  5      S:X  d   S5       eg )	Nr   r   r1   r   rB   )rK   r   rD   r   zShould be a complete graph)r   r   r   rb   r   r7   )r,   s    r   2test_random_regular_expander_explicit_constructionre   t   s[    
 
 
((1=Aq6Q;3qww<2-K/KK--r   
graph_typec                     [         R                  " [        R                  SS9   [        R                  " SU S9  S S S 5        g ! , (       d  f       g = fNz/`create_using` must be an undirected multigraphrN   r   create_using)r   rT   r   rU   r   rf   s    r   )test_margulis_gabber_galil_graph_badinputrl   |   s<    	
 Q
 	&&qzB
 
 
   A
Ac                     [         R                  " [        R                  SS9   [        R                  " SU S9  S S S 5        g ! , (       d  f       g = frh   )r   rT   r   rU   r+   rk   s    r   !test_chordal_cycle_graph_badinputro      s<    	
 Q
 	qz:
 
 
rm   c                      [         R                  " [        R                  SS9   [        R                  " S[        R
                  S9  S S S 5        g ! , (       d  f       g = f)Nz&`create_using` cannot be a multigraph.rN   r   ri   )r   rT   r   rU   r2   
MultiGraph r   r   test_paley_graph_badinputrs      s>    	
 H
 	qr}}5
 
 
s   $A
Ac                     [         R                  " S5        [         R                  " [        R                  SS9   [        R
                  " SSS9  S S S 5        [         R                  " [        R                  SS9   [        R
                  " SS	S9  S S S 5        [         R                  " [        R                  S
S9   [        R
                  " SSS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       Na= f! , (       d  f       g = f)Nr   n must be a positive integerrN   r   r   rK   $d must be greater than or equal to 2r   r   Need n-1>= d to have roomr   r   rS   rr   r   r   *test_maybe_regular_expander_graph_badinputrz      s    
 	r''/M	N
''"2 
O 
r''/U	V
''"2 
W 
r''/J	K
''!q1 
L	K 
O	N 
W	V 
L	Ks#   C;C,<C=
C),
C:=
Dc                  &   [         R                  " S5        [         R                  " S5        [         R                  " [        R                  SS9   [        R
                  " [        R                  " 5       SS9  S S S 5        g ! , (       d  f       g = f)Nr   r   epsilon must be non negativerN   rv   )epsilon)r   r   rT   r   rU   r_   Graphrr   r   r   !test_is_regular_expander_badinputr      sV    
 
 	r''/M	N
rxxz26 
O	N	Ns   )B
Bc                     [         R                  " S5        [         R                  " S5        [         R                  " [        R                  SS9   [        R
                  " SSS9  S S S 5        [         R                  " [        R                  SS9   [        R
                  " S	S
S9  S S S 5        [         R                  " [        R                  SS9   [        R
                  " SSS9  S S S 5        [         R                  " [        R                  SS9   [        R
                  " SSSS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Ns= f! , (       d  f       g = f)Nr   r   ru   rN   rv   r   rw   rx   r   r   ry   r   r   r|   r1   )r   rK   r}   )r   r   rT   r   rU   rb   rr   r   r   %test_random_regular_expander_badinputr      s    
 
 	r''/M	N
((23 
O 
r''/U	V
((23 
W 
r''/J	K
((12 
L 
r''/M	N
((12> 
O	N 
O	N 
W	V 
L	K 
O	Ns0   D3EEE&3
E
E
E#&
E4)__doc__r   networkxr   markparametrizer   r&   r-   r<   rL   rW   r[   r`   rc   re   r~   DiGraphMultiDiGraphrl   ro   rs   rz   r   r   rr   r   r   <module>r      s   E   ./ 0 ./" 0" m, - /0% 1%$ !;<8 =8D8 m,E -E !FGE HEL "**boo'NOC PC "**boo'NO; P;6
27?r   