U
    »mœdî	  ã                   @   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 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S )é    N)Úraises)Úassert_equalÚassert_)Ú
csc_matrixÚ
csr_matrixÚ
bsr_matrixÚ
dia_matrixÚ
coo_matrixÚsave_npzÚload_npzÚ
dok_matrixÚdatac              	   C   sB   t jdd�\}}t |¡ zt|| ƒ t|ƒ}W 5 t |¡ X |S )Nú.npz©Úsuffix)ÚtempfileÚmkstempÚosÚcloseÚremover
   r   )ÚmatrixÚfdÚtmpfileÚloaded_matrix© r   úZ/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/sparse/tests/test_matrix_io.pyÚ_save_and_load   s    

r   c                 C   sf   t ttttfD ]R}|| ƒ}t|ƒ}tt|ƒ|kƒ t|j| jkƒ t|j	| j	kƒ t
| ¡ | ƒ qd S )N)r   r   r   r   r	   r   r   ÚtypeÚshapeZdtyper   Útoarray)Údense_matrixZ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#   Zzerosr!   ©r    r   r   r   Útest_save_and_load_empty)   s    
r-   c                  C   s   t  d¡} d| d< t| ƒ d S )Nr(   é   )r.   é   r+   r,   r   r   r   Útest_save_and_load_one_entry-   s    
r0   c               	   C   sZ   G dd„ dƒ} t jdd�\}}t |¡ z tj|| ƒ d� ttt	|ƒ W 5 t |¡ X d S )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__5   s    z0test_malicious_load.<locals>.Executor.__reduce__N)Ú__name__Ú
__module__Ú__qualname__r2   r   r   r   r   ÚExecutor4   s   r6   r   r   )Úformat)
r   r   r   r   r   r#   ZsavezÚassert_raisesÚ
ValueErrorr   )r6   r   r   r   r   r   Útest_malicious_load3   s    
r:   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_compatibilityC   s
    rA   c                  C   s"   t dƒ} d| d< tttd| ƒ d S )N)r/   é   r.   )r   r.   zx.npz)r   r8   ÚNotImplementedErrorr
   )Úxr   r   r   Útest_implemented_errorO   s    rE   ) r   Únumpyr#   r   Zpytestr   r8   Znumpy.testingr   r   Zscipy.sparser   r   r   r   r	   r
   r   r   r;   r<   ÚdirnameÚ__file__r=   r   r!   r'   r-   r0   r:   rA   rE   r   r   r   r   Ú<module>   s   (
	