a
    h!                     @   sB  d dl Zd dlZd dlmZ dd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zejdg d ed!d"d#Zejdeg d$g d$eeef d!d%d&Zejdg d'ed!d(d)Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Z d6d7 Z!d8d9 Z"dS ):    N)	coo_arrayc                  C   s   t d} | jdksJ t|  tds0J t d}|jdksFJ t| tds`J tjtdd t d W d    n1 s0    Y  d S )N   r      zinvalid input formatmatch)r   r   r   )	r   shapenparray_equaltoarrayzerospytestraises	TypeError)empty1dZempty2d r   W/var/www/html/assistant/venv/lib/python3.9/site-packages/scipy/sparse/tests/test_coo.pytest_shape_constructor   s    r   c                  C   s   t g d} | jdksJ t|  tg ds8J t g dg dg}|jdksZJ t| tg dg dgsJ tjtdd$ t dggdggg W d    n1 s0    Y  d S )	N   r   r   r            r   r   shape must be a 1- or 2-tupler   r   r   	r   r	   r
   r   r   arrayr   r   
ValueErrorZres1dZres2dr   r   r   test_dense_constructor   s    &r!   c                  C   s   t g ddd} | jdksJ t|  tg ds<J t g dg dgdd}|jdksbJ t| tg dg dgsJ tjtdd( t dggd	gggd
d W d    n1 s0    Y  d S )Nr   r   r	   r   r   r   r   r   r   )r   r   r   r   r    r   r   r   !test_dense_constructor_with_shape    s    &r#   c                   C   sF  t jtdd  tg ddd W d    n1 s40    Y  t jtdd  tg ddd W d    n1 sr0    Y  t jtdd" tg dgdd W d    n1 s0    Y  t jtdd& td	gd
gffdd W d    n1 s0    Y  t jtdd" td	gdgff W d    n1 s80    Y  d S )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   r   r   r   .test_dense_constructor_with_inconsistent_shape-   s    ..04r'   c                  C   s<   t d} t | }|jdksJ t| tds8J d S )Nr   )r   r	   r
   r   r   r   )r   resr   r   r   test_1d_sparse_constructor?   s    r)   c                  C   sF   t ddgddgff} | jdks$J t|  tg dsBJ d S )N	      r   r   r   )r   r*   r+   r   r	   r
   r   r   r   r(   r   r   r   test_1d_tuple_constructorF   s    r.   c                  C   sJ   t ddgddgffdd} | jdks(J t|  tg dsFJ d S )Nr*   r+   r   r   r$   r"   )r   r*   r+   r   r,   r-   r   r   r   $test_1d_tuple_constructor_with_shapeL   s    r/   c                  C   s   t d} tjtdd d| d< W d    n1 s40    Y  tjtdd  | dd d f  W d    n1 sr0    Y  d S )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   )Zcoo_2dr   r   r   test_non_subscriptabilityQ   s    &r0   c                  C   s   t g d} | jdksJ | d}|jdks2J t| tdgdgdggsXJ | d}|jdkspJ t| tg dgsJ t g dg d	g}|jd
ksJ |d}|jdksJ t| tg dsJ d S )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	   Zreshaper
   r   r   r   )arr1dZcol_vecZrow_vecarr2dZflatr   r   r   test_reshape\   s    
&
 
r6   c                  C   s\   t g d} | jdksJ | jdks(J t g dg dg}|jdksJJ |jdksXJ d S )Nr1   r   r   r2   r3   r   r   )r   r	   nnzr4   r5   r   r   r   test_nnzp   s    r9   c               	   C   s   t g dj} | jdksJ t|  tg ds:J t g dg dgj}|jdks^J t| tddgddgdd	ggsJ d S )
Nr1   r   r2   r3   r   r   r   r   r   )r   Tr	   r
   r   r   r   r8   r   r   r   test_transposez   s    r;   c                  C   s"  t g djdd} | jdks"J t|  tg ds@J t g dg dgjdd}|jdksjJ t| tg dg dgsJ tjt	d	d
$ t g djdd W d    n1 s0    Y  tjt	dd
, t g dg dgjdd W d    n1 s0    Y  d S )Nr1   )r   )Zaxesr   r2   r3   )r   r   r   z"axes don't match matrix dimensionsr   zrepeated axis in transpose)r   r   )
r   Z	transposer	   r
   r   r   r   r   r   r   r8   r   r   r   test_transpose_with_axis   s    &2r<   c                  C   s   t g d} t| jtg ds(J t| jt| jsBJ | jj| jjksVJ | jjj	du shJ g d| _t
| jdksJ t| jtg dsJ | jj| jjksJ tjtdd g d| _W d    n1 s0    Y  d S )Nr   )r   r   r   Fr   r   zcannot set row attributer   )r   r
   r   colr   rowZ
zeros_likeZdtypeflagsZ	writeablelenZcoordsr   r   r   r-   r   r   r   test_1d_row_and_col   s    
rD   c               	   C   s   t g d} | j| j| j| j| jfD ]8}tjtdd |  W d    q$1 sR0    Y  q$| j	| j
fD ]}t|  |  sjJ qjd S )Nr=   zCannot convertr   )r   ZtocscZtocsrZtodiaZtolilZtobsrr   r   r   ZtocooZtodokr
   r   r   )r(   fr   r   r   test_1d_toformats   s    &rF   arg)r   r   r   r   r+   )rG   c                 C   sV   t g d}t|}|j| dd ||  |j|jks>J t | |sRJ d S )Nr=   FZrefcheckr
   r   r   resizer	   r   r   rG   denr(   r   r   r   test_1d_resize   s    
rM   )r   r   r   r   c                 C   sV   t g d}t|}|j| dd ||  |j|jks>J t | |sRJ d S )Nr1   FrH   rI   rK   r   r   r   test_1d_to_2d_resize   s    
rN   )r   r   r   r+   c                 C   s^   t g dg dg}t|}|j| dd ||  |j|jksFJ t | |sZJ d S )Nr1   )r   r   r   FrH   rI   rK   r   r   r   test_2d_to_1d_resize   s    
rO   c                  C   sz   t g dg dff} | jdks$J t|  tddgsBJ |   | jdksXJ t|  tddgsvJ d S )N)r   r   r   r   r   r   r   r   r   )r   r7   r
   r   r   r   Zsum_duplicatesr4   r   r   r   test_sum_duplicates   s    rR   c                  C   s   t g dg dff} | jdks$J |  dks4J t|  tddgsRJ |   | jdkshJ |  dksxJ t|  tddgsJ t| jtdgsJ t| j	tdgsJ d S )N)r   r   r   rP   r   r   r   )
r   r7   Zcount_nonzeror
   r   r   r   Zeliminate_zerosr@   rA   rQ   r   r   r   test_eliminate_zeros   s    rS   c                  C   sX   t g d} t g d}| | }t| | }t|t|ksDJ t ||sTJ d S )Nr   r>   r?   r   r   r   r   r   )r
   r   r   typer   den_aden_bexpr(   r   r   r   test_1d_add_dense   s    r[   c                  C   s^   t g d} t g d}tjtdd  t| t|  W d    n1 sP0    Y  d S )NrT   rU   z Cannot convert a 1d sparse arrayr   )r
   r   r   r   r   r   )rX   rY   r   r   r   test_1d_add_sparse   s    r\   c                  C   sV   t g d} t g d}| | }t| | }t |dksBJ t ||sRJ d S )NrT   rU   r   )r
   r   r   ndimr   rW   r   r   r   test_1d_matmul_vector   s    r^   c                  C   sb   t g d} t g dg dgj}| | }t| | }t|t|ksNJ t ||s^J d S )NrT   rU   r   r   r   r   )r
   r   r:   r   rV   r   )rL   otherrZ   r(   r   r   r   test_1d_matmul_multivector   s    ra   c                  C   sJ   t g dg dg} t| }| | j }||j }t | |sFJ d S )NrU   r_   )r
   r   r   r:   r   r   )rL   r5   rZ   r(   r   r   r   test_2d_matmul_multivector  s
    

rb   c                  C   sL   t g d} tjtdd t|   W d    n1 s>0    Y  d S )NrT   z diagonal requires two dimensionsr   )r
   r   r   r   r   r   Zdiagonal)rL   r   r   r   test_1d_diagonal  s    rc   )#numpyr
   r   Zscipy.sparser   r   r!   r#   r'   r)   r.   r/   r0   r6   r9   r;   r<   rD   rF   markZparametrizeintrM   ziptuplerN   rO   rR   rS   r[   r\   r^   ra   rb   rc   r   r   r   r   <module>   s<   

		
			
		