
    tKgu<                     N   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*                  j-                         Zej1                  e       eeegZej4                  ej6                  ej8                  gZej<                  d        Zej<                  d        Z ejB                  jE                  d	ee	e
eg      d
        Z#ejB                  jE                  d	e       G d d             Z$ejB                  jE                  d	eeg       G d d             Z%y)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                  2    t        j                  g dd      S )N)   r      r   d)nparray     d/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/sparse/tests/test_common1d.pydat1dr      s    88L#&&r   c                     t         D ci c]  }|| j                  |       }}t        D ci c]/  }||j                         D cg c]  \  }}|| ||      f c}}1 c}}}S c c}w c c}}w c c}}}w N)math_dtypesastype
spcreatorsitems)r   dtype
dat_dtypes	spcreatordats        r   datsp_math_dtypesr$      s    :EF+%e,,+JF $#I 	:CSCSCUVCUZUCUC30CUVV#  GVs   A'A2A,A2,A2r"   c                 x    t        j                  t        d      5   | g d       d d d        y # 1 sw Y   y xY w)Nzarrays don't support 1D inputmatchr   r      r   pytestraises
ValueError)r"   s    r   test_no_1d_support_in_initr.   (   s&    	z)H	I, 
J	I	Is   09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"y )!TestCommon1Dz5test common functionality shared by 1D sparse formatsc                     t         |d      j                         t        j                  d             t         |d      j                  d       t         |d      j                         d       y )Nr   r   r   )r   toarrayr   zerosnnzcount_nonzeroselfr"   s     r   test_create_emptyzTestCommon1D.test_create_empty3   sL    Yt_,,.<Yt_((!,Yt_224a8r   c                 t    t        j                  t        d      5   |d       d d d        y # 1 sw Y   y xY w)Nzelements cannot be negativer&   )r*   r7   s     r   test_invalid_shapesz TestCommon1D.test_invalid_shapes8   s&    ]]:-JKe LKKs   	.7c                 &    t         ||             y r   )reprr8   r"   r   s      r   	test_reprzTestCommon1D.test_repr<   s    Yur   c                 &    t         ||             y r   )strr?   s      r   test_strzTestCommon1D.test_str?   s    Ier   c                 x    t        j                  g dd      }t        |  ||       j                                y )N)r      r   r   r   r   r   r   r   r   )r   r   r   r3   r8   r"   As      r   test_negzTestCommon1D.test_negB   s.    HH=sCaR9Q<-0023r   c                 :     |g d      }|j                   dk(  sJ y )Nr(   r   )ndimrI   s      r   test_1d_supported_initz#TestCommon1D.test_1d_supported_initF   s    l#vv{{r   c                     |g d      }|j                  dd      }g dg}t        |j                         |        ||      }|j                  d      }t        |j                         |d          |j                  d      }|j                  |j                  k(  sJ |j                  j                  d      }t        |j                         |d          y )Nr   r      r   r   r   r   r;   r   r   r      r      r   rS   )reshaper   r3   shapeT)r8   r"   xydesiredy2s         r   $test_reshape_1d_tofrom_row_or_columnz1TestCommon1D.test_reshape_1d_tofrom_row_or_columnJ   s    ;<IIa89QYY['* gIIbMQYY['!*-YYuww"((""" CCKKOQYY['!*-r   c                 *    |g d      }|j                  d      }g dg dg dg dg}t        |j                         |       |j                  d      }||u sJ |j                  d      }t        |j                         |j                                y )	NrP   )   r   )r   r   rQ   )r   r   r   )r   r;   r   )r   r   rR   rT   rS   )rU   r   r3   )r8   r"   rX   rY   rZ   s        r   test_reshapezTestCommon1D.test_reshape\   su    ;<IIfiY?QYY['*IIeAvvIIbMQYY[!))+.r   c                 r   t         j                  j                  d       t        j                  g d      }t         j                  j	                  d      }t        j                  g       }t        j
                  d      }||||g}|D ]  } ||      }t        j                  d      5  t        j                  |j                               sJ t        |j                         |j                                t        |j                  d       |j                  d              t        |j                  d      |j                  d             t        |j                  d	      |j                  d	             d d d         j                  dt        j
                  d
             y # 1 sw Y   .xY w)Ni  )	r   r   r)   r   rH   rR   rQ   	   rR   )(   ignore)overaxisr   rE   r   rg   out)
