a
    h8                     @   s  d dl Z d dlZd dlmZ d dlZd dlm	  m
Z d dlmZ dZdd eD Zeg dg dg dgZed d	gd
d ggZejg dg dg dg dgedZdd eD Zdd eD Zdd eD Ze jjdeedZe jjdeedZe jjdeedZedd Zedd Zedd Zedd Z edd  Z!ed!d" Z"ed#d$ Z#ed%d& Z$ed'd( Z%ed)d* Z&ed+d, Z'ed-d. Z(ed/d0 Z)ed1d2 Z*ed3d4 Z+ed5d6 Z,ed7d8 Z-ed9d: Z.ed;d< Z/ed=d> Z0ed?d@ Z1edAdB Z2edCdD Z3edEdF Z4dGdH Z5edIdJ Z6ee jdKg dLdMdN Z7ee jdKdOdPgdQdR Z8edSdT Z9edUdV Z:edWdX Z;dYdZ Z<d[d\ Z=e jd]ej	j>d^d_gfej	j?d^d_gfej	j@d`dagfge jdbejAejBgdcdd ZCdedf ZDdgdh ZEdidj ZFdkdl ZGdmdn ZHdodp ZIdqdr ZJdsdt ZKdudv ZLe jdwej	jMej	jNfdxdy ZOdzd{ ZPd|d} ZQd~d ZRdd ZSe jddej	jTfdej	jUfdej	jVfdej	jWfdej	jXfdej	jYfdej	jZffdd Z[dS )    N)VisibleDeprecationWarning)bsrcoocsccsrdiadoklilc                 C   s   g | ]}t tj| d qS )_array)getattrscipysparse).0T r   ]/var/www/html/assistant/venv/lib/python3.9/site-packages/scipy/sparse/tests/test_array_api.py
<listcomp>   s   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   r   dtypec                 C   s   g | ]}|t qS r   Ar   sparrayr   r   r   r   "       c                 C   s   g | ]}|t qS r   Br   r   r   r   r   #   r   c                 C   s   g | ]}|t qS r   Xr   r   r   r   r   $   r   r   )Zidsr   r!   c                 C   sL   t | jddtjrJ d| jddjdks2J | jddjdksHJ d S )Nr   ZaxisExpected array, got matrix)r   r   )r   )
isinstancesumnpmatrixshaper   r   r   r   test_sum1   s
    r)   c                 C   s    t | jddtjrJ dd S )Nr   r"   r#   )r$   meanr&   r'   r   r   r   r   	test_mean9   s    r+   c                 C   s   t | dr&t| jddtjr&J dt | drLt| jddtjrLJ dt | drrt| jddtjrrJ dt | drt| jddtjrJ dd S )Nminr   r"   r#   maxargminargmax)hasattrr$   r,   r&   r'   r-   r.   r/   r   r   r   r   test_min_max?   s     



