§
    µ³Ùgé  ã                   ó  — 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„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Z d„ Z!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                 óú   — t          j        d¬¦  «        \  }}t          j        |¦  «         	 t	          || ¦  «         t          |¦  «        }t          j        |¦  «         n# t          j        |¦  «         w xY w|S )Nú.npz©Úsuffix)ÚtempfileÚmkstempÚosÚcloser   r   Úremove)ÚmatrixÚfdÚtmpfileÚloaded_matrixs       úW/granary/edev/quantum/lib/python3.11/site-packages/scipy/sparse/tests/test_matrix_io.pyÚ_save_and_loadr      sw   € ÝÔ"¨&Ð1Ñ1Ô1�K€BˆÝ„HˆR�L„L€LðÝ�˜&Ñ!Ô!Ð!Ý  Ñ)Ô)ˆå
Œ	�'ÑÔÐÐø�Œ	�'ÑÔÐÐøøøØÐs   ®A" Á"A8c                 ót  — t           t          t          t          t          fD ]–} || ¦  «        }t          |¦  «        }t          t          |¦  «        |u ¦  «         t          |j        | j        k    ¦  «         t          |j	        | j	        k    ¦  «         t          |                     ¦   «         | ¦  «         Œ—d S )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Ô4Ð4Ý�Ô# |Ô'9Ò9Ñ:Ô:Ð:Ý�Ô# |Ô'9Ò9Ñ:Ô:Ð:Ý�]×*Ò*Ñ,Ô,¨lÑ;Ô;Ð;Ð;ð<ð <ó    c                  óº   — d} t           j                             d¦  «         t           j                             | | f¦  «        }d||dk    <   t          |¦  «         d S )Né
   r   gffffffæ?)ÚnpÚrandomÚseedr'   )ÚNr%   s     r   Útest_save_and_load_randomr/   "   sW   € Ø
€AÝ„I‡N‚N�1ÑÔÐÝ”9×#Ò# Q¨ FÑ+Ô+€LØ'(€L� Ò#Ñ$Ý˜Ñ&Ô&Ð&Ð&Ð&r(   c                  óL   — t          j        d¦  «        } t          | ¦  «         d S )N©é   é   ©r+   Úzerosr'   ©r%   s    r   Útest_save_and_load_emptyr7   )   s#   € Ý”8˜E‘?”?€LÝ˜Ñ&Ô&Ð&Ð&Ð&r(   c                  óV   — t          j        d¦  «        } d| d<   t          | ¦  «         d S )Nr1   é   )r9   é   r4   r6   s    r   Útest_save_and_load_one_entryr;   -   s-   € Ý”8˜E‘?”?€LØ€L�ÑÝ˜Ñ&Ô&Ð&Ð&Ð&r(   c                  ó8  — t          j        d¬¦  «        \  } }t          j        | ¦  «         	 t	          |t          g d¢g d¢g¦  «        ¦  «         t          |¦  «        }t          j        |¦  «         n# t          j        |¦  «         w xY wt          j        d¬¦  «        \  } }t          j        | ¦  «         	 t	          |t          g d¢g d¢g¦  «        ¦  «         t          |¦  «        }t          j        |¦  «         n# t          j        |¦  «         w xY wt          |t          ¦  «        rJ ‚t          |t          ¦  «        sJ ‚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_arrays       r   Útest_sparray_vs_spmatrixr?   2   s  € åÔ"¨&Ð1Ñ1Ô1�K€BˆÝ„HˆR�L„L€LðÝ��* m m m°[°[°[Ð%AÑBÔBÑCÔCÐCÝ  Ñ)Ô)ˆå
Œ	�'ÑÔÐÐø�Œ	�'ÑÔÐÐøøøõ Ô"¨&Ð1Ñ1Ô1�K€BˆÝ„HˆR�L„L€LðÝ��) ] ] ]°K°K°KÐ$@ÑAÔAÑBÔBÐBÝ Ñ(Ô(ˆå
Œ	�'ÑÔÐÐø�Œ	�'ÑÔÐÐøøøå˜-­Ñ1Ô1Ð1Ð1Ð1Ý�l¥GÑ,Ô,Ð,Ð,Ð,ÝˆMÔ <Ô#5Ò5Ñ6Ô6Ð6Ý�×&Ò&Ñ(Ô(¨,×*>Ò*>Ñ*@Ô*@ÑAÔAÐAÐAÐAs   ®2A5 Á5BÂ;2D ÄDc                  óF  —  G d„ d¦  «        } t          j        d¬¦  «        \  }}t          j        |¦  «         	 t	          j        | | ¦   «         ¬¦  «         t          t          t          |¦  «         t          j	        |¦  «         d S # t          j	        |¦  «         w xY w)Nc                   ó   — e Zd Zd„ ZdS )ú%test_malicious_load.<locals>.Executorc                 ó   — t           dfS )N)Fzunexpected code execution)r   )Úselfs    r   Ú
__reduce__z0test_malicious_load.<locals>.Executor.__reduce__L   s   € ÝÐAÐBÐBr(   N)Ú__name__Ú
__module__Ú__qualname__rE   © r(   r   ÚExecutorrB   K   s(   € € € € € ð	Cð 	Cð 	Cð 	Cð 	Cr(   rJ   r   r   )Úformat)
r   r   r   r   r+   ÚsavezÚassert_raisesÚ
ValueErrorr   r   )rJ   r   r   s      r   Útest_malicious_loadrO   J   s¸   € ðCð Cð Cð Cð Cñ Cô Cð Cõ Ô"¨&Ð1Ñ1Ô1�K€BˆÝ„HˆR�L„L€LðÝ
Œ�  ¡¤Ð,Ñ,Ô,Ð,õ 	•j¥(¨GÑ4Ô4Ð4å
Œ	�'ÑÔÐÐÐø�Œ	�'ÑÔÐÐøøøs   »9B
 Â
B c                  óÀ  — 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Úcs      r   Útest_py23_compatibilityrW   Z   s•   € õ
 	•”—’�h¨Ñ6Ô6Ñ7Ô7€AÝ•”—’�h¨Ñ6Ô6Ñ7Ô7€AÝ�Q�C�5ÑÔ€Aå�—’‘”˜aŸiši™kœkÑ*Ô*Ð*Ý�—’‘”˜aŸiši™kœkÑ*Ô*Ð*Ð*Ð*r(   c                  óf   — t          d¦  «        } d| d<   t          t          t          d| ¦  «         d S )N)r:   é   r9   )r   r9   zx.npz)r   rM   ÚNotImplementedErrorr   )Úxs    r   Útest_implemented_errorr\   f   s5   € õ 	�5ÑÔ€AØ€A€c�FåÕ%¥x°¸!Ñ<Ô<Ð<Ð<Ð<r(   )#r   Únumpyr+   r   Úpytestr   rM   Únumpy.testingr   r   Úscipy.sparser   r   r   r	   r
   r   r   r   r   r   rQ   rR   ÚdirnameÚ__file__rS   r   r'   r/   r7   r;   r?   rO   rW   r\   rI   r(   r   ú<module>rc      s–  ðØ 	€	€	€	Ø Ð Ð Ð Ø €€€à *Ð *Ð *Ð *Ð *Ð *Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /ðQð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Œ7�<Š<˜œŸš¨Ñ1Ô1°6Ñ:Ô:€ðð ð ð<ð <ð <ð'ð 'ð 'ð'ð 'ð 'ð'ð 'ð 'ð
Bð Bð Bð0ð ð ð 
+ð 
+ð 
+ð=ð =ð =ð =ð =r(   