o
    Ö­j�<  ã                	   @   s  d Z ddlZddlZddlmZmZ ddlmZm	Z	m
Z
mZmZmZmZ ddlmZmZ ddlmZ ej ¡ Ze e¡ eeegZejejejgZejdd„ ƒZejd	d
„ ƒZej  !dee	e
eg¡dd„ ƒZ"ej  !deeee	e
eg¡dd„ ƒZ#ej  !de¡G dd„ dƒƒZ$dS )z*Test of 1D aspects of sparse array classesé    N)Úassert_equalÚassert_allclose)Ú	bsr_arrayÚ	csc_arrayÚ	dia_arrayÚ	lil_arrayÚ	coo_arrayÚ	csr_arrayÚ	dok_array)Úsupported_dtypesÚmatrix)ÚComplexWarningc                   C   s   t  g d¢d¡S )N)é   r   é   r   Úd)ÚnpÚarray© r   r   ú]/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/sparse/tests/test_common1d.pyÚdat1d   s   r   c                    s$   ‡ fdd„t D ƒ‰‡fdd„tD ƒS )Nc                    s   i | ]}|ˆ   |¡“qS r   )Úastype)Ú.0Údtype©r   r   r   Ú
<dictcomp>   s    z%datsp_math_dtypes.<locals>.<dictcomp>c                    s$   i | ]‰ ˆ ‡ fd d„ˆ  ¡ D ƒ“qS )c                    s   g | ]\}}||ˆ |ƒf‘qS r   r   )r   r   Údat©Ú	spcreatorr   r   Ú
<listcomp>!   s    z0datsp_math_dtypes.<locals>.<dictcomp>.<listcomp>)Úitems)r   )Ú
dat_dtypesr   r   r       s    ÿÿ)Úmath_dtypesÚ
spcreatorsr   r   )r   r    r   Údatsp_math_dtypes   s   
þr#   r   c                 C   s@   t jtdd�� | g d¢ƒ W d   ƒ d S 1 sw   Y  d S )Nzarrays don't support 1D input©Úmatch©r   r   é   r   ©ÚpytestÚraisesÚ
ValueErrorr   r   r   r   Útest_no_1d_support_in_init(   s   "ÿr,   c                 C   sB   t jtdd�� | t d¡ƒ W d   ƒ d S 1 sw   Y  d S )Nzarrays don't.*support 3Dr$   )r   r'   é   )r)   r*   r+   r   Úonesr   r   r   r   Útest_no_nd_support_in_init0   s   "ÿr/   c                   @   s,  e Zd 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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jed$d%„ ƒƒZejjed&d'„ ƒƒZejjed(d)„ ƒƒZd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Z d4d5„ Z!d6d7„ Z"d8d9„ Z#d:d;„ Z$d<d=„ Z%d>d?„ Z&d@S )AÚTestCommon1Dz5test common functionality shared by 1D sparse formatsc                 C   s>   t |dƒ ¡ t d¡ƒ t |dƒjdƒ t |dƒ ¡ dƒ d S )N©r   r   r   )r   Útoarrayr   ÚzerosÚnnzÚcount_nonzero©Úselfr   r   r   r   Útest_create_empty=   s   zTestCommon1D.test_create_emptyc                 C   s<   t jtdd�� |dƒ W d   ƒ d S 1 sw   Y  d S )Nzelements cannot be negativer$   )éýÿÿÿr(   r6   r   r   r   Útest_invalid_shapesB   s   
"ÿz TestCommon1D.test_invalid_shapesc                 C   ó   t ||ƒƒ d S ©N)Úrepr©r7   r   r   r   r   r   Ú	test_reprF   ó   zTestCommon1D.test_reprc                 C   r;   r<   )Ústrr>   r   r   r   Útest_strI   r@   zTestCommon1D.test_strc                 C   s*   t  g d¢d¡}t| ||ƒ  ¡ ƒ d S )N)éÿÿÿÿr   é   r   éûÿÿÿr   r   éüÿÿÿr   r   r   r   r   ©r   r   r   r2   ©r7   r   ÚAr   r   r   Útest_negL   s   zTestCommon1D.test_negc                 C   s   |g d¢ƒ}|j dksJ ‚d S )Nr&   r   )ÚndimrH   r   r   r   Útest_1d_supported_initP   s   z#TestCommon1D.test_1d_supported_initc                 C   s�   |g d¢ƒ}|  dd¡}g d¢g}t| ¡ |ƒ ||ƒ}|  d¡}t| ¡ |d ƒ |  d¡}|j|jks7J ‚|j  d¡}t| ¡ |d ƒ d S )N©r   r   é   r   r   r   r   r9   r   r   r   é   r   é   r   ©rP   )Úreshaper   r2   ÚshapeÚT)r7   r   ÚxÚyÚdesiredÚy2r   r   r   Ú$test_reshape_1d_tofrom_row_or_columnT   s   


z1TestCommon1D.test_reshape_1d_tofrom_row_or_columnc                 C   sv   |g d¢ƒ}|  d¡}g d¢g d¢g d¢g d¢g}t| ¡ |ƒ |  d¡}||u s+J ‚|  d¡}t| ¡ | ¡ ƒ d S )	NrM   )r-   r   )r   r   rN   ©r   r   r   )r   r9   r   )r   r   rO   rQ   rP   )rR   r   r2   )r7   r   rU   rV   rW   r   r   r   Útest_reshapef   s   


