
    xf	                         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&                  j)                  e j&                  j+                  e      d      Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zy)    N)raises)assert_equalassert_)
csc_matrix
csr_matrix
bsr_matrix
dia_matrix
coo_matrixsave_npzload_npz
dok_matrixdatac                     t        j                  d      \  }}t        j                  |       	 t	        ||        t        |      }t        j                  |       |S # t        j                  |       w xY w)N.npzsuffix)tempfilemkstemposcloser   r   remove)matrixfdtmpfileloaded_matrixs       C/usr/lib/python3/dist-packages/scipy/sparse/tests/test_matrix_io.py_save_and_loadr      s\    ""&1KBHHRL&! )
		' 			's   A A5c                 R   t         t        t        t        t        fD ]  } ||       }t        |      }t        t        |      |u        t        |j                  | j                  k(         t        |j                  | j                  k(         t        |j                         |         y )N)r   r   r   r	   r
   r   r   typeshapedtyper   toarray)dense_matrixmatrix_classr   r   s       r   _check_save_and_loadr%      s    #ZZT <l+&v.]#|34##|'9'99:##|'9'99:]**,l;<    c                      d} t         j                  j                  d       t         j                  j                  | | f      }d||dkD  <   t        |       y )N
   r   gffffff?)nprandomseedr%   )Nr#   s     r   test_save_and_load_randomr-   "   sF    
AIINN199##QF+L'(L#$&r&   c                  D    t        j                  d      } t        |        y )N      r)   zerosr%   r#   s    r   test_save_and_load_emptyr5   )   s    88E?L&r&   c                  N    t        j                  d      } d| d<   t        |        y )Nr/      )r7      r2   r4   s    r   test_save_and_load_one_entryr9   -   s!    88E?LL&r&   c                  6    G d d      } t        j                  d      \  }}t        j                  |       	 t	        j
                  | |               t        t        t        |       t        j                  |       y # t        j                  |       w xY w)Nc                       e Zd Zd Zy)%test_malicious_load.<locals>.Executorc                     t         dfS )N)Fzunexpected code execution)r   )selfs    r   
__reduce__z0test_malicious_load.<locals>.Executor.__reduce__5   s    ABBr&   N)__name__
__module____qualname__r?    r&   r   Executorr<   4   s    	Cr&   rD   r   r   )format)
r   r   r   r   r)   savezassert_raises
ValueErrorr   r   )rD   r   r   s      r   test_malicious_loadrI   3   sk    C C ""&1KBHHRL
, 	j(G4
		'		's   1B Bc                  r   t        t        j                  j                  t        d            } t        t        j                  j                  t        d            }t        dgg      }t        | j                         |j                                t        |j                         |j                                y )Nzcsc_py2.npzzcsc_py3.npzr   )r   r   pathjoinDATA_DIRr   r   r"   )abcs      r   test_py23_compatibilityrQ   C   sp    
 	h67Ah67AQC5Aaiik*aiik*r&   c                  P    t        d      } d| d<   t        t        t        d|        y )N)r8      r7   )r   r7   zx.npz)r   rG   NotImplementedErrorr   )xs    r   test_implemented_errorrV   O   s&     	5AAcF%x!<r&   ) r   numpyr)   r   pytestr   rG   numpy.testingr   r   scipy.sparser   r   r   r	   r
   r   r   r   rK   rL   dirname__file__rM   r   r%   r-   r5   r9   rI   rQ   rV   rC   r&   r   <module>r]      sq    	   * /F F F 77<<16:<''' 
+=r&   