
    ЏkhBr                        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j6                  j8                  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& Z7y)'    )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                     | j                   j                  a| j                   j                  a| j                   j                  ay N)parammminfommreadmmwrite)requests    T/var/www/teggl/fontify/venv/lib/python3.12/site-packages/scipy/io/tests/test_mmio.pyimplementationsr      s1    
 ]]!!F]]!!Fmm##G    c                      e Zd Zd Zd Zd Zd Zej                  j                  ej                  j                  de      d               Zej                  j                  ej                  j                  de      d               Zd Zd	 Zej                  j                  de      d
        Zej                  j                  de      d        Zej                  j                  de      d        Zd Zd Zd Zej                  j                  de      d        Zd Zd Zd Zd Zd Zej                  j9                  d      d        Zd Zd Zy)TestMMIOArrayc                     t        t        t        j                                     | _        t
        j                  j                  | j                  d      | _        y Nsuffixztestfile.mtx	r   str	threadingget_native_idtmpdirospathjoinfnselfs    r   setup_methodzTestMMIOArray.setup_method&   6    S)@)@)B%CD'',,t{{N;r   c                 B    t        j                  | j                         y r   shutilrmtreer(   r-   s    r   teardown_methodzTestMMIOArray.teardown_method*       dkk"r   c                     t        | j                  |       t        t        | j                        |       t	        | j                  d      }t        ||       y NFspmatrix)r   r,   r   r   r   r
   r.   ainfobs       r   checkzTestMMIOArray.check-   s<    VDGG_d+477U+!!Q'r   c                     t        | j                  |       t        t        | j                        |       t	        | j                  d      }t        ||       y r8   )r   r,   r   r   r   r;   s       r   check_exactzTestMMIOArray.check_exact3   s<    VDGG_d+477U+Qr   typeval, dtypec           	      V    | j                  t        ddgddgg|      dddd|df       y )N            dtyper   generalrA   r   r.   typevalrI   s      r   test_simple_integerz!TestMMIOArray.test_simple_integer9   s9     	AA/u=Q7GY?	Ar   c           	      Z    t        ddgddgg|      }| j                  |dddd|d	f       y )
NrH   rE   rG   r   rJ   )r   rA   )r.   rM   rI   r<   s       r   test_32bit_integerz TestMMIOArray.test_32bit_integer?   s<     GW%'9:%HQ1gw	BCr   c                 F   t        ddgddggt        j                        }t        j                  d      j                  dk  rLt
        t        j                  j                  j
                  k(  r!t        t        t
        | j                  |       y | j                  |d       y )	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   sn    E5>GW#56bhhGGGAJ!#EHHNN4J4J)J-$''1=Q HIr   c                 j    t        ddgddggt        j                        }| j                  |d       y )NrV   rW           rH   )rE   rE   rG   r   r   rJ   )r   r\   uint64rA   re   s     r   test_64bit_unsigned_integerz)TestMMIOArray.test_64bit_unsigned_integerL   s1    E5>GW#56biiHMNr   c           	      V    | j                  t        ddgddgg|      dddd|df       y Nr   rD   rH   rE   rG   r   rJ   rK   rL   s      r   "test_simple_upper_triangle_integerz0TestMMIOArray.test_simple_upper_triangle_integerP   7    AA/u=Q7GY?	Ar   c           	      V    | j                  t        ddgddgg|      dddd|df       y rm   rK   rL   s      r   "test_simple_lower_triangle_integerz0TestMMIOArray.test_simple_lower_triangle_integerU   ro   r   c           	      V    | j                  t        g dg dg|      dddd|df       y )	NrD   rE   rF   rG         rH   rE   rF   rv   r   rJ   rK   rL   s      r   test_simple_rectangular_integerz-TestMMIOArray.test_simple_rectangular_integerZ   s/    	95UCQ7GY?	Ar   c                 :    | j                  ddgddgddggd       y )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                 4    | j                  ddgddggd       y )NrD   rE   rF         @rE   rE   rG   r   rz   rJ   r{   r-   s    r   test_simple_floatzTestMMIOArray.test_simple_floatc   s     

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

QFQG$;	=r   c           	      V    | j                  t        ddgddgg|      dddd|df       y )NrD   rE   rG   rH   r   	symmetricrK   rL   s      r   test_simple_symmetric_integerz+TestMMIOArray.test_simple_symmetric_integerk   s7    AA/u=Q7G[A	Cr   c                 4    | j                  ddgddggd       y )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r   c                 H    | j                  t        ddgddggd      d       y )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   s(    

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

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

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

1?@r   
   c                    d}t        j                  |      j                  d      }t        j                  t
        d      5  t        j                  j                  t        j                  |             d d d        y # 1 sw Y   y xY w)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   sa     q!((1]]:->? 	.HHOOBJJt,-	. 	. 	.   3A>>Bc                 f    | j                  t        ddgddggt        j                        d       y )NrD   rE   r   c   rH   r[   )rA   r   r\   int32r-   s    r   #test_gh13634_non_skew_symmetric_intz1TestMMIOArray.test_gh13634_non_skew_symmetric_int   s.    AR1BA	Cr   c                 f    | j                  t        ddgddggt        j                        d       y )NrD   rE   r        X@rH   r   )r?   r   r\   float32r-   s    r   %test_gh13634_non_skew_symmetric_floatz3TestMMIOArray.test_gh13634_non_skew_symmetric_float   s+    