r   randomseedr   randr4   errstateisscalarsumr   )	r8   r"   dat_1dat_2dat_3dat_4arraysr#   datsps	            r   test_sumzTestCommon1D.test_sumh   s2   
		t67		q!u-CcNE(+{{599;///	599;7T 2EII4I4HIQ1BCR 0%)))2DE ,+  			qbhhrl	+ ,+s   )CF,,F6	c                 ~   t        j                  d      }t        j                  g d      } ||      }t        j                  t
        d      5  |j                  d       d d d        t        j                  t        d      5  |j                  d       d d d        t        j                  t        d	      5  |j                  d
       d d d        t        j                  t
        d      5  |j                  d|       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   y xY w)Nr2   r   r   r)   zaxis must be None, -1 or 0r&   r   rf   Tuples are not acceptedr   r   axis must be an integer      ?dimensions do not matchr   rh   )r   r4   r   r+   r,   r-   ro   	TypeErrorr8   r"   ri   r#   ru   s        r   test_sum_invalid_paramsz$TestCommon1D.test_sum_invalid_params|   s    hhtnhhy!#]]:-IJII1I K]]9,EFII6I" G]]9,EFII3I G]]:-FGII1#I& HG KJFFFFGGs0   DD<D'2D3DD$'D03D<c                     t        j                  g d      } ||      }t        j                  |      }t        j                  |      }t        ||       y Nrx   )r   r   ro   r   )r8   r"   r#   ru   dat_sum	datsp_sums         r   test_numpy_sumzTestCommon1D.test_numpy_sum   s=    hhy!#&&+FF5M	+r   c                    t        j                  g d      } ||      }t        |j                         |j                                t        j                  |j                  d             sJ t        |j                  d       |j                  d              t        |j                  d      |j                  d             t        |j                  d      |j                  d             t        j                  t        d      5  |j                  d       d d d        t        j                  t        d      5  |j                  d       d d d        y # 1 sw Y   @xY w# 1 sw Y   y xY w)	Nrx   rf   r   rE   rg   r&   r   )r   r   r   meanrn   r+   r,   r-   )r8   r"   r#   ru   s       r   	test_meanzTestCommon1D.test_mean   s   hhy!#
EJJL1{{5::4:0111d+UZZTZ-BCa(%**!**<=b)5::2:+>?]]:V4JJAJ 5]]:V4JJBJ 54 5444s   E E, E),E5c                    t        j                  t        j                  d            }t        j                  g dg dg dg      } ||      }t	        j
                  t        d      5  |j                  d       d d d        t	        j
                  t        d	      5  |j                  d
       d d d        t	        j
                  t        d      5  |j                  d       d d d        t	        j
                  t        d      5  |j                  d|       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   y xY w)N)r   r   rx   )r   rH   rR   )ra   rQ   rb   zaxis out of ranger&   r   rf   ry   rz   r{   r|   r}   r   rh   )	r   asarrayr4   r   r+   r,   r-   r   r~   r   s        r   test_mean_invalid_paramsz%TestCommon1D.test_mean_invalid_params   s    jj&)*hh	:z:;#]]:-@AJJAJ B]]9,EFJJFJ# G]]9,EFJJCJ  G]]:-FGJJA3J' HG BAFFFFGGs0   *D) D5EE)D25D>E
Ec                     t        j                  g d      } ||      }t        D ]R  }|j                  |      }|j                  |      }t	        ||       t        |j                  |j                         T y Nrx   r    )r   r   r   ro   r   r   r    )r8   r"   r#   ru   r    r   r   s          r   test_sum_dtypezTestCommon1D.test_sum_dtype   s_    hhy!#%EggEg*G			.IGY/	8 &r   c                     t        j                  g d      } ||      }t        D ]R  }|j                  |      }|j                  |      }t	        ||       t        |j                  |j                         T y r   )r   r   r   r   r   r   r    )r8   r"   r#   ru   r    dat_mean
datsp_means          r   test_mean_dtypezTestCommon1D.test_mean_dtype   sa    hhy!#%Exxex,H%0JHj1)9)9: &r   c                 b   t        j                  g d      } ||      }t        j                  dg      }t        j                  dg      }|j                  |d       |j                  |       t        ||       |j                  d|d       |j                  d|       t        ||       y )Nrx   r   T)ri   keepdimsri   )rg   ri   r   rh   )r   r   r   r   )r8   r"   r#   ru   dat_out	datsp_outs         r   test_mean_outzTestCommon1D.test_mean_out   s    hhy!#((A3-HHaSM	Wt,

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

y
)+r   c                     t        j                  g d      } ||      }t        j                  |      }t        j                  |      }t        ||       t	        |j
                  |j
                         y r   )r   r   r   r   r   r    )r8   r"   r#   ru   r   r   s         r   test_numpy_meanzTestCommon1D.test_numpy_mean   sQ    hhy!#773<WWU^
