+
    ,i                     
   ^ RI t ^ RIt^ RIt^ RIHt ^ RIHtH	t	 ^ RI
HtHtHtHtHtHtHtHtHtHt ] P*                  P-                  ] P*                  P/                  ]4      R4      tR tR tR tR	 tR
 tR tR t R t!R t"R# )    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                     \         P                  ! R R7      w  r\        P                  ! V4        \	        W 4       \        V4      p\        P                  ! V4       V#   \        P                  ! T4       i ; i).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      sX    ""&1KBHHRL! )
		' 			's   A A7c                 X   \         \        \        \        \        3 F  pV! V 4      p\        V4      p\        \        V4      VJ 4       \        VP                  V P                  8H  4       \        VP                  V P                  8H  4       \        VP                  4       V 4       K  	  R # )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; U    c                      ^
p \         P                  P                  ^ 4       \         P                  P                  W 34      p^ WR8  &   \        V4       R# )
   gffffff?N)nprandomseedr'   )Nr%   s     r   test_save_and_load_randomr/   "   sB    
AIINN199##QF+L'(L#$&r(   c                  H    \         P                  ! R4      p \        V 4       R# )   Nr1      r+   zerosr'   r%   s    r   test_save_and_load_emptyr7   )   s    88E?L&r(   c                  R    \         P                  ! R4      p ^V R&   \        V 4       R# )r1   Nr2   )      r4   r6   s    r   test_save_and_load_one_entryr;   -   s!    88E?LL&r(   c                     \         P                  ! R R7      w  r\        P                  ! V 4        \	        V\        . RO. RO.4      4       \        V4      p\        P                  ! V4       \         P                  ! R R7      w  r\        P                  ! V 4        \	        V\        . RO. RO.4      4       \        V4      p\        P                  ! V4       \        V\        4      '       d   Q h\        V\        4      '       g   Q h\        VP                  VP                  8H  4       \        VP                  4       VP                  4       4       R#   \        P                  ! T4       i ; i  \        P                  ! T4       i ; i)r   r   N)g333333?r   g?)r   g333333?r   )r   r   r   r   r   r   r   r   r   
isinstancer   r   r#   r   r$   )r   r   r   loaded_arrays       r   test_sparray_vs_spmatrixr?   2   s   ""&1KBHHRL*m[%ABC )
		' ""&1KBHHRL)]K$@AB(
		'-1111lG,,,,M<#5#556&&(,*>*>*@A 			' 			's   &E &E0 E-0Fc                  >    ! R  R4      p \         P                  ! RR7      w  r\        P                  ! V4        \        P
                  ! W ! 4       R7       \        \        \        V4       \        P                  ! V4       R#   \        P                  ! T4       i ; i)c                   &   a  ] tR t^Kt o R tRtV tR# )%test_malicious_load.<locals>.Executorc                    \         R3# )F)Fzunexpected code execution)r   )selfs   &r   
__reduce__0test_malicious_load.<locals>.Executor.__reduce__L   s    ABBr(    N)__name__
__module____qualname____firstlineno__rE   __static_attributes____classdictcell__)__classdict__s   @r   ExecutorrB   K   s     	C 	Cr(   rO   r   r   )formatN)
r   r   r   r   r+   savezassert_raises
ValueErrorr   r   )rO   r   r   s      r   test_malicious_loadrT   J   si    C C ""&1KBHHRL
, 	j(G4
		'		's   1B Bc                  t   \        \        P                  P                  \        R 4      4      p \        \        P                  P                  \        R4      4      p\        ^ ..4      p\        V P                  4       VP                  4       4       \        VP                  4       VP                  4       4       R# )zcsc_py2.npzzcsc_py3.npzN)r   r   pathjoinDATA_DIRr   r   r$   )abcs      r   test_py23_compatibilityr\   Z   sp    
 	h67Ah67AQC5Aaiik*aiik*r(   c                  R    \        R4      p ^V R&   \        \        \        RV 4       R# )r:   zx.npzN)r:      )r   r9   )r   rR   NotImplementedErrorr   )xs    r   test_implemented_errorra   f   s&     	5AAcF%x!<r(   )#r   numpyr+   r   pytestr   rR   numpy.testingr   r   scipy.sparser   r   r   r	   r
   r   r   r   r   r   rV   rW   dirname__file__rX   r   r'   r/   r7   r;   r?   rT   r\   ra   rG   r(   r   <module>rh      sw    	   * /Q Q Q 77<<16:<'''
B0 
+=r(   