51a&2s),BJJ?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 [[[[-/?@D A DJO [[-/?@A AA [[-/?@A AA [[-/?@A AA::= [[-/?@C ACJA?CA
 [[2. .$C:r   r   c                      e Zd Zd Zd Zd Zd Zej                  j                  de
      d        Zd Zd Zd	 Zd
 Zej                  j                  de
      d        Zej                  j                  de
      d        Zej                  j                  de
      d        Zd Zd Zd Zej                  j                  de
      d        Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestMMIOSparseCSRc                     t        t        t        j                                     | _        t
        j                  j                  | j                  d      | _        y r!   r$   r-   s    r   r/   zTestMMIOSparseCSR.setup_method   r0   r   c                 B    t        j                  | j                         y r   r2   r-   s    r   r5   z!TestMMIOSparseCSR.teardown_method   r6   r   c                     t        | j                  |       t        t        | j                        |       t	        | j                  d      }t        |j                         |j                                y r8   )r   r,   r   r   r   r
   toarrayr;   s       r   r?   zTestMMIOSparseCSR.check   sH    VDGG_d+477U+!!))+qyy{;r   c                     t        | j                  |       t        t        | j                        |       t	        | j                  d      }t        |j                         |j                                y r8   )r   r,   r   r   r   r   r;   s       r   rA   zTestMMIOSparseCSR.check_exact   sH    VDGG_d+477U+QYY[!))+.r   rB   c           	      ~    | j                  t        j                  j                  ddgddgg|      dddd|df       y )NrD   rE   rF   rG   rH   
coordinaterJ   rA   r`   sparse	csr_arrayrL   s      r   rN   z%TestMMIOSparseCSR.test_simple_integer   D    //!Q!Q0@/NQ<)D	Fr   c                     t         j                  j                  t        ddgddggt        j
                              }| j                  |d       y )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   sK    LL""57H*=+2G*<*>/1xx$9 : 	IJr   c                    t         j                  j                  t        ddgddggt        j
                              }t	        j                  d      j                  dk  rLt        t         j                  j                  j                  k(  r!t        t        t        | j                  |       y | j                  |d       y )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    LL""57G*<+3W*=*?/1xx$9 : GGAJ!#EHHNN4J4J)J-$''1=Q MNr   c                     t         j                  j                  t        ddgddggt        j
                              }| j                  |d       y )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   K    LL""57G*<+2G*<*>/1yy$: ; 	RSr   c                     t         j                  j                  t        ddgddggt        j
                              }| j                  |d       y )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           	      ~    | j                  t        j                  j                  ddgddgg|      dddd|df       y Nr   rD   rH   rE   r   rJ   r   rL   s      r   rn   z4TestMMIOSparseCSR.test_simple_upper_triangle_integer   r   r   c           	      ~    | j                  t        j                  j                  ddgddgg|      dddd|df       y r   r   rL   s      r   rq   z4TestMMIOSparseCSR.test_simple_lower_triangle_integer   r   r   c           	      ~    | j                  t        j                  j                  g dg dg|      dddd|df       y )	Nrs   rt   rH   rE   rF   rv   r   rJ   r   rL   s      r   rw   z1TestMMIOSparseCSR.test_simple_rectangular_integer   s<    //I0Fe/TQ<)D	Fr   c                 t    | j                  t        j                  j                  ddgddgddgg      d       y )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   s5    

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

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

5<<))Aq6Ar7*;<@	Br   c           	      ~    | j                  t        j                  j                  ddgddgg|      dddd|df       y )NrD   rE   rG   rH   rF   r   r   r   rL   s      r   r   z/TestMMIOSparseCSR.test_simple_symmetric_integer   sD    //!Q!Q0@/NQ<+F	Hr   c                 n    | j                  t        j                  j                  ddgddgg      d       y )Nr   rE   r   )rE   rE   rD   r   r   r   r   r-   s    r   r   z4TestMMIOSparseCSR.test_simple_skew_symmetric_integer   s2    //!Q"a0ABM	Or   c           	          | j                  t        j                  j                  t	        ddgddggd            d       y )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   s7    

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

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

1FGr   c                     d}t         j                  j                  |      }t        j                  j	                  |      }| j                  |d       y )Nr   )r   r   r   r   rz   rJ   )r\   r   r`   r   r   r?   r   s      r   r   z/TestMMIOSparseCSR.test_random_rectangular_float
  s>    IIR LL""1%

1DEr   c                    t         j                  j                  ddgddgg      }t        j                  |j                               }d||j                         dkD  <   d}t        | j                  |d       t        t        | j                        |       t        | j                  d	
      }t        ||j                                t         j                  j                  |      rJ t        | j                  d
      }t         j                  j                  |      sJ t        | j                        }t         j                  j                  |      sJ y )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    LL""QHsCj#9:MM!))+&!))+/<),VDGG_d+477U+!!QYY[1<<**1---477T*||&&q)))477O||&&q)))r   c                     t         j                  j                  ddgddggt        j                        }| j                  |d       y )NrD   rE   r   r   rH   r   )r`   r   r   r\   r   rA   re   s     r   r   z5TestMMIOSparseCSR.test_gh13634_non_skew_symmetric_int   s=    LL""QFRH#5RXX"FIJr   c                     t         j                  j                  ddgddggt        j                        }| j                  |d       y )NrD   rE   r   r   rH   r   )r`   r   r   r\   r   r?   re   s     r   r   z7TestMMIOSparseCSR.test_gh13634_non_skew_symmetric_float$  s;    LL""QFRI#6bjj"I

