o
    Ö­joq  ã                   @   sd  d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
mZ d dlmZmZmZmZ d dlZd dlmZ d dlZd dlZd dlm  mZ ddgZejjZejdejjefd	d
�dd„ ƒZ G dd„ dƒZ!G dd„ de!ƒZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*G dd„ dƒZ+dZ,dZ-dZ.dZ/dZ0d Z1G d!d"„ d"ƒZ2d#d$„ Z3d%d&„ Z4d'd(„ Z5d)d*„ Z6dS )+é    )ÚmkdtempN)ÚarrayÚ	transposeÚpi)Úassert_equalÚassert_allcloseÚassert_array_equalÚassert_array_almost_equal)Úraises)ÚintegerÚint)úunsigned-integerÚuintÚmoduleT)ÚscopeÚparamsÚautousec                 C   s   | j ja| j ja| j jad S ©N)ÚparamÚmminfoÚmmreadÚmmwrite)Úrequest© r   úU/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/io/tests/test_mmio.pyÚimplementations   s   r   c                   @   s4  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zejj	ej 
d	e¡d
d„ ƒƒZejj	ej 
d	e¡dd„ ƒƒZdd„ Zdd„ Zej 
d	e¡dd„ ƒZej 
d	e¡dd„ ƒZej 
d	e¡dd„ ƒZdd„ Zdd„ Zdd„ Zej 
d	e¡dd„ ƒZd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zej d*¡d+d,„ ƒZd-d.„ Zd/d0„ Zd1S )2ÚTestMMIOArrayc                 C   ó*   t tt ¡ ƒd�| _tj | jd¡| _d S ©N)Úsuffixztestfile.mtx©	r   ÚstrÚ	threadingÚget_native_idÚtmpdirÚosÚpathÚjoinÚfn©Úselfr   r   r   Úsetup_method&   ó   zTestMMIOArray.setup_methodc                 C   ó   t  | j¡ d S r   ©ÚshutilÚrmtreer$   r)   r   r   r   Úteardown_method*   ó   zTestMMIOArray.teardown_methodc                 C   s8   t | j|ƒ tt| jƒ|ƒ t| jdd�}t||ƒ d S ©NF©Úspmatrix)r   r(   r   r   r   r	   ©r*   ÚaÚinfoÚbr   r   r   Úcheck-   ó   zTestMMIOArray.checkc                 C   s8   t | j|ƒ tt| jƒ|ƒ t| jdd�}t||ƒ d S r3   )r   r(   r   r   r   r6   r   r   r   Úcheck_exact3   r;   zTestMMIOArray.check_exactútypeval, dtypec              	   C   s0   |   tddgddgg|d�dddd|df¡ d S )Né   é   é   é   ©Údtyper   Úgeneral©r<   r   ©r*   ÚtypevalrC   r   r   r   Útest_simple_integer9   s   ÿz!TestMMIOArray.test_simple_integerc              	   C   s4   t ddgddgg|d�}|  |dddd|d	f¡ d S )
NéÿÿÿéþÿÿéýÿÿéüÿÿrB   r?   rA   r   rD   )r   r<   )r*   rG   rC   r7   r   r   r   Útest_32bit_integer?   s   z TestMMIOArray.test_32bit_integerc                 C   s\   t ddgddggtjd�}t d¡jdk r&ttjjjkr&t	t
t| j|ƒ d S |  |d¡ d S )	Nì        ì        ì   þÿÿÿ ì   ÿÿÿÿ rB   r   é   ©r?   r?   rA   r   r   rD   )r   ÚnpÚint64ÚintpÚitemsizer   ÚscipyÚioÚ_mmioÚassert_raisesÚOverflowErrorr(   r<   ©r*   r7   r   r   r   Útest_64bit_integerE   s   z TestMMIOArray.test_64bit_integerc                 C   s*   t ddgddggtjd�}|  |d¡ d S )NrN   rO   ì   þÿÿÿ ì   ÿÿÿÿ rB   )r?   r?   rA   r   r   rD   )r   rT   Úuint64r<   r]   r   r   r   Útest_64bit_unsigned_integerL   s   z)TestMMIOArray.test_64bit_unsigned_integerc              	   C   s0   |   tddgddgg|d�dddd|df¡ d S ©Nr   r>   rB   r?   rA   r   rD   rE   rF   r   r   r   Ú"test_simple_upper_triangle_integerP   ó   ÿz0TestMMIOArray.test_simple_upper_triangle_integerc              	   C   s0   |   tddgddgg|d�dddd|df¡ d S rc   rE   rF   r   r   r   Ú"test_simple_lower_triangle_integerU   re   z0TestMMIOArray.test_simple_lower_triangle_integerc              	   C   s0   |   tg d¢g d¢g|d�dddd|df¡ d S )	N©r>   r?   r@   ©rA   é   é   rB   r?   r@   rj   r   rD   rE   rF   r   r   r   Útest_simple_rectangular_integerZ   re   z-TestMMIOArray.test_simple_rectangular_integerc                 C   s"   |   ddgddgddggd¡ d S )Nr>   r?   ç      @rA   ri   rj   )r@   r?   rj   r   ÚrealrD   ©r:   r)   r   r   r   Útest_simple_rectangular_float_   ó   ÿz+TestMMIOArray.test_simple_rectangular_floatc                 C   ó   |   ddgddggd¡ d S )Nr>   r?   r@   ç      @©r?   r?   rA   r   rm   rD   rn   r)   r   r   r   Útest_simple_floatc   ó   ÿzTestMMIOArray.test_simple_floatc                 C   rq   )Nr>   r?   r@   ù              @)r?   r?   rA   r   ÚcomplexrD   rn   r)   r   r   r   Útest_simple_complexg   ru   z!TestMMIOArray.test_simple_complexc              	   C   s0   |   tddgddgg|d�dddd|df¡ d S )Nr>   r?   rA   rB   r   Ú	symmetricrE   rF   r   r   r   Útest_simple_symmetric_integerk   re   z+TestMMIOArray.test_simple_symmetric_integerc                 C   s   |   ddgddggd¡ d S )Nr   r?   éþÿÿÿ)r?   r?   rA   r   r   úskew-symmetric)r<   r)   r   r   r   Ú"test_simple_skew_symmetric_integerp   ru   z0TestMMIOArray.test_simple_skew_symmetric_integerc                 C   s"   |   tddgddggdƒd¡ d S )Nr   r?   ç       Àg        Úf)r?   r?   rA   r   rm   r|   )r:   r   r)   r   r   r   Ú test_simple_skew_symmetric_floatt   rp   z.TestMMIOArray.test_simple_skew_symmetric_floatc                 C   rq   )Nr>   ù       @      @ù       @      ÀrA   )r?   r?   rA   r   rw   Ú	hermitianrn   r)   r   r   r   Útest_simple_hermitian_complexx   ru   z+TestMMIOArray.test_simple_hermitian_complexc                 C   s,   d}t j |¡}|t|ƒ }|  |d¡ d S )N©é   r†   )r†   r†   i�  r   rm   ry   )rT   Úrandomr   r:   ©r*   Úszr7   r   r   r   Útest_random_symmetric_float|   ó   z)TestMMIOArray.test_random_symmetric_floatc                 C   s    d}t j |¡}|  |d¡ d S )N©r†   é   )r†   r�   é,  r   rm   rD   )rT   r‡   r:   rˆ   r   r   r   Útest_random_rectangular_float‚   s   z+TestMMIOArray.test_random_rectangular_floaté
   c                 C   óZ   d}t  |¡ d¡}tjtdd�� tj t 	|¡¡ W d   ƒ d S 1 s&w   Y  d S )Nzè            %%MatrixMarket matrix array real general
              3  3 999
            1.0
            2.0
            3.0
            4.0
            5.0
            6.0
            7.0
            8.0
            9.0
            Úasciiznot of length 2©Úmatch©
