o
    Ö­j!–  ã                   @   sÚ   d Z ddlZddlmZ ddlmZmZmZmZ ddl	Z	ddl	m
Z ddlmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddl m!Z" g d	¢Z#ddd„Z$ddd„Z%G dd„ dƒZ&dd„ Z'dS )z)test sparse matrix construction functionsé    N)Úarray)Úassert_equalÚassert_Úassert_array_equalÚassert_array_almost_equal_nulp)Úraises)Úcheck_free_memory)Ú
csr_matrixÚ
coo_matrixÚ	csr_arrayÚ	coo_arrayÚ	csc_arrayÚ	bsr_arrayÚ	dia_arrayÚ	dok_arrayÚ	lil_arrayÚ
csc_matrixÚ
bsr_matrixÚ
dia_matrixÚ
lil_matrixÚsparrayÚspmatrixÚ
_construct)Úrand)ÚcsrÚcscÚcooÚbsrÚdiaÚlilÚdokç{®Gáz„?r   c              	   C   s(   t j |¡}|j}t | ||||||¡S ©N)ÚnpÚrandomÚdefault_rngÚstandard_normalÚ	construct)ÚmÚnÚdensityÚformatÚdtypeÚrngÚdata_rvs© r/   ú^/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/sparse/tests/test_construct.pyÚ_sprandn   s   r1   c                 C   s,   t j |¡}|j}tj| |f|||||d�S )N)r*   r+   r,   r-   Údata_sampler)r#   r$   r%   r&   r'   Úrandom_array)r(   r)   r*   r+   r,   r-   r2   r/   r/   r0   Ú_sprandn_array!   s
   ÿr4   c                
   @   sj  e Zd Zej deeee	e