1@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 AFKOTT [[-/?@F AF [[-/?@F AF [[-/?@F AF??B [[-/?@H AHOFDHF* K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                   N    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y)TestMMIOReadLargeIntegersc                     t        t        t        j                                     | _        t
        j                  j                  | j                  d      | _        y r!   r$   r-   s    r   r/   z&TestMMIOReadLargeIntegers.setup_methodl  r0   r   c                 B    t        j                  | j                         y r   r2   r-   s    r   r5   z)TestMMIOReadLargeIntegers.teardown_methodp  r6   r   c                    t        | j                  d      5 }|j                  |       d d d        t        t	        | j                        |       |rMt        j                  d      j                  dk  r+t        t        j                  j                  j                  k(  s|r t        t        t        | j                         y t        | j                  d      }|s|j                         }t        ||       y # 1 sw Y   xY w)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	VDGG_d+,,q0gAWAW6W-9tww/AIIKA	 	s   C77D c                 |    t        ddgddggt        j                        }| j                  t        |dddd       y )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  sJ    GW%W%'.0hh84@"$$ 	 	&r   c                 |    t        ddgddggt        j                        }| j                  t        |dddd       y )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  sH    GQ<w<!(*25G#$$ 	 	&r   c                 |    t        ddgddggt        j                        }| j                  t        |dddd	       y )
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  sI    E6?g&(/1xx94@"#$ 	 	&r   c                 |    t        ddgddggt        j                        }| j                  t        |dddd       y )	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  sI    E7#w<!(*2=E##$ 	 	&r   c                 |    t        ddgddggt        j                        }| j                  t        |dddd       y )	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  sJ    E8$g&(/1xx9?G##$ 	 	&r   c                 |    t        ddgddggt        j                        }| j                  t        |dddd       y )	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  sJ    E8$W%'.0hh8:L##$ 	 	&r   c                 :    | j                  t        d dddd       y )Nr[   Tr  )r    _over64bit_integer_dense_exampler-   s    r   !test_read_over64bit_integer_densez;TestMMIOReadLargeIntegers.test_read_over64bit_integer_dense  s%    8@"## 	 	%r   c                 :    | j                  t        d dddd       y )Nr  FTr  )r   !_over64bit_integer_sparse_exampler-   s    r   "test_read_over64bit_integer_sparsez<TestMMIOReadLargeIntegers.test_read_over64bit_integer_sparse  s%    9G### 	 	%r   N)r   r   r   r/   r5   r   r  r  r  r  r  r  r  r  r   r   r   r   r   k  s9    <#&&&&&&%%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                   r    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y)TestMMIOCoordinatec                     t        t        t        j                                     | _        t
        j                  j                  | j                  d      | _        y r!   r$   r-   s    r   r/   zTestMMIOCoordinate.setup_method3  r0   r   c                 B    t        j                  | j                         y r   r2   r-   s    r   r5   z"TestMMIOCoordinate.teardown_method7  r6   r   c                    t        | j                  d      }|j                  |       |j                          t	        t        | j                        |       t        | j                  d      j                         }t        ||       y )Nr   Fr9   )	r   r,   r   closer   r   r   r   r
   )r.   r   r<   r=   r   r>   s         r   r   zTestMMIOCoordinate.check_read:  s\    #			VDGG_d+477U+335!!Q'r   c                 T    g dg dg dg dg dg}| j                  t        |d       y 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  s/    '	
 	(!B	Dr   c                 T    g dg dg dg dg dg}| j                  t        |d       y )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  s/    ,2"	$
 	*AG	Ir   c                 T    g dg dg dg dg dg}| j                  t        |d       y )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  s.    $#	
 	qI	Kr   c                 T    g dg dg dg dg dg}| j                  t        |d       y )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]  s/    ##	
 	*AD	Fr   c                 T    g dg dg dg dg dg}| j                  t        |d       y )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r   c                 T    g dg dg dg dg dg}| j                  t        |d       y r#  )r   _empty_lines_examplere   s     r   test_read_empty_linesz(TestMMIOCoordinate.test_read_empty_lineso  s/    '	
 	,aB	Dr   c                 .   t         j                  j                  d      }t        | j                  |       t        t        | j                        d       |j                         }t        | j                  d      j                         }t        ||       y )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  sj     LL""8,VDGG_C	EIIK477U+335!!Q'r   c                 P   	 dd l }t        g d      }t        g d      }t        g d      }t        j                  j                  |||ffd      }t        | j                  |       | j                   d}t        | j                  d      5 }|j                  |d	      }|j                  |j                                |j                          d d d        t        |d
      j                         }	t        |	|j                                y # t        $ r Y y w xY w# 1 sw Y   NxY w)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    	 *+*+EFLL""A1v;f"=ggYd#$''4  	DKK$/EKK		$KKM	
 8e,446!!QYY[1#  			 	   D AD	DDD%c                 P   	 dd l }t        g d      }t        g d      }t        g d      }t        j                  j                  |||ffd      }t        | j                  |       | j                   d}t        | j                  d      5 }|j                  |d	      }|j                  |j                                |j                          d d d        t        |d
      j                         }	t        |	|j                                y # t        $ r Y y w xY w# 1 sw Y   NxY w)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    	 *+*+EFLL""A1v;f"=WWIS/$''4  	DIIgt,EKK		$KKM	
 7U+335!!QYY[1#  			 	rW  c                    t        g d      }t        g d      }t        g d      }t        j                  j                  |||ffd      }t	        | j
                  |       t        t        | j
                        d       |j                         }t        | j
                  d      j                         }t        ||       y )	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FLL""A1v;f"=VDGG_?	AIIK477U+335!!Q'r   c                    t        g d      }t        g d      }t        g d      }t        j                  j                  |||ffd      }t	        | j
                  |       t        t        | j
                        d       |j                         }t        | j
                  d      j                         }t        ||       y )	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 I LL""A1v;f"=VDGG_B	DIIK477U+335!!Q'r   c                 :   |dz  }|j                          g }t        g d      }t        g d      }t        g d      }|j                  t        j                  j                  |||ffd             t        g d      }|j                  t        j                  j                  |||ffd             |D ]c  }|j                         }dD ]L  }	||	d	z   z  }