r1   c                 C   s   t |  tjrJ dd S Nr#   )r$   todenser&   r'   r   r   r   r   test_todenseP   s    r4   c                 C   s  | j jd d dv rd S tt  | dd d f  W d    n1 sH0    Y  tt  | d d df  W d    n1 s0    Y  tt  | dddgf  W d    n1 s0    Y  tt  | ddgdf  W d    n1 s0    Y  t| dg tjjsJ dt| dddggf tjjsDJ dt| ddggdf tjjsjJ dt| d d ddgf tjjsJ dd S )	Nr   )r   r   r   r   r   r   z(Expected sparse array, got sparse matrixz"Expected ndarray, got sparse arrayz)Expected sparse array, got something else)		__class____name__pytestraisesNotImplementedErrorr$   r   r   r   r   r   r   r   test_indexingV   s,    ....  "r:   c                 C   s*   t j| j}t| | t jr&J dd S r2   )r&   randomr(   r$   r'   )r   r!   r   r   r   test_dense_additionq   s    r<   c                 C   s   t | |  tjjsJ dd S r2   r$   r   r   r   r   r   r   r   test_sparse_additionw   s    r>   c                 C   s(   t | |   | d ks$J d S )Nr   )r&   allr3   powerr   r   r   r   test_elementwise_mul|   s    rA   c                 C   s   t t d |   W d    n1 s(0    Y  t t4 tdtjt	d
dd  W d    n1 sv0    Y  td|  |  d ksJ t|  |  |  d ksJ d S )Nr      r   )r7   r8   	TypeError
ValueErrorr&   eyer   r   	csr_arrayarangereshaper?   r3   r   r   r   r   test_elementwise_rmul   s    &BrI   c                 C   s,   t | | j  | | j ks(J d S N)r&   r?   r   r3   dotr   r   r   r   test_matmul   s    rL   c                 C   sp   t | d tjjsJ dt| d  |  d  tjt	dd | d  W d    n1 sb0    Y  d S )Nr   r#   z
zero power)matchr   )
r$   r   r   r   nptZassert_equalr3   r7   r8   r9   r   r   r   r   test_power_operator   s    rO   c                 C   s   t | |  tjsJ d S rJ   )r$   r&   Zndarrayr   r   r   r   test_sparse_divide   s    rP   c                 C   sH   t t* t| |   tjjs&J W d    n1 s:0    Y  d S rJ   )r7   warnsRuntimeWarningr$   r3   r   r   r   r   r   r   r   test_sparse_dense_divide   s    rS   c                 C   s   t | d tjjsJ dd S )Nr   r#   r=   r   r   r   r   test_dense_divide   s    rT   c                 C   s4   t t | j W d    n1 s&0    Y  d S rJ   )r7   rQ   r   r   r   r   r   r   test_no_A_attr   s    rU   c                 C   s4   t t | j W d    n1 s&0    Y  d S rJ   )r7   rQ   r   Hr   r   r   r   test_no_H_attr   s    rW   c                 C   s4   t | dtjjsJ t | dtjjs0J d S )Nr   )r$   Z_getcolr   r   r   Z_getrowr   r   r   r   test_getrow_getcol   s    rX   c                 C   s*   t | }t|g d | g d  d S )Nr   r   r   r   )splaZaslinearoperatorrN   assert_allclose)r   Lr   r   r   test_as_linearoperator   s    
r]   c                 C   sT   | j jd d dkrd S t| }t|tjjs4J t	|
 tj| 
  d S Nr   r   )r5   r6   rZ   invr$   r   r   r   rN   r[   r3   r&   linalgr   Cr   r   r   test_inv   s
    
rc   c                 C   s^   | j jd d dkrd S tj| }t| }t|tjjs@J t	
| t|  d S r^   )r5   r6   r   r   Z
csc_matrixrZ   expmr$   r   rN   r[   r3   )r   ZBmatrb   r   r   r   	test_expm   s    
re   c              	   C   sH   | j jd d dkrd S tt| tddgt| ddg  d S Nr   r   r   r   )	r5   r6   rN   r[   rZ   Zexpm_multiplyr&   arrayrd   r   r   r   r   test_expm_multiply   s    rh   c                 C   s&   t | }t|tj|   d S rJ   )rZ   normrN   r[   r&   r`   r3   )r   rb   r   r   r   	test_norm   s    
rj   c                 C   s(   t | }t|tj|  d d S )Nr   )rZ   Z
onenormestrN   r[   r&   r`   ri   r3   ra   r   r   r   test_onenormest   s    
rk   c                 C   sF   | j jd d dvrd S tt| ddgtj| 	 ddg d S )Nr   )r   r   r   r   )
r5   r6   rN   r[   rZ   Zspsolver&   r`   solver3   r   r   r   r   test_spsolve   s    rm   c                  C   s8   t jg dg dg dg dg} t| g d d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rY   )r   r   rF   rZ   Zspsolve_triangularr    r   r   r   test_spsolve_triangular  s    rr   c                 C   sR   | j jd d dkrd S t| }t|tddgtj	| 
 ddg d S rf   )r5   r6   rZ   Z
factorizedrN   r[   r&   rg   r`   rl   r3   )r   LUr   r   r   test_factorized  s    
rt   solver)
ZbicgZbicgstabZcgZcgsZgmresZlgmresminresZqmrZgcrotmkZtfqmrc                 C   s`   |dkri }nddi}t t|| tddgfi |\}}|dksHJ tj|ddgdd d S )	Nrv   atolgh㈵>r   r   r   g?rw   )r   rZ   r&   rg   rN   r[   )r   ru   kwargsxinfor   r   r   test_solvers  s    &r|   ZlsqrZlsmrc                 C   s0   t t|| g d^}}t| | g d d S )Nr   r   r   )r   rZ   rN   r[   )r   ru   rz   _r   r   r   test_lstsqr+  s    r   c                 C   s.   t j| dd\}}t| | |d |  d S Nr   kr   )rZ   ZeigsrN   r[   r!   evr   r   r   	test_eigs5  s
    
r   c                 C   s8   | | j  } tj| dd\}}t| | |d |  d S r   )r   rZ   ZeigshrN   r[   r   r   r   r   
test_eigsh>  s    

r   c                 C   sZ   t j| dd\}}}tj|  \}}}t|}t|d d }tj||dd d S )Nr   r   gMbP?rx   )	rZ   Zsvdsr&   r`   Zsvdr3   sortrN   r[   )r!   usZvhu2s2Zvh2r   r   r   	test_svdsH  s
    
