
    Ug m                        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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c mZ ddgZ ej        dej        j        efd	
          d             Z G d d          Z G d de          ZdZdZ dZ!dZ"dZ#dZ$dZ%dZ& G d d          Z'dZ(dZ)dZ*dZ+dZ,dZ- G d  d!          Z.d" Z/d# Z0d$ Z1d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                 N    | j         j        a| j         j        a| j         j        ad S N)parammminfommreadmmwrite)requests    W/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/io/tests/test_mmio.pyimplementationsr      s&    
 ]!F]!Fm#GGG    c                   d   e Zd Zd Zd Zd Zd Zej        	                    de
          d             Zej        	                    de
          d             Zd Zd	 Zej        	                    de
          d
             Zej        	                    de
          d             Zej        	                    de
          d             Zd Zd Zd Zej        	                    de
          d             Zd Zd Zd Zd Zd Zej                            d          d             Zd Zd ZdS )TestMMIOArrayc                     t                      | _        t          j                            | j        d          | _        d S Nztestfile.mtxr   tmpdirospathjoinfnselfs    r   setup_methodzTestMMIOArray.setup_method#   *    ii',,t{N;;r   c                 8    t          j        | j                   d S r   shutilrmtreer#   r(   s    r   teardown_methodzTestMMIOArray.teardown_method'       dk"""""r   c                     t          | j        |           t          t          | j                  |           t	          | j                  }t          ||           d S r   )r   r'   r   r   r   r
   r)   ainfobs       r   checkzTestMMIOArray.check*   sO    VDG__d+++47OO!!Q'''''r   c                     t          | j        |           t          t          | j                  |           t	          | j                  }t          ||           d S r   )r   r'   r   r   r   r3   s       r   check_exactzTestMMIOArray.check_exact0   sO    VDG__d+++47OOQr   typeval, dtypec           	      h    |                      t          ddgddgg|          dddd|df           d S )N            dtyper   generalr9   r   r)   typevalrA   s      r   test_simple_integerz!TestMMIOArray.test_simple_integer6   U    AA/u===Q7GY?	A 	A 	A 	A 	Ar   c           	      l    t          ddgddgg|          }|                     |dddd|d	f           d S )
Nr@   r=   r?   r   rB   )r   r9   )r)   rE   rA   r4   s       r   test_32bit_integerz TestMMIOArray.test_32bit_integer;   sL    GW%'9:%HHHQ1gw	BCCCCCr   c                 2   t          ddgddggt          j                  }t          j        d          j        dk     rBt
          t          j        j        j        k    r#t          t          t
          | j        |           d S |                     |d           d S )	N                        r@   r      r=   r=   r?   r   r   rB   )r   npint64intpitemsizer   scipyio_mmioassert_raisesOverflowErrorr'   r9   r)   r4   s     r   test_64bit_integerz TestMMIOArray.test_64bit_integer@   s    E5>GW#56bhGGGGAJJ!##EHN4J)J)J-$'1=====Q HIIIIIr   c                 t    t          ddgddggt          j                  }|                     |d           d S )NrO   rP           r@   )r=   r=   r?   r   r   rB   )r   rU   uint64r9   r^   s     r   test_64bit_unsigned_integerz)TestMMIOArray.test_64bit_unsigned_integerG   sA    E5>GW#56biHHHMNNNNNr   c           	      h    |                      t          ddgddgg|          dddd|df           d S Nr   r<   r@   r=   r?   r   rB   rC   rD   s      r   "test_simple_upper_triangle_integerz0TestMMIOArray.test_simple_upper_triangle_integerK   rG   r   c           	      h    |                      t          ddgddgg|          dddd|df           d S rf   rC   rD   s      r   "test_simple_lower_triangle_integerz0TestMMIOArray.test_simple_lower_triangle_integerP   rG   r   c           	      h    |                      t          g dg dg|          dddd|df           d S )	Nr<   r=   r>   r?         r@   r=   r>   rn   r   rB   rC   rD   s      r   test_simple_rectangular_integerz-TestMMIOArray.test_simple_rectangular_integerU   sU    			9995UCCCQ7GY?	A 	A 	A 	A 	Ar   c                 D    |                      ddgddgddggd           d S )Nr<   r=         @r?   rm   rn   )r>   r=   rn   r   realrB   r7   r(   s    r   test_simple_rectangular_floatz+TestMMIOArray.test_simple_rectangular_floatZ   s:    

QFS!Hq!f-8	: 	: 	: 	: 	:r   c                 >    |                      ddgddggd           d S )Nr<   r=   r>         @r=   r=   r?   r   rr   rB   rs   r(   s    r   test_simple_floatzTestMMIOArray.test_simple_float^   s4    

QFQH%8	: 	: 	: 	: 	:r   c                 >    |                      ddgddggd           d S )Nr<   r=   r>                 @)r=   r=   r?   r   complexrB   rs   r(   s    r   test_simple_complexz!TestMMIOArray.test_simple_complexb   s4    

QFQG$;	= 	= 	= 	= 	=r   c           	      h    |                      t          ddgddgg|          dddd|df           d S )Nr<   r=   r?   r@   r   	symmetricrC   rD   s      r   test_simple_symmetric_integerz+TestMMIOArray.test_simple_symmetric_integerf   sU    AA/u===Q7G[A	C 	C 	C 	C 	Cr   c                 >    |                      ddgddggd           d S )Nr   r=   )r=   r=   r?   r   r   skew-symmetric)r9   r(   s    r   "test_simple_skew_symmetric_integerz0TestMMIOArray.test_simple_skew_symmetric_integerk   s;    1a&2q'*H	J 	J 	J 	J 	Jr   c                 Z    |                      t          ddgddggd          d           d S )Nr   r=          g        f)r=   r=   r?   r   rr   r   )r7   r   r(   s    r    test_simple_skew_symmetric_floatz.TestMMIOArray.test_simple_skew_symmetric_floato   sC    

51a&4+.44?	A 	A 	A 	A 	Ar   c                 >    |                      ddgddggd           d S )Nr<          @      @       @      r?   )r=   r=   r?   r   r{   	hermitianrs   r(   s    r   test_simple_hermitian_complexz+TestMMIOArray.test_simple_hermitian_complexs   s4    

QIay)=	? 	? 	? 	? 	?r   c                     d}t           j                            |          }|t          |          z   }|                     |d           d S )N   r   )r   r   i  r   rr   r~   )rU   randomr   r7   r)   szr4   s      r   test_random_symmetric_floatz)TestMMIOArray.test_random_symmetric_floatw   sG    IR  	!

1ABBBBBr   c                 t    d}t           j                            |          }|                     |d           d S )Nr      )r   r   ,  r   rr   rB   )rU   r   r7   r   s      r   test_random_rectangular_floatz+TestMMIOArray.test_random_rectangular_float}   s7    IR  

1?@@@@@r   rm   c                 "   d}t          j        |                              d          }t          j        t
          d          5  t          j                            t          j	        |                     d d d            d S # 1 swxY 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   
ValueErrorrY   rZ   r   BytesIOr)   stexts      r   &test_bad_number_of_array_header_fieldsz4TestMMIOArray.test_bad_number_of_array_header_fields   s     q!!((11]:->??? 	. 	.HOOBJt,,---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.   2BBBc                 p    |                      t          ddgddggt          j                  d           d S )Nr<   r=   r   c   r@   rT   )r9   r   rU   int32r(   s    r   #test_gh13634_non_skew_symmetric_intz1TestMMIOArray.test_gh13634_non_skew_symmetric_int   sJ    AR1BBBA	C 	C 	C 	C 	Cr   c                 p    |                      t          ddgddggt          j                  d           d S )Nr<   r=   r        X@r@   rw   )r7   r   rU   float32r(   s    r   %test_gh13634_non_skew_symmetric_floatz3TestMMIOArray.test_gh13634_non_skew_symmetric_float   sC    

51a&2s),BJ???8	: 	: 	: 	: 	:r   N)__name__
__module____qualname__r*   r0   r7   r9   r   markparametrizeparametrize_argsrF   rM   r_   rd   rg   ri   ro   rt   rx   r|   r   r   r   r   r   r   	fail_slowr   r   r    r   r   r   r   "   s}       < < <# # #( ( (   [-/?@@A A A@A [-/?@@D D A@DJ J JO O O [-/?@@A A A@A [-/?@@A A A@A [-/?@@A A A@A: : :: : := = = [-/?@@C C A@CJ J JA A A? ? ?C C CA A A
 [1. . .$C C C: : : : :r   r   c                      e Zd Zd Zd Zd Zd Zej        	                    de
          d             Zd Zd Zd	 Zd
 Zej        	                    de
          d             Zej        	                    de
          d             Zej        	                    de
          d             Zd Zd Zd Zej        	                    de
          d             Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestMMIOSparseCSRc                     t                      | _        t          j                            | j        d          | _        d S r!   r"   r(   s    r   r*   zTestMMIOSparseCSR.setup_method   r+   r   c                 8    t          j        | j                   d S r   r-   r(   s    r   r0   z!TestMMIOSparseCSR.teardown_method   r1   r   c                    t          | j        |           t          t          | j                  |           t	          | j                  }t          |                                |                                           d S r   )r   r'   r   r   r   r
   toarrayr3   s       r   r7   zTestMMIOSparseCSR.check   s_    VDG__d+++47OO!!))++qyy{{;;;;;r   c                    t          | j        |           t          t          | j                  |           t	          | j                  }t          |                                |                                           d S r   )r   r'   r   r   r   r   r3   s       r   r9   zTestMMIOSparseCSR.check_exact   s_    VDG__d+++47OOQYY[[!))++.....r   r:   c           	          |                      t          j                            ddgddgg|          dddd|df           d S )Nr<   r=   r>   r?   r@   
coordinaterB   r9   rY   sparse
csr_matrixrD   s      r   rF   z%TestMMIOSparseCSR.test_simple_integer   ]    001a&1a&1A0OOQ<)D	F 	F 	F 	F 	Fr   c                     t           j                            t          ddgddggt          j                            }|                     |d           d S )NrI   i  rK   rL   r@   r=   r=   r?   r   r   rB   )rY   r   r   r   rU   r   r9   r^   s     r   rM   z$TestMMIOSparseCSR.test_32bit_integer   sb    L##EGX+>,3W+=+?02%: %: %: ; ; 	IJJJJJr   c                 l   t           j                            t          ddgddggt          j                            }t	          j        d          j        dk     rBt          t           j	        j
        j        k    r#t          t          t          | j        |           d S |                     |d           d S )N        rQ   r@   r   rS   r   )rY   r   r   r   rU   rV   rW   rX   r   rZ   r[   r\   r]   r'   r9   r^   s     r   r_   z$TestMMIOSparseCSR.test_64bit_integer   s    L##EGW+=,4g+>+@02%: %: %: ; ; GAJJ!##EHN4J)J)J-$'1=====Q MNNNNNr   c                     t           j                            t          ddgddggt          j                            }|                     |d           d S )NrI   rJ   rK   rL   r@   r=   r=   r?   r   r   rB   )rY   r   r   r   rU   uint32r9   r^   s     r   test_32bit_unsigned_integerz-TestMMIOSparseCSR.test_32bit_unsigned_integer   b    L##EGW+=,3W+=+?02	%; %; %; < < 	RSSSSSr   c                     t           j                            t          ddgddggt          j                            }|                     |d           d S )Nr   ra   rb   r@   r   )rY   r   r   r   rU   rc   r9   r^   s     r   rd   z-TestMMIOSparseCSR.test_64bit_unsigned_integer   r   r   c           	          |                      t          j                            ddgddgg|          dddd|df           d S Nr   r<   r@   r=   r   rB   r   rD   s      r   rg   z4TestMMIOSparseCSR.test_simple_upper_triangle_integer   r   r   c           	          |                      t          j                            ddgddgg|          dddd|df           d S r   r   rD   s      r   ri   z4TestMMIOSparseCSR.test_simple_lower_triangle_integer   r   r   c           	          |                      t          j                            g dg dg|          dddd|df           d S )	Nrk   rl   r@   r=   r>   rn   r   rB   r   rD   s      r   ro   z1TestMMIOSparseCSR.test_simple_rectangular_integer   s]    00)))YYY1Gu0UUQ<)D	F 	F 	F 	F 	Fr   c                 ~    |                      t          j                            ddgddgddgg          d           d S )Nr<   r=   rq   r?   rm   rn   )r>   r=   rn   r   rr   rB   r7   rY   r   r   r(   s    r   rt   z/TestMMIOSparseCSR.test_simple_rectangular_float   sJ    

5<**QFS!Hq!f+EFF=	? 	? 	? 	? 	?r   c                 x    |                      t          j                            ddgddgg          d           d S )Nr<   r=   r>   rv   r=   r=   r?   r   rr   rB   r   r(   s    r   rx   z#TestMMIOSparseCSR.test_simple_float   sD    

5<**QFQH+=>>=	? 	? 	? 	? 	?r   c                 x    |                      t          j                            ddgddgg          d           d S )Nr<   r=   r>   rz   )r=   r=   r?   r   r{   rB   r   r(   s    r   r|   z%TestMMIOSparseCSR.test_simple_complex   sI    

5<**QFQG+<==@	B 	B 	B 	B 	Br   c           	          |                      t          j                            ddgddgg|          dddd|df           d S )Nr<   r=   r?   r@   r>   r   r~   r   rD   s      r   r   z/TestMMIOSparseCSR.test_simple_symmetric_integer   s]    001a&1a&1A0OOQ<+F	H 	H 	H 	H 	Hr   c                 x    |                      t          j                            ddgddgg          d           d S )Nr   r=   r   )r=   r=   r<   r   r   r   r   r(   s    r   r   z4TestMMIOSparseCSR.test_simple_skew_symmetric_integer   sK    001a&2q'1BCCM	O 	O 	O 	O 	Or   c           	          |                      t          j                            t	          ddgddggd                    d           d S )Nr   r=   r   r   )r=   r=   r<   r   rr   r   )r7   rY   r   r   r   r(   s    r   r   z2TestMMIOSparseCSR.test_simple_skew_symmetric_float   sS    

5<**51a&4)1Dc+J+JKKD	F 	F 	F 	F 	Fr   c                 x    |                      t          j                            ddgddgg          d           d S )Nr<   r   r   r?   )r=   r=   r>   r   r{   r   r   r(   s    r   r   z/TestMMIOSparseCSR.test_simple_hermitian_complex   sI    

5<**QIay+ABBB	D 	D 	D 	D 	Dr   c                     d}t           j                            |          }|t          |          z   }t          j                            |          }|                     |d           d S )Nr   )r   r      r   rr   r~   )rU   r   r   rY   r   r   r7   r   s      r   r   z-TestMMIOSparseCSR.test_random_symmetric_float   s\    IR  	!L##A&&

1FGGGGGr   c                     d}t           j                            |          }t          j                            |          }|                     |d           d S )Nr   )r   r   r   r   rr   rB   )rU   r   rY   r   r   r7   r   s      r   r   z/TestMMIOSparseCSR.test_random_rectangular_float  sL    IR  L##A&&

1DEEEEEr   c                    t           j                            ddgddgg          }t          j        |                                          }d||                                dk    <   d}t          | j        |d           t          t          | j                  |           t          | j                  }t          ||                                           d S )	Nr   g      ?g      @g      @r<   )r=   r=   r>   r   patternrB   r   )field)rY   r   r   rU   
zeros_liker   r   r'   r   r   r   r
   )r)   r4   pr5   r6   s        r   test_simple_patternz%TestMMIOSparseCSR.test_simple_pattern  s    L##aXSz$:;;M!))++&&!))++/<),,,,VDG__d+++47OO!!QYY[[11111r   c                     t           j                            ddgddggt          j                  }|                     |d           d S )Nr<   r=   r   r   r@   r   )rY   r   r   rU   r   r9   r^   s     r   r   z5TestMMIOSparseCSR.test_gh13634_non_skew_symmetric_int  sH    L##aVb"X$6bh#GGIJJJJJr   c                     t           j                            ddgddggt          j                  }|                     |d           d S )Nr<   r=   r   r   r@   r   )rY   r   r   rU   r   r7   r^   s     r   r   z7TestMMIOSparseCSR.test_gh13634_non_skew_symmetric_float  sF    L##aVb#Y$7rz#JJ

1@AAAAAr   N)r   r   r   r*   r0   r7   r9   r   r   r   r   rF   rM   r_   r   rd   rg   ri   ro   rt   rx   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s[       < < <# # #< < </ / / [-/?@@F F A@FK K KO O OT T TT T T [-/?@@F F A@F [-/?@@F F A@F [-/?@@F F A@F? ? ?? ? ?B B B [-/?@@H H A@HO O OF F FD D DH H HF F F2 2 2K K KB B B B Br   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                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )TestMMIOReadLargeIntegersc                     t                      | _        t          j                            | j        d          | _        d S r!   r"   r(   s    r   r*   z&TestMMIOReadLargeIntegers.setup_methoda  r+   r   c                 8    t          j        | j                   d S r   r-   r(   s    r   r0   z)TestMMIOReadLargeIntegers.teardown_methode  r1   r   c                    t          | j        d          5 }|                    |           d d d            n# 1 swxY w Y   t          t	          | j                  |           |r<t          j        d          j        dk     rt          t          j
        j        j        k    s|r"t          t          t          | j                   d S t          | j                  }|s|                                }t          ||           d S )Nwr   rS   )openr'   writer   r   rU   rW   rX   r   rY   rZ   r[   r\   r]   r   r   )	r)   exampler4   r5   denseover32over64r   r6   s	            r   
check_readz$TestMMIOReadLargeIntegers.check_readh  s   $'3 	1GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	VDG__d+++ 	,q00gAW6W6W 7X-99999twA  IIKKAs   8<<c                     t          ddgddggt          j                  }|                     t          |dddd           d S )NrI   rJ   r@   rT   TFr   r   r   )r   rU   rV   r   _32bit_integer_dense_exampler^   s     r   test_read_32bit_integer_densez7TestMMIOReadLargeIntegers.test_read_32bit_integer_denseu  sf    GW%W%'.0h8 8 84@"$$ 	 	& 	& 	& 	& 	&r   c                     t          ddgddggt          j                  }|                     t          |dddd           d S )NrI   r   rJ   r@   r=   r=   r=   r   r   r~   Fr   )r   rU   rV   r   _32bit_integer_sparse_exampler^   s     r   test_read_32bit_integer_sparsez8TestMMIOReadLargeIntegers.test_read_32bit_integer_sparse  sd    GQ<w<!(*2 2 25G#$$ 	 	& 	& 	& 	& 	&r   c                     t          ddgddggt          j                  }|                     t          |dddd	           d S )
NrO   i   r   rR   r@   rT   TFr   )r   rU   rV   r   _64bit_integer_dense_exampler^   s     r   test_read_64bit_integer_densez7TestMMIOReadLargeIntegers.test_read_64bit_integer_dense  se    E6?g&(/1x9 9 94@"#$ 	 	& 	& 	& 	& 	&r   c                     t          ddgddggt          j                  }|                     t          |dddd           d S )	NrO   rR   r   r@   )r=   r=   r>   r   r   rB   FTr   )r   rU   rV   r   %_64bit_integer_sparse_general_exampler^   s     r   &test_read_64bit_integer_sparse_generalz@TestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_general  se    E7#w<!(*2 2 2=E##$ 	 	& 	& 	& 	& 	&r   c                     t          ddgddggt          j                  }|                     t          |dddd           d S )	NrO    rR   r@   )r=   r=   r>   r   r   r~   FTr   )r   rU   rV   r   '_64bit_integer_sparse_symmetric_exampler^   s     r   (test_read_64bit_integer_sparse_symmetriczBTestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_symmetric  sf    E8$g&(/1x9 9 9?G##$ 	 	& 	& 	& 	& 	&r   c                     t          ddgddggt          j                  }|                     t          |dddd           d S )	NrO   r  rR   r@   )r=   r=   r>   r   r   r   FTr   )r   rU   rV   r   "_64bit_integer_sparse_skew_exampler^   s     r   #test_read_64bit_integer_sparse_skewz=TestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_skew  sf    E8$W%'.0h8 8 8:L##$ 	 	& 	& 	& 	& 	&r   c                 F    |                      t          d dddd           d S )NrT   Tr   )r    _over64bit_integer_dense_exampler(   s    r   !test_read_over64bit_integer_densez;TestMMIOReadLargeIntegers.test_read_over64bit_integer_dense  s9    8@"## 	 	% 	% 	% 	% 	%r   c                 F    |                      t          d dddd           d S )Nr   FTr   )r   !_over64bit_integer_sparse_exampler(   s    r   "test_read_over64bit_integer_sparsez<TestMMIOReadLargeIntegers.test_read_over64bit_integer_sparse  s9    9G### 	 	% 	% 	% 	% 	%r   N)r   r   r   r*   r0   r   r   r   r   r  r  r
  r  r  r   r   r   r   r   `  s        < < <# # #  & & && & && & && & && & && & &% % %% % % % %r   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                   t    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd ZdS )TestMMIOCoordinatec                     t                      | _        t          j                            | j        d          | _        d S r!   r"   r(   s    r   r*   zTestMMIOCoordinate.setup_method(  r+   r   c                 8    t          j        | j                   d S r   r-   r(   s    r   r0   z"TestMMIOCoordinate.teardown_method,  r1   r   c                 2   t          | j        d          }|                    |           |                                 t	          t          | j                  |           t          | j                                                  }t          ||           d S )Nr   )	r   r'   r   closer   r   r   r   r
   )r)   r   r4   r5   r   r6   s         r   r   zTestMMIOCoordinate.check_read/  sy    #					VDG__d+++47OO##%%!!Q'''''r   c                 `    g dg dg dg dg dg}|                      t          |d           d S N)r<   r   r   rn   r   )r         %@r   r   r   r   r   Q?r   r   )r        Po@r   )\@@r   r   r   r      rm   rm   rS   r   rr   rB   )r   _general_exampler^   s     r   test_read_generalz$TestMMIOCoordinate.test_read_general7  sc    __'''	
 	(!B	D 	D 	D 	D 	Dr   c                 `    g dg dg dg dg dg}|                      t          |d           d S )Nr<   r   r   r   r   )r   r  r   y     Po@Q86r   r  )r   y     Po@Q86@r   r  y       )\@)r   r   r   y        )\@@r   )rm   rm      r   r{   r   )r   _hermitian_exampler^   s     r   test_read_hermitianz&TestMMIOCoordinate.test_read_hermitian@  sc    __,,,222"""	$
 	*AG	I 	I 	I 	I 	Ir   c                 `    g dg dg dg dg dg}|                      t          |d           d S )Nr%  )r   r  r   g     Por   r  )r   r  r   r  r   r  )rm   rm   r&  r   rr   r   )r   _skew_exampler^   s     r   test_read_skewz!TestMMIOCoordinate.test_read_skewI  sb    __$$$###	
 	qI	K 	K 	K 	K 	Kr   c                 `    g dg dg dg dg dg}|                      t          |d           d S )Nr%  )r   r  r   r  r   r  )r   r  r   r  rS   )r   r   r   rS   r   )rm   rm   r&  r   rr   r~   )r   _symmetric_exampler^   s     r   test_read_symmetricz&TestMMIOCoordinate.test_read_symmetricR  sc    __######	
 	*AD	F 	F 	F 	F 	Fr   c                 `    g dg dg dg dg dg}|                      t          |d           d S )Nr%  )r   r<   r   r<   r   )r   r   r<   r   r   )r   r<   r   r<   r<   )r   r   r   r<   r<   )rm   rm   r&  r   r   r~   )r   _symmetric_pattern_exampler^   s     r   test_read_symmetric_patternz.TestMMIOCoordinate.test_read_symmetric_pattern[  s[    __________	
 	2AG	I 	I 	I 	I 	Ir   c                 `    g dg dg dg dg dg}|                      t          |d           d S r  )r   _empty_lines_exampler^   s     r   test_read_empty_linesz(TestMMIOCoordinate.test_read_empty_linesd  sc    __'''	
 	,aB	D 	D 	D 	D 	Dr   c                 F   t           j                            d          }t          | j        |           t          t          | j                  d           |                                }t          | j                                                  }t          ||           d S )N)
   r6  )r6  r6  r   r   rr   r~   )
rY   r   
coo_matrixr   r'   r   r   r   r   r
   )r)   r6   r4   s      r   test_empty_write_readz(TestMMIOCoordinate.test_empty_write_readm  s     L##H--VDG__C	E 	E 	EIIKK47OO##%%!!Q'''''r   c                    	 dd l }n# t          $ r Y d S w xY wt          g d          }t          g d          }t          g d          }t          j                            |||ffd          }t          | j        |           d| j        z  }t          | j        d          5 }|	                    |d	          }|
                    |                                           |                                 d d d            n# 1 swxY w Y   t          |                                          }	t          |	|                                           d S )
Nr   r   r   r<   r=   r>   r>   r>   r?   r   r>   r<   r=   r<   r>   r?   r?   g      ?g      @r  r  r  g     qr  g      (@rm   rm   shapez%s.bz2rbwb)bz2ImportErrorr   rY   r   r7  r   r'   r   BZ2Filer   readr  r   r   r
   )
r)   rB  IJVr6   fn_bzip2f_inf_outr4   s
             r   test_bzip2_py3z!TestMMIOCoordinate.test_bzip2_py3y  s   	JJJJ 	 	 	FF	***++***++EEEFFL##QAKv#>>dg%$'4   	DKK$//EKK		$$$KKMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 8$$&&!!QYY[[11111    
$ADD	Dc                    	 dd l }n# t          $ r Y d S w xY wt          g d          }t          g d          }t          g d          }t          j                            |||ffd          }t          | j        |           d| j        z  }t          | j        d          5 }|                    |d	          }|	                    |
                                           |                                 d d d            n# 1 swxY w Y   t          |                                          }	t          |	|                                           d S )
Nr   r:  r;  r<  r=  r>  z%s.gzr@  rA  )gziprC  r   rY   r   r7  r   r'   r   r   rE  r  r   r   r
   )
r)   rO  rF  rG  rH  r6   fn_gziprJ  rK  r4   s
             r   test_gzip_py3z TestMMIOCoordinate.test_gzip_py3  s   	KKKK 	 	 	FF	***++***++EEEFFL##QAKv#>>DG#$'4   	DIIgt,,EKK		$$$KKMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 7OO##%%!!QYY[[11111rM  c                    t          g d          }t          g d          }t          g d          }t          j                            |||ffd          }t	          | j        |           t          t          | j                  d           |                                }t          | j                                                  }t          ||           d S )Nr:  r;  r<  r=  r>  r!  r   rY   r   r7  r   r'   r   r   r   r   r
   r)   rF  rG  rH  r6   r4   s         r   test_real_write_readz'TestMMIOCoordinate.test_real_write_read  s    ***++***++EEEFFL##QAKv#>>VDG__?	A 	A 	AIIKK47OO##%%!!Q'''''r   c                    t          g d          }t          g d          }t          g d          }t          j                            |||ffd          }t	          | j        |           t          t          | j                  d           |                                }t          | j                                                  }t          ||           d S )Nr:  r;  y      ?      @y      @       @y      %@?yQ?y     Po@        y     q      @y)\@@@y      (@?r=  r>  )rm   rm   rS   r   r{   rB   rS  rT  s         r   test_complex_write_readz*TestMMIOCoordinate.test_complex_write_read  s    ***++***++ H H H I I L##QAKv#>>VDG__B	D 	D 	DIIKK47OO##%%!!Q'''''r   c                    |dz  }|                                  g }t          g d          }t          g d          }t          g d          }|                    t          j                            |||ffd                     t          g d          }|                    t          j                            |||ffd                     |D ]w}|                                }dD ]^}	||	d	z   z  }
t          |
|                    |	                     t          |
                                          }t          ||           _xd S )
Nsparse_formatsr:  r;  r<  r=  r>  rW  )csrcsccooz.mtx)mkdirr   appendrY   r   r7  r   r   asformatr   r
   )r)   tmp_pathr#   matsrF  rG  rH  matexpectedfmtfnameresults               r   test_sparse_formatsz&TestMMIOCoordinate.test_sparse_formats  sj   ,,***++***++EEEFFEL++QAKv+FFGGG H H H I IEL++QAKv+FFGGG 	< 	<C{{}}H, < <#,/s||C00111..00)&(;;;;	<	< 	<r   c           	         t           gd t          ddd          D             z   }t          dd          }|D ]}|D ]}d|z  dz   }t          j                            ||f          }|||dz
  |dz
  f<   t          | j        ||           t          j                            | j                  }t          |j
        |dz
  g           t          |j        |dz
  g           t          |j        t          d|z  |z            g           όd S )	Nc                     g | ]}d |z  S )r6  r   ).0is     r   
<listcomp>z5TestMMIOCoordinate.test_precision.<locals>.<listcomp>  s    AAA!b1gAAAr   r   ir<   r6  )	precisionz%%.%dg)r   rangerY   r   
dok_matrixr   r'   rZ   r   r	   rowcolr   datafloat)r)   test_valuestest_precisionsvaluero  nAs          r   test_precisionz!TestMMIOCoordinate.test_precision  s,   dAAuQR/@/@AAAA2,,  	O 	OE, O O		MA%L++QF33#!A#qs(i8888HOODG,,"151Q3%000"151Q3%000x)/Ce/K)L)L(MNNNNO	O 	Or   c                 "   d}t          j        |                              d          }t          j        t
          d          5  t          j                            t          j	        |                     d d d            d S # 1 swxY w Y   d S )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   s      r   +test_bad_number_of_coordinate_header_fieldsz>TestMMIOCoordinate.test_bad_number_of_coordinate_header_fields  s     q!!((11]:->??? 	. 	.HOOBJt,,---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.r   N)r   r   r   r*   r0   r   r#  r(  r+  r.  r1  r4  r8  rL  rQ  rU  rX  rh  r{  r}  r   r   r   r  r  '  s(       < < <# # #( ( (D D DI I IK K KF F FI I ID D D
( 
( 
(2 2 202 2 20( ( (( ( ( < < <0O O O". . . . .r   r  c                  H    t          t          j        d                     d S )Nzg%%MatrixMarket matrix coordinate complex symmetric
 1 1 1
1 1 -2.1846000000000e+02  0.0000000000000e+00)r   rZ   StringIOr   r   r   test_gh11389r    s9    
2; G H H I I I I Ir   c                     g d}| dz  }t          |d          5 }|                    |           d d d            n# 1 swxY w Y   t          |           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   )r   
writelinesr   )ra  lines	test_filer   s       r   test_gh18123r  	  s      E
 :%I	i		 	U              
9s   <A A c                     	 dd l } t          | d          st          j        d           d S n%# t          $ r t          j        d           Y d S w xY w|                     d          5  t          t          j        d           d d d            n# 1 swxY w Y   |                     dd	          5  t          t          j        d           d d d            d S # 1 swxY w Y   d S )
Nr   registerzthreadpoolctl too oldzno threadpoolctlr?   )limitsr=   rY   )r  user_api)	threadpoolctlhasattrr   skiprC  threadpool_limitsr   fmmPARALLELISM)r  s    r   test_threadpoolctlr    s   }j11 	K/000F	    &''' 
	(	(	(	2	2 ) )S_a((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) 
	(	(G	(	D	D ) )S_a((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s3   (- AA(BBB1CC C)2tempfiler   r$   rZ   r.   r   numpyrU   r   r   r   numpy.testingr   r   r	   r
   r   r   r\   scipy.sparserY   scipy.io._mmioscipy.io._fast_matrix_market_fast_matrix_marketr  r   fixturer[   r   r   r   r   r   r   r  r  r	  r  r  r   r"  r'  r*  r-  r0  r3  r  r  r  r  r   r   r   <module>r     s         				 				       & & & & & & & & & &J J J J J J J J J J J J  * * * * * *         * * * * * * * * * '02 
 h'<dKKK$ $ LK$y: y: y: y: y: y: y: y:x}B }B }B }B }B }B }B }B@  !   ) %+ '& "$  % !_% _% _% _% _% _% _% _%D  D
 

 
  "Y. Y. Y. Y. Y. Y. Y. Y.xI I I	 	 	) ) ) ) )r   