ÚtextwrapÚdedentÚencodeÚpytestr
   Ú
ValueErrorrX   rY   r   ÚBytesIO©r*   ÚsÚtextr   r   r   Ú&test_bad_number_of_array_header_fields‡   s
   "ÿz4TestMMIOArray.test_bad_number_of_array_header_fieldsc                 C   ó&   |   tddgddggtjd�d¡ d S )Nr>   r?   r{   éc   rB   rS   )r<   r   rT   Úint32r)   r   r   r   Ú#test_gh13634_non_skew_symmetric_intš   ó   ÿz1TestMMIOArray.test_gh13634_non_skew_symmetric_intc                 C   r    )Nr>   r?   r{   ç     ÀX@rB   rs   )r:   r   rT   Úfloat32r)   r   r   r   Ú%test_gh13634_non_skew_symmetric_floatž   r¤   z3TestMMIOArray.test_gh13634_non_skew_symmetric_floatN) Ú__name__Ú
__module__Ú__qualname__r+   r1   r:   r<   r™   ÚmarkÚthread_unsafeÚparametrizeÚparametrize_argsrH   rM   r^   rb   rd   rf   rk   ro   rt   rx   rz   r}   r€   r„   rŠ   r�   Ú	fail_slowrŸ   r£   r§   r   r   r   r   r   %   sB    





