
    _Mhoq                        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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    X/var/www/html/test/jupyter/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 r7   )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r@   r   r-   typevalrH   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rG   rD   rF   r   rI   )r   r@   )r-   rL   rH   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                        rG   r      rD   rD   rF   r   r   rI   )r   npint64intpitemsizer   scipyio_mmioassert_raisesOverflowErrorr+   r@   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 )NrU   rV           rG   )rD   rD   rF   r   r   rI   )r   r[   uint64r@   rd   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   rC   rG   rD   rF   r   rI   rJ   rK   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 rl   rJ   rK   s      r   "test_simple_lower_triangle_integerz0TestMMIOArray.test_simple_lower_triangle_integerU   rn   r   c           	      h    |                      t          g dg dg|          dddd|df           d S )	NrC   rD   rE   rF         rG   rD   rE   ru   r   rI   rJ   rK   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 )NrC   rD         @rF   rt   ru   )rE   rD   ru   r   realrI   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 )NrC   rD   rE         @rD   rD   rF   r   ry   rI   rz   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 )NrC   rD   rE                 @)rD   rD   rF   r   complexrI   rz   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 )NrC   rD   rF   rG   r   	symmetricrJ   rK   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   rD   )rD   rD   rF   r   r   skew-symmetric)r@   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   rD          g        f)rD   rD   rF   r   ry   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 )NrC          @      @       @      rF   )rD   rD   rF   r   r   	hermitianrz   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   ry   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   ry   rI   )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_   r`   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 )NrC   rD   r   c   rG   rZ   )r@   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 )NrC   rD   r        X@rG   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.   r4   r>   r@   r   markthread_unsafeparametrizeparametrize_argsrM   rS   re   rj   rm   rp   rv   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   r/   r   c                 8    t          j        | j                   d S r   r1   r,   s    r   r4   z!TestMMIOSparseCSR.teardown_method   r5   r   c                    t          | j        |           t          t          | j                  |           t	          | j        d          }t          |                                |                                           d S r7   )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 r7   )r   r+   r   r   r   r   r:   s       r   r@   zTestMMIOSparseCSR.check_exact   sf    VDG__d+++47U+++QYY[[!))++.....r   rA   c           	          |                      t          j                            ddgddgg|          dddd|df           d S )NrC   rD   rE   rF   rG   
coordinaterI   r@   r_   sparse	csr_arrayrK   s      r   rM   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 )NrO   i  rQ   rR   rG   rD   rD   rF   r   r   rI   )r_   r   r   r   r[   r   r@   rd   s     r   rS   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        rW   rG   r   rY   r   )r_   r   r   r   r[   r\   r]   r^   r   r`   ra   rb   rc   r+   r@   rd   s     r   re   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 )NrO   rP   rQ   rR   rG   rD   rD   rF   r   r   rI   )r_   r   r   r   r[   uint32r@   rd   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   rg   rh   rG   r   )r_   r   r   r   r[   ri   r@   rd   s     r   rj   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   rC   rG   rD   r   rI   r   rK   s      r   rm   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   rK   s      r   rp   z4TestMMIOSparseCSR.test_simple_lower_triangle_integer   r   r   c           	          |                      t          j                            g dg dg|          dddd|df           d S )	Nrr   rs   rG   rD   rE   ru   r   rI   r   rK   s      r   rv   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 )NrC   rD   rx   rF   rt   ru   )rE   rD   ru   r   ry   rI   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 )NrC   rD   rE   r}   rD   rD   rF   r   ry   rI   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 )NrC   rD   rE   r   )rD   rD   rF   r   r   rI   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 )NrC   rD   rF   rG   rE   r   r   r   rK   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   rD   r   )rD   rD   rC   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   rD   r   r   )rD   rD   rC   r   ry   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 )NrC   r   r   rF   )rD   rD   rE   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   ry   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   ry   rI   )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      @rC   )rD   rD   rE   r   patternrI   r   )fieldFr8   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 )NrC   rD   r   r   rG   r   )r_   r   r   r[   r   r@   rd   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 )NrC   rD   r   r   rG   r   )r_   r   r   r[   r   r>   rd   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.   r4   r>   r@   r   r   r   r   rM   rS   re   r   rj   rm   rp   rv   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  r/   r   c                 8    t          j        | j                   d S r   r1   r,   s    r   r4   z)TestMMIOReadLargeIntegers.teardown_methodp  r5   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   rY   Fr8   )openr+   writer   r   r[   r]   r^   r   r_   r`   ra   rb   rc   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 )NrO   rP   rG   rZ   TFr   r   r   )r   r[   r\   r   _32bit_integer_dense_examplerd   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 )NrO   r   rP   rG   rD   rD   rD   r   r   r   Fr  )r   r[   r\   r   _32bit_integer_sparse_examplerd   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 )
NrU   i   r   rX   rG   rZ   TFr  )r   r[   r\   r   _64bit_integer_dense_examplerd   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 )	NrU   rX   r   rG   )rD   rD   rE   r   r   rI   FTr  )r   r[   r\   r   %_64bit_integer_sparse_general_examplerd   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 )	NrU    rX   rG   )rD   rD   rE   r   r   r   FTr  )r   r[   r\   r   '_64bit_integer_sparse_symmetric_examplerd   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 )	NrU   r  rX   rG   )rD   rD   rE   r   r   r   FTr  )r   r[   r\   r   "_64bit_integer_sparse_skew_examplerd   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 )NrZ   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.   r4   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  r/   r   c                 8    t          j        | j                   d S r   r1   r,   s    r   r4   z"TestMMIOCoordinate.teardown_method7  r5   r   c                 6   t          | j        d          }|                    |           |                                 t	          t          | j                  |           t          | j        d                                          }t          ||           d S )Nr   Fr8   )	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)rC   r   r   ru   r   )r         %@r   r   r   r   r   Q?r   r   )r        Po@r   )\@@r   r   r   r      rt   rt   rY   r   ry   rI   )r   _general_examplerd   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rC   r   r   r   r   )r   r#  r   y     Po@Q86r   r$  )r   y     Po@Q86@r   r'  y       )\@)r   r   r   y        )\@@r*  )rt   rt      r   r   r   )r   _hermitian_examplerd   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 )Nr/  )r   r#  r   g     Por   r$  )r   r&  r   r'  r   r)  )rt   rt   r0  r   ry   r   )r   _skew_examplerd   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 )Nr/  )r   r#  r   r&  r   r$  )r   r&  r   r'  rY   )r   r   r   rY   r*  )rt   rt   r0  r   ry   r   )r   _symmetric_examplerd   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 )Nr/  )r   rC   r   rC   r   )r   r   rC   r   r   )r   rC   r   rC   rC   )r   r   r   rC   rC   )rt   rt   r0  r   r   r   )r   _symmetric_pattern_examplerd   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_examplerd   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   ry   r   Fr8   )
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   rC   rD   rE   rE   rE   rF   r   rE   rC   rD   rC   rE   rF   rF   g      ?g      @r#  r%  r&  g     qr(  g      (@rt   rt   shapez.bz2rbwbFr8   )bz2ImportErrorr   r_   r   r@  r   r+   r   BZ2Filer   readr   r   r   r
   )