zTestCommon1D.test_reshapec           	   	   C   s  t j d¡ t  g d¢¡}t j d¡}t  g ¡}t  d¡}||||g}|D ]U}||ƒ}t jdd��A t  | ¡ ¡s;J ‚t	| ¡ | ¡ ƒ t	|jd d�|jd d�ƒ t	|jdd�|jdd�ƒ t	|jd	d�|jd	d�ƒ W d   ƒ n1 suw   Y  q%|jdt  d
¡d� d S )NiÒ  )	r   r   r'   r   rF   rO   éúÿÿÿrN   é	   rO   )é(   Úignore)Úover©Úaxisr   rC   r   ©rb   Úout)
r   ÚrandomÚseedr   Úrandr3   ÚerrstateÚisscalarÚsumr   )	r7   r   Údat_1Údat_2Údat_3Údat_4Úarraysr   Údatspr   r   r   Útest_sumr   s"   

û€zTestCommon1D.test_sumc                 C   s  t  d¡}t  g d¢¡}||ƒ}tjtdd�� |jdd� W d   ƒ n1 s(w   Y  tjtdd�� |jdd� W d   ƒ n1 sEw   Y  tjtd	d�� |jd
d� W d   ƒ n1 sbw   Y  tjtdd�� |jd|d� W d   ƒ d S 1 s�w   Y  d S )Nr1   ©r   r   r'   zaxis must be None, -1 or 0r$   r   ra   úTuples are not accepted©r   r   úaxis must be an integerç      ø?ú"output parameter.*wrong.*dimensionr   rc   )r   r3   r   r)   r*   r+   rj   Ú	TypeError©r7   r   rd   r   rp   r   r   r   Útest_sum_invalid_params†   s   
ÿÿÿ"ÿz$TestCommon1D.test_sum_invalid_paramsc                 C   s8   t  g d¢¡}||ƒ}t  |¡}t  |¡}t||ƒ d S ©Nrr   )r   r   rj   r   )r7   r   r   rp   Údat_sumÚ	datsp_sumr   r   r   Útest_numpy_sum”   s
   

zTestCommon1D.test_numpy_sumc                 C   s  t  g d¢¡}||ƒ}t| ¡ | ¡ ƒ t  |jd d�¡sJ ‚t|jd d�|jd d�ƒ t|jdd�|jdd�ƒ t|jdd�|jdd�ƒ tjtdd�� |jdd� W d   ƒ n1 s^w   Y  tjtdd�� |jdd� W d   ƒ d S 1 s|w   Y  d S )	Nrr   ra   r   rC   rb   r$   r   éþÿÿÿ)r   r   r   Úmeanri   r)   r*   r+   )r7   r   r   rp   r   r   r   Ú	test_mean�   s   ÿ"ÿzTestCommon1D.test_meanc                 C   s$  t  t  d¡¡}t  g d¢g d¢g d¢g¡}||ƒ}tjtdd�� |jdd� W d   ƒ n1 s2w   Y  tjtd	d�� |jd
d� W d   ƒ n1 sOw   Y  tjtdd�� |jdd� W d   ƒ n1 slw   Y  tjtdd�� |jd|d� W d   ƒ d S 1 s‹w   Y  d S )N)r   r   rr   )r   rF   rO   )r\   rN   r]   zaxis out of ranger$   r   ra   rs   rt   ru   rv   rw   r   rc   )	r   Úasarrayr3   r   r)   r*   r+   r€   rx   ry   r   r   r   Útest_mean_invalid_params¬   s   ÿÿÿ"ÿz%TestCommon1D.test_mean_invalid_paramsc                 C   óT   t  g d¢¡}||ƒ}tD ]}|j|d�}|j|d�}t||ƒ t|j|jƒ qd S ©Nrr   ©r   )r   r   r   rj   r   r   r   )r7   r   r   rp   r   r|   r}   r   r   r   Útest_sum_dtypeº   ó   
ûzTestCommon1D.test_sum_dtypec                 C   r„   r…   )r   r   r   r€   r   r   r   )r7   r   r   rp   r   Údat_meanÚ
datsp_meanr   r   r   Útest_mean_dtypeÅ   rˆ   zTestCommon1D.test_mean_dtypec                 C   sþ   t  g d¢¡}||ƒ}t  d¡}t  d¡}|j|d� |j|d� t||ƒ |jd|d� |jd|d� t||ƒ tjtdd�� |jt  dg¡d� W d   ƒ n1 sUw   Y  tjtdd�� |jt  dgg¡d� W d   ƒ d S 1 sxw   Y  d S )Nrr   r   ©rd   rc   zoutput parameter.*dimensionr$   )r   r   r€   r   r)   r*   r+   )r7   r   r   rp   Údat_outÚ	datsp_outr   r   r   Útest_mean_outÐ   s    



