
    Ugu<                     H   d Z ddlZddlZddlmZmZ ddlmZm	Z	m
Z
mZmZmZmZmZ ddlmZmZ ddlmZ ej                                        Ze                    e           eeegZej        ej        ej        gZej        d             Zej        d             Z ej!        "                    d	ee	e
eg          d
             Z#ej!        "                    d	e           G d d                      Z$ej!        "                    d	eeg           G d d                      Z%dS )z*Test of 1D aspects of sparse array classes    N)assert_equalassert_allclose)	bsr_array	csc_array	dia_array	lil_array	coo_array	csr_array	dok_arraySparseEfficiencyWarning)supported_dtypesmatrix)ComplexWarningc                  0    t          j        g dd          S )N)   r      r   d)nparray     _/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/sparse/tests/test_common1d.pydat1dr      s    8LLL#&&&r   c                 R      fdt           D             fdt          D             S )Nc                 <    i | ]}|                     |          S r   )astype).0dtyper   s     r   
<dictcomp>z%datsp_math_dtypes.<locals>.<dictcomp>   s'    FFF%e,,FFFr   c                 T    i | ]#fd                                  D             $S )c                 2    g | ]\  }}|| |          fS r   r   )r   r   dat	spcreators      r   
<listcomp>z0datsp_math_dtypes.<locals>.<dictcomp>.<listcomp>!   s,    VVVZUCUC30VVVr   )items)r   r#   
dat_dtypess    @r   r   z%datsp_math_dtypes.<locals>.<dictcomp>    sM        	VVVV:CSCSCUCUVVV  r   )math_dtypes
spcreators)r   r&   s   `@r   datsp_math_dtypesr)      sH    FFFF+FFFJ   #   r   r#   c                     t          j        t          d          5   | g d           d d d            d S # 1 swxY w Y   d S )Nzarrays don't support 1D inputmatchr   r      r   pytestraises
ValueError)r#   s    r   test_no_1d_support_in_initr3   (   s    	z)H	I	I	I    	,,,                                   s   7;;c                       e 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d Zd Zd Zd Zd Zed             Zed             Zed             Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d S )!TestCommon1Dz5test common functionality shared by 1D sparse formatsc                    t           |d                                          t          j        d                     t           |d          j        d           t           |d                                          d           d S )Nr   r   r   )r   toarrayr   zerosnnzcount_nonzeroselfr#   s     r   test_create_emptyzTestCommon1D.test_create_empty3   ss    YYt__,,..<<<YYt__(!,,,YYt__2244a88888r   c                     t          j        t          d          5   |d           d d d            d S # 1 swxY w Y   d S )Nzelements cannot be negativer+   )r/   r<   s     r   test_invalid_shapesz TestCommon1D.test_invalid_shapes8   s    ]:-JKKK 	 	Ie	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   599c                 6    t           ||                     d S N)reprr=   r#   r   s      r   	test_reprzTestCommon1D.test_repr<   s     YYur   c                 6    t           ||                     d S rC   )strrE   s      r   test_strzTestCommon1D.test_str?   s     IIer   c                     t          j        g dd          }t          |  ||                                                      d S )N)r      r   r   r   r   r   r   r   r   )r   r   r   r8   r=   r#   As      r   test_negzTestCommon1D.test_negB   sH    H===sCCaR99Q<<-002233333r   c                 :     |g d          }|j         dk    sJ d S )Nr-   r   )ndimrO   s      r   test_1d_supported_initz#TestCommon1D.test_1d_supported_initF   s(    Illl##v{{{{{{r   c                     |g d          }|                     dd          }g dg}t          |                                |            ||          }|                     d          }t          |                                |d                    |                     d          }|j        |j        k    sJ |j                             d          }t          |                                |d                    d S )Nr   r      r   r   r   r   r@   r   r   r      r      r   rY   )reshaper   r8   shapeT)r=   r#   xydesiredy2s         r   $test_reshape_1d_tofrom_row_or_columnz1TestCommon1D.test_reshape_1d_tofrom_row_or_columnJ   s    I;;;<<IIa8889QYY[['*** IgIIbMMQYY[['!*---YYuw"("""" CKKOOQYY[['!*-----r   c                 r    |g d          }|                     d          }g dg dg dg dg}t          |                                |           |                     d          }||u sJ |                     d          }t          |                                |                                           d S )	NrV   )   r   )r   r   rW   )r   r   r   )r   r@   r   )r   r   rX   rZ   rY   )r[   r   r8   )r=   r#   r^   r_   r`   s        r   test_reshapezTestCommon1D.test_reshape\   s    I;;;<<IIf99iiiYYY?QYY[['***IIeAvvvvIIbMMQYY[[!))++.....r   c                    t           j                            d           t          j        g d          }t           j                            d          }t          j        g           }t          j        d          }||||g}|D ]?} ||          }t          j        d          5  t          j        |                                          sJ t          |                                |                                           t          |                    d           |                    d                      t          |                    d          |                    d                     t          |                    d	          |                    d	                     d d d            n# 1 swxY w Y   A|                    dt          j        d
                     d S )Ni  )	r   r   r.   r   rN   rX   rW   	   rX   )(   ignore)overaxisr   rK   r   rm   out)