*-X^^Z%5%56r   c                 B   t        j                  g d      }t         ||      j                         |       t        j                  g d      }t         ||      j                         |       t         ||d      j                         |j	                  d             y N)r)   r   r^   y      ?      @r   rE   int16r   )r   r   r   r3   r   rI   s      r   test_from_arrayzTestCommon1D.test_from_array   sp    HHYYq\))+Q/HH&'Yq\))+Q/Yq088:AHHW<MNr   c                 B   g d}t         ||      j                         |       g d}t         ||      j                         t        j                  |             t         ||d      j                         t        j                  |      j	                  d             y r   )r   r3   r   r   r   rI   s      r   test_from_listzTestCommon1D.test_from_list   sr    Yq\))+Q/Yq\))+RXXa[9aw'//1288A;3E3Eg3N	
r   c                 p   t        j                  g d      }t        |      }t         ||      j	                         |        ||      }t         ||      j	                         |       t        j                  g d      }t        |      }t         ||      j	                         |       t         ||d      j	                         |j                  d              ||      }t         ||      j	                         |       t         ||d      j	                         |j                  d             y )N)r   r   r   r   r   r   )r   r   r	   r   r3   r   r8   r"   DSs       r   test_from_sparsezTestCommon1D.test_from_sparse   s    HHYaLYq\))+Q/aLYq\))+Q/HH&'aLYq\))+Q/Yq088:AHHW<MNaLYq\))+Q/Yq088:AHHW<MNr   c                     ||      }|j                         }t        ||       |j                  j                  |j                  j                  k(  sJ |j                  d      }t        ||       |j                  j                  sJ |j                  j                  sJ |j                  d      }t        ||       |j                  j                  sJ |j                  j                  sJ t        j                  |j                  |j                        }|j                  |       t        ||       d|d<   |j                  |       t        ||       t        j                  g d      }t        j                  ||      }t        j                  ||j                               }t        ||       t        j                  g d      }	t        j                  ||	      }t        j                  |j                         |	      }t        ||        ||t              }
|j                  t              }t        |
j                         |       y )	NC)orderFr   r         ?.)r          @      @g      @)r3   r   flagsc_contiguousf_contiguousr   r4   rV   r    r   dotboolr   )r8   r"   r   ru   chkri   adense_dot_densecheckbspboolarrbools               r   test_toarrayzTestCommon1D.test_toarray  s   % mmoS% yy%%)?)???? mm#m&S% yy%%%%yy%%%% mm#m&S% yy%%%%yy%%%% hhu{{%++6#S%  C#S%  HH)*&&E*q%--/*_e,HH)*&&*u}}*_e, 5-,,t$V^^%w/r   c                     ||   D ]g  \  }}}|j                         }d|d<   |}||z   }t        ||j                         |z          ||dd z   }t        ||j                         |d   z          i y )Nr   r   r   copyr   r3   	r8   r"   r$   r    r#   ru   r   r   cs	            r   test_addzTestCommon1D.test_add1  sx    !29!=E3
AAaDAAAAIIK!O, AaF
AAIIK!A$./ ">r   c                     ||   D ]?  \  }}}|j                         }d|d<   |}||z   }t        |||j                         z          A y )Nr   r   r   r   s	            r   	test_raddzTestCommon1D.test_radd>  sN    !29!=E3
AAaDAAAA		O, ">r   c                 V   ||   D ]   \  }}}|t        j                  d      k(  r!t        ||z
  g d       t        ||z
  g d       t        d|z
  j                         |         |g dd      }t        ||z
  ||j                         z
         t        ||z
  |j                         |z
         t        |j                         |z
  |j                         |z
         t        ||j                         z
  ||j                         z
         t        |d d |z
  |d d |z
         # y )Nr   )r   r   r   r   r   )r   rH   r   r)   r   r   r   )r   r    r   r3   )r8   r"   r$   r    r#   ru   rJ   s          r   	test_rsubzTestCommon1D.test_rsubF  s    !29!=E3((#+5%#+5!e),,.5-s3A#'C!))+$56!c'AIIK#$56u,aiikC.?@,cAIIK.?@ Ra5#bq'C-8! ">r   c                    t        j                  g d      } ||      }t        j                  g dg      j                  }t        ||z  |j	                         |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 ]7  }t        j                  t        d	
      5  |j                  |       d d d        9 t        j                  |j	                         g d      }t        |t        j                  g d      z  |       t        |dgdgdggz  |j                         y # 1 sw Y   xY w)N)r)   r   r   )r   r)   r   r      r   r)   r   r   r)   r   r^   zdimension mismatchr&   )r   r   rW   r   r3   rV   