ÿ"ÿzTestCommon1D.test_mean_outc                 C   sF   t  g d¢¡}||ƒ}t  |¡}t  |¡}t||ƒ t|j|jƒ d S r{   )r   r   r€   r   r   r   )r7   r   r   rp   r‰   rŠ   r   r   r   Útest_numpy_meanä   s   


zTestCommon1D.test_numpy_meanc                 C   s`   t  g d¢¡}t||ƒ ¡ |ƒ t  g d¢¡}t||ƒ ¡ |ƒ t||dd� ¡ | d¡ƒ d S ©N)r'   r   r-   ©y      ð?      @r   rC   Úint16r†   )r   r   r   r2   r   rH   r   r   r   Útest_from_arrayî   s
    zTestCommon1D.test_from_arrayc                 C   s`   g d¢}t ||ƒ ¡ |ƒ g d¢}t ||ƒ ¡ t |¡ƒ t ||dd� ¡ t |¡ d¡ƒ d S r‘   )r   r2   r   r   r   rH   r   r   r   Útest_from_listø   s   ÿzTestCommon1D.test_from_listc                 C   sÀ   t  g d¢¡}t|ƒ}t||ƒ ¡ |ƒ ||ƒ}t||ƒ ¡ |ƒ t  g d¢¡}t|ƒ}t||ƒ ¡ |ƒ t||dd� ¡ | d¡ƒ ||ƒ}t||ƒ ¡ |ƒ t||dd� ¡ | d¡ƒ d S )N)r   r   r   r’   r“   r†   )r   r   r   r   r2   r   ©r7   r   ÚDÚSr   r   r   Útest_from_sparse  s    zTestCommon1D.test_from_sparsec                 C   s`  ||ƒ}|  ¡ }t||ƒ |jj|jjksJ ‚|j dd�}t||ƒ |jjs(J ‚|jjs.J ‚|j dd�}t||ƒ |jjs?J ‚|jjsEJ ‚tj|j|jd�}|j |d� t||ƒ d|d< |j |d� t||ƒ t 	g d¢¡}t 
||¡}t 
||  ¡ ¡}t||ƒ t 	g d¢¡}	t 
||	¡}t 
|  ¡ |	¡}t||ƒ ||td�}
| t¡}t|
  ¡ |ƒ d S )	NÚC)ÚorderÚFr†   rŒ   ç      ð?.)r�   ç       @ç      @g      @)r2   r   ÚflagsÚc_contiguousÚf_contiguousr   r3   rS   r   r   ÚdotÚboolr   )r7   r   r   rp   Úchkrd   ÚaÚdense_dot_denseÚcheckÚbÚspboolÚarrboolr   r   r   Útest_toarray  s:   







zTestCommon1D.test_toarrayc           	      C   sl   || D ]/\}}}|  ¡ }d|d< |}|| }t|| ¡ | ƒ ||dd…  }t|| ¡ |d  ƒ qd S )Nrž   r   r   ©Úcopyr   r2   ©	r7   r   r#   r   r   rp   r¦   r©   Úcr   r   r   Útest_addC  s   özTestCommon1D.test_addc           	      C   sF   || D ]\}}}|  ¡ }d|d< |}|| }t||| ¡  ƒ qd S )Nrž   r   r­   r¯   r   r   r   Ú	test_raddP  s   ûzTestCommon1D.test_raddc                 C   sò   || D ]r\}}}|t  d¡krqt|| g d¢ƒ t|| g d¢ƒ td|  ¡ | ƒ |g d¢dd�}t|| || ¡  ƒ t|| | ¡ | ƒ t| ¡ | | ¡ | ƒ t|| ¡  || ¡  ƒ t|d d… | |d d… | ƒ qd S )Nr¤   )r   r   r   r   r   )r   rF   r   r'   r   r†   r   )r   r   r   r2   )r7   r   r#   r   r   rp   rI   r   r   r   Ú	test_rsubX  s   $ðzTestCommon1D.test_rsubc                 C   s"  t  g d¢g d¢g d¢g¡}t  g d¢¡}||ƒ}||ƒ}t||  ¡ || ƒ t|| || ƒ t|| || ƒ t||  ¡ || ƒ t|| || ƒ t|| || ƒ t|| || ƒ t|| || ƒ t|| || ƒ t||  ¡ || ƒ t|| || ƒ t|| || ƒ d S )N©r'   r   rŸ   rZ   rr   ©r   r   r   rG   )r7   r   rI   ÚvÚAspÚvspr   r   r   Útest_matmul_basick  s    zTestCommon1D.test_matmul_basicc              	   C   sŒ  t  g d¢¡}||ƒ}t  g d¢g¡j}t|| | ¡ | ƒ |t  g d¢¡ jdks-J ‚|t  g d¢¡ dks:J ‚|t  g d¢¡ jdksHJ ‚|t  dgdgdgg¡ jdksZJ ‚t|tg d¢gƒj t jƒsjJ ‚t  ddg¡t  g d	¢¡t  dgdgg¡g}|D ]}t	j
td
d�� ||  W d   ƒ n1 sšw   Y  q‚t  | ¡ g d¢¡}t|t  g d¢¡ |ƒ t|dgdgdgg |jƒ d S )Nr´   )r   r'   r   r   é   r   r'   r   )r   ©r   r'   r   r-   zdimension mismatchr$   )r   r   rT   r   r2   rS   Ú
isinstancer   Úndarrayr)   r*   r+   r£   )r7   r   rI   r·   ÚcolÚbad_vecsrU   Ú
dot_resultr   r   r   Útest_matvec€  s$   $ ,
ÿ€ zTestCommon1D.test_matvecc                 C   sT   ||ƒ}t g d¢| t g d¢| ¡ ¡ƒ t g d¢g¡}t || || ¡  ƒ d S )Nr»   )r   r   r£   r2   r   )r7   r   r   ÚMÚrowr   r   r   Útest_rmatvec›  s   "zTestCommon1D.test_rmatvecc                 C   sN   |t  g ¡fD ]}||ƒ}t| ¡ |ƒ t| ¡  ¡ |ƒ t|j|jƒ qd S r<   )r   r   r   r2   Ú	transposer   )r7   r   r   rI   ÚBr   r   r   Útest_transpose¡  s   üzTestCommon1D.test_transposec                 C   sD   || D ]\}}}|| }t ||| ƒ || }t ||| ƒ qd S r<   )r   )r7   r   r#   r   r   rp   Úsum1Úsum2r   r   r   Útest_add_dense_to_sparse¨  s   üz%TestCommon1D.test_add_dense_to_sparsec                 C   sB   t  d¡}||ƒ}|jdvrt||ƒD ]\}}t||ƒ qd S d S )NrO   )ÚcooÚdiaÚbsr)r   ÚarangeÚformatÚzipr   )r7   r   rÆ   rI   rU   rV   r   r   r   Útest_iterator¯  s   

þzTestCommon1D.test_iteratorc                 C   sZ   t  g d¢¡}||ƒ}| d¡d u sJ ‚t| ¡ g d¢ƒ | d¡ t| ¡ g d¢ƒ d S )N)r   r   r   r-   r1   rµ   )rO   )r   r   r   r   r   )r   r   Úresizer   r2   r–   r   r   r   Útest_resize¸  s   
zTestCommon1D.test_resizeN)'Ú__name__Ú
__module__Ú__qualname__Ú__doc__r8   r:   r?   rB   rJ   rL   rY   r[   rq   rz   r~   r�   rƒ   r‡   r‹   r�   r�   r)   ÚmarkÚthread_unsafeÚsup_complexr”   r•   r™   r¬   r±   r²   r³   r¹   rÁ   rÄ   rÇ   rÊ   rÑ   rÓ   r   r   r   r   r0   9   sN    	

.	r0   )%r×   r)   Únumpyr   Únumpy.testingr   r   Úscipy.sparser   r   r   r   r   r	   r
   Úscipy.sparse._sputilsr   r   Úscipy._lib._utilr   ÚtestingÚsuppress_warningsrÚ   Úfilterr"   Úint64Úfloat64Ú
complex128r!   Úfixturer   r#   rØ   Úparametrizer,   r/   r0   r   r   r   r   Ú<module>   s.    $






ÿ
