
    Ui*              
       &   d dl Z d dlZd dlmZ d dl mZ d dlmZ d dl	m
Z
 d dlmZmZ d Zd Zd"d
Zd#dZd Zd Zd Zd Zej        eej        fZej        ej        ej        fZej        ej        ej        fZ eez   e z   Z!e j"        #                    de!          e j"        #                    dej$        ej%        ej&        ej'        ej(        g          e j"        #                    ddd	g          e j"        #                    ddd	g          e j"        #                    ddd	g          d                                                             Z)e j"        #                    dg d          e j"        #                    ddd	g          e j"        #                    ddd	g          d                                     Z*e j"        #                    dej+        ej%        ej&        ej'        ej(        g          e j"        #                    dg d          d                         Z,e j"        #                    dej+        ej%        ej&        ej'        ej(        g          e j"        #                    de!          e j"        #                    ddd	g          e j"        #                    ddd	g          e j"        #                    ddd	g          e j"        #                    dddg          d                                                                          Z-d! Z.dS )$    N)assert_allclose)raises)sparse)csgraph)np_longnp_ulongc                     t          j        | j        t           j                  pt          j        | j        t                    S N)np
issubdtypedtypesignedintegerr   )mats    /var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/scipy/sparse/csgraph/tests/test_graph_laplacian.pycheck_int_typer      s5    =B$455 	8: :     c                      t           t          t          fD ]U} ddgdgggg dg dgddgddgddggfD ]8}t          j        ||           }t          t          t          j        |           9Vd S )	N   )r         )         r   r   r   r   r   )	intfloatcomplexr   arrayassert_raises
ValueErrorr   	laplacian)tmAs      r   test_laplacian_value_errorr%      s    %  < <a&C5'99iii(q6Aq6Aq6*, 	< 	<A !$$$A*g&7;;;;	<< <r   Fc                    t          j        |           r|                                 } t          j        |           } d| z  }t          |j        d                   D ]G}| ||dz   d f                                         | |d |f                                         z   |||f<   H|rSt          j        |          	                                }d||dk    <   ||d d d f         dz  z  }||d d d f         dz  z  }|S )Ng      r   r   g      ?g      ?)
r   issparsetoarrayr   asarrayrangeshapesumdiagcopy)xnormedyjds        r   _explicit_laplacianr4      s    q IIKK

1AqA171: 1 11QqSTT61QrrT7;;==0!A# GAJJOO!q&		QqqqvY]	QtAAAvY]Hr   Tc                    t          | d          s)t          | t          t          t                              } t	          j        |           r| }|                                } nt	          j        |           }t          j        |           }t	          j        |d          }| j	        d         }t          | |          }t          j        | ||          }t          j        |||          }	|r!t          | |           t          ||           n<|rt          |           s+t          ||            |j        dk    rt          |	|           t          ||	                                           ||	                                fD ]_}
|s6t          |
                    d	          t          j        |                     t          |
j        |
           t          |
|           `d S )
Nr+   )r   r   T)r.   r   )r0   )r0   r.   coo)axis)hasattrevaldictr   r   r'   r(   	csr_arrayr.   r+   r4   r   r!   r   _assert_allclose_sparser   formatr,   zerosT)r   r0   r.   sp_matmat_copysp_mat_copyn_nodesexplicit_laplacianr!   sp_laplaciantesteds              r    _check_symmetric_graph_laplacianrG   *   s   3   43622233s 'nn!#&&ws||H"6555KilG,S@@@!#f4@@@I$VF*.0 0 0L  >X&&&4444 	>>#.. 	>Is+++}%%'f===I|3355666l22445 4 4 	CFJJAJ..0A0ABBB&))) 23333	4 4r   c                  J    d} | D ]}dD ]}dD ]}t          |||           d S )N)z,np.arange(10) * np.arange(10)[:, np.newaxis]znp.ones((7, 7))z
np.eye(19)z+sparse.diags([1, 1], [-1, 1], shape=(4, 4))z5sparse.diags([1, 1], [-1, 1], shape=(4, 4)).toarray()z5sparse.diags([1, 1], [-1, 1], shape=(4, 4)).todense()z3np.vander(np.arange(4)) + np.vander(np.arange(4)).T)TF)rG   )symmetric_matsr   r0   r.   s       r   test_symmetric_graph_laplacianrJ   O   sk    N  D D! 	D 	DF# D D0fdCCCCD	DD Dr   c                     t          j        |           r|                                 } t          j        |          r|                                }t          | |fi | d S r
   )r   r'   r(   r   )abkwargss      r   r<   r<   _   s^    q IIKKq IIKKAq##F#####r   c                     || |          }t          j        ||d||d           \  }	}
|rbt          |          rS|	j        t          j        k    sJ |
j        t          j        k    sJ t          |	|d           t          |
|d           n|	j        |k    sJ |
j        |k    sJ t	          j        |                              |          }t	          j        |                              |          }t          |	|d           t          |
|d           |s[|rt          |          sLt          |          t          j
        u rt          |	|           d S |j        dk    rt          |	|           d S d S d S d S Nr   T)r0   return_diaguse_out_degreer.   r   g-q=)atolr6   )r   r!   r   r   r   float64r<   r)   astypetypendarrayr   r=   r$   	desired_L	desired_dr0   rR   r.   r   arr_typer   Lr3   s              r   _check_laplacian_dtype_noner]   h   s    (1E
"
"
"C%  DAq  :.%% :w"*$$$$w"*$$$$9599999599999w%w%Jy))0077	Jy))0077	959999959999 0 	0>#.. 	0CyyBJ&&3'''''u$$'3/////0 0	0 	0 %$r   c                 4    || |          }t          j        ||d|||          \  }	}
|	j        |k    sJ |
j        |k    sJ t          j        |                              |          }t          j        |                              |          }t          |	|d           t          |
|d           |s[|rt          |          sLt          |          t          j	        u rt          |	|           d S |j        dk    rt          |	|           d S d S d S d S rP   )r   r!   r   r   r)   rU   r<   r   rV   rW   r   r=   rX   s              r   _check_laplacian_dtyper_      sX    (1E
"
"
"C%  DAq 7e7e
9%%,,U33I
9%%,,U33IAyu5555Ayu5555 0 	0>#.. 	0CyyBJ&&3'''''u$$'3/////0 0	0 	0 %$r   r   r[   r.   r0   rR   c           
      v   g dg dg dg} |t          j        |          |          }|                                }|s| rg dg dg dg}g d}|r| rg dg d	g dg}g d
}|s| sg dg dg dg}g d}|r| sg dg d	g dg}g d}t          ||||| |||           t	          ||||| |||           d S )Nr   r   r   r   r   r   r   r   r   r   )r   r   )r   r   )r   r   r   )r   g      r   )r   r   )r   r   r   )r   rd   r   )re   r   r   )r   r   r   )r   r   r   )r0   rR   r.   r   r[   )r   r   r.   r]   r_   )	rR   r0   r.   r   r[   r$   A_copyr\   r3   s	            r   test_asymmetric_laplacianrh      s    
			A 	!E***AVVXXF n ZZZZYY II . \\ZZYY II . ZZZZYY II n \\ZZYY II			%	 	 	 	 		%	 	 	 	 	 	r   fmt)csrcscr6   lildokdiabsrc                 `    t          j        ddgddgd|           }t          |||           d S )Nr   rd   )r   r   )offsetsr+   r=   )r   diags_arrayrG   )ri   r0   r.   r   s       r   test_sparse_formatsrs      s=    
 