r   randomseedr   randr9   errstateisscalarsumr   )	r=   r#   dat_1dat_2dat_3dat_4arraysr"   datsps	            r   test_sumzTestCommon1D.test_sumh   s   
	t66677	q!!u- 	F 	FCIcNNE(+++ F F{599;;/////		599;;777T 2 2EII4I4H4HIIIQ1B1BCCCR 0 0%)))2D2DEEEF F F F F F F F F F F F F F F 			qbhrll	+++++s   (DF99F=	 F=	c                    t          j        d          }t          j        g d          } ||          }t          j        t
          d          5  |                    d           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   t          j        t          d	          5  |                    d
           d d d            n# 1 swxY w Y   t          j        t
          d          5  |                    d|           d d d            d S # 1 swxY w Y   d S )Nr7   r   r   r.   zaxis must be None, -1 or 0r+   r   rl   Tuples are not acceptedr   r   axis must be an integer      ?dimensions do not matchr   rn   )r   r9   r   r0   r1   r2   ru   	TypeErrorr=   r#   ro   r"   r{   s        r   test_sum_invalid_paramsz$TestCommon1D.test_sum_invalid_params|   s<   htnnhyyy!!	#]:-IJJJ 	 	II1I	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9,EFFF 	# 	#II6I"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#]9,EFFF 	  	 II3I	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ]:-FGGG 	' 	'II1#I&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'sH   A44A8;A8B==CC#DD
D
,EEEc                     t          j        g d          } ||          }t          j        |          }t          j        |          }t          ||           d S Nr~   )r   r   ru   r   )r=   r#   r"   r{   dat_sum	datsp_sums         r   test_numpy_sumzTestCommon1D.test_numpy_sum   sR    hyyy!!	#&++F5MM	+++++r   c                 z   t          j        g d          } ||          }t          |                                |                                           t          j        |                    d                     sJ t          |                    d           |                    d                      t          |                    d          |                    d                     t          |                    d          |                    d                     t          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )	Nr~   rl   r   rK   rm   r+   r   )r   r   r   meanrt   r0   r1   r2   )r=   r#   r"   r{   s       r   	test_meanzTestCommon1D.test_mean   s   hyyy!!	#

EJJLL111{5::4:0011111d++UZZTZ-B-BCCCa((%**!**<*<===b))5::2:+>+>???]:V444 	 	JJAJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:V444 	  	 JJBJ	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s$   E&&E*-E*F00F47F4c                    t          j        t          j        d                    }t          j        g dg dg dg          } ||          }t	          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   t	          j        t          d	          5  |                    d
           d d d            n# 1 swxY w Y   t	          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   t	          j        t          d          5  |                    d|           d d d            d S # 1 swxY w Y   d S )N)r   r   r~   )r   rN   rX   )rg   rW   rh   zaxis out of ranger+   r   rl   r   r   r   r   r   r   rn   )	r   asarrayr9   r   r0   r1   r2   r   r   r   s        r   test_mean_invalid_paramsz%TestCommon1D.test_mean_invalid_params   sW   j&))**h			:::zzz:;;	#]:-@AAA 	 	JJAJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9,EFFF 	$ 	$JJFJ###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$]9,EFFF 	! 	!JJCJ   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!]:-FGGG 	( 	(JJA3J'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(sH   *BBB3CCC<DD#&D#E**E.1E.c                    t          j        g d          } ||          }t          D ]X}|                    |          }|                    |          }t	          ||           t          |j        |j                   Yd S Nr~   r   )r   r   r   ru   r   r   r   )r=   r#   r"   r{   r   r   r   s          r   test_sum_dtypezTestCommon1D.test_sum_dtype   s    hyyy!!	#% 	9 	9EggEg**G			..IGY///	8888	9 	9r   c                    t          j        g d          } ||          }t          D ]X}|                    |          }|                    |          }t	          ||           t          |j        |j                   Yd S r   )r   r   r   r   r   r   r   )r=   r#   r"   r{   r   dat_mean