r   c                  C   sd   t jg dg dg dg dg} t| }tj|t	g dtj
g dtjdddd	 d S 
Nrn   ro   rp   rq   rY   r   g+=gMg<)Zrtolrw   )r   r   	csc_arrayrZ   ZsplurN   r[   rl   r&   rg   asarrayfloat64r!   rs   r   r   r   	test_spluQ  s    
r   c                  C   sd   t jg dg dg dg dg} t| }tj|t	g dtj
g dtjdddd	 d S r   )r   r   r   rZ   ZspilurN   r[   rl   r&   rg   r   r   r   r   r   r   
test_spilu`  s    
r   zcls,indices_attrsindicesindptrrowcolexpected_dtypec           	      C   s  t jtddd}|j|j||j	|ff}| |}|D ]}t
||j|ksDJ qD| |dd}|D ]}t
||j|ksnJ qnt| t jjjr| }|j|j||j|f}| |}|D ]}t
||j|ksJ q| |dd}|D ]}t
||j|ksJ qd S )N	   r   )r   r   )r(   )r   r   	coo_arrayr&   rG   rH   datar   Zastyper   r   r   
issubclassZ_compressedZ
_cs_matrixZtocsrr   r   )	clsZindices_attrsr   Zinput_arrayZ	coo_tupleresultattrZinput_array_csrZ	csr_tupler   r   r   test_index_dtype_compressedo  s0    



r   c                  C   s&   t jg d} t| t jjr"J d S )N)r   r   r   )r   r   Zdiagsr$   r   mr   r   r   test_default_is_matrix_diags  s    r   c                  C   s"   t jd} t| t jjrJ d S Nr   )r   r   rE   r$   r   r   r   r   r   test_default_is_matrix_eye  s    r   c                  C   s,   t jg dddd} t| t jjr(J d S )Nr}   r   r   )r   r   Zspdiagsr$   r   r   r   r   r   test_default_is_matrix_spdiags  s    r   c                  C   s"   t jd} t| t jjrJ d S r   )r   r   identityr$   r   r   r   r   r   test_default_is_matrix_identity  s    r   c                  C   sH   t jtddgddggtddgddgg} t| t jjrDJ d S )Nr   r   r   r   r   r   Zkronr&   rg   r$   r   r   r   r   r   !test_default_is_matrix_kron_dense  s    (r   c                  C   sH   t jtddgddggtddgddgg} t| t jjrDJ d S )Nr   r   r   r   r   r   r   r   r   r   "test_default_is_matrix_kron_sparse  s    (r   c                  C   sH   t jtddgddggtddgddgg} t| t jjrDJ d S )Nr   r   )r   r   Zkronsumr&   rg   r$   r   r   r   r   r   test_default_is_matrix_kronsum  s    (r   c                  C   s$   t jdd} t| t jjr J d S r   )r   r   r;   r$   r   r   r   r   r   test_default_is_matrix_random  s    r   c                  C   s$   t jdd} t| t jjr J d S r   )r   r   Zrandr$   r   r   r   r   r   test_default_is_matrix_rand  s    r   fnc                 C   sL   t jtd}t jddgddgg}| ||g}t|t jjrHJ dS )zbSame idea as `test_default_construction_fn_matrices`, but for the
    stacking creation functions.r   r   r   N)r   r   
coo_matrixr&   rE   r$   r   )r   r   r   r   r   r   r   test_default_is_matrix_stacks  s    r   c                  C   s   t jtd} t jdgdgg}t jdgg}t j| ||f}t|t jjrZJ t j| dgd|gg}t|t jjrJ dS )z]Same idea as `test_default_construction_fn_matrices`, but for the block
    creation functionr   r   r   N)	r   r   r   r&   rE   Z
block_diagr$   r   Zbmat)r   r   rb   r   r   r   r   ,test_blocks_default_construction_fn_matrices  s    r   c               	   C   sz   t D ]p} ttj|  d}|ddgg}|j| ks6J |j| ksDJ tt d|_W d    q1 sj0    Y  qd S )Nr
   r   r   Zqqq)	sparray_typesr   r   r   format_formatr7   r8   AttributeError)fmtZarr_clsMr   r   r   test_format_property  s    r   c                  C   s   t jd} t j| }t| t jjr*J t|t jjs<J t j|sLJ t j| s\J t j| rpJ t j|  rJ d S r   )r   r   rE   rF   r$   r   issparser3   r   ar   r   r   test_issparse  s    r   c                  C   s   t jd} t j| }t| t jjr*J t|t jjs<J t j|rLJ t j| s\J t j| rpJ t j|  rJ d S r   )r   r   rE   rF   r$   r   Z
isspmatrixr3   r   r   r   r   test_isspmatrix
  s    r   )r   r   r   r   r   r   r   r   r	   c                 C   s   t jjd| d}t j|| }t|t jjr4J t|t jjsFJ ||rRJ ||s^J || rnJ || r~J d S )Nr   )r   )r   r   rE   rF   Zasformatr$   r   r3   )r   r   r   r   r   r   r   test_isspmatrix_format  s    r   )\r7   numpyr&   Znumpy.testingZtestingrN   Zscipy.sparser   Zscipy.sparse.linalgr   r`   rZ   Zscipy._lib._utilr   r   Zsparray_classesrg   r   r   floatr!   ZsparraysZsquare_sparraysZeig_sparraysmarkZparametrizeZparametrize_sparraysZparametrize_square_sparraysZparametrize_eig_sparraysr)   r+   r1   r4   r:   r<   r>   rA   rI   rL   rO   rP   rS   rT   rU   rW   rX   r]   rc   re   rh   rj   rk   rm   rr   rt   r|   r   r   r   r   r   r   rF   r   r   Zint64Zint32r   r   r   r   r   r   r   r   r   r   ZhstackZvstackr   r   r   r   r   Zisspmatrix_bsrZisspmatrix_cooZisspmatrix_cscZisspmatrix_csrZisspmatrix_diaZisspmatrix_dokZisspmatrix_lilr   r   r   r   r   <module>   s.  






























	
#
	