eeg¡dd„ ƒZej deeeeeeg¡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ejej g¡dd„ ƒZ!ej dej"ej g¡dd„ ƒZ#ej dej"ej g¡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/d0„ Z,d1d2„ Z-d3d4„ Z.ej d,eeg¡d5d6„ ƒZ/d7d8„ Z0ej d9ej1ej2f¡d:d;„ ƒZ3d<d=„ Z4d>d?„ Z5ejj6ejj7ej 8d@¡dAdB„ ƒƒƒZ9dCdD„ Z:dEdF„ Z;dGdH„ Z<dIdJ„ Z=dKdL„ Z>dMdN„ Z?dOdP„ Z@ej dQdRdSeAjB CdS¡g¡dTdU„ ƒZDej dQdRdSeAjB CdS¡g¡dVdW„ ƒZEdXdY„ ZFdZd[„ ZGd\d]„ ZHd^d_„ ZIdRS )`ÚTestConstructUtilsÚclsc                 C   s<   t jtdd�� |dƒ W d   ƒ d S 1 sw   Y  d S )NzEscipy sparse array classes do not support instantiation from a scalar©Úmatchr   )Úpytestr   Ú
ValueError©Úselfr6   r/   r/   r0   Ú test_singleton_array_constructor+   s   ý
"ùz3TestConstructUtils.test_singleton_array_constructorc                 C   s   |dƒj dks	J ‚dS )a1  
        This test is for backwards compatibility post scipy 1.13.
        The behavior observed here is what is to be expected
        with the older matrix classes. This test comes with the
        exception of dok_matrix, which was not working pre scipy1.12
        (unlike the rest of these).
        r   ©é   r?   N©Úshaper;   r/   r/   r0   Ú!test_singleton_matrix_constructor9   s   z4TestConstructUtils.test_singleton_matrix_constructorc           
      C   s’  t g d¢gƒ}t g d¢g d¢gƒ}t g d¢g d¢g d¢gƒ}g }| |ddddggf¡ | |dgdddggf¡ | |dgdddgdggf¡ | |dgddddggf¡ | |dgddddggf¡ | |dgddddggf¡ | |dgddddgddggf¡ | |dgddddgddggf¡ | |dgddddgddggf¡ | |dgdd	g d
¢g d¢g d¢gf¡ | |dgdd	g d¢g d¢g d¢gf¡ | |dgddg d¢g d¢g d¢gf¡ | |ddgddg d¢g d¢g d¢gf¡ | |ddgdd	g d¢g d¢g d¢gf¡ | |ddgddg d¢g d¢g d¢g d¢g d¢g d¢gf¡ | |g d ¢ddg d!¢g d"¢g d#¢g d$¢g d%¢g d¢gf¡ | |g d&¢ddg d'¢g d(¢g d)¢g d*¢g d+¢g d,¢gf¡ | |g d-¢t|d ƒt|d ƒg d.¢g d/¢g d0¢g d1¢g d¢gf¡ |D ]<\}}}}}	t|d ƒ|k�rª||k�rªtt ||¡ ¡ |	ƒ tt ||||¡ ¡ |	ƒ tt ||||f¡ ¡ |	ƒ �qŠd S )2N©r?   é   é   é   é   ©é   é   é   é	   é
   ©é   é   é   é   é   r   r?   rD   éÿÿÿÿrE   rF   ©r?   r   r   r   ©r   rD   r   r   ©r   r   rE   r   )r   r   r   rF   rG   ©r   r   rE   r   r   )r   r   r   rF   r   )r   r   r   r   rG   )r?   r   rK   ©r   rD   r   ©r   r   rE   ©rI   r   r   r   ©r?   rJ   r   r   ©r   rD   rK   r   éýÿÿÿrI   )r   r   rE   r   r   r   )r   r   r   rF   r   r   )r   r   r   r   rG   r   )rI   r   r   r   r   r   ©r   rJ   r   r   r   r   ©r   r   rK   r   r   r   ©rT   r   r?   )rI   rP   r   r   r   r   )r?   rJ   rQ   r   r   r   )r   rD   rK   rR   r   r   )r   r   rE   rL   rS   r   )r   r   r   rF   rM   r   ©éüÿÿÿrD   rT   )r   r   rK   r   r   )rO   r   r   rL   r   )r   rP   r   r   rM   ©r   r   rQ   r   r   ©r?   r   r   rR   r   ©r   rD   r   r   rS   )rT   r?   rD   )r   rJ   rQ   r   r   )r?   r   rK   rR   r   )r   rD   r   rL   rS   )r   r   rE   r   rM   )r   ÚappendÚlenr   r'   ÚspdiagsÚtoarray)
r<   Údiags1Údiags2Údiags3ÚcasesÚdÚor(   r)   Úresultr/   r/   r0   Útest_spdiagsG   st   ÿþ"""(((**ûûû üÿ üzTestConstructUtils.test_spdiagsc           
      C   s6  t g d¢ƒ}t g d¢ƒ}t g d¢ƒ}g }| |d d… dddggf¡ | |d d… gdgddggf¡ | |d d… gdgddgdggf¡ | |d d… gdgdddggf¡ | |d d… gdgdddggf¡ | |d d	… gdgd
ddgdd	ggf¡ | |d d… gdgd
ddgddggf¡ | |d d… gdgdg d¢g d¢g d¢gf¡ | |d d… gdgdg d¢g d¢g d¢gf¡ | |d d… gdgdg d¢g d¢g d¢gf¡ | |d d	… gdgdg d¢g d¢g d¢gf¡ | |d d… gdgdg d¢g d¢g d¢gf¡ | |d d… gdgdg d¢g d¢g d¢gf¡ | |d d… gd	gdg d¢g d¢g d¢gf¡ | |d d	… gdgdg d ¢g d!¢g d¢gf¡ | |d d… gd"gdg d#¢g d¢g d¢gf¡ | |d d… gd$gd%g d&¢g d&¢g d&¢g d&¢g d'¢gf¡ | |d d	… gd(gd%g d&¢g d&¢g d&¢g d'¢g d)¢gf¡ | |d d… gdgd%g d&¢g d&¢g d'¢g d)¢g d*¢gf¡ | |d d… gdgd%g d&¢g d'¢g d)¢g d*¢g d&¢gf¡ | |d d… gdgd%g d'¢g d)¢g d*¢g d&¢g d&¢gf¡ | |d d	… gdgd%g d+¢g d,¢g d&¢g d&¢g d&¢gf¡ | |d d… gd	gd%g d-¢g d&¢g d&¢g d&¢g d&¢gf¡ | |d d… |d d… gdd	gd.g d/¢g d)¢g d*¢gf¡ | |d d	… |d d… gddgdg d0¢g d1¢g d2¢gf¡ | |d d"… |d d… gd	d(gd3g d4¢g d5¢g d6¢g d7¢g d8¢g d9¢gf¡ | |d d"… ||d d"… gg d:¢d;g d<¢g d=¢g d>¢g d?¢g d@¢gf¡ | |d d	… |d d… |gg dA¢dBg dC¢g dD¢g dE¢g dF¢g dG¢g dH¢gf¡ | |gdgddggf¡ | |d d… |gdd	gd.g d/¢g d)¢g d*¢gf¡ | t  g dI¢g dJ¢g¡ddgd.g d'¢g dK¢g dL¢gf¡ | g dM¢g dN¢d.g dO¢g dM¢g dP¢gf¡ |D ]M\}}}}|›dQ|›dQ|›dQ|›�}	ttj|||dR� ¡ ||	dS� |d |d k�r—t|d dTƒ�r—t|d ƒt	|ƒk�r—ttj||dU� ¡ ||	dS� �qKd S )VNrC   rH   rN   r?   r   r>   ©rD   r?   ©r?   rD   rD   ©rD   rD   rT   rE   )rE   rF   rU   rV   rW   )r   r?   r   r   )r   r   rD   r   )r   r   r   rE   éþÿÿÿ©rE   rG   )r   r   r   r   r   )r?   r   r   r   r   )r   rD   r   r   r   rX   )r   r?   r   r   r   )r   r   rD   r   r   )r   r   r   rE   r   )r   r   r?   r   r   )r   r   r   rD   r   )r   r   r   r   rE   )r   r   r   r?   r   )r   r   r   r   rD   rF   )r   r   r   r   r?   rc   )rG   rE   ©r   r   r   ©r?   r   r   r^   rY   rZ   ©r   r?   r   )r   r   rD   ©r   r   r?   ©rE   rE   )r?   r   rI   r[   r\   r]   )rI   rI   )r   r   r?   r   r   r   )r   r   r   rD   r   r   )r   r   r   r   rE   r   )rI   r   r   r   r   rF   r_   r`   ra   ©rG   rG   )rI   rO   r   r   r   )r?   rJ   rP   r   r   )r   rD   rK   rQ   r   )r   r   rE   rL   rR   )r   r   r   rF   rM   rb   ©rI   rG   )r   r   rI   r   r   )rO   r   r   rJ   r   )r   rP   r   r   rK   rd   re   rf   ©r?   rD   rE   )rF   rG   rI   )rF   rD   r   )r   rG   rE   )r?   rv   r?   )r?   r   rT   )rv   r?   r   )r   r?   rv   ú ©ÚoffsetsrA   )Úerr_msgÚ__len__©r‚   )
r   rg   r#   r   r'   Údiagsrj   Úhasattrrh   Úmax)
r<   ÚaÚbÚcrn   ro   rp   rA   rq   rƒ   r/   r/   r0   Ú
test_diags   s–   "&$$**000000000<<<<<<<<<(û*ü*û4üþÿÿÿ€÷zTestConstructUtils.test_diagsc                 C   s*   t g d¢ƒ}tt |¡ ¡ t |¡ƒ d S )NrC   )r   r   r'   r†   rj   r#   Údiag©r<   r‰   r/   r/   r0   Útest_diags_defaultÍ   s   z%TestConstructUtils.test_diags_defaultc                 C   s&   t g d¢g d¢gƒ}tttj|ƒ d S )NrC   )rD   rE   rF   rG   rI   )r   Úassert_raisesr:   r'   r†   rŽ   r/   r/   r0   Útest_diags_default_badÑ   s   z)TestConstructUtils.test_diags_default_badc                 C   s:  t g d¢ƒ}t g d¢ƒ}t g d¢ƒ}g }| |d d… gddf¡ | |d d… ||d d… gg d¢d	f¡ | |d d
… ||d d… gg d¢df¡ | |d d
… ||d d… gg d¢d f¡ | g g d¢d f¡ | dgdgdf¡ | |gdd f¡ |D ]\}}}tttj|||d� qtttjd ggdgd� d S )NrC   rH   rN   r   r>   rF   rE   ra   r}   rD   rb   r~   r?   éûÿÿÿ©rF   rF   r�   r…   )r   rg   r�   r:   r'   r†   Ú	TypeError)r<   r‰   rŠ   r‹   rn   ro   rp   rA   r/   r/   r0   Útest_diags_badÕ   s   ***z!TestConstructUtils.test_diags_badc                    sê   t j d¡‰dD ]j}d|d  ˆ dd¡ ‰ t  ˆ  d ˆ d ¡}ˆ |¡ |d |… }‡ ‡fdd„|D ƒ}tj||d	�}td
d„ t	||ƒD ƒƒ}t
| ¡ |ƒ t|ƒdkrrtj|d |d d	�}t  |d |d ¡}t
| ¡ |ƒ qd S )NiÒ  )r?   rD   rE   rF   rG   rM   r?   rD   r   rM   c                    s   g | ]}ˆ  ˆ t|ƒ ¡‘qS r/   )r   Úabs)Ú.0Úq©r)   r-   r/   r0   Ú
<listcomp>÷   s    z9TestConstructUtils.test_diags_vs_diag.<locals>.<listcomp>r…   c                 S   s   g | ]
\}}t  ||¡‘qS r/   )r#   r�   )r—   ÚxÚjr/   r/   r0   rš   ú   s    )r#   r$   ÚRandomStateÚrandintÚarangeÚshuffler'   r†   ÚsumÚzipr   rj   rh   r�   )r<   Ún_diagsr‚   Ú	diagonalsÚmatÚ	dense_matr/   r™   r0   Útest_diags_vs_diagè   s    
€ïz%TestConstructUtils.test_diags_vs_diagc                 C   s@   t jdgdgdtd�}t|jtƒ t| ¡ ddgddggƒ d S )Ngš™™™™™@r   ru   )r‚   rA   r,   rD   )r'   r†   Úintr   r,   rj   ©r<   r›   r/   r/   r0   Útest_diags_dtype  s   z#TestConstructUtils.test_diags_dtypec                 C   sJ   t tdƒƒ}tddƒD ]}ttj||d� ¡ tj|g|gd� ¡ ƒ qd S )NrG   r’   rI   r…   )ÚlistÚranger   r'   r†   rj   )r<   ro   Úkr/   r/   r0   Útest_diags_one_diagonal  s   ÿÿz*TestConstructUtils.test_diags_one_diagonalc                 C   s   t  g ¡}t|jdƒ d S )N©r   r   )r'   r†   r   rA   r©   r/   r/   r0   Útest_diags_empty  s   
z#TestConstructUtils.test_diags_emptyÚidentityc                 C   ó¦   t |dƒ ¡ dggƒ t |dƒ ¡ ddgddggƒ |dddd�}t |jt d¡ƒ t |jdƒ tD ]}|d|d�}t |j|ƒ t | ¡ g d	¢g d
¢g d¢gƒ q2d S ©Nr?   rD   r   rE   Úint8r   )r,   r+   ©r+   ry   rz   r{   ©r   rj   r,   r#   r+   Úsparse_formats)r<   r±   ÚIÚfmtr/   r/   r0   Útest_identity  ó   "ýz TestConstructUtils.test_identityÚeyec                 C   sx  t |ddƒ ¡ dggƒ t |ddƒ ¡ g d¢g d¢gƒ t |ddƒ ¡ ddgddgddggƒ t |ddƒ ¡ g d¢g d¢g d¢gƒ t |dddd	�jt d¡ƒ d
D ]g}d
D ]b}tddƒD ]Z}|dkrg||ksq|dk r�t|ƒ|kr�tjtdd�� ||||d� W d   ƒ n1 sŠw   Y  q]t ||||d� ¡ tj	|||d�ƒ ||kr·t |||d� ¡ tj	|||d�ƒ q]qVqRd S )Nr?   rD   rE   ry   rz   r   r{   Úint16©r,   rw   r’   rI   zOffset.*out of boundsr7   ©r­   )
r   rj   r,   r#   r¬   r–   r9   r   r:   r¼   )r<   r¼   r(   r)   r­   r/   r/   r0   Útest_eye   s8    &&$ÿý€þþ€ìÿÿzTestConstructUtils.test_eyec                 C   r²   r³   r¶   )r<   r¼   r¸   r¹   r/   r/   r0   Útest_eye_oneD  r»   zTestConstructUtils.test_eye_onec                 C   s,   t t d¡tƒs
J ‚t t d¡tƒrJ ‚d S )NrE   )Ú
isinstancer'   Ú	eye_arrayr   r¼   ©r<   r/   r/   r0   Útest_eye_array_vs_matrixR  s   z+TestConstructUtils.test_eye_array_vs_matrixc           	      C   sb  g }|  tdggƒ¡ |  tdggƒ¡ |  tdggƒ¡ |  tdggƒ¡ |  tdgdggƒ¡ |  tddggƒ¡ |  tddgddggƒ¡ |  tddgddggƒ¡ |  tg d	¢g d
¢gƒ¡ |  tddgddgddggƒ¡ |  tg d¢g d¢g d¢gƒ¡ |  tg d¢gƒ¡ |  tg d¢g d¢gƒ¡ |D ]:}t|ƒ}|D ]1}t|ƒ}t ||¡}tdd… D ]}tj|||d�}t|j|ƒ t	| 
¡ |ƒ t|tƒsÓJ ‚qµq£q›|d }|d }t|ƒ}t|ƒ}t ||¡}tD ]}tj|||d�}t|j|ƒ t	| 
¡ |ƒ t|tƒ�sJ ‚qîtjt|ƒt|ƒ|d�}t|j|ƒ t	| 
¡ |ƒ t|tƒ�s/J ‚d S )Nr   rT   rF   rM   r?   rD   rE   rG   ©r   rD   iúÿÿÿ©rK   r   rR   rI   )rG   rF   rF   ry   )rI   r   rK   )r   r?   r   rD   r   rG   rK   )ç      à?g      À?r   g      
@)r   g      @r   r   rµ   r^   )rg   r   r   r#   Úkronr·   r'   r   r+   r   rj   rÂ   r   r	   r   )	r<   rn   r‰   ÚcarŠ   ÚcbÚexpectedr¹   rq   r/   r/   r0   Ú	test_kronV  sP     üý
zTestConstructUtils.test_kronc                 C   s°   t jtdd�� t dgdggtddgƒ¡ W d   ƒ n1 s w   Y  t jtdd�� t tddgƒdgdgg¡ W d   ƒ n1 sEw   Y  t dgdggddg¡ d S )Núrequires 2D inputr7   r   r?   )r9   r   r:   r'   rÉ   r   rÄ   r/   r/   r0   Útest_kron_ndim_exceptions†  s   ÿÿz,TestConstructUtils.test_kron_ndim_exceptionsc                 C   sT   d}t jdgd|f|d d�}t jdg|dfd| d�}t  ||¡ t  ||¡ d S )Ni   r?   )rA   r‚   )r'   Údiags_arrayrÉ   )r<   r)   r‰   rŠ   r/   r/   r0   Útest_kron_largeŽ  s
   z"TestConstructUtils.test_kron_largec              
   C   sL  g }|  tdggƒ¡ |  tdggƒ¡ |  tdggƒ¡ |  tdggƒ¡ |  tddgddggƒ¡ |  tddgddggƒ¡ |  tg d	¢g d
