o
    Ö­jé  ã                   @   sÆ   d dl Z d dlZd dlZd dlm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mZmZmZ e j e j e¡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S )é    N)Úraises)Úassert_equalÚassert_)
ÚsparrayÚ
csc_matrixÚ
csr_matrixÚ
bsr_matrixÚ
dia_matrixÚ
coo_matrixÚ
dok_matrixÚ	csr_arrayÚsave_npzÚload_npzÚdatac              	   C   sJ   t jdd�\}}t |¡ zt|| ƒ t|ƒ}W t |¡ |S t |¡ w )Nú.npz©Úsuffix)ÚtempfileÚmkstempÚosÚcloser   r   Úremove)ÚmatrixÚfdÚtmpfileÚloaded_matrix© r   ú^/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/sparse/tests/test_matrix_io.pyÚ_save_and_load   s   



ÿr   c                 C   sf   t ttttfD ])}|| ƒ}t|ƒ}tt|ƒ|u ƒ t|j| jkƒ t|j	| j	kƒ t
| ¡ | ƒ qd S )N)r   r   r   r	   r
   r   r   ÚtypeÚshapeÚdtyper   Útoarray)Údense_matrixÚmatrix_classr   r   r   r   r   Ú_check_save_and_load   s   úr%   c                  C   s8   d} t j d¡ t j | | f¡}d||dk< t|ƒ d S )Né
   r   gffffffæ?)ÚnpÚrandomÚseedr%   )ÚNr#   r   r   r   Útest_save_and_load_random"   s
   r+   c                  C   s   t  d¡} t| ƒ d S )N©é   é   ©r'   Úzerosr%   ©r#   r   r   r   Útest_save_and_load_empty)   s   
r2   c                  C   s   t  d¡} d| d< t| ƒ d S )Nr,   é   )r3   é   r/   r1   r   r   r   Útest_save_and_load_one_entry-   s   
r5   c               	   C   sò   t jdd�\} }t | ¡ zt|tg d¢g d¢gƒƒ t|ƒ}W t |¡ nt |¡ w t jdd�\} }t | ¡ zt|tg d¢g d¢gƒƒ t|ƒ}W t |¡ nt |¡ w t	|t
ƒr_J ‚t	|t
ƒsfJ ‚t|j|jkƒ t| ¡ | ¡ ƒ d S )Nr   r   )g333333ó?r   gÍÌÌÌÌÌì?)r   g333333Ó?r   )r   r   r   r   r   r   r   r   r   Ú
isinstancer   r   r!   r   r"   )r   r   r   Úloaded_arrayr   r   r   Útest_sparray_vs_spmatrix2   s    



r8   c               	   C   sb   G dd„ dƒ} t jdd�\}}t |¡ ztj|| ƒ d� ttt|ƒ W t 	|¡ d S t 	|¡ w )Nc                   @   s   e Zd Zdd„ ZdS )z%test_malicious_load.<locals>.Executorc                 S   s   t dfS )N)Fzunexpected code execution)r   )Úselfr   r   r   Ú
__reduce__L   s   z0test_malicious_load.<locals>.Executor.__reduce__N)Ú__name__Ú
__module__Ú__qualname__r:   r   r   r   r   ÚExecutorK   s    r>   r   r   )Úformat)
r   r   r   r   r'   ÚsavezÚassert_raisesÚ
ValueErrorr   r   )r>   r   r   r   r   r   Útest_malicious_loadJ   s   
rC   c                  C   sX   t tj td¡ƒ} t tj td¡ƒ}tdggƒ}t|  ¡ | ¡ ƒ t| ¡ | ¡ ƒ d S )Nzcsc_py2.npzzcsc_py3.npzr   )r   r   ÚpathÚjoinÚDATA_DIRr   r   r"   )ÚaÚbÚcr   r   r   Útest_py23_compatibilityZ   s
   rJ   c                  C   s"   t dƒ} d| d< tttd| ƒ d S )N)r4   é   r3   )r   r3   zx.npz)r   rA   ÚNotImplementedErrorr   )Úxr   r   r   Útest_implemented_errorf   s   rN   )#r   Únumpyr'   r   Úpytestr   rA   Únumpy.testingr   r   Úscipy.sparser   r   r   r   r	   r
   r   r   r   r   rD   rE   ÚdirnameÚ__file__rF   r   r%   r+   r2   r5   r8   rC   rJ   rN   r   r   r   r   Ú<module>   s     0
	