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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   U/var/www/vscode/kcb/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
	