¢g d¢gƒ¡ |  tg d¢g d¢g d¢gƒ¡ |D ]0}|D ]+}t t|ƒt|ƒ¡ ¡ }t t |j	d ¡|¡t |t |j	d ¡¡ }t
||ƒ qfqbt t|ƒt|ƒ¡ ¡ }t
||ƒ d S )Nr   rT   rF   rM   r?   rD   rE   rG   rÆ   rÇ   )r   rE   r   ry   )r   rG   rT   )rF   rv   rK   )rg   r   r'   Úkronsumr   rj   r#   rÉ   r¼   rA   r   r	   )r<   rn   r‰   rŠ   rq   rÌ   r/   r/   r0   Útest_kronsum–  s&     ÿüzTestConstructUtils.test_kronsumc                 C   s²   t jtdd�� t dgdggtddgƒ¡ W d   ƒ n1 s w   Y  t jtdd�� t tddgƒdgdgg¡ W d   ƒ n1 sEw   Y  t ddgddggdg¡ d S )NrÎ   r7   r   r?   rD   )r9   r   r:   r'   rÒ   r   rÄ   r/   r/   r0   Útest_kronsum_ndim_exceptions®  s   ÿÿz/TestConstructUtils.test_kronsum_ndim_exceptionsÚcoo_clsc                 C   sn  |ddgddggƒ}|ddggƒ}t ddgddgddggƒ}tt ||g¡ ¡ |ƒ ttj||gtjd�jtjƒ tt | ¡ | ¡ g¡ ¡ |ƒ tt | 	¡ | 	¡ g¡ ¡ |ƒ tj| 	¡ | 	¡ gdtjd	�}t|jtjƒ t|j
jtjƒ t|jjtjƒ tt | ¡ | ¡ g¡ ¡ |ƒ tj| ¡ | ¡ gd
tjd	�}t|jtjƒ t|j
jtjƒ t|jjtjƒ d S )Nr?   rD   rE   rF   rG   rI   r¾   r   )r+   r,   r   )r   r   r'   Úvstackrj   r#   Úfloat32r,   ÚtodokÚtocsrÚindicesÚint32ÚindptrÚtocsc)r<   rÕ   ÚAÚBrÌ   rq   r/   r/   r0   Útest_vstack¶  s:   þÿ ÿÿÿÿzTestConstructUtils.test_vstackc                 C   sX  t g d¢g d¢g d¢gƒ}|j tj¡|_|j tj¡|_t ||g¡jjtjks+J ‚t 	||g¡jjtjks9J ‚t
g d¢g d¢g d¢gƒ}|j tj¡|_|j tj¡|_t ||g¡jjtjksdJ ‚t 	||g¡jjtjksrJ ‚tg d¢g d¢g d¢gƒ}tdd„ |jD ƒƒ|_t ||g¡jd jtjksšJ ‚t 	||g¡jd jtjksªJ ‚d S )Nry   rz   c                 s   ó   � | ]	}|  tj¡V  qd S r"   ©Úastyper#   Úint64©r—   Úcor/   r/   r0   Ú	<genexpr>ã  ó   € zITestConstructUtils.test_vstack_maintain64bit_idx_dtype.<locals>.<genexpr>r   )r   rÜ   rã   r#   rä   rÚ   r'   rÖ   r,   Úhstackr   r   ÚtupleÚcoords©r<   ÚXr/   r/   r0   Ú#test_vstack_maintain64bit_idx_dtypeÔ  s    $z6TestConstructUtils.test_vstack_maintain64bit_idx_dtypec                 C   sž   ddgddgg}ddgg}t t t|ƒt|ƒg¡tƒsJ ‚t t t|ƒt|ƒg¡tƒs-J ‚t t t|ƒt|ƒg¡tƒs=J ‚t t t|ƒt|ƒg¡tƒsMJ ‚d S ©Nr?   rD   rE   rF   rG   rI   )rÂ   r'   rÖ   r   r   r
   r   ©r<   rÞ   rß   r/   r/   r0   Útest_vstack_matrix_or_arrayç  s   
   $z.TestConstructUtils.test_vstack_matrix_or_arrayc                 C   sª  t g d¢g d¢gƒ}t g d¢ƒ}tg d¢ƒ}t |t g d¢¡g¡jdks'J ‚t |t dgg¡g¡jdks8J ‚t ||g¡jdksDJ ‚t ||g¡jdksPJ ‚t ||g¡jd	ks\J ‚t ||g¡jdkshJ ‚t ||g¡jdkstJ ‚t ||g¡jdks€J ‚t ||g¡jdksŒJ ‚tj	t
