
    YhBr                        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c mZ ddgZej        j        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Z0dZ1 G d  d!          Z2d" Z3d# Z4d$ Z5d% Z6d& Z7d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    j/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/scipy/io/tests/test_mmio.pyimplementationsr      s&    
 ]!F]!Fm#GGG    c                      e Zd Zd Zd Zd Zd Zej        j	        ej        
                    de          d                         Zej        j	        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          t          j                                        | _        t
          j                            | j        d          | _        d S Nsuffixztestfile.mtx	r   str	threadingget_native_idtmpdirospathjoinfnselfs    r   setup_methodzTestMMIOArray.setup_method&   B    S)@)B)B%C%CDDD',,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        d          }t          ||           d S NFspmatrix)r   r,   r   r   r   r
   r.   ainfobs       r   checkzTestMMIOArray.check-   sV    VDG__d+++47U+++!!Q'''''r   c                     t          | j        |           t          t          | j                  |           t	          | j        d          }t          ||           d S r8   )r   r,   r   r   r   r;   s       r   check_exactzTestMMIOArray.check_exact3   sV    VDG__d+++47U+++Qr   typeval, dtypec           	      h    |                      t          ddgddgg|          dddd|df           d S )N            dtyper   generalrA   r   r.   typevalrI   s      r   test_simple_integerz!TestMMIOArray.test_simple_integer9   sW     	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rH   rE   rG   r   rJ   )r   rA   )r.   rM   rI   r<   s       r   test_32bit_integerz TestMMIOArray.test_32bit_integer?   sN     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                        rH   r      rE   rE   rG   r   r   rJ   )r   npint64intpitemsizer   scipyio_mmioassert_raisesOverflowErrorr,   rA   r.   r<   s     r   test_64bit_integerz TestMMIOArray.test_64bit_integerE   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 )NrV   rW           rH   )rE   rE   rG   r   r   rJ   )r   r\   uint64rA   re   s     r   test_64bit_unsigned_integerz)TestMMIOArray.test_64bit_unsigned_integerL   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   rD   rH   rE   rG   r   rJ   rK   rL   s      r   "test_simple_upper_triangle_integerz0TestMMIOArray.test_simple_upper_triangle_integerP   U    AA/u===Q7GY?	A 	A 	A 	A 	Ar   c           	      h    |                      t          ddgddgg|          dddd|df           d S rm   rK   rL   s      r   "test_simple_lower_triangle_integerz0TestMMIOArray.test_simple_lower_triangle_integerU   ro   r   c           	      h    |                      t          g dg dg|          dddd|df           d S )	NrD   rE   rF   rG         rH   rE   rF   rv   r   rJ   rK   rL   s      r   test_simple_rectangular_integerz-TestMMIOArray.test_simple_rectangular_integerZ   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 )NrD   rE         @rG   ru   rv   )rF   rE   rv   r   realrJ   r?   r-   s    r   test_simple_rectangular_floatz+TestMMIOArray.test_simple_rectangular_float_   s:    

QFS!Hq!f-8	: 	: 	: 	: 	:r   c                 >    |                      ddgddggd           d S )NrD   rE   rF         @rE   rE   rG   r   rz   rJ   r{   r-   s    r   test_simple_floatzTestMMIOArray.test_simple_floatc   s4    

QFQH%8	: 	: 	: 	: 	:r   c                 >    |                      ddgddggd           d S )NrD   rE   rF                 @)rE   rE   rG   r   complexrJ   r{   r-   s    r   test_simple_complexz!TestMMIOArray.test_simple_complexg   s4    

QFQG$;	= 	= 	= 	= 	=r   c           	      h    |                      t          ddgddgg|          dddd|df           d S )NrD   rE   rG   rH   r   	symmetricrK   rL   s      r   test_simple_symmetric_integerz+TestMMIOArray.test_simple_symmetric_integerk   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   rE   )rE   rE   rG   r   r   skew-symmetric)rA   r-   s    r   "test_simple_skew_symmetric_integerz0TestMMIOArray.test_simple_skew_symmetric_integerp   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   rE          g        f)rE   rE   rG   r   rz   r   )r?   r   r-   s    r    test_simple_skew_symmetric_floatz.TestMMIOArray.test_simple_skew_symmetric_floatt   sC    

51a&4+.44?	A 	A 	A 	A 	Ar   c                 >    |                      ddgddggd           d S )NrD          @      @       @      rG   )rE   rE   rG   r   r   	hermitianr{   r-   s    r   test_simple_hermitian_complexz+TestMMIOArray.test_simple_hermitian_complexx   s4    

QIay)=	? 	? 	? 	? 	?r   c                     d}t           j                            |          }|t          |          z   }|                     |d           d S )N   r   )r   r   i  r   rz   r   )r\   randomr   r?   r.   szr<   s      r   test_random_symmetric_floatz)TestMMIOArray.test_random_symmetric_float|   sG    IR  	!

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

1?@@@@@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 )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   
ValueErrorr`   ra   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 )NrD   rE   r   c   rH   r[   )rA   r   r\   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 )NrD   rE   r        X@rH   r   )r?   r   r\   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/   r5   r?   rA   r   markthread_unsafeparametrizeparametrize_argsrN   rT   rf   rk   rn   rq   rw   r|   r   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
 [2. . .$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          t          j                                        | _        t
          j                            | j        d          | _        d S r!   r$   r-   s    r   r/   zTestMMIOSparseCSR.setup_method   r0   r   c                 8    t          j        | j                   d S r   r2   r-   s    r   r5   z!TestMMIOSparseCSR.teardown_method   r6   r   c                    t          | j        |           t          t          | j                  |           t	          | j        d          }t          |                                |                                           d S r8   )r   r,   r   r   r   r
   toarrayr;   s       r   r?   zTestMMIOSparseCSR.check   sf    VDG__d+++47U+++!!))++qyy{{;;;;;r   c                    t          | j        |           t          t          | j                  |           t	          | j        d          }t          |                                |                                           d S r8   )r   r,   r   r   r   r   r;   s       r   rA   zTestMMIOSparseCSR.check_exact   sf    VDG__d+++47U+++QYY[[!))++.....r   rB   c           	          |                      t          j                            ddgddgg|          dddd|df           d S )NrD   rE   rF   rG   rH   
coordinaterJ   rA   r`   sparse	csr_arrayrL   s      r   rN   z%TestMMIOSparseCSR.test_simple_integer   ]    //!Q!Q0@/NNQ<)D	F 	F 	F 	F 	Fr   c                     t           j                            t          ddgddggt          j                            }|                     |d           d S )NrP   i  rR   rS   rH   rE   rE   rG   r   r   rJ   )r`   r   r   r   r\   r   rA   re   s     r   rT   z$TestMMIOSparseCSR.test_32bit_integer   sb    L""57H*=+2G*<*>/1x$9 $9 $9 : : 	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        rX   rH   r   rZ   r   )r`   r   r   r   r\   r]   r^   r_   r   ra   rb   rc   rd   r,   rA   re   s     r   rf   z$TestMMIOSparseCSR.test_64bit_integer   s    L""57G*<+3W*=*?/1x$9 $9 $9 : : 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 )NrP   rQ   rR   rS   rH   rE   rE   rG   r   r   rJ   )r`   r   r   r   r\   uint32rA   re   s     r   test_32bit_unsigned_integerz-TestMMIOSparseCSR.test_32bit_unsigned_integer   b    L""57G*<+2G*<*>/1y$: $: $: ; ; 	RSSSSSr   c                     t           j                            t          ddgddggt          j                            }|                     |d           d S )Nr   rh   ri   rH   r   )r`   r   r   r   r\   rj   rA   re   s     r   rk   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   rD   rH   rE   r   rJ   r   rL   s      r   rn   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   rL   s      r   rq   z4TestMMIOSparseCSR.test_simple_lower_triangle_integer   r   r   c           	          |                      t          j                            g dg dg|          dddd|df           d S )	Nrs   rt   rH   rE   rF   rv   r   rJ   r   rL   s      r   rw   z1TestMMIOSparseCSR.test_simple_rectangular_integer   s]    //III0Fe/TTQ<)D	F 	F 	F 	F 	Fr   c                 ~    |                      t          j                            ddgddgddgg          d           d S )NrD   rE   ry   rG   ru   rv   )rF   rE   rv   r   rz   rJ   r?   r`   r   r   r-   s    r   r|   z/TestMMIOSparseCSR.test_simple_rectangular_float   sJ    

5<))Aq6C8aV*DEE=	? 	? 	? 	? 	?r   c                 x    |                      t          j                            ddgddgg          d           d S )NrD   rE   rF   r~   rE   rE   rG   r   rz   rJ   r   r-   s    r   r   z#TestMMIOSparseCSR.test_simple_float   sD    

5<))Aq6As8*<===	? 	? 	? 	? 	?r   c                 x    |                      t          j                            ddgddgg          d           d S )NrD   rE   rF   r   )rE   rE   rG   r   r   rJ   r   r-   s    r   r   z%TestMMIOSparseCSR.test_simple_complex   sI    

5<))Aq6Ar7*;<<@	B 	B 	B 	B 	Br   c           	          |                      t          j                            ddgddgg|          dddd|df           d S )NrD   rE   rG   rH   rF   r   r   r   rL   s      r   r   z/TestMMIOSparseCSR.test_simple_symmetric_integer   s]    //!Q!Q0@/NNQ<+F	H 	H 	H 	H 	Hr   c                 x    |                      t          j                            ddgddgg          d           d S )Nr   rE   r   )rE   rE   rD   r   r   r   r   r-   s    r   r   z4TestMMIOSparseCSR.test_simple_skew_symmetric_integer   sK    //!Q"a0ABBM	O 	O 	O 	O 	Or   c           	          |                      t          j                            t	          ddgddggd                    d           d S )Nr   rE   r   r   )rE   rE   rD   r   rz   r   )r?   r`   r   r   r   r-   s    r   r   z2TestMMIOSparseCSR.test_simple_skew_symmetric_float   sS    

5<))%!Q$0CS*I*IJJD	F 	F 	F 	F 	Fr   c                 x    |                      t          j                            ddgddgg          d           d S )NrD   r   r   rG   )rE   rE   rF   r   r   r   r   r-   s    r   r   z/TestMMIOSparseCSR.test_simple_hermitian_complex   sI    

5<))At9tQi*@AAB	D 	D 	D 	D 	Dr   c                     d}t           j                            |          }|t          |          z   }t          j                            |          }|                     |d           d S )Nr   )r   r      r   rz   r   )r\   r   r   r`   r   r   r?   r   s      r   r   z-TestMMIOSparseCSR.test_random_symmetric_float  s\    IR  	!L""1%%

1FGGGGGr   c                     d}t           j                            |          }t          j                            |          }|                     |d           d S )Nr   )r   r   r   r   rz   rJ   )r\   r   r`   r   r   r?   r   s      r   r   z/TestMMIOSparseCSR.test_random_rectangular_float
  sL    IR  L""1%%

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        d	
          }t          ||                                           t           j                            |          rJ t          | j        d
          }t           j                            |          sJ t          | j                  }t           j                            |          sJ d S )Nr   g      ?g      @g      @rD   )rE   rE   rF   r   patternrJ   r   )fieldFr9   T)r`   r   r   r\   
zeros_liker   r   r,   r   r   r   r
   
isspmatrix)r.   r<   pr=   r>   s        r   test_simple_patternz%TestMMIOSparseCSR.test_simple_pattern  s,   L""QHsCj#9::M!))++&&!))++/<),,,,VDG__d+++47U+++!!QYY[[111<**1-----47T***|&&q)))))47OO|&&q)))))))r   c                     t           j                            ddgddggt          j                  }|                     |d           d S )NrD   rE   r   r   rH   r   )r`   r   r   r\   r   rA   re   s     r   r   z5TestMMIOSparseCSR.test_gh13634_non_skew_symmetric_int   sH    L""QFRH#5RX"FFIJJJJJr   c                     t           j                            ddgddggt          j                  }|                     |d           d S )NrD   rE   r   r   rH   r   )r`   r   r   r\   r   r?   re   s     r   r   z7TestMMIOSparseCSR.test_gh13634_non_skew_symmetric_float$  sF    L""QFRI#6bj"II

1@AAAAAr   N)r   r   r   r/   r5   r?   rA   r   r   r   r   rN   rT   rf   r   rk   rn   rq   rw   r|   r   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* * * 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          t          j                                        | _        t
          j                            | j        d          | _        d S r!   r$   r-   s    r   r/   z&TestMMIOReadLargeIntegers.setup_methodl  r0   r   c                 8    t          j        | j                   d S r   r2   r-   s    r   r5   z)TestMMIOReadLargeIntegers.teardown_methodp  r6   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        d          }|s|                                }t          ||           d S )Nwr   rZ   Fr9   )openr,   writer   r   r\   r^   r_   r   r`   ra   rb   rc   rd   r   r   )	r.   exampler<   r=   denseover32over64r   r>   s	            r   
check_readz$TestMMIOReadLargeIntegers.check_reads  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 )NrP   rQ   rH   r[   TFr   r   r   )r   r\   r]   r   _32bit_integer_dense_examplere   s     r   test_read_32bit_integer_densez7TestMMIOReadLargeIntegers.test_read_32bit_integer_dense  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 )NrP   r   rQ   rH   rE   rE   rE   r   r   r   Fr  )r   r\   r]   r   _32bit_integer_sparse_examplere   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 )
NrV   i   r   rY   rH   r[   TFr  )r   r\   r]   r   _64bit_integer_dense_examplere   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 )	NrV   rY   r   rH   )rE   rE   rF   r   r   rJ   FTr  )r   r\   r]   r   %_64bit_integer_sparse_general_examplere   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 )	NrV    rY   rH   )rE   rE   rF   r   r   r   FTr  )r   r\   r]   r   '_64bit_integer_sparse_symmetric_examplere   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 )	NrV   r  rY   rH   )rE   rE   rF   r   r   r   FTr  )r   r\   r]   r   "_64bit_integer_sparse_skew_examplere   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 )Nr[   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/   r5   r   r  r  r  r  r  r  r  r  r   r   r   r   r   k  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          t          j                                        | _        t
          j                            | j        d          | _        d S r!   r$   r-   s    r   r/   zTestMMIOCoordinate.setup_method3  r0   r   c                 8    t          j        | j                   d S r   r2   r-   s    r   r5   z"TestMMIOCoordinate.teardown_method7  r6   r   c                 6   t          | j        d          }|                    |           |                                 t	          t          | j                  |           t          | j        d                                          }t          ||           d S )Nr   Fr9   )	r   r,   r   closer   r   r   r   r
   )r.   r   r<   r=   r   r>   s         r   r   zTestMMIOCoordinate.check_read:  s    #					VDG__d+++47U+++3355!!Q'''''r   c                 `    g dg dg dg dg dg}|                      t          |d           d S N)rD   r   r   rv   r   )r         %@r   r   r   r   r   Q?r   r   )r        Po@r   )\@@r   r   r   r      ru   ru   rZ   r   rz   rJ   )r   _general_examplere   s     r   test_read_generalz$TestMMIOCoordinate.test_read_generalB  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rD   r   r   r   r   )r   r$  r   y     Po@Q86r   r%  )r   y     Po@Q86@r   r(  y       )\@)r   r   r   y        )\@@r+  )ru   ru      r   r   r   )r   _hermitian_examplere   s     r   test_read_hermitianz&TestMMIOCoordinate.test_read_hermitianK  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 )Nr0  )r   r$  r   g     Por   r%  )r   r'  r   r(  r   r*  )ru   ru   r1  r   rz   r   )r   _skew_examplere   s     r   test_read_skewz!TestMMIOCoordinate.test_read_skewT  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 )Nr0  )r   r$  r   r'  r   r%  )r   r'  r   r(  rZ   )r   r   r   rZ   r+  )ru   ru   r1  r   rz   r   )r   _symmetric_examplere   s     r   test_read_symmetricz&TestMMIOCoordinate.test_read_symmetric]  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 )Nr0  )r   rD   r   rD   r   )r   r   rD   r   r   )r   rD   r   rD   rD   )r   r   r   rD   rD   )ru   ru   r1  r   r   r   )r   _symmetric_pattern_examplere   s     r   test_read_symmetric_patternz.TestMMIOCoordinate.test_read_symmetric_patternf  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_examplere   s     r   test_read_empty_linesz(TestMMIOCoordinate.test_read_empty_lineso  sc    __'''	
 	,aB	D 	D 	D 	D 	Dr   c                 J   t           j                            d          }t          | j        |           t          t          | j                  d           |                                }t          | j        d                                          }t          ||           d S )N)r   r   )r   r   r   r   rz   r   Fr9   )
r`   r   	coo_arrayr   r,   r   r   r   r   r
   )r.   r>   r<   s      r   test_empty_write_readz(TestMMIOCoordinate.test_empty_write_readx  s     L""8,,VDG__C	E 	E 	EIIKK47U+++3355!!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        |           | j         d}t          | j        d          5 }|	                    |d	          }|
                    |                                           |                                 d d d            n# 1 swxY w Y   t          |d
                                          }	t          |	|                                           d S )Nr   r   r   rD   rE   rF   rF   rF   rG   r   rF   rD   rE   rD   rF   rG   rG   g      ?g      @r$  r&  r'  g     qr)  g      (@ru   ru   shapez.bz2rbwbFr9   )bz2ImportErrorr   r`   r   rA  r   r,   r   BZ2Filer   readr!  r   r   r
   )
