o
    Ö­jë:  ã                   @   sf   d Z ddlZddlmZ ddlZddlmZ ddlm	Z
mZmZmZmZ ddlmZ G dd„ dƒZdS )	z'unit tests for sparse utility functionsé    N)Úassert_equal)Úraises)Ú_sputilsÚ	csr_arrayÚ	bsr_arrayÚ	dia_arrayÚ	coo_array)Úmatrixc                   @   sž  e Z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eeg¡dd„ ƒZdd„ Zdd„ Zdd„ Zej dg ddg‘dd g‘d!d"g‘g d#¢d$g‘g d%g‘d%gd%g‘d&gd&g‘d'd$gd'g‘d$d'gd'g‘d(gd(g‘d(d)gd)g‘g d*¢d+g‘d,gd,g‘d-d.gd/g‘d0d1gd1g‘d2d1gd1g‘d0d2gd1g‘d(d1gd1g‘d(d0gd0g‘d(d2gd2g‘d%d3gd3g‘d3d1gd1g‘d3d2gd1g‘d4d1gd1g‘d%d1gd1g‘d(d3gd0g‘d4d2gd2g‘d4d0gd0g‘d%d0gd0g‘d%d2gd2g‘d4d5gd5g‘d6d7gd7g‘d'gd8 d'g‘d'gd9 d'g‘d$gd8 d$g‘¡d:d;„ ƒZej d<d5d=gd>d$gd6d>gg d?¢d@dAgdBd@gdCdDgg dE¢d$gd8 d5gd8  g	¡dFdG„ ƒZdHdI„ ZdJdK„ ZdLdM„ ZdNS )OÚTestSparseUtilsc                 C   sT   t t d¡tjƒ t t dd¡tjƒ t t dtt¡tjƒ t t dd¡tjƒ d S )NÚintcÚint32Úfloat32ÚboolÚiÚd)	r   ÚsputilsÚupcastÚnpr   Úfloat64ÚcomplexÚfloatÚ
complex128©Úself© r   ú\/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/sparse/tests/test_sputils.pyÚtest_upcast   s   zTestSparseUtils.test_upcastc                 C   s²   t jdgdd�}ttjd td�tƒ ttjd |d�t jƒ ttdd�� t d¡ W d   ƒ n1 s3w   Y  ttd	d�� tjd t j	d� W d   ƒ d S 1 sRw   Y  d S )
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   ÚAr   r   r   Útest_getdtype   s   þüþ"üzTestSparseUtils.test_getdtypec                 C   s¶   t t d¡dƒ t t d¡dƒ t t d¡dƒ t t d¡dƒ t t t d¡¡dƒ t t d¡dƒ t t t dg¡¡dƒ t t dgg¡dƒ t t d	¡dƒ t t d
¡dƒ d S )Nç      @Téüÿÿÿç      @ù      ð?      @é   Ú16F©r   ©r   é   )r   r   Úisscalarliker   r&   r   r   r   r   Útest_isscalarlike%   s   z!TestSparseUtils.test_isscalarlikec                 C   s¸   t t d¡dƒ t t t d¡¡dƒ t t t dg¡¡dƒ ttdd�� t d¡ W d   ƒ n1 s5w   Y  t t d¡dƒ t t d	¡dƒ t t d
¡dƒ t t d¡dƒ d S )Nr.   Tr1   Fz4Inexact indices into sparse matrices are not allowedr#   r-   r/   r0   r3   r4   )r   r   Ú	isintliker   r&   r(   r)   r   r   r   r   Útest_isintlike2   s   þüzTestSparseUtils.test_isintlikec                 C   s*  t t d¡dƒ t t d¡dƒ t t d¡dƒ t t d¡dƒ t t dgdf¡dƒ t tjddd	�dƒ t tjd
dd	�dƒ t tjddd	�dƒ t tjd
dd	�dƒ t tjddd�dƒ t tjdgdfdd�dƒ t tjdddd�dƒ t tjddd�dƒ t tjddd�dƒ t tjddd�dƒ d S )Nr4   T)é   r5   )ç      ø?r5   F©r5   r5   r5   r5   )éÿÿÿÿr5   )Únonneg)r5   r=   )Úallow_nd)r5   r5   éþÿÿÿ)r>   r?   ©r5   )r5   r5   )r   r   Úisshaper   r   r   r   Útest_isshapeA   s"   ÿzTestSparseUtils.test_isshapec                 C   s–   t t d¡dƒ t t d¡dƒ t t dg¡dƒ t t g d¢¡dƒ t t t g d¢¡¡dƒ t t t dgdgdgg¡¡dƒ t t d¡dƒ d S )Nr3   T©r   r5   r1   r   r5   r1   F)r   r   Ú
issequencer   r&   r   r   r   r   Útest_issequenceU   s   "zTestSparseUtils.test_issequencec                 C   s–   t t d¡dƒ t t dgdgg¡dƒ t t t d¡d  ¡dƒ t t ddg¡dƒ t t t d¡¡dƒ t t dggg¡dƒ t t d¡dƒ d S )N)r   Tr   r5   r1   F)r   r   Úismatrixr   Úaranger   r   r   r   Útest_ismatrix_   s   zTestSparseUtils.test_ismatrixc                 C   s2   t t t dg¡¡dƒ t t tdgƒ¡dƒ d S )Nr   T)r   r   Úisdenser   r&   r	   r   r   r   r   Útest_isdensei   s   zTestSparseUtils.test_isdensec                 C   sB   t ttjdƒ t ttjdƒ t ttjdƒ dD ]}t |¡ qd S )N©r   r   r;   r1   )r@   r=   r   r   N)r(   Ú	TypeErrorr   Úvalidateaxisr)   )r   Úaxisr   r   r   Útest_validateaxism   s   ÿz!TestSparseUtils.test_validateaxisÚ	containerc                 C   sr  t  t  t j¡j¡}|d|fƒ}| ¡ }|j t j¡|_|j t j¡|_t	d|d fƒ}| ¡ }|j t j¡|_|j t j¡|_| ¡ }t j
|d gt jd�|_t j
ddgt jd�|_t  
dg¡|_|jj|jjft jt jfksrJ ‚|jj|jjft jt jfks‚J ‚|jj|jjft jt jfks’J ‚|jj|jjft jt jfks¢J ‚|jj|jjft jt jfks²J ‚||||fD ]I}t |t j¡\}	}
|	j|
jft jt jfksÑJ ‚t |t j¡\}	}
|	j|
jft jt jfksèJ ‚t ||jj¡\}	}
|	|ju sùJ ‚|
|ju �sJ ‚q¸ttƒ� t |t j¡ W d   ƒ n	1 �sw   Y  t |t j¡\}	}
|	|ju �s/J ‚|
|ju �s7J ‚d S )Nr   r   r   çš™™™™™@)r   Úint64Úiinfor   ÚmaxÚcopyÚindicesÚastypeÚindptrr   r&   Údatar    r   Úsafely_cast_index_arraysr(   r)   )r   rQ   ÚimaxÚA32ÚB32ÚA64ÚB64ÚC64r+   rW   rY   r   r   r   Ú!test_safely_cast_index_compressedv   s@        
ÿz1TestSparseUtils.test_safely_cast_index_compressedc           	      C   sì  t  t  t j¡j¡}td|fƒ}| ¡ }tdd„ |jD ƒƒ|_td|d fƒ}| ¡ }tdd„ |jD ƒƒ|_| ¡ }t  	|d g¡t  	dg¡f|_t  	dg¡|_
|jd jt jks[J ‚|jd jt jksfJ ‚|jd jt jksqJ ‚|jd jt jks|J ‚|jd jt jks‡J ‚||||fD ]9}t |t j¡}|d jt jks J ‚t |t j¡}|d jt jks±J ‚t ||jd j¡}|d |jd u sÆJ ‚q�ttƒ� t |t j¡ W d   ƒ n1 sÝw   Y  t |t j¡}|d |jd u sôJ ‚d S )Nr   c                 s   ó   � | ]	}|  tj¡V  qd S ©N)rX   r   rS   ©Ú.0Úcor   r   r   Ú	<genexpr>°   ó   € z=TestSparseUtils.test_safely_cast_index_coo.<locals>.<genexpr>c                 s   rc   rd   )rX   r   r   re   r   r   r   rh   ·   ri   r   rR   )r   rS   rT   r   rU   r   rV   ÚtupleÚcoordsr&   rZ   r    r   r[   r(   r)   )	r   r\   r]   r^   r_   r`   ra   r+   rk   r   r   r   Útest_safely_cast_index_coo§   s6   
ÿz*TestSparseUtils.test_safely_cast_index_cooc           	      C   s¤  t  t  t j¡j¡}td|fƒ}| ¡ }|j t j¡|_td|d fƒ}| ¡ }|j t j¡|_| ¡ }t  	|d g¡|_t  	dg¡|_
|jjt jksMJ ‚|jjt jksVJ ‚|jjt jks_J ‚|jjt jkshJ ‚|jjt jksqJ ‚||||fD ]/}t |t j¡}|jt jksˆJ ‚t |t j¡}|jt jks—J ‚t ||jj¡}||ju s¦J ‚qwttƒ� t |t j¡ W d   ƒ n1 s½w   Y  t |t j¡}||ju sÐJ ‚d S )Nr   r5   rR   )r   rS   rT   r   rU   r   rV   ÚoffsetsrX   r&   rZ   r    r   r[   r(   r)   )	r   r\   r]   r^   r_   r`   ra   r+   rm   r   r   r   Útest_safely_cast_index_diaÑ   s6   
ÿz*TestSparseUtils.test_safely_cast_index_diac                 C   sb  t  t  t j¡j¡}|d }t jddd�}t jddd�}tt  tj	||fdd�¡t  d¡ƒ ||d< tt  tj	||fdd�¡t  d¡ƒ ||d< tt  tj	||fdd�¡t  d	¡ƒ t jd
dd�}t jd
dd�}tt  t 	||f¡¡t  d	¡ƒ t jddd�}t jddd�}tt  tj	||f|dd�¡t  d	¡ƒ ||d< tt  tj	||f|d�¡t  d	¡ƒ d S )Nr   éZ   Úuint32r   T)Úcheck_contentsr   r=   rS   éY   é   )Úmaxvalrq   )rt   )
r   rS   rT   r   rU   Úonesr   r    r   Úget_index_dtype)r   r\   Útoo_bigÚa1Úa2r   r   r   Útest_get_index_dtypeû   sJ   þþþþ
ÿü	þz$TestSparseUtils.test_get_index_dtypezinput_shapes,target_shape)©é   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<   rA   r   ©é   r4   )r   r   )r1   r}   ))r|   r‚   ©r:   r|   r   r�   )r:   r   r‚   )r:   r|   r‚   rƒ   )r   r1   ©r1   r   )r1   r1   )r   r   )r   r   rL   )r   r3   ©r1   r5   ©r1   r5   é    éd   c                 C   s   t tj|Ž |ƒ d S rd   )r   r   Úbroadcast_shapes)r   Úinput_shapesÚtarget_shaper   r   r   Útest_broadcast_shapes_successes7  s   &z/TestSparseUtils.test_broadcast_shapes_successesrŠ   ©r}   )r5   r1   )r…   r…   r�   )r5   r:   )r1   r:   )r5   r}   )r   r1   r}   )r5   r1   r1   )r4   r„   r†   )é
   r:   c                 C   s<   t tdd�� tj|Ž  W d   ƒ d S 1 sw   Y  d S )Nzcannot be broadcastr#   )r(   r)   r   r‰   )r   rŠ   r   r   r   Útest_broadcast_shapes_failures`  s   "ÿz.TestSparseUtils.test_broadcast_shapes_failuresc                 C   s   t  dgd¡}t|dƒ d S )N)rŽ   r=   )iÿÿ  iþÿ )rŽ   iÍÌ23)r   Úcheck_shaper   )r   Ú	new_shaper   r   r   Útest_check_shape_overflowo  s   z)TestSparseUtils.test_check_shape_overflowc                 C   sž   g d¢g}t  |¡}tt |¡t jƒsJ ‚tt |¡t jƒs J ‚t |¡}d|d d …d d …f< t||ƒ tj|dd�}d|d d …d d …f< t|g d¢gƒ d S )NrD   é{   F)rV   ©r“   r“   r“   )r   r&   Ú
