
    S_f!                        d dl Zd dlZd dlm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j&                  j)                  dg d      defd       Zej&                  j)                  d eg dg d            deeef   fd       Zej&                  j)                  dg d      defd       Zd Zd Zd Zd Zd Zd Z d Z!d Z"y)     N)	coo_arrayc                     t        d      } | j                  dk(  sJ t        j                  | j	                         t        j
                  d            sJ t        d      }|j                  dk(  sJ t        j                  |j	                         t        j
                  d            sJ t        j                  t        d      5  t        d       d d d        y # 1 sw Y   y xY w)N   r      zinvalid input formatmatch)r   r   r   )	r   shapenparray_equaltoarrayzerospytestraises	TypeError)empty1dempty2ds     ;lib/python3.12/site-packages/scipy/sparse/tests/test_coo.pytest_shape_constructorr      s    oG==D   >>'//+RXXd^<<<G==F""">>'//+RXXf-=>>>	y(>	? )  s   CC$c                     t        g d      } | j                  dk(  sJ t        j                  | j	                         t        j
                  g d            sJ t        g dg dg      }|j                  dk(  sJ t        j                  |j	                         t        j
                  g dg dg            sJ t        j                  t        d      5  t        dggdggg       d d d        y # 1 sw Y   y xY w)	N   r   r   r            r   r   shape must be a 1- or 2-tupler	   r   r   	r   r   r   r   r   arrayr   r   
ValueErrorres1dres2ds     r   test_dense_constructorr&      s    i E;;$>>%--/288I+>???y),-E;;&   >>%--/288Y	4J+KLLL	z)H	I "QC5A3%.!" " "s   C11C:c                     t        g dd      } | j                  dk(  sJ t        j                  | j	                         t        j
                  g d            sJ t        g dg dgd      }|j                  dk(  sJ t        j                  |j	                         t        j
                  g dg dg            sJ t        j                  t        d      5  t        dggd	gggd
       d d d        y # 1 sw Y   y xY w)Nr   r   r   r   r   r   r	   r   r   )r   r   r   r    r#   s     r   !test_dense_constructor_with_shaper)       s    it,E;;$>>%--/288I+>???y),F;E;;&   >>%--/288Y	4J+KLLL	z)H	I 3QC5A3%.	23 3 3s   C77D c                     t        j                  t        d      5  t        g dd       d d d        t        j                  t        d      5  t        g dd       d d d        t        j                  t        d      5  t        g dgd       d d d        t        j                  t        d      5  t        d	gd
gffd       d d d        t        j                  t        d      5  t        d	gdgff       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   bxY w# 1 sw Y   y xY w)Nzinconsistent shapesr	   r   r   r(   r   r   r   z)axis 0 index 2 exceeds matrix dimension 2r   r   )r   znegative axis 0 index: -1)r   r   r"   r        r   .test_dense_constructor_with_inconsistent_shaper0   -   s   	z)>	? ))4() 
z)>	? +)6*+ 
z)>	? +9+T*+ 
zH
J -A3!-t,- 
z)D	E "A3".!" ") )+ ++ +- -" "s;   DDD6D*,D6DDD'*D36D?c                      t        d      } t        |       }|j                  dk(  sJ t        j                  |j	                         t        j
                  d            sJ y )Nr   )r   r   r   r   r   r   )r   ress     r   test_1d_sparse_constructorr3   ?   sI    oG
G
C99>>#++-$888r/   c                      t        ddgddgff      } | j                  dk(  sJ t        j                  | j	                         t        j
                  g d            sJ y )N	      r   r   r   )r   r5   r6   r   r   r   r   r   r!   r2   s    r   test_1d_tuple_constructorr9   F   sP    
aUaUH%
&C99>>#++-))<===r/   c                      t        ddgddgffd      } | j                  dk(  sJ t        j                  | j	                         t        j
                  g d            sJ y )Nr5   r6   r   r   r+   r(   )r   r5   r6   r   r7   r8   s    r   $test_1d_tuple_constructor_with_shaper;   L   sR    