t        |
|j                  |	             t        |
d
      j                         }t        ||       N e y )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  s   ,,*+*+EFELL**A1v;f*EF H IELL**A1v;f*EF 	<C{{}H, <#,/s||C016>>@)&(;	<	<r   c                 4   t         gt        ddd      D cg c]  }d|z  	 c}z   }t        dd      }|D ]  }|D ]  }d|z  dz   }t        j                  j	                  ||f      }|||dz
  |dz
  f<   t        | j                  ||       t        j                  j                  | j                  d      }t        |j                  |dz
  g       t        |j                  |dz
  g       t        |j                  t        |d	| d
      g         y c c}w )Nr   ir   rD   )	precisionFr9   .g)r   ranger`   r   	dok_arrayr   r,   ra   r   r	   rowcolr   datafloat)r.   itest_valuestest_precisionsvalueru  nAs           r   test_precisionz!TestMMIOCoordinate.test_precision  s	   duQR/@A!b1gAA2,  	KE, K		MA%LL**Aq62#!A#qs(i8HHOODGGeO<"1551Q3%0"1551Q3%0%)A~1F)H(IJK	K Bs   Dc                    d}t        j                  |      j                  d      }t        j                  t
        d      5  t        j                  j                  t        j                  |             d d d        y # 1 sw Y   y xY w)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  sa     q!((1]]:->? 	.HHOOBJJt,-	. 	. 	.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IKFID
(2020(( <0K".r   r  c                  D    t        t        j                  d      d       y )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 r   c                     g d}| dz  }t        |d      5 }|j                  |       d d d        t        |d       y # 1 sw Y   xY w)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    sL    E
 :%I	i	 	U
9u% s	   >Ac                     t        t        j                  d      d      }| dz  }| dz  }t        ||       t        |d       y )Nr  Fr9   test_mtxztest_mtx.mtx)r   ra   r  r   )rk  r<   test_writefiletest_readfiles       r   test_mtx_appendr     sM    r{{ K L 	A 
*N.MNA
=5)r   c                     	 dd l } t        | d      st        j                  d       y 	 | j                  d      5  t        t        j                  d       d d d        | j                  dd	      5  t        t        j                  d       d d d        y # t        $ r t        j                  d       Y y w xY w# 1 sw Y   dxY w# 1 sw Y   y xY w)
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KK/0 2 
	(	(	(	2 )S__a() 
	(	(G	(	D )S__a() )  &') )) )s(   %B B91CB65B69CCc                      t        t        t        j                                     } t        j
                  j                  | d      }t        t        t        |       y )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  <  s<    C	 7 7 9:;Fww||F$=>H#VX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     sQ    	 	     & &J J  *   * * '02  [[&&
 h'<dK$ L${: {:|CB CBL  !   ) %+ '& "$  % !_% _%D  D
 

 
  "Y. Y.x	&*)"7r   