r.   rL  IJVr>   fn_bzip2f_inf_outr<   s
             r   test_bzip2_py3z!TestMMIOCoordinate.test_bzip2_py3  s   	JJJJ 	 	 	FF	***++***++EEEFFL""A1v;f"==g###$'4   	DKK$//EKK		$$$KKMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 8e,,,4466!!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        |           | j         d}t          | j        d          5 }|                    |d	          }|	                    |
                                           |                                 d d d            n# 1 swxY w Y   t          |d
                                          }	t          |	|                                           d S )Nr   rD  rE  rF  rG  rH  z.gzrJ  rK  Fr9   )gziprM  r   r`   r   rA  r   r,   r   r   rO  r!  r   r   r
   )
r.   rY  rP  rQ  rR  r>   fn_gziprT  rU  r<   s
             r   test_gzip_py3z TestMMIOCoordinate.test_gzip_py3  s   	KKKK 	 	 	FF	***++***++EEEFFL""A1v;f"==W///$'4   	DIIgt,,EKK		$$$KKMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 7U+++3355!!QYY[[11111rW  c                    t          g d          }t          g d          }t          g d          }t          j                            |||ffd          }t	          | j        |           t          t          | j                  d           |                                }t          | j        d                                          }t          ||           d S )	NrD  rE  rF  rG  rH  r,  Fr9   r   r`   r   rA  r   r,   r   r   r   r   r
   r.   rP  rQ  rR  r>   r<   s         r   test_real_write_readz'TestMMIOCoordinate.test_real_write_read  s    ***++***++EEEFFL""A1v;f"==VDG__?	A 	A 	AIIKK47U+++3355!!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        d                                          }t          ||           d S )	NrD  rE  y      ?      @y      @       @y      %@?yQ?y     Po@        y     q      @y)\@@@y      (@?rG  rH  )ru   ru   rZ   r   r   rJ   Fr9   r]  r^  s         r   test_complex_write_readz*TestMMIOCoordinate.test_complex_write_read  s    ***++***++ H H H I I L""A1v;f"==VDG__B	D 	D 	DIIKK47U+++3355!!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 ]y}|                                }dD ]`}	||	d	z   z  }
