o
    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 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   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/scripts/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   
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   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__5   s   z0test_malicious_load.<locals>.Executor.__reduce__N)__name__
__module____qualname__r5   r   r   r   r   Executor4   s    r9   r   r   )format)
r   r   r   r   r%   savezassert_raises
ValueErrorr   r   )r9   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
   rE   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_errorO   s   rI   ) r   numpyr%   r   pytestr   r<   numpy.testingr   r   scipy.sparser   r   r   r   r	   r
   r   r   r?   r@   dirname__file__rA   r   r#   r)   r0   r3   r>   rE   rI   r   r   r   r   <module>   s    (
	