r   c                   @   s  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zej 	d	e
¡d
d„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zej 	d	e
¡dd„ ƒZej 	d	e
¡dd„ ƒZej 	d	e
¡dd„ ƒZdd„ Zdd„ Zdd„ Zej 	d	e
¡d d!„ ƒZd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2S )3ÚTestMMIOSparseCSRc                 C   r   r   r    r)   r   r   r   r+   ¤   r,   zTestMMIOSparseCSR.setup_methodc                 C   r-   r   r.   r)   r   r   r   r1   ¨   r2   z!TestMMIOSparseCSR.teardown_methodc                 C   s@   t | j|ƒ tt| jƒ|ƒ t| jdd�}t| ¡ | ¡ ƒ d S r3   )r   r(   r   r   r   r	   Útoarrayr6   r   r   r   r:   «   ó   zTestMMIOSparseCSR.checkc                 C   s@   t | j|ƒ tt| jƒ|ƒ t| jdd�}t| ¡ | ¡ ƒ d S r3   )r   r(   r   r   r   r±   r6   r   r   r   r<   ±   r²   zTestMMIOSparseCSR.check_exactr=   c              	   C   s4   |   tjjddgddgg|d�dddd|df¡ d S )Nr>   r?   r@   rA   rB   Ú
coordinaterD   ©r<   rX   ÚsparseÚ	csr_arrayrF   r   r   r   rH   ·   ó   ÿz%TestMMIOSparseCSR.test_simple_integerc                 C   ó2   t j tddgddggtjd�¡}|  |d¡ d S )NrI   i  €rK   rL   rB   ©r?   r?   rA   r³   r   rD   )rX   rµ   r¶   r   rT   r¢   r<   r]   r   r   r   rM   ¼   ó   ÿþz$TestMMIOSparseCSR.test_32bit_integerc                 C   sd   t j tddgddggtjd�¡}t d¡jdk r*tt j	j
jkr*ttt| j|ƒ d S |  |d¡ d S )Nì       ìûÿÿÿþÿÿÿ rP   rB   r   rR   r¹   )rX   rµ   r¶   r   rT   rU   rV   rW   r   rY   rZ   r[   r\   r(   r<   r]   r   r   r   r^   Â   s   ÿþz$TestMMIOSparseCSR.test_64bit_integerc                 C   r¸   )NrI   rJ   rK   rL   rB   ©r?   r?   rA   r³   r   rD   )rX   rµ   r¶   r   rT   Úuint32r<   r]   r   r   r   Útest_32bit_unsigned_integerË   rº   z-TestMMIOSparseCSR.test_32bit_unsigned_integerc                 C   s2   t j tddgddggtjd�¡}|  |d¡ d S )Nr»   r_   r`   rB   r½   )rX   rµ   r¶   r   rT   ra   r<   r]   r   r   r   rb   Ñ   rº   z-TestMMIOSparseCSR.test_64bit_unsigned_integerc              	   C   s4   |   tjjddgddgg|d�dddd|df¡ d S ©Nr   r>   rB   r?   r³   rD   r´   rF   r   r   r   rd   ×   r·   z4TestMMIOSparseCSR.test_simple_upper_triangle_integerc              	   C   s4   |   tjjddgddgg|d�dddd|df¡ d S rÀ   r´   rF   r   r   r   rf   Ü   r·   z4TestMMIOSparseCSR.test_simple_lower_triangle_integerc              	   C   s4   |   tjjg d¢g d¢g|d�dddd|df¡ d S )	Nrg   rh   rB   r?   r@   rj   r³   rD   r´   rF   r   r   r   rk   á   r·   z1TestMMIOSparseCSR.test_simple_rectangular_integerc                 C   s*   |   tj ddgddgddgg¡d¡ d S )Nr>   r?   rl   rA   ri   rj   )r@   r?   rj   r³   rm   rD   ©r:   rX   rµ   r¶   r)   r   r   r   ro   æ   ó    ÿz/TestMMIOSparseCSR.test_simple_rectangular_floatc                 C   ó$   |   tj ddgddgg¡d¡ d S )Nr>   r?   r@   rr   ©r?   r?   rA   r³   rm   rD   rÁ   r)   r   r   r   rt   ê   ó   ÿz#TestMMIOSparseCSR.test_simple_floatc                 C   rÃ   )Nr>   r?   r@   rv   )r?   r?   rA   r³   rw   rD   rÁ   r)   r   r   r   rx   î   rÅ   z%TestMMIOSparseCSR.test_simple_complexc              	   C   s4   |   tjjddgddgg|d�dddd|df¡ d S )Nr>   r?   rA   rB   r@   r³   ry   r´   rF   r   r   r   rz   ò   r·   z/TestMMIOSparseCSR.test_simple_symmetric_integerc                 C   s$   |   tj ddgddgg¡d¡ d S )Nr   r?   r{   )r?   r?   r>   r³   r   r|   r´   r)   r   r   r   r}   ÷   rÅ   z4TestMMIOSparseCSR.test_simple_skew_symmetric_integerc                 C   s*   |   tj tddgddggdƒ¡d¡ d S )Nr   r?   r~   r   )r?   r?   r>   r³   rm   r|   )r:   rX   rµ   r¶   r   r)   r   r   r   r€   û   rÂ   z2TestMMIOSparseCSR.test_simple_skew_symmetric_floatc                 C   rÃ   )Nr>   r�   r‚   rA   )r?   r?   r@   r³   rw   rƒ   rÁ   r)   r   r   r   r„   ÿ   rÅ   z/TestMMIOSparseCSR.test_simple_hermitian_complexc                 C   s8   d}t j |¡}|t|ƒ }tj |¡}|  |d¡ d S )Nr…   )r†   r†   éÒ   r³   rm   ry   )rT   r‡   r   rX   rµ   r¶   r:   rˆ   r   r   r   rŠ     s
   z-TestMMIOSparseCSR.test_random_symmetric_floatc                 C   s,   d}t j |¡}tj |¡}|  |d¡ d S )NrŒ   )r†   r�   rŽ   r³   rm   rD   )rT   r‡   rX   rµ   r¶   r:   rˆ   r   r   r   r�   
  r‹   z/TestMMIOSparseCSR.test_random_rectangular_floatc                 C   sÂ   t j ddgddgg¡}t | ¡ ¡}d|| ¡ dk< d}t| j|dd� tt	| jƒ|ƒ t
| jd	d
�}t|| ¡ ƒ t j |¡rCJ ‚t
| jdd
�}t j |¡sRJ ‚t
| jƒ}t j |¡s_J ‚d S )Nr   g      ø?g      @g      @r>   )r?   r?   r@   r³   ÚpatternrD   rÇ   )ÚfieldFr4   T)rX   rµ   r¶   rT   Ú
zeros_liker±   r   r(   r   r   r   r	   Ú
isspmatrix)r*   r7   Úpr8   r9   r   r   r   Útest_simple_pattern  s   
z%TestMMIOSparseCSR.test_simple_patternc                 C   ó.   t jjddgddggtjd�}|  |d¡ d S )Nr>   r?   r{   r¡   rB   r¹   )rX   rµ   r¶   rT   r¢   r<   r]   r   r   r   r£      ó   z5TestMMIOSparseCSR.test_gh13634_non_skew_symmetric_intc                 C   rÍ   )Nr>   r?   r{   r¥   rB   rÄ   )rX   rµ   r¶   rT   r¦   r:   r]   r   r   r   r§   $  rÎ   z7TestMMIOSparseCSR.test_gh13634_non_skew_symmetric_floatN)r¨   r©   rª   r+   r1   r:   r<   r™   r«   r­   r®   rH   rM   r^   r¿   rb   rd   rf   rk   ro   rt   rx   rz   r}   r€   r„   rŠ   r�   rÌ   r£   r§   r   r   r   r   r°   £   s<    
	



r°   z]%%MatrixMarket matrix array integer general
2  2
2147483647
2147483646
2147483647
2147483646
z]%%MatrixMarket matrix coordinate integer symmetric
2  2  2
1  1  2147483647
2  2  2147483646
z…%%MatrixMarket matrix array integer general
2  2
          2147483648
-9223372036854775806
         -2147483648
 9223372036854775807
z‡%%MatrixMarket matrix coordinate integer general
2  2  3
1  1           2147483648
1  2  9223372036854775807
2  2  9223372036854775807
zŒ%%MatrixMarket matrix coordinate integer symmetric
2  2  3
1  1            2147483648
1  2  -9223372036854775807
2  2   9223372036854775807
z‘%%MatrixMarket matrix coordinate integer skew-symmetric
2  2  3
1  1            2147483648
1  2  -9223372036854775807
2  2   9223372036854775807
z�%%MatrixMarket matrix array integer general
2  2
         2147483648
9223372036854775807
         2147483648
9223372036854775808
zq%%MatrixMarket matrix coordinate integer symmetric
2  2  2
1  1            2147483648
2  2  19223372036854775808
c                   @   sd   e Z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d„ Zdd„ ZdS )ÚTestMMIOReadLargeIntegersc                 C   r   r   r    r)   r   r   r   r+   l  r,   z&TestMMIOReadLargeIntegers.setup_methodc                 C   r-   r   r.   r)   r   r   r   r1   p  r2   z)TestMMIOReadLargeIntegers.teardown_methodc           	      C   s¦   t | jdƒ�}| |¡ W d   ƒ n1 sw   Y  tt| jƒ|ƒ |r4t d¡jdk r4tt	j
jjks6|r?ttt| jƒ d S t| jdd�}|sL| ¡ }t||ƒ d S )NÚwr   rR   Fr4   )Úopenr(   Úwriter   r   rT   rV   rW   r   rX   rY   rZ   r[   r\   r   r±   )	r*   Úexampler7   r8   ÚdenseÚover32Úover64r   r9   r   r   r   Ú
check_reads  s   ÿ"ÿz$TestMMIOReadLargeIntegers.check_readc                 C   s4   t ddgddggtjd�}| jt|ddddd� d S )NrI   rJ   rB   rS   TF©rÔ   rÕ   rÖ   )r   rT   rU   r×   Ú_32bit_integer_dense_exampler]   r   r   r   Útest_read_32bit_integer_dense€  ó   ÿÿ
ûz7TestMMIOReadLargeIntegers.test_read_32bit_integer_densec                 C   s4   t ddgddggtjd�}| jt|ddddd� d S )NrI   r   rJ   rB   ©r?   r?   r?   r³   r   ry   FrØ   )r   rT   rU   r×   Ú_32bit_integer_sparse_exampler]   r   r   r   Útest_read_32bit_integer_sparseŠ  rÛ   z8TestMMIOReadLargeIntegers.test_read_32bit_integer_sparsec                 C   s4   t ddgddggtjd�}| jt|ddddd	� d S )
NrN   i   €r¼   rQ   rB   rS   TFrØ   )r   rT   rU   r×   Ú_64bit_integer_dense_exampler]   r   r   r   Útest_read_64bit_integer_dense”  rÛ   z7TestMMIOReadLargeIntegers.test_read_64bit_integer_densec                 C   s4   t ddgddggtjd�}| jt|ddddd� d S )	NrN   rQ   r   rB   )r?   r?   r@   r³   r   rD   FTrØ   )r   rT   rU   r×   Ú%_64bit_integer_sparse_general_exampler]   r   r   r   Ú&test_read_64bit_integer_sparse_generalž  rÛ   z@TestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_generalc                 C   s4   t ddgddggtjd�}| jt|ddddd� d S )	NrN   ìûÿÿÿÿÿÿÿ rQ   rB   )r?   r?   r@   r³   r   ry   FTrØ   )r   rT   rU   r×   Ú'_64bit_integer_sparse_symmetric_exampler]   r   r   r   Ú(test_read_64bit_integer_sparse_symmetric¨  rÛ   zBTestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_symmetricc                 C   s4   t ddgddggtjd�}| jt|ddddd� d S )	NrN   rã   rQ   rB   )r?   r?   r@   r³   r   r|   FTrØ   )r   rT   rU   r×   Ú"_64bit_integer_sparse_skew_exampler]   r   r   r   Ú#test_read_64bit_integer_sparse_skew²  rÛ   z=TestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_skewc                 C   s   | j td ddddd� d S )NrS   TrØ   )r×   Ú _over64bit_integer_dense_exampler)   r   r   r   Ú!test_read_over64bit_integer_dense¼  ó   
ûz;TestMMIOReadLargeIntegers.test_read_over64bit_integer_densec                 C   s   | j td ddddd� d S )NrÜ   FTrØ   )r×   Ú!_over64bit_integer_sparse_exampler)   r   r   r   Ú"test_read_over64bit_integer_sparseÄ  rê   z<TestMMIOReadLargeIntegers.test_read_over64bit_integer_sparseN)r¨   r©   rª   r+   r1   r×   rÚ   rÞ   rà   râ   rå   rç   ré   rì   r   r   r   r   rÏ   k  s    





rÏ   a&  %%MatrixMarket matrix coordinate real general
%=================================================================================
%
% This ASCII file represents a sparse MxN matrix with L
% nonzeros in the following Matrix Market format:
%
% +----------------------------------------------+
% |%%MatrixMarket matrix coordinate real general | <--- header line
% |%                                             | <--+
% |% comments                                    |    |-- 0 or more comment lines
% |%                                             | <--+
% |    M  N  L                                   | <--- rows, columns, entries
% |    I1  J1  A(I1, J1)                         | <--+
% |    I2  J2  A(I2, J2)                         |    |
% |    I3  J3  A(I3, J3)                         |    |-- L lines
% |        . . .                                 |    |
% |    IL JL  A(IL, JL)                          | <--+
% +----------------------------------------------+
%
% Indices are 1-based, i.e. A(1,1) is the first element.
%
%=================================================================================
  5  5  8
    1     1   1.000e+00
    2     2   1.050e+01
    3     3   1.500e-02
    1     4   6.000e+00
    4     2   2.505e+02
    4     4  -2.800e+02
    4     5   3.332e+01
    5     5   1.200e+01
a   %%MatrixMarket matrix coordinate complex hermitian
  5  5  7
    1     1     1.0      0
    2     2    10.5      0
    4     2   250.5     22.22
    3     3     1.5e-2   0
    4     4    -2.8e2    0
    5     5    12.       0
    5     4     0       33.32
zÍ%%MatrixMarket matrix coordinate real skew-symmetric
  5  5  7
    1     1     1.0
    2     2    10.5
    4     2   250.5
    3     3     1.5e-2
    4     4    -2.8e2
    5     5    12.
    5     4     0
zÈ%%MatrixMarket matrix coordinate real symmetric
  5  5  7
    1     1     1.0
    2     2    10.5
    4     2   250.5
    3     3     1.5e-2
    4     4    -2.8e2
    5     5    12.
    5     4     8
z‘%%MatrixMarket matrix coordinate pattern symmetric
  5  5  7
    1     1
    2     2
    4     2
    3     3
    4     4
    5     5
    5     4
a  %%MatrixMarket  MATRIX    Coordinate    Real General

   5  5         8

1 1  1.0
2 2       10.5
3 3             1.5e-2
4 4                     -2.8E2
5 5                              12.
     1      4      6
     4      2      250.5
     4      5      33.32

c                   @   s”   e Z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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 )$ÚTestMMIOCoordinatec                 C   r   r   r    r)   r   r   r   r+   3  r,   zTestMMIOCoordinate.setup_methodc                 C   r-   r   r.   r)   r   r   r   r1   7  r2   z"TestMMIOCoordinate.teardown_methodc                 C   sN   t | jdƒ}| |¡ | ¡  tt| jƒ|ƒ t| jdd� ¡ }t||ƒ d S )NrÐ   Fr4   )	rÑ   r(   rÒ   Úcloser   r   r   r±   r	   )r*   rÓ   r7   r8   r   r9   r   r   r   r×   :  s   
zTestMMIOCoordinate.check_readc                 C   ó4   g d¢g d¢g d¢g d¢g d¢g}|   t|d¡ d S ©N)r>   r   r   rj   r   )r   ç      %@r   r   r   ©r   r   ç¸…ëQ¸Ž?r   r   )r   ç     Po@r   éèþÿÿç)\�Âõ¨@@©r   r   r   r   é   ©ri   ri   rR   r³   rm   rD   )r×   Ú_general_exampler]   r   r   r   Útest_read_generalB  ó   üÿz$TestMMIOCoordinate.test_read_generalc                 C   rï   )N©r>   r   r   r   r   )r   rñ   r   y     Po@¸…ëQ86Àr   rò   )r   y     Po@¸…ëQ86@r   rõ   y       €)\�Âõ¨@À)r   r   r   y        )\�Âõ¨@@rø   )ri   ri   é   r³   rw   rƒ   )r×   Ú_hermitian_exampler]   r   r   r   Útest_read_hermitianK  rü   z&TestMMIOCoordinate.test_read_hermitianc                 C   rï   )Nrý   )r   rñ   r   g     PoÀr   rò   )r   rô   r   rõ   r   r÷   )ri   ri   rþ   r³   rm   r|   )r×   Ú_skew_exampler]   r   r   r   Útest_read_skewT  rü   z!TestMMIOCoordinate.test_read_skewc                 C   rï   )Nrý   )r   rñ   r   rô   r   rò   )r   rô   r   rõ   rR   )r   r   r   rR   rø   )ri   ri   rþ   r³   rm   ry   )r×   Ú_symmetric_exampler]   r   r   r   Útest_read_symmetric]  rü   z&TestMMIOCoordinate.test_read_symmetricc                 C   rï   )Nrý   )r   r>   r   r>   r   )r   r   r>   r   r   )r   r>   r   r>   r>   )r   r   r   r>   r>   )ri   ri   rþ   r³   rÇ   ry   )r×   Ú_symmetric_pattern_exampler]   r   r   r   Útest_read_symmetric_patternf  rü   z.TestMMIOCoordinate.test_read_symmetric_patternc                 C   rï   rð   )r×   Ú_empty_lines_exampler]   r   r   r   Útest_read_empty_lineso  rü   z(TestMMIOCoordinate.test_read_empty_linesc                 C   sP   t j d¡}t| j|ƒ tt| jƒdƒ | ¡ }t| jdd� ¡ }t	||ƒ d S )N)r�   r�   )r�   r�   r   r³   rm   ry   Fr4   )
rX   rµ   Ú	coo_arrayr   r(   r   r   r±   r   r	   )r*   r9   r7   r   r   r   Útest_empty_write_readx  s   
ÿz(TestMMIOCoordinate.test_empty_write_readc           
      C   sæ   zdd l }W n
 ty   Y d S w tg d¢ƒ}tg d¢ƒ}tg d¢ƒ}tjj|||ffdd�}t| j|ƒ | j› d�}t| jdƒ�}| 	|d	¡}| 
| ¡ ¡ | ¡  W d   ƒ n1 s]w   Y  t|d
d� ¡ }	t|	| ¡ ƒ d S )Nr   ©r   r   r>   r?   r@   r@   r@   rA   ©r   r@   r>   r?   r>   r@   rA   rA   ©g      ð?g      @rñ   ró   rô   g     €qÀrö   g      (@©ri   ri   ©Úshapez.bz2ÚrbÚwbFr4   )Úbz2ÚImportErrorr   rX   rµ   r	  r   r(   rÑ   ÚBZ2FilerÒ   Úreadrî   r   r±   r	   )
r*   r  ÚIÚJÚVr9   Úfn_bzip2Úf_inÚf_outr7   r   r   r   Útest_bzip2_py3„  ó$   ÿ
ýz!TestMMIOCoordinate.test_bzip2_py3c           
      C   sæ   zdd l }W n
 ty   Y d S w tg d¢ƒ}tg d¢ƒ}tg d¢ƒ}tjj|||ffdd�}t| j|ƒ | j› d�}t| jdƒ�}| |d	¡}| 	| 
¡ ¡ | ¡  W d   ƒ n1 s]w   Y  t|d
d� ¡ }	t|	| ¡ ƒ d S )Nr   r  r  r  r  r  z.gzr  r  Fr4   )Úgzipr  r   rX   rµ   r	  r   r(   rÑ   rÒ   r  rî   r   r±   r	   )
r*   r  r  r  r  r9   Úfn_gzipr  r  r7   r   r   r   Útest_gzip_py3œ  r  z TestMMIOCoordinate.test_gzip_py3c                 C   ó€   t g d¢ƒ}t g d¢ƒ}t g d¢ƒ}tjj|||ffdd�}t| j|ƒ tt| jƒdƒ | ¡ }t	| jdd� ¡ }t
||ƒ d S )	Nr  r  r  r  r  rù   Fr4   ©r   rX   rµ   r	  r   r(   r   r   r±   r   r	   ©r*   r  r  r  r9   r7   r   r   r   Útest_real_write_read´  s   
ÿz'TestMMIOCoordinate.test_real_write_readc                 C   r"  )	Nr  r  ©y      ð?      @y      @       @y      %@ÍÌÌÌÌÌì?y¸…ëQ¸Ž?š™™™™™Ày     Po@        y     €qÀ      @y)\�Âõ¨@@š™™™™™@y      (@š™™™™™é?r  r  )ri   ri   rR   r³   rw   rD   Fr4   r#  r$  r   r   r   Útest_complex_write_readÃ  s   
ÿz*TestMMIOCoordinate.test_complex_write_readc                 C   sÖ   |d }|  ¡  g }tg d¢ƒ}tg d¢ƒ}tg d¢ƒ}| tjj|||ffdd�¡ tg d¢ƒ}| tjj|||ffdd�¡ |D ]&}| ¡ }dD ]}	||	d	  }
t|
| |	¡ƒ t	|
d
d� ¡ }t
||ƒ qJqBd S )NÚsparse_formatsr  r  r  r  r  r&  )ÚcsrÚcscÚcooz.mtxFr4   )Úmkdirr   ÚappendrX   rµ   r	  r±   r   Úasformatr   r	   )r*   Útmp_pathr$   Úmatsr  r  r  ÚmatÚexpectedÚfmtÚfnameÚresultr   r   r   Útest_sparse_formatsÓ  s$   üþz&TestMMIOCoordinate.test_sparse_formatsc                 C   sÎ   t gdd„ tdddƒD ƒ }tddƒ}|D ]O}|D ]J}d| d }tj ||f¡}|||d |d f< t| j||d� tjj| jd	d
�}t	|j
|d gƒ t	|j|d gƒ t|jtd| | ƒgƒ qqd S )Nc                 S   s   g | ]}d | ‘qS )r�   r   )Ú.0Úir   r   r   Ú
<listcomp>ì  s    z5TestMMIOCoordinate.test_precision.<locals>.<listcomp>r   iöÿÿÿéÿÿÿÿr>   r�   )Ú	precisionFr4   z%%.%dg)r   ÚrangerX   rµ   Ú	dok_arrayr   r(   rY   r   r   ÚrowÚcolr   ÚdataÚfloat)r*   Útest_valuesÚtest_precisionsÚvaluer;  ÚnÚAr   r   r   Útest_precisionë  s   
õÿz!TestMMIOCoordinate.test_precisionc                 C   r‘   )Na€              %%MatrixMarket matrix coordinate real general
              5  5  8 999
                1     1   1.000e+00
                2     2   1.050e+01
                3     3   1.500e-02
                1     4   6.000e+00
                4     2   2.505e+02
                4     4  -2.800e+02
                4     5   3.332e+01
                5     5   1.200e+01
            r’   znot of length 3r“   r•   rœ   r   r   r   Ú+test_bad_number_of_coordinate_header_fieldsü  s
   "ÿz>TestMMIOCoordinate.test_bad_number_of_coordinate_header_fieldsN)r¨   r©   rª   r+   r1   r×   rû   r   r  r  r  r  r
  r  r!  r%  r'  r6  rG  rH  r   r   r   r   rí   2  s$    						rí   c                   C   s   t t d¡dd� d S )Núg%%MatrixMarket matrix coordinate complex symmetric
 1 1 1
1 1 -2.1846000000000e+02  0.0000000000000e+00Fr4   )r   rY   ÚStringIOr   r   r   r   Útest_gh11389  s   

ýrK  c                 C   sT   g d¢}| d }t |dƒ�}| |¡ W d   ƒ n1 sw   Y  t|dd� d S )N)z/ %%MatrixMarket matrix coordinate real general
z5 5 3
z2 3 1.0
z3 4 2.0
z3 5 3.0
ztest.mtxrÐ   Fr4   )rÑ   Ú
writelinesr   )r/  ÚlinesÚ	test_filer   r   r   r   Útest_gh18123  s   ÿrO  c                 C   s<   t t d¡dd�}| d }| d }t||ƒ t |dd� d S )NrI  Fr4   Útest_mtxztest_mtx.mtx)r   rY   rJ  r   )r/  r7   Útest_writefileÚtest_readfiler   r   r   Útest_mtx_append   s   
ý
rS  c                  C   s¾   zdd l } t| dƒst d¡ W d S W n ty"   t d¡ Y d S w | jdd�� ttjdƒ W d   ƒ n1 s:w   Y  | jddd	�� ttjdƒ W d   ƒ d S 1 sXw   Y  d S )
Nr   Úregisterzthreadpoolctl too oldzno threadpoolctlrA   )Úlimitsr?   rX   )rU  Úuser_api)	ÚthreadpoolctlÚhasattrr™   Úskipr  Úthreadpool_limitsr   ÚfmmÚPARALLELISM)rW  r   r   r   Útest_threadpoolctl+  s    

þ
þÿ"ÿr]  )7Útempfiler   r%   rY   r/   r"   r–   ÚnumpyrT   r   r   r   Únumpy.testingr   r   r   r	   r™   r
   r[   Úscipy.sparserX   Úscipy.io._mmioÚscipy.io._fast_matrix_marketÚ_fast_matrix_marketr[  r®   r«   r¬   Ú
pytestmarkÚfixturerZ   r   r   r°   rÙ   rÝ   rß   rá   rä   ræ   rè   rë   rÏ   rú   rÿ   r  r  r  r  rí   rK  rO  rS  r]  r   r   r   r   Ú<module>   sX    ÿ
	~ 			b" ]