r-   rK  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   rC  rD  rE  rF  rG  z.gzrI  rJ  Fr8   )gziprL  r   r_   r   r@  r   r+   r   r   rN  r   r   r   r
   )
r-   rX  rO  rP  rQ  r=   fn_gziprS  rT  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1rV  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 )	NrC  rD  rE  rF  rG  r+  Fr8   r   r_   r   r@  r   r+   r   r   r   r   r
   r-   rO  rP  rQ  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 )	NrC  rD  y      ?      @y      @       @y      %@?yQ?y     Po@        y     q      @y)\@@@y      (@?rF  rG  )rt   rt   rY   r   r   rI   Fr8   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_formatsrC  rD  rE  rF  rG  r`  )csrcsccooz.mtxFr8   )mkdirr   appendr_   r   r@  r   r   asformatr   r
   )r-   tmp_pathr'   matsrO  rP  rQ  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
|z  |z            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   irC   r   )	precisionFr8   z%%.%dg)r   ranger_   r   	dok_arrayr   r+   r`   r   r	   rowcolr   datafloat)r-   test_valuestest_precisionsvaluerx  nAs          r   test_precisionz!TestMMIOCoordinate.test_precision  s0   dAAuQR/@/@AAAA2,,  	O 	OE, O O		MA%L**Aq622#!A#qs(i8888HOODGeO<<"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.   r4   r   r-  r2  r5  r8  r;  r>  rA  rU  rZ  r^  ra  rq  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O O O". . . . .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+00Fr8   )r   r`   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   Fr8   )r   
writelinesr   )rj  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  Fr8   test_mtxztest_mtx.mtx)r   r`   r  r   )rj  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 threadpoolctlrF   )limitsrD   r_   )r  user_api)	threadpoolctlhasattrr   skiprL  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)7tempfiler   r(   r`   r2   r%   r   numpyr[   r   r   r   numpy.testingr   r   r	   r
   r   r   rb   scipy.sparser_   scipy.io._mmioscipy.io._fast_matrix_market_fast_matrix_marketr  r   r   r   
pytestmarkfixturera   r   r   r   r  r  r	  r  r  r  r  r  r   r,  r1  r4  r7  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  	& 	& 	&* * *) ) ) ) )r   