d
d�� t |t ddg¡g¡ W d   ƒ n1 sªw   Y  tj	t
dd�� t |t ddg¡g¡ W d   ƒ d S 1 sÎw   Y  d S )Nry   rz   rx   r|   r   )r?   rF   )r?   rI   )rD   rE   )rD   rI   zincompatible row dimensionsr7   zincompatible column dimensions)r   r   r'   rÖ   r#   r   rA   ré   r9   r   r:   )r<   ÚarrÚarr1dÚarr1dcoor/   r/   r0   Útest_vstack_1d_with_2dï  s$   ""ÿ"ÿz)TestConstructUtils.test_vstack_1d_with_2dc                 C   s  |ddgddggƒ}|dgdggƒ}t g d¢g d¢gƒ}tt ||g¡ ¡ |ƒ ttj||gtjd	�jtjƒ tt | ¡ | ¡ g¡ ¡ |ƒ tt | 	¡ | 	¡ g¡ ¡ |ƒ ttj| 	¡ | 	¡ gtjd	�jtjƒ tt | 
¡ | 
¡ g¡ ¡ |ƒ ttj| 
¡ | 
¡ gtjd	�jtjƒ d S )
Nr?   rD   rE   rF   rG   rI   ©r?   rD   rG   ©rE   rF   rI   r¾   )r   r   r'   ré   rj   r#   r×   r,   rØ   rÝ   rÙ   )r<   rÕ   rÞ   rß   rÌ   r/   r/   r0   Útest_hstack  s8   ÿÿ ÿÿþÿÿþzTestConstructUtils.test_hstackc                 C   s    ddgddgg}dgdgg}t t t|ƒt|ƒg¡tƒsJ ‚t t t|ƒt|ƒg¡tƒs.J ‚t t t|ƒt|ƒg¡tƒs>J ‚t t t|ƒt|ƒg¡tƒsNJ ‚d S rï   )rÂ   r'   ré   r   r   r
   r   rð   r/   r/   r0   Útest_hstack_matrix_or_array  s      $z.TestConstructUtils.test_hstack_matrix_or_arrayÚblock_arrayc           
      C   s,  t ddgddggƒ}t dgdggƒ}t dggƒ}t dƒ}tg d	¢g d