aUaUH%T
2C99>>#++-,)?@@@r/   c                      t        d      } t        j                  t        d      5  d| d<   d d d        t        j                  t        d      5  | dd d f    d d d        y # 1 sw Y   7xY w# 1 sw Y   y xY w)N)r   r   z3'coo_array' object does not support item assignmentr	   r   )r   r   z''coo_array' object is not subscriptabler   )r   r   r   r   )coo_2ds    r   test_non_subscriptabilityr>   Q   su    vF	yS
U t 
yF
H q!t 	  s   A#
A/#A,/A8c                     t        g d      } | j                  dk(  sJ | j                  d      }|j                  dk(  sJ t        j                  |j                         t        j                  dgdgdgg            sJ | j                  d      }|j                  dk(  sJ t        j                  |j                         t        j                  g dg            sJ t        g dg d	g      }|j                  d
k(  sJ |j                  d      }|j                  dk(  sJ t        j                  |j                         t        j                  g d            sJ y )Nr   r   r   r   r,   r   r   r   )r   r   r   r   r   r   r   r   r   )r   )r   r   r   r   r   r   )r   r   reshaper   r   r   r!   )arr1dcol_vecrow_vecarr2dflats        r   test_reshaperI   \   s   i E;;$mmF#G==F""">>'//+RXXsQC!o-FGGGmmF#G==F""">>'//+RXXyk-BCCCy),-E;;&   ==D::>>$,,."((3E*FGGGr/   c                      t        g d      } | j                  dk(  sJ | j                  dk(  sJ t        g dg dg      }|j                  dk(  sJ |j                  dk(  sJ y )Nr@   r   r   rA   rB   r   r   )r   r   nnzrD   rG   s     r   test_nnzrM   p   s_    i E;;$99>>y),-E;;&   99>>r/   c            	         t        g d      j                  } | j                  dk(  sJ t        j                  | j                         t        j                  g d            sJ t        g dg dg      j                  }|j                  dk(  sJ t        j                  |j                         t        j                  ddgddgdd	gg            sJ y )
Nr@   r   rA   rB   r   r   r   r   r   )r   Tr   r   r   r   r!   rL   s     r   test_transposerP   z   s    i ""E;;$>>%--/288I+>???y),-//E;;&   >>%--/288aVaVaV4L+MNNNr/   c                     t        g d      j                  d      } | j                  dk(  sJ t        j                  | j                         t        j                  g d            sJ t        g dg dg      j                  d      }|j                  dk(  sJ t        j                  |j                         t        j                  g dg dg            sJ t        j                  t        d	
      5  t        g d      j                  d       d d d        t        j                  t        d
      5  t        g dg dg      j                  d       d d d        y # 1 sw Y   OxY w# 1 sw Y   y xY w)Nr@   )r   )axesr   rA   rB   )r   r   r   z"axes don't match matrix dimensionsr	   zrepeated axis in transpose)r   r   )
r   	transposer   r   r   r   r!   r   r   r"   rL   s     r   test_transpose_with_axisrT      s+   i ***5E;;$>>%--/288I+>???y),-77V7DE;;&   >>%--/288Y	4J+KLLL	z)M	N 4)&&F&34 
z)E	F A9i()333@A A4 4A As   6E"7"E."E+.E7c                  4   t        g d      } t        j                  | j                  t        j                  g d            sJ t        j                  | j
                  t        j                  | j                              sJ | j
                  j                  | j                  j                  k(  sJ | j
                  j                  j                  du sJ g d| _        t        | j                        dk(  sJ t        j                  | j                  t        j                  g d            sJ | j
                  j                  | j                  j                  k(  sJ t        j                  t        d      5  g d| _        d d d        y # 1 sw Y   y xY w)Nr   )r   r   r   Fr   r   zcannot set row attributer	   )r   r   r   colr!   row
zeros_likedtypeflags	writeablelencoordsr   r   r"   r8   s    r   test_1d_row_and_colra      s   
K
 C>>#''288I#6777>>#''2==#9:::77==CGGMM)))77==""e+++CGszz?a>>#''288I#677777==CGGMM)))	z)C	D   s   ;
FFc                     t        g d      } | j                  | j                  | j                  | j                  | j
                  fD ]-  }t        j                  t        d      5   |        d d d        / | j                  | j                  fD ];  }t        j                   |       j                         | j                               r;J  y # 1 sw Y   xY w)NrV   zCannot convertr	   )r   tocsctocsrtodiatoliltobsrr   r   r"   tocootodokr   r   r   )r2   fs     r   test_1d_toformatsrk      s    
K
 CiiCIIsyy#))D ]]:-=> 	C	 	 ii# <~~ackkmS[[];;;<	 	s   %CC	arg)r   r   r   r   r6   c                    t        j                  g d      }t        |      }|j                  | d       |j                  |        |j                  |j                  k(  sJ t        j
                  |j                         |      sJ y )NrV   Frefcheckr   r!   r   resizer   r   r   rl   denr2   s      r   test_1d_resizert      sd    
