
    (ph:                     l    S r SSKrSSKJr  SSKrSSKJr  SSKJ	r
JrJrJrJr  SSKJr   " S S5      rg)	z'unit tests for sparse utility functions    N)assert_equal)raises)_sputils	csr_array	bsr_array	dia_array	coo_array)matrixc                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 r\R                  R                  S\\/5      S 5       rS rS rS r\R                  R                  S/ SS/PSS/PSS/P/ SQS/P/ S/PS/S/PS/S/PSS/S/PSS/S/PS/S/PSS/S/P/ SQS/PS /S /PS!S"/S#/PS$S%/S%/PS&S%/S%/PS$S&/S%/PSS%/S%/PSS$/S$/PSS&/S&/PSS'/S'/PS'S%/S%/PS'S&/S%/PS(S%/S%/PSS%/S%/PSS'/S$/PS(S&/S&/PS(S$/S$/PSS$/S$/PSS&/S&/PS(S)/S)/PS*S+/S+/PS/S,-  S/PS/S--  S/PS/S,-  S/P5      S. 5       r\R                  R                  S/S)S0/S1S/S*S1// S2QS3S4/S5S3/S6S7// S8QS/S,-  S)/S,-  -   /	5      S9 5       rS: rS; rS< rSrg=)>TestSparseUtils   c                    [        [        R                  " S5      [        R                  5        [        [        R                  " SS5      [        R
                  5        [        [        R                  " S[        [        5      [        R                  5        [        [        R                  " SS5      [        R
                  5        g )Nintcint32float32boolid)	r   sputilsupcastnpr   float64complexfloat
complex128selfs    R/var/www/html/venv/lib/python3.13/site-packages/scipy/sparse/tests/test_sputils.pytest_upcastTestSparseUtils.test_upcast   sf    W^^F+RWW5W^^GY7DW^^FGU;R]]KW^^C-rzz:    c                    [         R                  " S/SS9n[        [        R                  " S [
        S9[
        5        [        [        R                  " S US9[         R                  5        [        [        SS9   [        R                  " S5        S S S 5        [        [        S	S9   [        R                  " S [         R                  S9  S S S 5        g ! , (       d  f       NI= f! , (       d  f       g = f)
N   int8dtype)default)az.scipy.sparse does not support dtype object. .*matchOz/scipy.sparse does not support dtype float16. .*)
r   arrayr   r   getdtyper   r$   assert_raises
ValueErrorfloat16)r   As     r   test_getdtypeTestSparseUtils.test_getdtype   s    HHaS'W%%dE:EBW%%da0"'':B
 S!	
 C
 T2::6	
 

 

 
s   9C&$C$
C!$
C2c                    [        [        R                  " S5      S5        [        [        R                  " S5      S5        [        [        R                  " S5      S5        [        [        R                  " S5      S5        [        [        R                  " [        R                  " S5      5      S5        [        [        R                  " S5      S5        [        [        R                  " [        R                  " S/5      5      S5        [        [        R                  " S//5      S5        [        [        R                  " S	5      S5        [        [        R                  " S
5      S5        g )N      @T      @      ?      @   16Fr#   r#      )r   r   isscalarliker   r,   r   s    r   test_isscalarlike!TestSparseUtils.test_isscalarlike%   s    W))#.5W))"-t4W))#.5W))&148W))"((1+6=W))$/6W))"((A3-8%@W))A3%0%8W))$/7W))&159r!   c                    [        [        R                  " S5      S5        [        [        R                  " [        R                  " S5      5      S5        [        [        R                  " [        R                  " S/5      5      S5        [        [        SS9   [        R                  " S5        S S S 5        [        [        R                  " S5      S5        [        [        R                  " S	5      S5        [        [        R                  " S
5      S5        [        [        R                  " S5      S5        g ! , (       d  f       N= f)Nr6   Tr9   Fz4Inexact indices into sparse matrices are not allowedr)   r5   r7   r8   r;   r<   )r   r   	isintliker   r,   r.   r/   r   s    r   test_isintlikeTestSparseUtils.test_isintlike2   s    W&&r*D1W&&rxx{3T:W&&rxx}5u=H
 c"	
 	W&&s+U3W&&v.6W&&t,e4W&&v.6
 
s   D88
Ec                    [        [        R                  " S5      S5        [        [        R                  " S5      S5        [        [        R                  " S5      S5        [        [        R                  " S5      S5        [        [        R                  " S/S45      S5        [        [        R                  " SSS	9S5        [        [        R                  " S
SS	9S5        [        [        R                  " SSS	9S5        [        [        R                  " S
SS	9S5        [        [        R                  " SSS9S5        [        [        R                  " S/S4SS9S5        [        [        R                  " SSSS9S5        [        [        R                  " SSS9S5        [        [        R                  " SSS9S5        [        [        R                  " SSS9S5        g )Nr<   T)   r=   )      ?r=   Fr=   r=   r=   r=   )r=   )nonneg)r=   rI   )allow_nd)r=   r=   )rJ   rK   r=   )r=   r=   )r   r   isshaper   s    r   test_isshapeTestSparseUtils.test_isshapeA   sD   W__V,d3W__V,d3W__X.6W__Y/7W__qc1X.6W__WU;DAW__WU;DAW__WT:5AW__WT:5AW__X?GW__qc1X?GW__ZvN	W__TF;TBW__Wv>EW__Y@%Hr!   c           	      *   [        [        R                  " S5      S5        [        [        R                  " S5      S5        [        [        R                  " S/5      S5        [        [        R                  " / SQ5      S5        [        [        R                  " [        R                  " / SQ5      5      S5        [        [        R                  " [        R                  " S/S/S//5      5      S5        [        [        R                  " S5      S5        g )Nr;   Tr#   r=   r9   r#   r=   r9   F)r   r   
issequencer   r,   r   s    r   test_issequenceTestSparseUtils.test_issequenceU   s    W''-t4W''	2D9W'',d3W''	2D9W''(;<dCW''1#sQC(ABEJW''*E2r!   c                 ,   [        [        R                  " S5      S5        [        [        R                  " S/S//5      S5        [        [        R                  " [        R                  " S5      S    5      S5        [        [        R                  " SS/5      S5        [        [        R                  " [        R                  " S5      5      S5        [        [        R                  " S///5      S5        [        [        R                  " S5      S5        g )N) Tr#   r=   r9   F)r   r   ismatrixr   aranger   s    r   test_ismatrixTestSparseUtils.test_ismatrix_   s    W%%e,d3W%%sQCj148W%%biil4&894@W%%q!f-u5W%%biil3U;W%%ug.6W%%a(%0r!   c                     [        [        R                  " [        R                  " S/5      5      S5        [        [        R                  " [        S/5      5      S5        g )Nr#   T)r   r   isdenser   r,   r
   r   s    r   test_isdenseTestSparseUtils.test_isdensei   s8    W__RXXqc]3T:W__VQC[148r!   c                     [        [        [        R                  S5        [        [        [        R                  S5        [        [        [        R                  S5        S H  n[        R                  " U5        M     g )Nr   r#   rG   r9   )rL   rI   r   r#   N)r.   	TypeErrorr   validateaxisr/   )r   axiss     r   test_validateaxis!TestSparseUtils.test_validateaxism   sR    i!5!5v>i!5!5s;j'"6"6: )D  & )r!   	containerc                 	   [         R                  " [         R                  " [         R                  5      R                  5      nU" SU45      nUR                  5       nUR                  R                  [         R                  5      Ul        UR                  R                  [         R                  5      Ul        [        SUS-   45      nUR                  5       nUR                  R                  [         R                  5      Ul        UR                  R                  [         R                  5      Ul        UR                  5       n[         R                  " US-   /[         R                  S9Ul        [         R                  " SS/[         R                  S9Ul        [         R                  " S/5      Ul        UR                  R                  UR                  R                  4[         R                  [         R                  4:X  d   eUR                  R                  UR                  R                  4[         R                  [         R                  4:X  d   eUR                  R                  UR                  R                  4[         R                  [         R                  4:X  d   eUR                  R                  UR                  R                  4[         R                  [         R                  4:X  d   eUR                  R                  UR                  R                  4[         R                  [         R                  4:X  d   eX4XV4 GH  n[        R                  " U[         R                  5      u  pU	R                  U
R                  4[         R                  [         R                  4:X  d   e[        R                  " U[         R                  5      u  pU	R                  U
R                  4[         R                  [         R                  4:X  d   e[        R                  " XR                  R                  5      u  pXR                  L d   eXR                  L a  GM   e   [        [         5         [        R                  " U[         R                  5        S S S 5        [        R                  " U[         R                  5      u  pXR                  L d   eXR                  L d   eg ! , (       d  f       NV= f)Nr#   r%   r   皙@)r   int64iinfor   maxcopyindicesastypeindptrr   r,   datar&   r   safely_cast_index_arraysr.   r/   )r   rg   imaxA32B32A64B64C64r1   rn   rp   s              r   !test_safely_cast_index_compressed1TestSparseUtils.test_safely_cast_index_compressedv   sJ   
 xx*../ D	"hhjkk((2ZZ&&rxx0
 D1H&hhjkk((2ZZ&&rxx0
hhjhhqz:XXq!fBHH5
88SE?!!3::#3#342888LLLL!!3::#3#342888LLLL!!3::#3#342888LLLL!!3::#3#342888LLLL!!3::#3#342888LLLLC%A%>>q"((KOGMM6<<0RXXrxx4HHHH%>>q"((KOGMM6<<0RXXrxx4HHHH%>>q))//ROGii'''XX%%% & :&,,S"((; '!::3I++%%%###	 '&s   5&S++
S9c                    [         R                  " [         R                  " [         R                  5      R                  5      n[        SU45      nUR                  5       n[        S UR                   5       5      Ul        [        SUS-   45      nUR                  5       n[        S UR                   5       5      Ul        UR                  5       n[         R                  " US-   /5      [         R                  " S/5      4Ul        [         R                  " S/5      Ul
        UR                  S   R                  [         R                  :X  d   eUR                  S   R                  [         R                  :X  d   eUR                  S   R                  [         R                  :X  d   eUR                  S   R                  [         R                  :X  d   eUR                  S   R                  [         R                  :X  d   eX#XE4 H  n[        R                  " U[         R                  5      nUS   R                  [         R                  :X  d   e[        R                  " U[         R                  5      nUS   R                  [         R                  :X  d   e[        R                  " XwR                  S   R                  5      nUS   UR                  S   L a  M   e   [        [        5         [        R                  " U[         R                  5        S S S 5        [        R                  " U[         R                  5      nUS   UR                  S   L d   eg ! , (       d  f       NK= f)Nr#   c              3   ^   #    U  H#  oR                  [        R                  5      v   M%     g 7fN)ro   r   rj   .0cos     r   	<genexpr>=TestSparseUtils.test_safely_cast_index_coo.<locals>.<genexpr>        D299RXX..   +-c              3   ^   #    U  H#  oR                  [        R                  5      v   M%     g 7fr}   )ro   r   r   r~   s     r   r   r      r   r   r   ri   )r   rj   rk   r   rl   r	   rm   tuplecoordsr,   rq   r&   r   rr   r.   r/   )	r   rs   rt   ru   rv   rw   rx   r1   r   s	            r   test_safely_cast_index_coo*TestSparseUtils.test_safely_cast_index_coo   so    xx*../ D	"hhjDDD
 D1H&hhjDDD
hhjhhqz*BHHaSM:
88SE?zz!}""bhh...zz!}""bhh...zz!}""bhh...zz!}""bhh...zz!}""bhh...C%A55aBF!9??bhh...55aBF!9??bhh...55a!9J9JKF!9+++ & :&,,S"((; '11#rxx@ayCJJqM))) '&s   3&M
M,c                    [         R                  " [         R                  " [         R                  5      R                  5      n[        SU45      nUR                  5       nUR                  R                  [         R                  5      Ul        [        SUS-   45      nUR                  5       nUR                  R                  [         R                  5      Ul        UR                  5       n[         R                  " US-   /5      Ul        [         R                  " S/5      Ul
        UR                  R                  [         R                  :X  d   eUR                  R                  [         R                  :X  d   eUR                  R                  [         R                  :X  d   eUR                  R                  [         R                  :X  d   eUR                  R                  [         R                  :X  d   eX#XE4 H  n[        R                  " U[         R                  5      nUR                  [         R                  :X  d   e[        R                  " U[         R                  5      nUR                  [         R                  :X  d   e[        R                  " XwR                  R                  5      nXR                  L a  M   e   [        [        5         [        R                  " U[         R                  5        S S S 5        [        R                  " U[         R                  5      nXR                  L d   eg ! , (       d  f       ND= f)Nr#   r=   ri   )r   rj   rk   r   rl   r   rm   offsetsro   r,   rq   r&   r   rr   r.   r/   )	r   rs   rt   ru   rv   rw   rx   r1   r   s	            r   test_safely_cast_index_dia*TestSparseUtils.test_safely_cast_index_dia   s2    xx*../ D	"hhjkk((2 D1H&hhjkk((2hhjhhqz*88SE?{{  BHH,,,{{  BHH,,,{{  BHH,,,{{  BHH,,,{{  BHH,,,C%A66q"((CG==BHH,,,66q"((CG==BHH,,,66q))//JGii''' & :&,,S"((; '223A++%%% '&s   &L;;
M	c           
      
   [         R                  " [         R                  " [         R                  5      R                  5      nUS-   n[         R
                  " SSS9n[         R
                  " SSS9n[        [         R                  " [        R                  " X44SS95      [         R                  " S5      5        XS'   [        [         R                  " [        R                  " X44SS95      [         R                  " S5      5        X#S'   [        [         R                  " [        R                  " X44SS95      [         R                  " S	5      5        [         R
                  " S
SS9n[         R
                  " S
SS9n[        [         R                  " [        R                  " X445      5      [         R                  " S	5      5        [         R
                  " SSS9n[         R
                  " SSS9n[        [         R                  " [        R                  " X44USS95      [         R                  " S	5      5        X#S'   [        [         R                  " [        R                  " X44US95      [         R                  " S	5      5        g )Nr#   Z   uint32r%   T)check_contentsr   rI   rj   Y      )maxvalr   )r   )
r   rj   rk   r   rl   onesr   r&   r   get_index_dtype)r   rs   too_biga1a2s        r   test_get_index_dtype$TestSparseUtils.test_get_index_dtype   s   xx*../( WWRx(WWRx(HHW,,bXdKLHHW	
 2HHW,,bXdKLHHW	
 2HHW,,bXdKLHHW	
 WWRx(WWRx(HHW,,bX67HHW	
 WWRx(WWRx(HHW,,  HHW		
 2HHW,,bXgFGHHW	
r!   zinput_shapes,target_shape)   rF   r#      r#   r#   r#           r   r#   )r   rF   r#   r   r   r   )r   r   )r   rF   r#   r   r#   r   )r   r   )r   r   rH   rM   rW      r<   )r#   r#   )r9   r   ))r   r   rF   r   r#   r   )rF   r#   r   )rF   r   r   r   )r#   r9   r9   r#   )r9   r9   )r#   r   )r   r   ra   )r   r;   r9   r=   r9   r=       d   c                 >    [        [        R                  " U6 U5        g r}   )r   r   broadcast_shapes)r   input_shapestarget_shapes      r   test_broadcast_shapes_successes/TestSparseUtils.test_broadcast_shapes_successes7  s    L 	W--|<lKr!   r   r   )r=   r9   )r   r   r   )r=   rF   )r9   rF   )r=   r   )r#   r9   r   )r=   r9   r9   )r<   r   r   )
   rF   c                 z    [        [        SS9   [        R                  " U6   S S S 5        g ! , (       d  f       g = f)Nzcannot be broadcastr)   )r.   r/   r   r   )r   r   s     r   test_broadcast_shapes_failures.TestSparseUtils.test_broadcast_shapes_failures`  s*     :-BC$$l3 DCCs   ,
:c                 L    [         R                  " S/S5      n[        US5        g )N)r   rI   )i  i )r   i23)r   check_shaper   )r   	new_shapes     r   test_check_shape_overflow)TestSparseUtils.test_check_shape_overflowo  s     ''
OD	Y0r!   c                    / SQ/n[         R                  " U5      n[        [        R                  " U5      [         R                  5      (       d   e[        [        R                  " U5      [         R                  5      (       d   e[        R                  " U5      nSUS S 2S S 24'   [        X!5        [        R                  " USS9nSUS S 2S S 24'   [        U/ SQ/5        g )NrR   {   F)rm   r   r   r   )r   r,   
isinstancer   r
   r   r   r(   bcs       r   test_matrixTestSparseUtils.test_matrixs  s    KHHQK'..+RYY7777'..+RYY7777NN1!Q$QNN15)!Q$Q)*r!   c                 n   / SQ/n[         R                  " U5      n[        [        R                  " U5      [         R
                  5      (       d   e[        [        R                  " U5      [         R
                  5      (       d   e[        R                  " U5      nSUS S 2S S 24'   [        U/ SQ/5        g )NrR   r   r   )r   r,   r   r   asmatrixr
   r   r   s       r   test_asmatrixTestSparseUtils.test_asmatrix  s    KHHQK'**1-ryy9999'**1-ryy9999Q!Q$Q)*r!   N)__name__
__module____qualname____firstlineno__r   r2   r?   rC   rO   rT   rZ   r^   re   pytestmarkparametrizer   r   ry   r   r   r   r   r   r   r   r   __static_attributes__rW   r!   r   r   r      s   ;7$:7I(319' [[[9i*@A.$ B.$`(*T(&T7
x [[8 $;	57QR$;	)+AB$; 
">2$; 
D	$;
 
R$; r
$; $; $ $;  $; 6$; &	6"$; 
.y9$; i $; &	6"$; &	6"$;  &	6"!$;" &	6"#$;$ &	6"%$;& &	6"'$;( &	6")$;* dT+$;,  -$;.  /$;0  1$;2 fv3$;4 $ 5$;6  7$;8  9$;: fv;$;< fv=$;> t?$;@ VfA$;B BC$;D C E$;F "dG$; $JLK$JL [[^	t		
F			I)	tfrk!
. 
4
41+	+r!   r   )__doc__numpyr   numpy.testingr   r   r   r.   scipy.sparser   r   r   r   r   r	   scipy.sparse._sputilsr
   r   rW   r!   r   <module>r      s)    -  &  * X X (@+ @+r!   