
    (phoq                        S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKJ	r	J
r
Jr  S SKJrJrJrJr  S SKrS SKJr  S SKrS SKrS SKJs  Jr  SS/r\R6                  R8                  r\R<                  " S\R                  R>                  \4S	S
9S 5       r  " S S5      r! " S S\!5      r"Sr#Sr$Sr%Sr&Sr'Sr(Sr)Sr* " S S5      r+Sr,Sr-Sr.Sr/Sr0Sr1 " S  S!5      r2S" r3S# r4S$ r5S% r6g)&    )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                     U R                   R                  qU R                   R                  qU R                   R                  qg N)parammminfommreadmmwrite)requests    K/var/www/html/venv/lib/python3.13/site-packages/scipy/io/tests/test_mmio.pyimplementationsr      s1    
 ]]!!F]]!!Fmm##G    c                      \ rS rSrS rS rS rS r\R                  R                  \R                  R                  S\5      S 5       5       r\R                  R                  \R                  R                  S\5      S 5       5       rS	 rS
 r\R                  R                  S\5      S 5       r\R                  R                  S\5      S 5       r\R                  R                  S\5      S 5       rS rS rS r\R                  R                  S\5      S 5       rS rS rS rS rS r\R                  R;                  S5      S 5       rS rS r Sr!g)TestMMIOArray%   c                     [        [        [        R                  " 5       5      S9U l        [
        R                  R                  U R                  S5      U l        g N)suffixztestfile.mtx	r   str	threadingget_native_idtmpdirospathjoinfnselfs    r   setup_methodTestMMIOArray.setup_method&   6    S)@)@)B%CD'',,t{{N;r   c                 D    [         R                  " U R                  5        g r   shutilrmtreer(   r-   s    r   teardown_methodTestMMIOArray.teardown_method*       dkk"r   c                     [        U R                  U5        [        [        U R                  5      U5        [	        U R                  SS9n[        X5        g NFspmatrix)r   r,   r   r   r   r
   r.   ainfobs       r   checkTestMMIOArray.check-   s:    VDGG_d+477U+!!'r   c                     [        U R                  U5        [        [        U R                  5      U5        [	        U R                  SS9n[        X5        g r:   )r   r,   r   r   r   r=   s       r   check_exactTestMMIOArray.check_exact3   s:    VDGG_d+477U+Qr   typeval, dtypec           	      P    U R                  [        SS/SS//US9SSSSUS45        g )N            dtyper   generalrD   r   r.   typevalrM   s      r   test_simple_integer!TestMMIOArray.test_simple_integer9   s9     	AA/u=Q7GY?	Ar   c           	      T    [        SS/SS//US9nU R                  USSSSUS	45        g )
NrL   rI   rK   r   rN   )r   rD   )r.   rQ   rM   r>   s       r   test_32bit_integer TestMMIOArray.test_32bit_integer?   s<     GW%'9:%HQ1gw	BCr   c                 F   [        SS/SS//[        R                  S9n[        R                  " S5      R                  S:  aM  [
        [        R                  R                  R
                  :X  a!  [        [        [
        U R                  U5        g U R                  US5        g )	N                        rL   r      rI   rI   rK   r   r   rN   )r   npint64intpitemsizer   scipyio_mmioassert_raisesOverflowErrorr,   rD   r.   r>   s     r   test_64bit_integer TestMMIOArray.test_64bit_integerE   sn    E5>GW#56bhhGGGAJ!#EHHNN4J4J)J-$''1=Q HIr   c                 d    [        SS/SS//[        R                  S9nU R                  US5        g )Nr\   r]           rL   )rI   rI   rK   r   r   rN   )r   rb   uint64rD   rk   s     r   test_64bit_unsigned_integer)TestMMIOArray.test_64bit_unsigned_integerL   s1    E5>GW#56biiHMNr   c           	      P    U R                  [        SS/SS//US9SSSSUS45        g Nr   rH   rL   rI   rK   r   rN   rO   rP   s      r   "test_simple_upper_triangle_integer0TestMMIOArray.test_simple_upper_triangle_integerP   7    AA/u=Q7GY?	Ar   c           	      P    U R                  [        SS/SS//US9SSSSUS45        g ru   rO   rP   s      r   "test_simple_lower_triangle_integer0TestMMIOArray.test_simple_lower_triangle_integerU   rx   r   c           	      P    U R                  [        / SQ/ SQ/US9SSSSUS45        g )	NrH   rI   rJ   rK         rL   rI   rJ   r   r   rN   rO   rP   s      r   test_simple_rectangular_integer-TestMMIOArray.test_simple_rectangular_integerZ   s/    	95UCQ7GY?	Ar   c                 :    U R                  SS/SS/SS//S5        g )NrH   rI         @rK   r   r   )rJ   rI   r   r   realrN   rA   r-   s    r   test_simple_rectangular_float+TestMMIOArray.test_simple_rectangular_float_   s&    

QFS!Hq!f-8	:r   c                 4    U R                  SS/SS//S5        g )NrH   rI   rJ         @rI   rI   rK   r   r   rN   r   r-   s    r   test_simple_floatTestMMIOArray.test_simple_floatc   s     

QFQH%8	:r   c                 4    U R                  SS/SS//S5        g )NrH   rI   rJ                 @)rI   rI   rK   r   complexrN   r   r-   s    r   test_simple_complex!TestMMIOArray.test_simple_complexg   s     

QFQG$;	=r   c           	      P    U R                  [        SS/SS//US9SSSSUS45        g )NrH   rI   rK   rL   r   	symmetricrO   rP   s      r   test_simple_symmetric_integer+TestMMIOArray.test_simple_symmetric_integerk   s7    AA/u=Q7G[A	Cr   c                 4    U R                  SS/SS//S5        g )Nr   rI   )rI   rI   rK   r   r   skew-symmetric)rD   r-   s    r   "test_simple_skew_symmetric_integer0TestMMIOArray.test_simple_skew_symmetric_integerp   s#    1a&2q'*H	Jr   c                 H    U R                  [        SS/SS//S5      S5        g )Nr   rI          g        f)rI   rI   rK   r   r   r   )rA   r   r-   s    r    test_simple_skew_symmetric_float.TestMMIOArray.test_simple_skew_symmetric_floatt   s(    

51a&4+.4?	Ar   c                 4    U R                  SS/SS//S5        g )NrH          @      @       @      rK   )rI   rI   rK   r   r   	hermitianr   r-   s    r   test_simple_hermitian_complex+TestMMIOArray.test_simple_hermitian_complexx   s     

QIay)=	?r   c                     Sn[         R                  R                  U5      nU[        U5      -   nU R                  US5        g )N   r   )r   r   i  r   r   r   )rb   randomr   rA   r.   szr>   s      r   test_random_symmetric_float)TestMMIOArray.test_random_symmetric_float|   s8    IIR 	!

1ABr   c                 j    Sn[         R                  R                  U5      nU R                  US5        g )Nr      )r   r   ,  r   r   rN   )rb   r   rA   r   s      r   test_random_rectangular_float+TestMMIOArray.test_random_rectangular_float   s*    IIR 

1?@r   
   c                    Sn[         R                  " U5      R                  S5      n[        R                  " [
        SS9   [        R                  R                  [        R                  " U5      5        S S S 5        g ! , (       d  f       g = f)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   
ValueErrorrf   rg   r   BytesIOr.   stexts      r   &test_bad_number_of_array_header_fields4TestMMIOArray.test_bad_number_of_array_header_fields   sY     q!((1]]:->?HHOOBJJt,- @??   4A>>
Bc                 `    U R                  [        SS/SS//[        R                  S9S5        g )NrH   rI   r   c   rL   ra   )rD   r   rb   int32r-   s    r   #test_gh13634_non_skew_symmetric_int1TestMMIOArray.test_gh13634_non_skew_symmetric_int   s.    AR1BA	Cr   c                 `    U R                  [        SS/SS//[        R                  S9S5        g )NrH   rI   r        X@rL   r   )rA   r   rb   float32r-   s    r   %test_gh13634_non_skew_symmetric_float3TestMMIOArray.test_gh13634_non_skew_symmetric_float   s+    

51a&2s),BJJ?8	:r   r,   r(   N)"__name__
__module____qualname____firstlineno__r/   r6   rA   rD   r   markthread_unsafeparametrizeparametrize_argsrR   rY   rl   rr   rv   rz   r   r   r   r   r   r   r   r   r   r   	fail_slowr   r   r   __static_attributes__ 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                      \ rS rSrS rS rS rS r\R                  R                  S\5      S 5       rS rS	 rS
 rS r\R                  R                  S\5      S 5       r\R                  R                  S\5      S 5       r\R                  R                  S\5      S 5       rS rS rS r\R                  R                  S\5      S 5       rS rS rS rS rS rS rS rS rSr g)TestMMIOSparseCSR   c                     [        [        [        R                  " 5       5      S9U l        [
        R                  R                  U R                  S5      U l        g r"   r$   r-   s    r   r/   TestMMIOSparseCSR.setup_method   r1   r   c                 D    [         R                  " U R                  5        g r   r3   r-   s    r   r6   !TestMMIOSparseCSR.teardown_method   r8   r   c                     [        U R                  U5        [        [        U R                  5      U5        [	        U R                  SS9n[        UR                  5       UR                  5       5        g r:   )r   r,   r   r   r   r
   toarrayr=   s       r   rA   TestMMIOSparseCSR.check   sH    VDGG_d+477U+!!))+qyy{;r   c                     [        U R                  U5        [        [        U R                  5      U5        [	        U R                  SS9n[        UR                  5       UR                  5       5        g r:   )r   r,   r   r   r   r   r=   s       r   rD   TestMMIOSparseCSR.check_exact   sH    VDGG_d+477U+QYY[!))+.r   rF   c           	      x    U R                  [        R                  R                  SS/SS//US9SSSSUS45        g )NrH   rI   rJ   rK   rL   
coordinaterN   rD   rf   sparse	csr_arrayrP   s      r   rR   %TestMMIOSparseCSR.test_simple_integer   D    //!Q!Q0@/NQ<)D	Fr   c                     [         R                  R                  [        SS/SS//[        R
                  S95      nU R                  US5        g )NrU   i  rW   rX   rL   rI   rI   rK   r   r   rN   )rf   r   r   r   rb   r   rD   rk   s     r   rY   $TestMMIOSparseCSR.test_32bit_integer   sK    LL""57H*=+2G*<*>/1xx$9 : 	IJr   c                    [         R                  R                  [        SS/SS//[        R
                  S95      n[        R                  " S5      R                  S:  aM  [        [         R                  R                  R                  :X  a!  [        [        [        U R                  U5        g U R                  US5        g )N        r^   rL   r   r`   r   )rf   r   r   r   rb   rc   rd   re   r   rg   rh   ri   rj   r,   rD   rk   s     r   rl   $TestMMIOSparseCSR.test_64bit_integer   s    LL""57G*<+3W*=*?/1xx$9 : GGAJ!#EHHNN4J4J)J-$''1=Q MNr   c                     [         R                  R                  [        SS/SS//[        R
                  S95      nU R                  US5        g )NrU   rV   rW   rX   rL   rI   rI   rK   r   r   rN   )rf   r   r   r   rb   uint32rD   rk   s     r   test_32bit_unsigned_integer-TestMMIOSparseCSR.test_32bit_unsigned_integer   K    LL""57G*<+2G*<*>/1yy$: ; 	RSr   c                     [         R                  R                  [        SS/SS//[        R
                  S95      nU R                  US5        g )Nr   ro   rp   rL   r   )rf   r   r   r   rb   rq   rD   rk   s     r   rr   -TestMMIOSparseCSR.test_64bit_unsigned_integer   r   r   c           	      x    U R                  [        R                  R                  SS/SS//US9SSSSUS45        g Nr   rH   rL   rI   r   rN   r   rP   s      r   rv   4TestMMIOSparseCSR.test_simple_upper_triangle_integer   r   r   c           	      x    U R                  [        R                  R                  SS/SS//US9SSSSUS45        g r   r   rP   s      r   rz   4TestMMIOSparseCSR.test_simple_lower_triangle_integer   r   r   c           	      x    U R                  [        R                  R                  / SQ/ SQ/US9SSSSUS45        g )	Nr}   r~   rL   rI   rJ   r   r   rN   r   rP   s      r   r   1TestMMIOSparseCSR.test_simple_rectangular_integer   s<    //I0Fe/TQ<)D	Fr   c                 t    U R                  [        R                  R                  SS/SS/SS//5      S5        g )NrH   rI   r   rK   r   r   )rJ   rI   r   r   r   rN   rA   rf   r   r   r-   s    r   r   /TestMMIOSparseCSR.test_simple_rectangular_float   s5    

5<<))Aq6C8aV*DE=	?r   c                 n    U R                  [        R                  R                  SS/SS//5      S5        g )NrH   rI   rJ   r   rI   rI   rK   r   r   rN   r  r-   s    r   r   #TestMMIOSparseCSR.test_simple_float   s/    

5<<))Aq6As8*<==	?r   c                 n    U R                  [        R                  R                  SS/SS//5      S5        g )NrH   rI   rJ   r   )rI   rI   rK   r   r   rN   r  r-   s    r   r   %TestMMIOSparseCSR.test_simple_complex   s0    

5<<))Aq6Ar7*;<@	Br   c           	      x    U R                  [        R                  R                  SS/SS//US9SSSSUS45        g )NrH   rI   rK   rL   rJ   r   r   r   rP   s      r   r   /TestMMIOSparseCSR.test_simple_symmetric_integer   sD    //!Q!Q0@/NQ<+F	Hr   c                 n    U R                  [        R                  R                  SS/SS//5      S5        g )Nr   rI   r   )rI   rI   rH   r   r   r   r   r-   s    r   r   4TestMMIOSparseCSR.test_simple_skew_symmetric_integer   s2    //!Q"a0ABM	Or   c           	          U R                  [        R                  R                  [	        SS/SS//S5      5      S5        g )Nr   rI   r   r   )rI   rI   rH   r   r   r   )rA   rf   r   r   r   r-   s    r   r   2TestMMIOSparseCSR.test_simple_skew_symmetric_float   s7    

5<<))%!Q$0CS*IJD	Fr   c                 n    U R                  [        R                  R                  SS/SS//5      S5        g )NrH   r   r   rK   )rI   rI   rJ   r   r   r   r  r-   s    r   r   /TestMMIOSparseCSR.test_simple_hermitian_complex   s0    

5<<))At9tQi*@AB	Dr   c                     Sn[         R                  R                  U5      nU[        U5      -   n[        R                  R                  U5      nU R                  US5        g )Nr   )r   r      r   r   r   )rb   r   r   rf   r   r   rA   r   s      r   r   -TestMMIOSparseCSR.test_random_symmetric_float  sL    IIR 	!LL""1%

1FGr   c                     Sn[         R                  R                  U5      n[        R                  R	                  U5      nU R                  US5        g )Nr   )r   r   r   r   r   rN   )rb   r   rf   r   r   rA   r   s      r   r   /TestMMIOSparseCSR.test_random_rectangular_float
  s>    IIR LL""1%

1DEr   c                    [         R                  R                  SS/SS//5      n[        R                  " UR                  5       5      nSX!R                  5       S:  '   Sn[        U R                  USS9  [        [        U R                  5      U5        [        U R                  S	S
9n[        X$R                  5       5        [         R                  R                  U5      (       a   e[        U R                  SS
9n[         R                  R                  U5      (       d   e[        U R                  5      n[         R                  R                  U5      (       d   eg )Nr   g      ?g      @g      @rH   )rI   rI   rJ   r   patternrN   r  )fieldFr;   T)rf   r   r   rb   
zeros_liker   r   r,   r   r   r   r
   
isspmatrix)r.   r>   pr?   r@   s        r   test_simple_pattern%TestMMIOSparseCSR.test_simple_pattern  s    LL""QHsCj#9:MM!))+&))+/<),VDGG_d+477U+!!YY[1<<**1----477T*||&&q))))477O||&&q))))r   c                     [         R                  R                  SS/SS//[        R                  S9nU R                  US5        g )NrH   rI   r   r   rL   r   )rf   r   r   rb   r   rD   rk   s     r   r   5TestMMIOSparseCSR.test_gh13634_non_skew_symmetric_int   s=    LL""QFRH#5RXX"FIJr   c                     [         R                  R                  SS/SS//[        R                  S9nU R                  US5        g )NrH   rI   r   r   rL   r
  )rf   r   r   rb   r   rA   rk   s     r   r   7TestMMIOSparseCSR.test_gh13634_non_skew_symmetric_float$  s;    LL""QFRI#6bjj"I

1@Ar   r   N)!r   r   r   r   r/   r6   rA   rD   r   r   r   r   rR   rY   rl   r   rr   rv   rz   r   r   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                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)TestMMIOReadLargeIntegersik  c                     [        [        [        R                  " 5       5      S9U l        [
        R                  R                  U R                  S5      U l        g r"   r$   r-   s    r   r/   &TestMMIOReadLargeIntegers.setup_methodl  r1   r   c                 D    [         R                  " U R                  5        g r   r3   r-   s    r   r6   )TestMMIOReadLargeIntegers.teardown_methodp  r8   r   c                 ,   [        U R                  S5       nUR                  U5        S S S 5        [        [	        U R                  5      U5        U(       aP  [
        R                  " S5      R                  S:  a,  [        [        R                  R                  R                  :X  d  U(       a   [        [        [        U R                  5        g [        U R                  SS9nU(       d  UR                  5       n[        X(5        g ! , (       d  f       N= f)Nwr   r`   Fr;   )openr,   writer   r   rb   rd   re   r   rf   rg   rh   ri   rj   r   r   )	r.   exampler>   r?   denseover32over64r   r@   s	            r   
check_read$TestMMIOReadLargeIntegers.check_reads  s    $''31GGG  VDGG_d+,,q0gAWAW6W-9tww/AIIK  s   D
Dc           	      p    [        SS/SS//[        R                  S9nU R                  [        USSSSS9  g )NrU   rV   rL   ra   TFr2  r3  r4  )r   rb   rc   r5  _32bit_integer_dense_examplerk   s     r   test_read_32bit_integer_dense7TestMMIOReadLargeIntegers.test_read_32bit_integer_dense  sJ    GW%W%'.0hh84@"$$ 	 	&r   c           	      p    [        SS/SS//[        R                  S9nU R                  [        USSSSS9  g )NrU   r   rV   rL   rI   rI   rI   r   r   r   Fr8  )r   rb   rc   r5  _32bit_integer_sparse_examplerk   s     r   test_read_32bit_integer_sparse8TestMMIOReadLargeIntegers.test_read_32bit_integer_sparse  sH    GQ<w<!(*25G#$$ 	 	&r   c           	      p    [        SS/SS//[        R                  S9nU R                  [        USSSSS	9  g )
Nr\   i   r   r_   rL   ra   TFr8  )r   rb   rc   r5  _64bit_integer_dense_examplerk   s     r   test_read_64bit_integer_dense7TestMMIOReadLargeIntegers.test_read_64bit_integer_dense  sI    E6?g&(/1xx94@"#$ 	 	&r   c           	      p    [        SS/SS//[        R                  S9nU R                  [        USSSSS9  g )	Nr\   r_   r   rL   )rI   rI   rJ   r   r   rN   FTr8  )r   rb   rc   r5  %_64bit_integer_sparse_general_examplerk   s     r   &test_read_64bit_integer_sparse_general@TestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_general  sI    E7#w<!(*2=E##$ 	 	&r   c           	      p    [        SS/SS//[        R                  S9nU R                  [        USSSSS9  g )	Nr\    r_   rL   )rI   rI   rJ   r   r   r   FTr8  )r   rb   rc   r5  '_64bit_integer_sparse_symmetric_examplerk   s     r   (test_read_64bit_integer_sparse_symmetricBTestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_symmetric  sJ    E8$g&(/1xx9?G##$ 	 	&r   c           	      p    [        SS/SS//[        R                  S9nU R                  [        USSSSS9  g )	Nr\   rJ  r_   rL   )rI   rI   rJ   r   r   r   FTr8  )r   rb   rc   r5  "_64bit_integer_sparse_skew_examplerk   s     r   #test_read_64bit_integer_sparse_skew=TestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_skew  sJ    E8$W%'.0hh8:L##$ 	 	&r   c           	      4    U R                  [        S SSSSS9  g )Nra   Tr8  )r5   _over64bit_integer_dense_exampler-   s    r   !test_read_over64bit_integer_dense;TestMMIOReadLargeIntegers.test_read_over64bit_integer_dense  s%    8@"## 	 	%r   c           	      4    U R                  [        S SSSSS9  g )Nr=  FTr8  )r5  !_over64bit_integer_sparse_exampler-   s    r   "test_read_over64bit_integer_sparse<TestMMIOReadLargeIntegers.test_read_over64bit_integer_sparse  s%    9G### 	 	%r   r   N)r   r   r   r   r/   r6   r5  r:  r?  rC  rG  rL  rP  rT  rX  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                   z    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rSrg)TestMMIOCoordinatei2  c                     [        [        [        R                  " 5       5      S9U l        [
        R                  R                  U R                  S5      U l        g r"   r$   r-   s    r   r/   TestMMIOCoordinate.setup_method3  r1   r   c                 D    [         R                  " U R                  5        g r   r3   r-   s    r   r6   "TestMMIOCoordinate.teardown_method7  r8   r   c                 
   [        U R                  S5      nUR                  U5        UR                  5         [	        [        U R                  5      U5        [        U R                  SS9R                  5       n[        X%5        g )Nr.  Fr;   )	r/  r,   r0  closer   r   r   r   r
   )r.   r1  r>   r?   r   r@   s         r   r5  TestMMIOCoordinate.check_read:  sZ    #			VDGG_d+477U+335!!'r   c                 T    / SQ/ SQ/ SQ/ SQ/ SQ/nU R                  [        US5        g N)rH   r   r   r   r   )r         %@r   r   r   r   r   Q?r   r   )r        Po@r   )\@@r   r   r   r      r   r   r`   r   r   rN   )r5  _general_examplerk   s     r   test_read_general$TestMMIOCoordinate.test_read_generalB  s/    '	
 	(!B	Dr   c                 T    / SQ/ SQ/ SQ/ SQ/ SQ/nU R                  [        US5        g )NrH   r   r   r   r   )r   re  r   y     Po@Q86r   rf  )r   y     Po@Q86@r   ri  y       )\@)r   r   r   y        )\@@rl  )r   r      r   r   r   )r5  _hermitian_examplerk   s     r   test_read_hermitian&TestMMIOCoordinate.test_read_hermitianK  s/    ,2"	$
 	*AG	Ir   c                 T    / SQ/ SQ/ SQ/ SQ/ SQ/nU R                  [        US5        g )Nrr  )r   re  r   g     Por   rf  )r   rh  r   ri  r   rk  )r   r   rs  r   r   r   )r5  _skew_examplerk   s     r   test_read_skew!TestMMIOCoordinate.test_read_skewT  s.    $#	
 	qI	Kr   c                 T    / SQ/ SQ/ SQ/ SQ/ SQ/nU R                  [        US5        g )Nrr  )r   re  r   rh  r   rf  )r   rh  r   ri  r`   )r   r   r   r`   rl  )r   r   rs  r   r   r   )r5  _symmetric_examplerk   s     r   test_read_symmetric&TestMMIOCoordinate.test_read_symmetric]  s/    ##	
 	*AD	Fr   c                 T    / SQ/ SQ/ SQ/ SQ/ SQ/nU R                  [        US5        g )Nrr  )r   rH   r   rH   r   )r   r   rH   r   r   )r   rH   r   rH   rH   )r   r   r   rH   rH   )r   r   rs  r   r  r   )r5  _symmetric_pattern_examplerk   s     r   test_read_symmetric_pattern.TestMMIOCoordinate.test_read_symmetric_patternf  s/    	
 	2AG	Ir   c                 T    / SQ/ SQ/ SQ/ SQ/ SQ/nU R                  [        US5        g rd  )r5  _empty_lines_examplerk   s     r   test_read_empty_lines(TestMMIOCoordinate.test_read_empty_lineso  s/    '	
 	,aB	Dr   c                 &   [         R                  R                  S5      n[        U R                  U5        [        [        U R                  5      S5        UR                  5       n[        U R                  SS9R                  5       n[        X!5        g )N)r   r   )r   r   r   r   r   r   Fr;   )
rf   r   	coo_arrayr   r,   r   r   r   r   r
   )r.   r@   r>   s      r   test_empty_write_read(TestMMIOCoordinate.test_empty_write_readx  sh     LL""8,VDGG_C	EIIK477U+335!!'r   c                 L    SS K n[        / SQ5      n[        / SQ5      n[        / SQ5      n[        R                  R                  XBU44SS9n[        U R                  U5        U R                   S3n[        U R                  S5       nUR                  US	5      nUR                  UR                  5       5        UR                  5         S S S 5        [        US
S9R                  5       n	[        XR                  5       5        g ! [         a     g f = f! , (       d  f       NP= f)Nr   r   r   rH   rI   rJ   rJ   rJ   rK   r   rJ   rH   rI   rH   rJ   rK   rK   g      ?g      @re  rg  rh  g     qrj  g      (@r   r   shapez.bz2rbwbFr;   )bz2ImportErrorr   rf   r   r  r   r,   r/  BZ2Filer0  readra  r   r   r
   )
r.   r  IJVr@   fn_bzip2f_inf_outr>   s
             r   test_bzip2_py3!TestMMIOCoordinate.test_bzip2_py3  s    	 *+*+EFLL""A1v;f"=ggYd#$''4 DKK$/EKK		$KKM !
 8e,446!!YY[1#  		 !    D 	AD
DD
D#c                 L    SS K n[        / SQ5      n[        / SQ5      n[        / SQ5      n[        R                  R                  XBU44SS9n[        U R                  U5        U R                   S3n[        U R                  S5       nUR                  US	5      nUR                  UR                  5       5        UR                  5         S S S 5        [        US
S9R                  5       n	[        XR                  5       5        g ! [         a     g f = f! , (       d  f       NP= f)Nr   r  r  r  r  r  z.gzr  r  Fr;   )gzipr  r   rf   r   r  r   r,   r/  r0  r  ra  r   r   r
   )
r.   r  r  r  r  r@   fn_gzipr  r  r>   s
             r   test_gzip_py3 TestMMIOCoordinate.test_gzip_py3  s    	 *+*+EFLL""A1v;f"=WWIS/$''4 DIIgt,EKK		$KKM !
 7U+335!!YY[1#  		 ! r  c                 x   [        / SQ5      n[        / SQ5      n[        / SQ5      n[        R                  R                  X1U44SS9n[	        U R
                  U5        [        [        U R
                  5      S5        UR                  5       n[        U R
                  SS9R                  5       n[        XT5        g )	Nr  r  r  r  r  rm  Fr;   r   rf   r   r  r   r,   r   r   r   r   r
   r.   r  r  r  r@   r>   s         r   test_real_write_read'TestMMIOCoordinate.test_real_write_read  s    *+*+EFLL""A1v;f"=VDGG_?	AIIK477U+335!!'r   c                 x   [        / SQ5      n[        / SQ5      n[        / SQ5      n[        R                  R                  X1U44SS9n[	        U R
                  U5        [        [        U R
                  5      S5        UR                  5       n[        U R
                  SS9R                  5       n[        XT5        g )	Nr  r  y      ?      @y      @       @y      %@?yQ?y     Po@        y     q      @y)\@@@y      (@?r  r  )r   r   r`   r   r   rN   Fr;   r  r  s         r   test_complex_write_read*TestMMIOCoordinate.test_complex_write_read  s    *+*+ H I LL""A1v;f"=VDGG_B	DIIK477U+335!!'r   c                 &   US-  nUR                  5         / n[        / SQ5      n[        / SQ5      n[        / SQ5      nUR                  [        R                  R                  XdU44SS95        [        / SQ5      nUR                  [        R                  R                  XdU44SS95        U H`  nUR                  5       nS HG  n	X)S	-   -  n
[        XR                  U	5      5        [        U
S
S9R                  5       n[        X5        MI     Mb     g )Nsparse_formatsr  r  r  r  r  r  )csrcsccooz.mtxFr;   )mkdirr   appendrf   r   r  r   r   asformatr   r
   )r.   tmp_pathr(   matsr  r  r  matexpectedfmtfnameresults               r   test_sparse_formats&TestMMIOCoordinate.test_sparse_formats  s    ,,*+*+EFELL**A1v;f*EF H IELL**A1v;f*EFC{{}H,,/||C016>>@)&;	 - r   c           	      0   [         /[        SSS5       Vs/ s H  nSU-  PM
     sn-   n[        SS5      nU H  nU H  nSU-  S-   n[        R                  R	                  Xf45      nXGUS-
  US-
  4'   [        U R                  XuS9  [        R                  R                  U R                  SS9n[        UR                  US-
  /5        [        UR                  US-
  /5        [        UR                  [        S	U-  U-  5      /5        M     M     g s  snf )
Nr   ir   rH   )	precisionFr;   z%%.%dg)r   rangerf   r   	dok_arrayr   r,   rg   r   r	   rowcolr   datafloat)r.   itest_valuestest_precisionsvaluer  nAs           r   test_precision!TestMMIOCoordinate.test_precision  s    duQR/@A/@!b1g/@AA2, E,		MA%LL**A62#!A#qs(8HHOODGGeO<"1551Q3%0"1551Q3%0x)/Ce/K)L(MN - ! Bs   Dc                    Sn[         R                  " U5      R                  S5      n[        R                  " [
        SS9   [        R                  R                  [        R                  " U5      5        S S S 5        g ! , (       d  f       g = f)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_fields>TestMMIOCoordinate.test_bad_number_of_coordinate_header_fields  sY     q!((1]]:->?HHOOBJJt,- @??r   r   N)r   r   r   r   r/   r6   r5  ro  ru  ry  r}  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r[  r[  2  s^    <#(DIKFID
(2020(( <0O".r   r[  c                  @    [        [        R                  " S5      SS9  g )Ng%%MatrixMarket matrix coordinate complex symmetric
 1 1 1
1 1 -2.1846000000000e+02  0.0000000000000e+00Fr;   )r   rg   StringIOr   r   r   test_gh11389r    s!    
2;; G H r   c                     / SQnU S-  n[        US5       nUR                  U5        S S S 5        [        USS9  g ! , (       d  f       N= f)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.  Fr;   )r/  
writelinesr   )r  lines	test_filer   s       r   test_gh18123r    sE    E
 :%I	i		U 

9u% 
	s	   ;
A	c                 ~    [        [        R                  " S5      SS9nU S-  nU S-  n[        X!5        [        USS9  g )Nr  Fr;   test_mtxztest_mtx.mtx)r   rg   r  r   )r  r>   test_writefiletest_readfiles       r   test_mtx_appendr     sK    r{{ K L 	A 
*N.MN
=5)r   c                      SS K n [        U S5      (       d  [        R                  " S5        g  U R                  SS9   [        [        R                  S5        S S S 5        U R                  SSS	9   [        [        R                  S5        S S S 5        g ! [         a    [        R                  " S5         g f = f! , (       d  f       Nh= f! , (       d  f       g = f)
Nr   registerzthreadpoolctl too oldzno threadpoolctlrK   )limitsrI   rf   )r  user_api)	threadpoolctlhasattrr   skipr  threadpool_limitsr   fmmPARALLELISM)r  s    r   test_threadpoolctlr  +  s    }j11KK/0 2 
	(	(	(	2S__a( 
3 
	(	(G	(	DS__a( 
E	D  &' 
3	2 
E	Ds(   +B B;1C B87B8;
C	
C)7tempfiler   r)   rg   r4   r&   r   numpyrb   r   r   r   numpy.testingr   r   r	   r
   r   r   ri   scipy.sparserf   scipy.io._mmioscipy.io._fast_matrix_market_fast_matrix_marketr  r   r   r   
pytestmarkfixturerh   r   r   r   r9  r>  rB  rF  rK  rO  rS  rW  r(  rn  rt  rx  r|  r  r  r[  r  r  r  r  r   r   r   <module>r     sJ    	 	     & &J J  *   * * '02  [[&&
 h'<dK$ L${: {:|CB CBL  !   ) %+ '& "$  % !_% _%D  D
 

 
  "Y. Y.x	&*)r   