isinstancer   r	   r   ©r   r"   ÚbÚcr   r   r   Útest_matrixs  s   



zTestSparseUtils.test_matrixc                 C   sr   g d¢g}t  |¡}tt |¡t jƒsJ ‚tt |¡t jƒs J ‚t |¡}d|d d …d d …f< t|g d¢gƒ d S )NrD   r“   r”   )r   r&   r•   r   Úasmatrixr	   r   r–   r   r   r   Útest_asmatrix‚  s   


zTestSparseUtils.test_asmatrixN)Ú__name__Ú
__module__Ú__qualname__r   r,   r7   r9   rC   rF   rI   rK   rP   ÚpytestÚmarkÚparametrizer   r   rb   rl   rn   rz   rŒ   r�   r’   r™   r›   r   r   r   r   r
      sÌ    

	
0**
<ÿþý
üûúù
ø
	÷
ö
õ
ôó
ò
ñ
ð
ï
î
í
ì
ë
ê
é
è
ç
æ
å
ä
ã
â
á
 à!ß"Þ#Ý
%÷
r
   )Ú__doc__Únumpyr   Únumpy.testingr   rŸ   r   r(   Úscipy.sparser   r   r   r   r   r   Úscipy.sparse._sputilsr	   r
   r   r   r   r   Ú<module>   s    