¢g d¢gƒ}t|||gd |ggƒ ¡ |ƒ tdtjd�}t|| ¡ | ¡ g|| ¡ ggƒ ¡ |ƒ t|| ¡ | ¡ g| ¡ | ¡ ggƒ ¡ |ƒ tg d¢g d¢g d¢gƒ}t||d gd |ggƒ ¡ |ƒ t|| ¡ |j	 ¡ g|| ¡ ggƒ ¡ |ƒ t|| ¡ |j	 ¡ g| ¡ | ¡ ggƒ ¡ |ƒ tdtjd�}tddgddgddggƒ}t|d |g|d ggƒ ¡ |ƒ t||j	 ¡ | ¡ g| ¡ |ggƒ ¡ |ƒ t||j	 ¡ | ¡ g| ¡ | ¡ ggƒ ¡ |ƒ t 
d¡}t|d d ggƒ ¡ |ƒ t|d |g|d ggƒ ¡ |ƒ tdggƒ}t|d |g|d ggƒ ¡ |ƒ ttƒ�}	||g|ggƒ W d   ƒ n	1 �sSw   Y  |	 d¡ ttƒ�}	|| ¡ g| ¡ ggƒ W d   ƒ n	1 �syw   Y  |	 d¡ ttƒ�}	|| ¡ g| ¡ ggƒ W d   ƒ n	1 �sŸw   Y  |	 d¡ ttƒ�}	|||ggƒ W d   ƒ n	1 �sÀw   Y  |	 d¡ ttƒ�}	|| ¡ | ¡ ggƒ W d   ƒ n	1 �såw   Y  |	 d¡ ttƒ�}	|| ¡ | ¡ ggƒ W d   ƒ n	1 �s
w   Y  |	 d¡ d S )Nr?   rD   rE   rF   rG   rI   rJ   r¯   rö   r÷   )r   r   rJ   rt   r¾   )r?   rD   r   )rE   rF   r   r>   r   z.Got blocks\[1,0\]\.shape\[1\] == 1, expected 2z"incompatible dimensions for axis 1z4Mismatching dimensions along axis 1: ({1, 2}|{2, 1})z.Got blocks\[0,1\]\.shape\[0\] == 1, expected 2z4Mismatching dimensions along axis 0: ({1, 2}|{2, 1})z"incompatible dimensions for axis 0)r   r   r   rj   r   r#   rÛ   rÙ   rÝ   ÚTÚemptyr�   r:   r8   )
r<   rú   rÞ   rß   ÚCÚDrÌ   ÚEÚZÚexcinfor/   r/   r0   Útest_block_creation&  s´   þ
ÿþÿþþ
ÿþÿþþ
ÿþÿþ
ÿÿ
ÿ