datsp_means          r   test_mean_dtypezTestCommon1D.test_mean_dtype   s    hyyy!!	#% 	; 	;Exxex,,H%00JHj111)9::::	; 	;r   c                    t          j        g d          } ||          }t          j        dg          }t          j        dg          }|                    |d           |                    |           t          ||           |                    d|d           |                    d|           t          ||           d S )Nr~   r   T)ro   keepdimsro   )rm   ro   r   rn   )r   r   r   r   )r=   r#   r"   r{   dat_out	datsp_outs         r   test_mean_outzTestCommon1D.test_mean_out   s    hyyy!!	#(A3--HaSMM	Wt,,,

y
!!!+++aWt444

y
)))+++++r   c                     t          j        g d          } ||          }t          j        |          }t          j        |          }t          ||           t	          |j        |j                   d S r   )r   r   r   r   r   r   )r=   r#   r"   r{   r   r   s         r   test_numpy_meanzTestCommon1D.test_numpy_mean   sg    hyyy!!	#73<<WU^^
*---X^Z%566666r   c                    t          j        g d          }t           ||                                          |           t          j        g d          }t           ||                                          |           t           ||d                                          |                    d                     d S N)r.   r   rd   y      ?      @r   rK   int16r   )r   r   r   r8   r   rO   s      r   test_from_arrayzTestCommon1D.test_from_array   s    HYYYYYq\\))++Q///H&&&''YYq\\))++Q///YYq00088::AHHW<M<MNNNNNr   c                    g d}t           ||                                          |           g d}t           ||                                          t          j        |                     t           ||d                                          t          j        |                              d                     d S r   )r   r8   r   r   r   rO   s      r   test_from_listzTestCommon1D.test_from_list   s    IIYYq\\))++Q///YYq\\))++RXa[[999Iaw'''//1128A;;3E3Eg3N3N	
 	
 	
 	
 	
r   c                    t          j        g d          }t          |          }t           ||                                          |            ||          }t           ||                                          |           t          j        g d          }t          |          }t           ||                                          |           t           ||d                                          |                    d                      ||          }t           ||                                          |           t           ||d                                          |                    d                     d S )N)r   r   r   r   r   r   )r   r   r	   r   r8   r   r=   r#   DSs       r   test_from_sparsezTestCommon1D.test_from_sparse   s_   HYYYaLLYYq\\))++Q///IaLLYYq\\))++Q///H&&&''aLLYYq\\))++Q///YYq00088::AHHW<M<MNNNIaLLYYq\\))++Q///YYq00088::AHHW<M<MNNNNNr   c                     ||          }|                                 }t          ||           |j        j        |j        j        k    sJ |                     d          }t          ||           |j        j        sJ |j        j        sJ |                     d          }t          ||           |j        j        sJ |j        j        sJ t          j        |j        |j                  }|                     |           t          ||           d|d<   |                     |           t          ||           t          j	        g d          }t          j
        ||          }t          j
        ||                                           }t          ||           t          j	        g d          }	t          j
        ||	          }t          j
        |                                 |	          }t          ||            ||t                    }