isinstancer   ndarrayr+   r,   r-   
__matmul__r   )r8   r"   rJ   Aspcolbad_vecsrX   
dot_results           r   test_matveczTestCommon1D.test_matvecY  s   HH[!lhh	{#%%c	3;;=3#67BHHY''.."444RXXi((B...bhhy))00B666bhhaS1#//66"<<<#	{ 3 5 55rzzBBBbhh	{+---44::: HHaV$bhh|&<bhhaSz>RSAz1EFq! GF  VVCKKM95
bhhy11:>sQC!o-z||< GFs   II	c                      ||      }t        g d|z  t        j                  g d|j                                      t        j                  g dg      }t        ||z  ||j                         z         y )Nr   )r   r   r   r3   r   )r8   r"   r   Mrows        r   test_rmatveczTestCommon1D.test_rmatvecu  sU    eq("&&qyy{*KLhh~&aqyy{!23r   c                    |t        j                  g       fD ]l  } ||      }t        |j                         |       t        |j	                         j                         |       t        |j
                  |j
                         n y r   )r   r   r   r3   	transposer    )r8   r"   r   rJ   Bs        r   test_transposezTestCommon1D.test_transpose{  s]    "&A!Aa(..0!4!''*	 'r   c                 p    ||   D ].  \  }}}||z   }t        |||z          ||z   }t        |||z          0 y r   )r   )r8   r"   r$   r    r#   ru   sum1sum2s           r   test_add_dense_to_sparsez%TestCommon1D.test_add_dense_to_sparse  sF    !29!=E3;DsSy)3;DsSy)	 ">r   c                     t        j                  d      } ||      }|j                  dvr!t        ||      D ]  \  }}t	        ||        y y )NrR   )coodiabsr)r   arangeformatzipr   )r8   r"   r   rJ   rX   rY   s         r   test_iteratorzTestCommon1D.test_iterator  sH    IIaLaL8800Aq	1Q" " 1r   c                     t        j                  g d      } ||      }|j                  d      J t        |j	                         g d       |j                  d       t        |j	                         g d       y )N)r   r   r   r^   r2   )r   r   r   )rR   )r   r   r   r   r   )r   r   resizer   r3   r   s       r   test_resizezTestCommon1D.test_resize  sX    HH\"aLxx~%%%QYY[),	QYY[/2r   N)#__name__
__module____qualname____doc__r9   r<   r@   rC   rK   rN   r\   r_   rv   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   r0   r0   /   s    ?9
4.$
/,(', (	9	;,7 O O 
 
 O O,0\0-9&=84+*#3r   r0   c                       e Zd Zd Zd Zy)TestGetSet1Dc                    t        j                  g d      } ||      }|j                  d   }t        | |      D ]  }t	        ||   ||           dD ]=  }t        j                  t        t        fd      5  |j                  |       d d d        ? |d   dk(  sJ t        j                  t        d      5  |j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	N)r^   r   r   r   )r   rH   index value out of boundsr&   )r   r^   )r^   )
r   r   rV   ranger   r+   r,   
IndexErrorr~   __getitem__)r8   r"   r   rJ   Njijs          r   test_getelementzTestGetSet1D.test_getelement  s    HHYaLGGAJr1A1qt$  BY'/J b!   w!||]]:-HIMM$ JI  JIs   9C:C!C	!C*c                    t         j                  } |d|      }t         j                  j                         5 }|j	                  t
        d        |d      |d<    |d      |d<    |d      |d<    |d	      |d
<   d|d<    |d      |d<    |d      |d<   dD ]8  }t        j                  t        d      5  |j                  |d       d d d        : 	 d d d        y # 1 sw Y   NxY w# 1 sw Y   y xY w)NrT   r   zChanging the sparsity structurer   r   r   g      "@   rQ   r   rb   rR   )i)r   )   i)r   )   r   r&   g     ^@)
r   float64testingsuppress_warningsfilterr   r+   r,   r   __setitem__)r8   r"   r    rJ   supr   s         r   test_setelementzTestGetSet1D.test_setelement  s    

e5)ZZ))+sJJ.0QR8AaD8AaD:AaD!HAbEAaD1XAcF!HAbE-]]:5PQMM"e, RQ . ,+ RQ ,+s$   A>C*7C

C*C'#C**C3N)r   r   r   r   r  r   r   r   r   r     s     (-r   r   )&r   r+   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parametrizer.   r0   r   r   r   r   <module>r     s,   0   7   ; + jj**,   > " I.
xxR]]3 ' '   y)Y	&RS  T  j1i3 i3 2i3X y)&<=%- %- >%-r   