aVb!WF3
O
O
OC$S&$77777r   form)r   functionloc                    d} | t          j        ||z                                ||                    }t          j        |d|          \  }}t          j        |dd|          \  }}t          j        |dd|          \  }}	t          j        |ddd|          \  }
}||j        z  }t          j        |d|          \  }}t          j        |dd|          \  }}t          |	||z              t          |	|           t          ||           i }dD ]O}|d	k    rt          |          ||<    t          |          t          j        ||j	        
                    ||<   Pt          |d         |d         |d         j        z              t          |d         |d                    t          |d         |d                    d S )Nr   T)rQ   rt   )rQ   rR   rt   )rQ   symmetrizedrt   )rQ   rx   r0   rt   )rQ   r0   rt   )L_inL_outLs	Ls_normedLss
Lss_normedr   r   r{   ry   rz   r}   r|   r~   )r   arangereshaper   r!   r?   r   r9   eyer   r<   )r[   rt   nr   ry   d_inrz   d_outr{   dsr|   	ds_normedr}   dssr~   
dss_normedr3   r\   s                     r   test_laplacian_symmetrizedr      s    	
A
(29QU##++Aq11
2
2C"  JD$
 $	  LE5 	  FB #,  Iy 35LC $TBBBHC$.	  J
 Bu%%%BIz***
AF 7 77??77AaDD47726!3955566AaDDAdGQvY7%=>>>AdGQuX...AkNAlO<<<<<r   rx   ru   rv   c           	         d}g dg dg dg} |t          j        |          |           }t          j        |d||||           \  }}	t          j        |d|||| d	          \  }
}t	          |	|           t          ||
           t          j        |d|||| |	          \  }}t	          ||	           |j        | k    sJ  |t          j        ||j                                                |           }t          ||d
d
           t          j	        d          
                    dd          }|r	| t          v st	           ||          ||z             d S d S )Nr   ra   rb   rc   r   T)rQ   r0   rx   rR   r   r   )rQ   r0   rx   rR   r   rt   gH׊>)rtolrS   r   r   )r   r   r   r!   r   r<   r   r   rU   r   r   
INT_DTYPES)r   r[   r0   rx   rR   rt   r   r   LodoLadar\   r3   Lmr/   s                   r   test_formatr   5  s    	
A99iii
+C
(28C==
.
.
.C%  FB %  FB BB###%  DAq Ar7e	
26!39%%%	&	&	-	-e	4	4BBD9999
	!Q""A u
**!b1f%%%%% 	r   c                      t          j        t          d          5  t          j        t          j        d          d          } d d d            d S # 1 swxY w Y   d S )NzInvalid form: 'toto')matchr   toto)rt   )pytestr   r    r   r!   r   r   )_s    r   test_format_error_messager   n  s    	z)?	@	@	@ 6 6bfQiif5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   )AAA)F)T)/r   numpyr   numpy.testingr   r   r   scipyr   scipy.sparser   scipy._lib._utilr   r   r   r%   r4   rG   rJ   r<   r]   r_   intclonglongr   float32rT   
longdoubleREAL_DTYPES	complex64
complex128clongdoubleCOMPLEX_DTYPESDTYPESmarkparametrizer   
csr_matrix
coo_matrixr;   	coo_arrayrh   rs   r)   r   r   r    r   r   <module>r      s.        ) ) ) ) ) ) * * * * * *                   . . . . . . . .  < < <   "4 "4 "4 "4JD D D $ $ $0 0 0B0 0 06 gw,
z2:r}5,r~>	k	!N	2 &))bh&,&7&,&7&,&6&,&6	&8 9 9
 $//D%=11)D%=999 9 :9 21 0/9 9 *)9x  !6 !6 !6 7 7D%=11$//8 8 0/ 217 78
 ""!!	#  !<!<!<==2= 2= >= 2=j ""!!	#  &))D%=11u66)D%=99*d!344* * 54 :9 76 21 *) *Z6 6 6 6 6r   