|                    t                    }t          |
                                 |           d S )	NC)orderFr   r         ?.)r          @      @g      @)r8   r   flagsc_contiguousf_contiguousr   r9   r\   r   r   dotboolr   )r=   r#   r   r{   chkro   adense_dot_densecheckbspboolarrbools               r   test_toarrayzTestCommon1D.test_toarray  s-   	%  mmooS%   y%)????? mm#m&&S%   y%%%%y%%%% mm#m&&S%   y%%%%y%%%% hu{%+666#S%    C#S%    H)))**&E**q%--//**_e,,,H)))**&**u}}**_e,,, 5---,,t$$V^^%%w/////r   c                    ||         D ]\  }}}|                                 }d|d<   |}||z   }t          ||                                |z              ||dd         z   }t          ||                                |d         z              d S )Nr   r   r   copyr   r8   	r=   r#   r)   r   r"   r{   r   r   cs	            r   test_addzTestCommon1D.test_add1  s    !29!= 
	0 
	0E3

AAaDAAAAIIKK!O,,, AacF
AAIIKK!A$.////
	0 
	0r   c                     ||         D ]K\  }}}|                                 }d|d<   |}||z   }t          |||                                z              Ld S )Nr   r   r   r   s	            r   	test_raddzTestCommon1D.test_radd>  sj    !29!= 	- 	-E3

AAaDAAAA		O,,,,	- 	-r   c                    ||         D ]i\  }}}|t          j        d          k    r t          ||z
  g d           t          ||z
  g d           t          d|z
                                  |             |g dd          }t          ||z
  ||                                z
             t          ||z
  |                                |z
             t          |                                |z
  |                                |z
             t          ||                                z
  ||                                z
             t          |d d         |z
  |d d         |z
             kd S )Nr   )r   r   r   r   r   )r   rN   r   r.   r   r   r   )r   r   r   r8   )r=   r#   r)   r   r"   r{   rP   s          r   	test_rsubzTestCommon1D.test_rsubF  sl   !29!= 	9 	9E3((((#+555%#+555!e),,..555	---s333A#'C!))++$5666!c'AIIKK#$5666u,aiikkC.?@@@,cAIIKK.?@@@ RaR5#bqb'C-8888!	9 	9r   c                    t          j        g d          } ||          }t          j        g dg          j        }t          ||z  |                                |z             |t          j        g d          z  j        dk    sJ |t          j        g d          z  dk    sJ |t          j        g d          z  j        dk    sJ |t          j        dgdgdgg          z  j        dk    sJ t          |t          g dg          j        z  t           j                  sJ |t          j        g dg          j        z  j        dk    sJ t          j        ddg          t          j        g d          t          j        dgdgg          g}|D ]J}t          j
        t          d	
          5  |                    |           d d d            n# 1 swxY w Y   Kt          j        |                                g d          }t          |t          j        g d          z  |           t          |dgdgdggz  |j                   d S )N)r.   r   r   )r   r.   r   r      r   r.   r   r   r.   r   rd   zdimension mismatchr+   )r   r   r]   r   r8   r\   
isinstancer   ndarrayr0   r1   r2   
__matmul__r   )r=   r#   rP   Aspcolbad_vecsr^   
dot_results           r   test_matveczTestCommon1D.test_matvecY  s   H[[[!!illh			{##%c	3;;==3#6777BHYYY'''."4444RXiii(((B....bhyyy)))0B6666bhaS1#///6"<<<<#			{ 3 3 55rzBBBBBbh			{++--4:::: HaV$$bh|||&<&<bhaSz>R>RS 	" 	"Az1EFFF " "q!!!" " " " " " " " " " " " " " "
 VCKKMM99955
bhyyy111:>>>sQC!o-z|<<<<<s   5GG	G	c                     ||          }t          g d|z  t          j        g d|                                                     t          j        g dg          }t          ||z  ||                                z             d S )Nr   )r   r   r   r8   r   )r=   r#   r   Mrows        r   test_rmatveczTestCommon1D.test_rmatvecu  s~    Ieq("&qyy{{*K*KLLLh~&&aqyy{{!233333r   c                 .   |t          j        g           fD ]}} ||          }t          |                                |           t          |                                                                |           t          |j        |j                   ~d S rC   )r   r   r   r8   	transposer   )r=   r#   r   rP   Bs        r   test_transposezTestCommon1D.test_transpose{  s    "& 	+ 	+A	!Aa(((..00!444!'****		+ 	+r   c                     ||         D ]6\  }}}||z   }t          |||z              ||z   }t          |||z              7d S rC   )r   )r=   r#   r)   r   r"   r{   sum1sum2s           r   test_add_dense_to_sparsez%TestCommon1D.test_add_dense_to_sparse  sd    !29!= 	* 	*E3;DsSy)))3;DsSy))))		* 	*r   c                     t          j        d          } ||          }|j        dvr&t          ||          D ]\  }}t	          ||           d S d S )NrX   )coodiabsr)r   arangeformatzipr   )r=   r#   r   rP   r^   r_   s         r   test_iteratorzTestCommon1D.test_iterator  sj    IaLLIaLL8000Aq		 # #1Q"""" 10# #r   c                 0   t          j        g d          } ||          }|                    d          J t          |                                g d           |                    d           t          |                                g d           d S )N)r   r   r   rd   r7   )r   r   r   )rX   )r   r   r   r   r   )r   r   resizer   r8   r   s       r   test_resizezTestCommon1D.test_resize  s    H\\\""IaLLxx~~%%%QYY[[))),,,	QYY[[///22222r   N)#__name__
__module____qualname____doc__r>   rA   rF   rI   rQ   rT   rb   re   r|   r   r   r   r   r   r   r   r   sup_complexr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r5   r5   /   s       ??9 9 9
      4 4 4  . . .$
