a
    h                     @   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   sL   t jdd\}}t| z t||  t|}W t| nt| 0 |S )N.npzsuffix)tempfilemkstemposcloser   r   remove)matrixfdtmpfileloaded_matrix r   ]/var/www/html/assistant/venv/lib/python3.9/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||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_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    
r0   c                  C   s   t d} d| d< t|  d S )Nr+      )r1      r.   r/   r   r   r   test_save_and_load_one_entry-   s    
r3   c               	   C   s   t jdd\} }t|  z0t|tg dg dg t|}W t| nt| 0 t jdd\} }t|  z0t|tg dg dg t|}W t| nt| 0 t	|t
rJ t	|t
sJ 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   Zloaded_arrayr   r   r   test_sparray_vs_spmatrix2   s     



r5   c               	   C   sd   G dd d} t jdd\}}t| z*tj||  d ttt| W t	| nt	| 0 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__L   s    z0test_malicious_load.<locals>.Executor.__reduce__N)__name__
__module____qualname__r7   r   r   r   r   ExecutorK   s   r;   r   r   )format)
r   r   r   r   r&   Zsavezassert_raises
ValueErrorr   r   )r;   r   r   r   r   r   test_malicious_loadJ   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_compatibilityZ   s
    rF   c                  C   s"   t d} d| d< tttd|  d S )N)r2      r1   )r   r1   zx.npz)r   r=   NotImplementedErrorr   )xr   r   r   test_implemented_errorf   s    rJ   )#r   numpyr&   r   Zpytestr   r=   Znumpy.testingr   r   Zscipy.sparser   r   r   r   r	   r
   r   r   r   r   r@   rA   dirname__file__rB   r   r$   r*   r0   r3   r5   r?   rF   rJ   r   r   r   r   <module>   s   0
	