((;
C
C.CJJsUJ#JJsO99		!!!>>#++----r/   )r   r   r   r   c                    t        j                  g d      }t        |      }|j                  | d       |j                  |        |j                  |j                  k(  sJ t        j
                  |j                         |      sJ y )Nr@   Frn   rp   rr   s      r   test_1d_to_2d_resizerv      sd    
((9
C
C.CJJsUJ#JJsO99		!!!>>#++----r/   )r   r   r   r6   c                    t        j                  g dg dg      }t        |      }|j                  | d       |j                  |        |j                  |j                  k(  sJ t        j
                  |j                         |      sJ y )Nr@   )r   r   r   Frn   rp   rr   s      r   test_2d_to_1d_resizerx      si    
((Iy)
*C
C.CJJsUJ#JJsO99		!!!>>#++----r/   c                  x   t        g dg dff      } | j                  dk(  sJ t        j                  | j	                         t        j
                  ddg            sJ | j                          | j                  dk(  sJ t        j                  | j	                         t        j
                  ddg            sJ y )N)r   r   r   r   r   r   r   r   r   )r   rK   r   r   r   r!   sum_duplicatesrD   s    r   test_sum_duplicatesr}      s    y9,/0E99>>>>%--/288QF+;<<<	99>>>>%--/288QF+;<<<r/   c                     t        g dg dff      } | j                  dk(  sJ | j                         dk(  sJ t        j                  | j                         t        j                  ddg            sJ | j                          | j                  dk(  sJ | j                         dk(  sJ t        j                  | j                         t        j                  ddg            sJ t        j                  | j                  t        j                  dg            sJ t        j                  | j                  t        j                  dg            sJ y )N)r   r   r   rz   r   r   r   )
r   rK   count_nonzeror   r   r   r!   eliminate_zerosrY   rZ   r|   s    r   test_eliminate_zerosr      s    y9,/0E99>> A%%%>>%--/288QF+;<<<	99>> A%%%>>%--/288QF+;<<<>>%))RXXqc]333>>%))RXXqc]333r/   c                      t        j                  g d      } t        j                  g d      }| |z   }t        |       |z   }t        |      t        |      k(  sJ t        j                  ||      sJ y )Nr   rW   rX   r   r   r   r   r   )r   r!   r   typer   den_aden_bexpr2   s       r   test_1d_add_denser      s`    HH^$EHH\"E
%-C
E
U
"C9S	!!!>>#s###r/   c                      t        j                  g d      } t        j                  g d      }t        j                  t        d      5  t        |       t        |      z    d d d        y # 1 sw Y   y xY w)Nr   r   z Cannot convert a 1d sparse arrayr	   )r   r!   r   r   r"   r   )r   r   s     r   test_1d_add_sparser      sY    HH^$EHH\"E 
z?
A ,%9U++, , ,s   
A++A4c                      t        j                  g d      } t        j                  g d      }| |z  }t        |       |z  }t        j                  |      dk(  sJ t        j                  ||      sJ y )Nr   r   r   )r   r!   r   ndimr   r   s       r   test_1d_matmul_vectorr      s`    HH^$EHH\"E
%-C
E
U
"C773<1>>#s###r/   c                     t        j                  g d      } t        j                  g dg dg      j                  }| |z  }t        |       |z  }t	        |      t	        |      k(  sJ t        j
                  ||      sJ y )Nr   r   r   r   r   r   )r   r!   rO   r   r   r   )rs   otherr   r2   s       r   test_1d_matmul_multivectorr      sj    
((>
"CHHlL1244E
+C
C.5
 C9S	!!!>>#s###r/   c                      t        j                  g dg dg      } t        |       }| | j                  z  }||j                  z  }t        j                  |j                         |      sJ y )Nr   r   )r   r!   r   rO   r   r   )rs   rG   r   r2   s       r   test_2d_matmul_multivectorr     sR    
((L,/
0CcNE
+C
%''/C>>#++----r/   c                      t        j                  g d      } t        j                  t        d      5  t        |       j                          d d d        y # 1 sw Y   y xY w)Nr   z diagonal requires two dimensionsr	   )r   r!   r   r   r"   r   diagonal)rs   s    r   test_1d_diagonalr     sD    
((>
"C	z)K	L "#!" " "s   AA)#numpyr   r   scipy.sparser   r   r&   r)   r0   r3   r9   r;   r>   rI   rM   rP   rT   ra   rk   markparametrizeintrt   ziptuplerv   rx   r}   r   r   r   r   r   r   r   r.   r/   r   <module>r      s     "

"
3"$9>A
	H(OA  < 0. . 1. L, ?@.eCHo . A. -.c . ..=
4$,$$."r/   