
    bi                        d dl Z 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mZ e j,                  j/                  e j,                  j1                  e      d      Zd Zd Zd Zd	 Zd
 Zd Z ejB                  jE                  dd dg      ejB                  jE                  dg d      d               Z#d Z$d Z%d Z&y)    N)raises)assert_equalassert_)sparray	csr_array	coo_arraysave_npzload_npz
csc_matrix
csr_matrix
bsr_matrix
dia_matrix
coo_matrix
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       \/home/cdr/jupyterlab/.venv/lib/python3.12/site-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_randomr0   $   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_emptyr8   +   s    88E?L&r)   c                  N    t        j                  d      } d| d<   t        |        y )Nr2      )r:      r5   r7   s    r   test_save_and_load_one_entryr<   /   s!    88E?LL&r)   c                     t        j                  d      \  } }t        j                  |        	 t	        |t        g dg dg             t        |      }t        j                  |       t        j                  d      \  } }t        j                  |        	 t	        |t        g dg dg             t        |      }t        j                  |       t        |t              rJ t        |t              sJ t        |j                  |j                  k(         t        |j                         |j                                y # t        j                  |       w xY w# t        j                  |       w xY w)Nr   r   )333333?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_spmatrixrA   4   s   ""&1KBHHRL*m[%ABC )
		' ""&1KBHHRL)]K$@AB(
		'-111lG,,,M<#5#556&&(,*>*>*@A 			' 			's   &E &E EE5valuer>   ndim)r:   r;      c                    t        |g      j                  d| z        }t        j                  d      \  }}t	        j
                  |       	 t        ||       t        |      }t	        j                  |       t        |t               sJ t        |j                  |j                  k(         t        |j                         |j                                y # t	        j                  |       w xY w)N)r:   r   r   )r   reshaper   r   r   r   r	   r
   r   r?   r   r#   r   r%   )rC   rB   Ar   r   loaded_As         r   test_nd_coo_formatrI   L   s     	5'""4$;/A ""&1KBHHRL!G$
		'h	***HNNagg%&h..01	 			's   C C.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__`   s    ABBr)   N)__name__
__module____qualname__rO    r)   r   ExecutorrL   _   s    	Cr)   rT   r   r   )format)
r   r   r   r   r,   savezassert_raises
ValueErrorr
   r   )rT   r   r   s      r   test_malicious_loadrY   ^   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_compatibilityra   n   sp    
 	h67Ah67AQC5Aaiik*aiik*r)   c                  P    t        d      } d| d<   t        t        t        d|        y )N)r;   rD   r:   )r   r:   zx.npz)r   rW   NotImplementedErrorr	   )xs    r   test_implemented_errorre   z   s&     	5AAcF%x!<r)   )'r   numpyr,   r   pytestr   rW   numpy.testingr   r   scipy.sparser   r   r   r	   r
   r   r   r   r   r   r   r[   r\   dirname__file__r]   r    r(   r0   r8   r<   rA   markparametrizerI   rY   ra   re   rS   r)   r   <module>rn      s    	    * /2 2 2 2
 77<<16:<'''
B0 1c(++2 , ,2  
+=r)   