/ 
/ 
/, , ,(' ' ', , ,     ( ( (	9 	9 	9	; 	; 	;, , ,7 7 7 O O [O 
 
 [
 O O [O,0 ,0 ,0\0 0 0- - -9 9 9&= = =84 4 4+ + +* * *# # #3 3 3 3 3r   r5   c                       e Zd Zd Zd ZdS )TestGetSet1Dc                    t          j        g d          } ||          }|j        d         }t          | |          D ]}t	          ||         ||                    dD ]Q}t          j        t          t          fd          5  |	                    |           d d d            n# 1 swxY w Y   R|d         dk    sJ t          j        t          d          5  |	                    d           d d d            d S # 1 swxY w Y   d S )	N)rd   r   r   r   )r   rN   index value out of boundsr+   )r   rd   )rd   )
r   r   r\   ranger   r0   r1   
IndexErrorr   __getitem__)r=   r#   r   rP   Njijs          r   test_getelementzTestGetSet1D.test_getelement  s   HYYYIaLLGAJr1 	% 	%A1qt$$$$ 	" 	"BY'/J   " " b!!!" " " " " " " " " " " " " " " w!||||]:-HIII 	  	 MM$	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s$   B''B+	.B+	C??DDc                 ,   t           j        } |d|          }t           j                                        5 }|                    t
          d            |d          |d<    |d          |d<    |d          |d<    |d	          |d
<   d|d<    |d          |d<    |d          |d<   dD ]K}t          j        t          d          5  |	                    |d           d d d            n# 1 swxY w Y   L	 d d d            d S # 1 swxY w Y   d S )NrZ   r   zChanging the sparsity structurer   r   r   g      "@   rW   r   rh   rX   )i)r   )   i)r  )   r   r+   g     ^@)
r   float64testingsuppress_warningsfilterr   r0   r1   r   __setitem__)r=   r#   r   rP   supr   s         r   test_setelementzTestGetSet1D.test_setelement  s   
Ie5)))Z))++ 	-sJJ.0QRRR588AaD588AaD5::AaDE!HHAbEAaDU1XXAcFE!HHAbE- - -]:5PQQQ - -MM"e,,,- - - - - - - - - - - - - - --	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s6   BD	C/#D	/C33D	6C37D		DDN)r   r   r   r   r	  r   r   r   r   r     s2             (- - - - -r   r   )&r   r0   numpyr   numpy.testingr   r   scipy.sparser   r   r   r   r	   r
   r   r   scipy.sparse._sputilsr   r   scipy._lib._utilr   r  r  r   r  r(   int64r  
complex128r'   fixturer   r)   markparametrizer3   r5   r   r   r   r   <module>r     s)   0 0      7 7 7 7 7 7 7 7                    ; : : : : : : : + + + + + + j**,,   > " " " I.
xR]3 ' ' '    y)Y	&RSS    TS  j11i3 i3 i3 i3 i3 i3 i3 21i3X y)&<==%- %- %- %- %- %- %- >=%- %- %-r   