t          |
|                    |	                     t          |
d
                                          }t          ||           azd S )Nsparse_formatsrD  rE  rF  rG  rH  ra  )csrcsccooz.mtxFr9   )mkdirr   appendr`   r   rA  r   r   asformatr   r
   )r.   tmp_pathr(   matsrP  rQ  rR  matexpectedfmtfnameresults               r   test_sparse_formatsz&TestMMIOCoordinate.test_sparse_formats  sq   ,,***++***++EEEFFEL**A1v;f*EEFFF H H H I IEL**A1v;f*EEFFF 	< 	<C{{}}H, < <#,/s||C00111666>>@@)&(;;;;	<	< 	<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        d	          }t          |j
        |dz
  g           t          |j        |dz
  g           t          |j        t          |d
| d          g           ьd S )Nc                     g | ]}d |z  S )r   r   ).0is     r   
<listcomp>z5TestMMIOCoordinate.test_precision.<locals>.<listcomp>  s    AAA!b1gAAAr   r   irD   r   )	precisionFr9   .g)r   ranger`   r   	dok_arrayr   r,   ra   r   r	   rowcolr   datafloat)r.   test_valuestest_precisionsvaluery  nAs          r   test_precisionz!TestMMIOCoordinate.test_precision  s7   dAAuQR/@/@AAAA2,,  	K 	KE, K K		MA%L**Aq622#!A#qs(i8888HOODGeO<<"151Q3%000"151Q3%000%/G)/G/G/G/G)H)H(IJJJJK	K 	K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/   r5   r   r.  r3  r6  r9  r<  r?  rB  rV  r[  r_  rb  rr  r  r  r   r   r   r  r  2  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K K K". . . . .r   r  c                  L    t          t          j        d          d           d S )Ng%%MatrixMarket matrix coordinate complex symmetric
 1 1 1