ÿ

ÿ

ÿ

ÿ

ÿz&TestConstructUtils.test_block_creationc                 C   sš   t j}ddgddggdgdgg}}t|ƒt|ƒ}}t|d |g|d ggdd�tƒs,J ‚t|d |g|d ggdd�tƒs=J ‚t|||ggdd�tƒsKJ ‚d S )	Nr?   rD   rE   rF   rJ   rG   r   rµ   )r'   rú   r	   rÂ   r   )r<   ÚblockÚFlÚGlÚFmÚGmr/   r/   r0   Útest_block_return_typet  s   "" z)TestConstructUtils.test_block_return_typec                 C   sÈ  t j}ddgddggdgdgg}}t|ƒt|ƒ}}t|ƒt|ƒ}}t|||ggdd�tƒs2J ‚t|||ggdd�tƒs@J ‚t|d	|g|d	ggdd�tƒsQJ ‚t|d	|g|d	ggdd�tƒsbJ ‚t|d	|g|d	ggdd�tƒssJ ‚t|d	|g|d	ggdd�tƒs„J ‚t|||ggdd�tƒs’J ‚t|||ggdd�tƒs J ‚t|||ggdd�tƒs®J ‚t|||ggdd�tƒs¼J ‚t|||ggdd�tƒsÊJ ‚t|||ggdd�tƒsØJ ‚t|| ¡ | ¡ ggd
d�tƒsêJ ‚t|| ¡ | ¡ ggd
d�tƒsüJ ‚t|| ¡ | ¡ ggdd�tƒ�sJ ‚t|| ¡ | ¡ ggdd�tƒ�s"J ‚t|||ggdd�tƒ�s1J ‚t|| ¡ |ggdd�tƒ�sBJ ‚t|| ¡ |ggdd�tƒ�sSJ ‚t|||ggd
d�tƒ�sbJ ‚d	S )z2This can be removed after sparse matrix is removedr?   rD   rE   rF   rJ   rG   r   rµ   Nr   )r'   Úbmatr	   r   rÂ   r   r   rÝ   )r<   r	  r  r  r  r  ÚFaÚGar/   r/   r0   Útest_bmat_return_type€  s0   """"$$&&"""z(TestConstructUtils.test_bmat_return_typez!Can't create large array for testc                 C   s€   t dƒ d}ttj||ftd�ƒ}| ¡ }tj||fddd�}tt 	t 
t |j¡|¡¡ƒ t|jjtjƒ t|jjtjƒ dS )z6 test for indptr overflow when concatenating matrices i0u  iè€  r¾   r   F)ÚaxisÚreturn_spmatrixN)r   r   r#   ÚonesÚboolÚcopyr'   Ú_compressed_sparse_stackr   ÚallÚequalÚdiffrÜ   r   rÚ   r,   rä   )r<   r)   rÞ   rß   rý   r/   r/   r0   Útest_concatenate_int32_overflow¤  s   ÿz2TestConstructUtils.test_concatenate_int32_overflowc                 C   sŽ   t ddgddggƒ}t dgdggƒ}t dggƒ}tg d¢g d	¢g d
¢g d¢g d¢gƒ}t |||f¡}t| ¡ |ƒ |jd jtj	ksEJ ‚dS )z basic test for block_diag r?   rD   rE   rF   rG   rI   rJ   )r?   rD   r   r   )rE   rF   r   r   )r   r   rG   r   )r   r   rI   r   )r   r   r   rJ   r   N)
r   r   r'   Ú
block_diagr   rj   rë   r,   r#   rÛ   )r<   rÞ   rß   rý   rÌ   ÚABCr/   r/   r0   Útest_block_diag_basicµ  s   üz(TestConstructUtils.test_block_diag_basicc                 C   sT   t g d¢g d¢g d¢gƒ}tdd„ |jD ƒƒ|_t ||g¡jd jtjks(J ‚d S )Nry   rz   c                 s   rá   r"   râ   rå   r/   r/   r0   rç   Ç  rè   z?TestConstructUtils.test_block_diag_idx_dtype.<locals>.<genexpr>r   )r   rê   rë   r'   r  r,   r#   rä   rì   r/   r/   r0   Útest_block_diag_idx_dtypeÅ  s   $z,TestConstructUtils.test_block_diag_idx_dtypec                 C   sh   t t ddgdg¡ ¡ g d¢g d¢gƒ tg d¢ƒ}tddgƒ}t t ||g¡ ¡ g d¢g d	¢gƒ d
S )z) block_diag with scalar and 1d arguments rD   rE   rF   )rD   rE   r   )r   r   rF   )r?   r   rE   r   )r?   r   rE   r   r   )r   r   r   r   rF   N)r   r'   r  rj   r   rð   r/   r/   r0   Útest_block_diag_scalar_1d_argsÊ  s   ÿÿz1TestConstructUtils.test_block_diag_scalar_1d_argsc                 C   s–   t t ddgg¡ ¡ tddggƒƒ t t ddggg¡ ¡ tddggƒƒ t t dgdggg¡ ¡ tdgdggƒƒ t t dg¡ ¡ tdggƒƒ dS )z block_diag with one matrix r?   r   N)r   r'   r  rj   r   rÄ   r/   r/   r0   Útest_block_diag_1Õ  s   ÿÿÿ
ÿz$TestConstructUtils.test_block_diag_1c              	   C   s¶   t g d¢gdd�}t ddggdd�}tt ||g¡ ¡ tg d¢g d¢gƒƒ t d	gd
gdggdd�}t dgdggdd�}tt ||g¡ ¡ td	dgd
dgddgddgddggƒƒ dS )z block_diag with sparse arrays r   )r?   rE   r@   rF   rG   rt   )r?   rD   rE   r   r   )r   r   r   rF   rG   r?   rD   rE   )rE   r?   rs   r   N)r   r   r'   r  rj   r   rð   r/   r/   r0   Útest_block_diag_sparse_arraysá  s   ÿ$ÿz0TestConstructUtils.test_block_diag_sparse_arraysc                 C   s‚   t g d¢gƒtg d¢gƒ}}tt ||g¡tƒsJ ‚tt ||g¡tƒs'J ‚tt ||g¡tƒs3J ‚tt ||g¡tƒs?J ‚d S )Nr   )rD   rE   rF   )r   r
   rÂ   r'   r  r   r   rð   r/   r/   r0   Útest_block_diag_return_typeî  s
   z.TestConstructUtils.test_block_diag_return_typec              	      sH  t tfD ]�‰ tjtjtjtjtjtjtj	fD ]}ˆ ddd|d�}t
|j|ƒ t
|jdƒ t
|jdƒ qˆ ddddd�}t
|jtjƒ ˆ dddtj d¡d�}t|j|jƒ t|j|jƒ t|j|jƒ dD ]}ˆ dd|d	�}t
|jt|t |j¡ ƒƒ qed
D ]}ˆ dd|d�}t
|j|ƒ qtt‡ fdd„ƒ tt‡ fdd„ƒ qd S )NrG   rM   çš™™™™™¹?)r*   r,   )rG   rM   éá  )r*   r-   )g        r  rÈ   g      ð?©r*   )r   r   r   r   rµ   c                      ó   ˆ dddƒS )NrG   rM   gš™™™™™ñ?r/   r/   ©Úfr/   r0   Ú<lambda>  ó    z9TestConstructUtils.test_random_sampling.<locals>.<lambda>c                      r"  )NrG   rM   gš™™™™™¹¿r/   r/   r#  r/   r0   r%    r&  )Úsprandr1   r#   r×   Úfloat64Ú
longdoublerÛ   rä   Ú	complex64Ú
complex128r   r,   rA   Únnzr$   r%   r   ÚdataÚrowÚcolr¨   Úprodr+   r�   r:   )r<   Útr›   Úx1Úx2r*   r¹   r/   r#  r0   Útest_random_samplingõ  s.   ÿæz'TestConstructUtils.test_random_samplingr-   Nr   c                 C   sH   t dddtj|d�}tt t d|j¡¡ƒ tt t |jd¡¡ƒ d S ©NrM   é   rÈ   ©r*   r,   r-   r   r?   )r'  r#   r(  r   r  Ú
less_equalr-  ©r<   r-   r›   r/   r/   r0   Ú	test_rand  s   zTestConstructUtils.test_randc                 C   sŒ   t dddtj|d�}tt t |jd¡¡ƒ tt t d|j¡¡ƒ tdddtj|d�}tt t |jd¡¡ƒ tt t d|j¡¡ƒ d S r5  )r1   r#   r(  r   ÚanyÚlessr-  r4   r9  r/   r/   r0   Ú
test_randn  s   zTestConstructUtils.test_randnc                 C   s>   t jdddd� t jddd� t jddd� t jddd� d S )NrM   ro   r¾   ©rM   rM   ©rM   rM   rM   ©rM   rM   rM   rM   rM   )r'   r$   r3   rÄ   r/   r/   r0   Útest_random_accept_str_dtype&  s   z/TestConstructUtils.test_random_accept_str_dtypec                 C   sd   t jddtdd�}|jdksJ ‚t jddtdd�}|jdks J ‚t jddtdd�}|jdks0J ‚d S )N)r   rF   g333333Ó?r   )r*   r,   Úrandom_stater?  r7  r@  )r'   r3   r¨   rA   )r<   rò   r/   r/   r0   Ú'test_random_array_maintains_array_shape.  s   
ÿz:TestConstructUtils.test_random_array_maintains_array_shapec                 C   s$   t  d¡}|jd jtjksJ ‚d S )Nr>  r   )r'   r3   rë   r,   r#   rÛ   )r<   rÞ   r/   r/   r0   Útest_random_array_idx_dtype:  s   
z.TestConstructUtils.test_random_array_idx_dtypec                 C   s¶   t jdddd�}t| ¡ dƒ t jddd�}t| ¡ dƒ t|tƒs$J ‚d}t j|dd�}t| ¡ dƒ t jd	d
d�}t| ¡ dƒ t|tƒsIJ ‚d}t j|dd�}t| ¡ dƒ d S )NrM   gþÔxé&1À?r!  rQ   r>  )ì        rE  g(Rsåû?<iÐ  )rM   rM   rM   rM   gkñ) Æ3À?iò  )rE  rE  rE  g�ëAŒy5:é¬   )r'   r$   r   Úcount_nonzeror3   rÂ   r   )r<   Úsparse_matrixÚsparse_arrayrA   r/   r/   r0   ÚEtest_random_sparse_matrix_returns_correct_number_of_non_zero_elements>  s   zXTestConstructUtils.test_random_sparse_matrix_returns_correct_number_of_non_zero_elements)JÚ__name__Ú
__module__Ú__qualname__r9   ÚmarkÚparametrizer   r   r   r   r   r   r   r=   r   r	   r
   r   r   r   rB   rr   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ù   r	  rú   r  r  r  ÚslowÚthread_unsafeÚxfail_on_32bitr  r  r  r  r  r  r  r4  r#   r$   r%   r:  r=  rA  rC  rD  rJ  r/   r/   r/   r0   r5   )   s~    þ

þ

8N

#
0


M$


r5   c                  C   sÈ   t  dd¡} tt | ¡ ¡ t  | ¡ƒ ttj| dd� ¡ t j| dd�ƒ ttj| ddd� ¡ t j| dd�dd	…dd	…f ƒ tjt	d
d�� tj
t  dd¡ddd� W d  ƒ dS 1 s]w   Y  dS )z7Tests of diags_array that do not rely on diags wrapper.r?   rG   rD   r…   r¿   r“   r�   NrF   z.*out of boundsr7   r@   )r#   rŸ   r   r'   rÐ   rj   r�   r9   r   r:   r†   )r�   r/   r/   r0   Útest_diags_arrayW  s   ÿþ"ÿrS  )r!   r   NN)(Ú__doc__Únumpyr#   r   Únumpy.testingr   r   r   r   r9   r   r�   Úscipy._lib._testutilsr   Úscipy.sparser	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r'   Úscipy.sparse._constructr   r'  r·   r1   r4   r5   rS  r/   r/   r/   r0   Ú<module>   s(    H

      4