1 1 -2.1846000000000e+02  0.0000000000000e+00Fr9   )r   ra   StringIOr   r   r   test_gh11389r    s>    
2; G H H      r   c                     g d}| dz  }t          |d          5 }|                    |           d d d            n# 1 swxY w Y   t          |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   Fr9   )r   
writelinesr   )rk  lines	test_filer   s       r   test_gh18123r    s      E
 :%I	i		 	U              
9u%%%%%%s   <A A c                     t          t          j        d          d          }| dz  }| dz  }t          ||           t          |d           d S )Nr  Fr9   test_mtxztest_mtx.mtx)r   ra   r  r   )rk  r<   test_writefiletest_readfiles       r   test_mtx_appendr     sp    r{ K L L 	 	 	A 
*N.MNA
=5))))))r   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 threadpoolctlrG   )limitsrE   r`   )r  user_api)	threadpoolctlhasattrr   skiprM  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c                      t          t          t          j                                        } t          j                            | d          }t          t          t          |           d S )Nr"   znot_exist_test_file.mtx)
r   r%   r&   r'   r)   r*   r+   rc   FileNotFoundErrorr   )r(   wrong_fns     r   test_gh21999_file_not_existr  <  sR    C	 7 9 9::;;;Fw||F$=>>H#VX66666r   )8tempfiler   r)   ra   r3   r&   r   numpyr\   r   r   r   numpy.testingr   r   r	   r
   r   r   rc   scipy.sparser`   scipy.io._mmioscipy.io._fast_matrix_market_fast_matrix_marketr  r   r   r   
pytestmarkfixturerb   r   r   r   r  r  r
  r  r  r  r  r  r   r-  r2  r5  r8  r;  r>  r  r  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${: {: {: {: {: {: {: {:|CB CB CB CB CB CB CB CBL  !   ) %+ '& "$  % !_% _% _% _% _% _% _% _%D  D
 

 
  "Y. Y. Y. Y. Y. Y. Y. Y.x  	& 	& 	&* * *) ) )"7 7 7 7 7r   