
    5[g m                        d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
 d dlmZmZmZmZ d dlZd dlmZ d dlZd dlZd dlmc mZ ddgZ ej4                  dej                  j6                  efd	
      d        Z G d d      Z G d de      ZdZdZ dZ!dZ"dZ#dZ$dZ%dZ& G d d      Z'dZ(dZ)dZ*dZ+dZ,dZ- G d  d!      Z.d" Z/d# Z0d$ Z1y)%    )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    S/var/www/html/bid-api/venv/lib/python3.12/site-packages/scipy/io/tests/test_mmio.pyimplementationsr      s1    
 ]]!!F]]!!Fmm##G    c                   F   e Zd Zd Zd Zd Zd Zej                  j                  de
      d        Z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                  j7                  d      d        Zd Zd Zy)TestMMIOArrayc                     t               | _        t        j                  j	                  | j                  d      | _        y Nztestfile.mtxr   tmpdirospathjoinfnselfs    r   setup_methodzTestMMIOArray.setup_method#   %    i'',,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                        }t        ||       y r   )r   r'   r   r   r   r
   r)   ainfobs       r   checkzTestMMIOArray.check*   s9    VDGG_d+477O!!Q'r   c                     t        | j                  |       t        t        | j                        |       t	        | j                        }t        ||       y r   )r   r'   r   r   r   r3   s       r   check_exactzTestMMIOArray.check_exact0   s9    VDGG_d+477OQr   typeval, dtypec           	      V    | j                  t        ddgddgg|      dddd|df       y )N            dtyper   generalr9   r   r)   typevalrA   s      r   test_simple_integerz!TestMMIOArray.test_simple_integer6   7    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r@   r=   r?   r   rB   )r   r9   )r)   rE   rA   r4   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                        r@   r      r=   r=   r?   r   r   rB   )r   npint64intpitemsizer   scipyio_mmioassert_raisesOverflowErrorr'   r9   r)   r4   s     r   test_64bit_integerz TestMMIOArray.test_64bit_integer@   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 )NrO   rP           r@   )r=   r=   r?   r   r   rB   )r   rU   uint64r9   r^   s     r   test_64bit_unsigned_integerz)TestMMIOArray.test_64bit_unsigned_integerG   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   r<   r@   r=   r?   r   rB   rC   rD   s      r   "test_simple_upper_triangle_integerz0TestMMIOArray.test_simple_upper_triangle_integerK   rG   r   c           	      V    | j                  t        ddgddgg|      dddd|df       y rf   rC   rD   s      r   "test_simple_lower_triangle_integerz0TestMMIOArray.test_simple_lower_triangle_integerP   rG   r   c           	      V    | j                  t        g dg dg|      dddd|df       y )	Nr<   r=   r>   r?         r@   r=   r>   rn   r   rB   rC   rD   s      r   test_simple_rectangular_integerz-TestMMIOArray.test_simple_rectangular_integerU   s/    	95UCQ7GY?	Ar   c                 :    | j                  ddgddgddggd       y )Nr<   r=         @r?   rm   rn   )r>   r=   rn   r   realrB   r7   r(   s    r   test_simple_rectangular_floatz+TestMMIOArray.test_simple_rectangular_floatZ   s&    

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

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

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

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

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

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

1?@r   rm   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   
ValueErrorrY   rZ   r   BytesIOr)   stexts      r   &test_bad_number_of_array_header_fieldsz4TestMMIOArray.test_bad_number_of_array_header_fields   sY     q!((1]]:->?HHOOBJJt,- @??   3A>>Bc                 f    | j                  t        ddgddggt        j                        d       y )Nr<   r=   r   c   r@   rT   )r9   r   rU   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 )Nr<   r=   r        X@r@   rw   )r7   r   rU   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*   r0   r7   r9   r   markparametrizeparametrize_argsrF   rM   r_   rd   rg   ri   ro   rt   rx   r|   r   r   r   r   r   r   	fail_slowr   r   r    r   r   r   r   "   sx   <#( [[-/?@A AA [[-/?@D ADJO [[-/?@A AA [[-/?@A AA [[-/?@A AA::= [[-/?@C ACJA?CA
 [[1. .$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        j                  j	                  | j                  d      | _        y r!   r"   r(   s    r   r*   zTestMMIOSparseCSR.setup_method   r+   r   c                 B    t        j                  | j                         y r   r-   r(   s    r   r0   z!TestMMIOSparseCSR.teardown_method   r1   r   c                     t        | j                  |       t        t        | j                        |       t	        | j                        }t        |j                         |j                                y r   )r   r'   r   r   r   r
   toarrayr3   s       r   r7   zTestMMIOSparseCSR.check   sE    VDGG_d+477O!!))+qyy{;r   c                     t        | j                  |       t        t        | j                        |       t	        | j                        }t        |j                         |j                                y r   )r   r'   r   r   r   r   r3   s       r   r9   zTestMMIOSparseCSR.check_exact   sE    VDGG_d+477OQYY[!))+.r   r:   c           	      ~    | j                  t        j                  j                  ddgddgg|      dddd|df       y )Nr<   r=   r>   r?   r@   
coordinaterB   r9   rY   sparse
csr_matrixrD   s      r   rF   z%TestMMIOSparseCSR.test_simple_integer   D    001a&1a&1A0OQ<)D	Fr   c                     t         j                  j                  t        ddgddggt        j
                              }| j                  |d       y )NrI   i  rK   rL   r@   r=   r=   r?   r   r   rB   )rY   r   r   r   rU   r   r9   r^   s     r   rM   z$TestMMIOSparseCSR.test_32bit_integer   sK    LL##EGX+>,3W+=+?02%: ; 	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        rQ   r@   r   rS   r   )rY   r   r   r   rU   rV   rW   rX   r   rZ   r[   r\   r]   r'   r9   r^   s     r   r_   z$TestMMIOSparseCSR.test_64bit_integer   s    LL##EGW+=,4g+>+@02%: ; GGAJ!#EHHNN4J4J)J-$''1=Q MNr   c                     t         j                  j                  t        ddgddggt        j
                              }| j                  |d       y )NrI   rJ   rK   rL   r@   r=   r=   r?   r   r   rB   )rY   r   r   r   rU   uint32r9   r^   s     r   test_32bit_unsigned_integerz-TestMMIOSparseCSR.test_32bit_unsigned_integer   K    LL##EGW+=,3W+=+?02		%; < 	RSr   c                     t         j                  j                  t        ddgddggt        j
                              }| j                  |d       y )Nr   ra   rb   r@   r   )rY   r   r   r   rU   rc   r9   r^   s     r   rd   z-TestMMIOSparseCSR.test_64bit_unsigned_integer   r   r   c           	      ~    | j                  t        j                  j                  ddgddgg|      dddd|df       y Nr   r<   r@   r=   r   rB   r   rD   s      r   rg   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   rD   s      r   ri   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 )	Nrk   rl   r@   r=   r>   rn   r   rB   r   rD   s      r   ro   z1TestMMIOSparseCSR.test_simple_rectangular_integer   s<    00)Y1Gu0UQ<)D	Fr   c                 t    | j                  t        j                  j                  ddgddgddgg      d       y )Nr<   r=   rq   r?   rm   rn   )r>   r=   rn   r   rr   rB   r7   rY   r   r   r(   s    r   rt   z/TestMMIOSparseCSR.test_simple_rectangular_float   s5    

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

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

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

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

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

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

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                        }t        ||j                                y )	Nr   g      ?g      @g      @r<   )r=   r=   r>   r   patternrB   r   )field)rY   r   r   rU   
zeros_liker   r   r'   r   r   r   r
   )r)   r4   pr5   r6   s        r   test_simple_patternz%TestMMIOSparseCSR.test_simple_pattern  s    LL##aXSz$:;MM!))+&!))+/<),VDGG_d+477O!!QYY[1r   c                     t         j                  j                  ddgddggt        j                        }| j                  |d       y )Nr<   r=   r   r   r@   r   )rY   r   r   rU   r   r9   r^   s     r   r   z5TestMMIOSparseCSR.test_gh13634_non_skew_symmetric_int  s=    LL##aVb"X$6bhh#GIJr   c                     t         j                  j                  ddgddggt        j                        }| j                  |d       y )Nr<   r=   r   r   r@   r   )rY   r   r   rU   r   r7   r^   s     r   r   z7TestMMIOSparseCSR.test_gh13634_non_skew_symmetric_float  s;    LL##aVb#Y$7rzz#J

1@Ar   N)r   r   r   r*   r0   r7   r9   r   r   r   r   rF   rM   r_   r   rd   rg   ri   ro   rt   rx   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s?   <#</ [[-/?@F AFKOTT [[-/?@F AF [[-/?@F AF [[-/?@F AF??B [[-/?@H AHOFDHF2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        j                  j	                  | j                  d      | _        y r!   r"   r(   s    r   r*   z&TestMMIOReadLargeIntegers.setup_methoda  r+   r   c                 B    t        j                  | j                         y r   r-   r(   s    r   r0   z)TestMMIOReadLargeIntegers.teardown_methode  r1   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                        }|s|j                         }t        ||       y # 1 sw Y   xY w)Nwr   rS   )openr'   writer   r   rU   rW   rX   r   rY   rZ   r[   r\   r]   r   r   )	r)   exampler4   r5   denseover32over64r   r6   s	            r   
check_readz$TestMMIOReadLargeIntegers.check_readh  s    $''31GGG  VDGG_d+,,q0gAWAW6W-9twwAIIKA  s   C55C>c                 |    t        ddgddggt        j                        }| j                  t        |dddd       y )NrI   rJ   r@   rT   TFr   r   r   )r   rU   rV   r   _32bit_integer_dense_exampler^   s     r   test_read_32bit_integer_densez7TestMMIOReadLargeIntegers.test_read_32bit_integer_denseu  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 )NrI   r   rJ   r@   r=   r=   r=   r   r   r~   Fr   )r   rU   rV   r   _32bit_integer_sparse_exampler^   s     r   test_read_32bit_integer_sparsez8TestMMIOReadLargeIntegers.test_read_32bit_integer_sparse  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 )
NrO   i   r   rR   r@   rT   TFr   )r   rU   rV   r   _64bit_integer_dense_exampler^   s     r   test_read_64bit_integer_densez7TestMMIOReadLargeIntegers.test_read_64bit_integer_dense  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 )	NrO   rR   r   r@   )r=   r=   r>   r   r   rB   FTr   )r   rU   rV   r   %_64bit_integer_sparse_general_exampler^   s     r   &test_read_64bit_integer_sparse_generalz@TestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_general  sI    E7#w<!(*2=E##$ 	 	&r   c                 |    t        ddgddggt        j                        }| j                  t        |dddd       y )	NrO    rR   r@   )r=   r=   r>   r   r   r~   FTr   )r   rU   rV   r   '_64bit_integer_sparse_symmetric_exampler^   s     r   (test_read_64bit_integer_sparse_symmetriczBTestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_symmetric  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 )	NrO   r  rR   r@   )r=   r=   r>   r   r   r   FTr   )r   rU   rV   r   "_64bit_integer_sparse_skew_exampler^   s     r   #test_read_64bit_integer_sparse_skewz=TestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_skew  sJ    E8$W%'.0hh8:L##$ 	 	&r   c                 :    | j                  t        d dddd       y )NrT   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*   r0   r   r   r   r   r  r  r
  r  r  r   r   r   r   r   `  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        j                  j	                  | j                  d      | _        y r!   r"   r(   s    r   r*   zTestMMIOCoordinate.setup_method(  r+   r   c                 B    t        j                  | j                         y r   r-   r(   s    r   r0   z"TestMMIOCoordinate.teardown_method,  r1   r   c                    t        | j                  d      }|j                  |       |j                          t	        t        | j                        |       t        | j                        j                         }t        ||       y )Nr   )	r   r'   r   closer   r   r   r   r
   )r)   r   r4   r5   r   r6   s         r   r   zTestMMIOCoordinate.check_read/  sY    #			VDGG_d+477O##%!!Q'r   c                 T    g dg dg dg dg dg}| j                  t        |d       y N)r<   r   r   rn   r   )r         %@r   r   r   r   r   Q?r   r   )r        Po@r   )\@@r   r   r   r      rm   rm   rS   r   rr   rB   )r   _general_exampler^   s     r   test_read_generalz$TestMMIOCoordinate.test_read_general7  s/    '	
 	(!B	Dr   c                 T    g dg dg dg dg dg}| j                  t        |d       y )Nr<   r   r   r   r   )r   r  r   y     Po@Q86r   r  )r   y     Po@Q86@r   r  y       )\@)r   r   r   y        )\@@r   )rm   rm      r   r{   r   )r   _hermitian_exampler^   s     r   test_read_hermitianz&TestMMIOCoordinate.test_read_hermitian@  s/    ,2"	$
 	*AG	Ir   c                 T    g dg dg dg dg dg}| j                  t        |d       y )Nr%  )r   r  r   g     Por   r  )r   r  r   r  r   r  )rm   rm   r&  r   rr   r   )r   _skew_exampler^   s     r   test_read_skewz!TestMMIOCoordinate.test_read_skewI  s.    $#	
 	qI	Kr   c                 T    g dg dg dg dg dg}| j                  t        |d       y )Nr%  )r   r  r   r  r   r  )r   r  r   r  rS   )r   r   r   rS   r   )rm   rm   r&  r   rr   r~   )r   _symmetric_exampler^   s     r   test_read_symmetricz&TestMMIOCoordinate.test_read_symmetricR  s/    ##	
 	*AD	Fr   c                 T    g dg dg dg dg dg}| j                  t        |d       y )Nr%  )r   r<   r   r<   r   )r   r   r<   r   r   )r   r<   r   r<   r<   )r   r   r   r<   r<   )rm   rm   r&  r   r   r~   )r   _symmetric_pattern_exampler^   s     r   test_read_symmetric_patternz.TestMMIOCoordinate.test_read_symmetric_pattern[  s/    	
 	2AG	Ir   c                 T    g dg dg dg dg dg}| j                  t        |d       y r  )r   _empty_lines_exampler^   s     r   test_read_empty_linesz(TestMMIOCoordinate.test_read_empty_linesd  s/    '	
 	,aB	Dr   c                 *   t         j                  j                  d      }t        | j                  |       t        t        | j                        d       |j                         }t        | j                        j                         }t        ||       y )N)
   r6  )r6  r6  r   r   rr   r~   )
rY   r   
coo_matrixr   r'   r   r   r   r   r
   )r)   r6   r4   s      r   test_empty_write_readz(TestMMIOCoordinate.test_empty_write_readm  sg     LL##H-VDGG_C	EIIK477O##%!!Q'r   c                 L   	 dd l }t        g d      }t        g d      }t        g d      }t        j                  j                  |||ffd      }t        | j                  |       d| j                  z  }t        | j                  d      5 }|j                  |d	      }|j                  |j                                |j                          d d d        t        |      j                         }	t        |	|j                                y # t        $ r Y y w xY w# 1 sw Y   LxY w)
Nr   r   r   r<   r=   r>   r>   r>   r?   r   r>   r<   r=   r<   r>   r?   r?   g      ?g      @r  r  r  g     qr  g      (@rm   rm   shapez%s.bz2rbwb)bz2ImportErrorr   rY   r   r7  r   r'   r   BZ2Filer   readr  r   r   r
   )
r)   rB  IJVr6   fn_bzip2f_inf_outr4   s
             r   test_bzip2_py3z!TestMMIOCoordinate.test_bzip2_py3y  s    	 *+*+EFLL##QAKv#>dgg%$''4 DKK$/EKK		$KKM !
 8$$&!!QYY[1#  		 !    D AD	DDD#c                 L   	 dd l }t        g d      }t        g d      }t        g d      }t        j                  j                  |||ffd      }t        | j                  |       d| j                  z  }t        | j                  d      5 }|j                  |d	      }|j                  |j                                |j                          d d d        t        |      j                         }	t        |	|j                                y # t        $ r Y y w xY w# 1 sw Y   LxY w)
Nr   r:  r;  r<  r=  r>  z%s.gzr@  rA  )gziprC  r   rY   r   r7  r   r'   r   r   rE  r  r   r   r
   )
r)   rO  rF  rG  rH  r6   fn_gziprJ  rK  r4   s
             r   test_gzip_py3z TestMMIOCoordinate.test_gzip_py3  s    	 *+*+EFLL##QAKv#>DGG#$''4 DIIgt,EKK		$KKM !
 7O##%!!QYY[1#  		 ! rM  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
                        j                         }t        ||       y )Nr:  r;  r<  r=  r>  r!  r   rY   r   r7  r   r'   r   r   r   r   r
   r)   rF  rG  rH  r6   r4   s         r   test_real_write_readz'TestMMIOCoordinate.test_real_write_read  s    *+*+EFLL##QAKv#>VDGG_?	AIIK477O##%!!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
                        j                         }t        ||       y )Nr:  r;  y      ?      @y      @       @y      %@?yQ?y     Po@        y     q      @y)\@@@y      (@?r=  r>  )rm   rm   rS   r   r{   rB   rS  rT  s         r   test_complex_write_readz*TestMMIOCoordinate.test_complex_write_read  s    *+*+ H I LL##QAKv#>VDGG_B	DIIK477O##%!!Q'r   c                 6   |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 ]a  }|j                         }dD ]J  }	||	d	z   z  }
t        |
|j                  |	             t        |
      j                         }t        ||       L c y )
Nsparse_formatsr:  r;  r<  r=  r>  rW  )csrcsccooz.mtx)mkdirr   appendrY   r   r7  r   r   asformatr   r
   )r)   tmp_pathr#   matsrF  rG  rH  matexpectedfmtfnameresults               r   test_sparse_formatsz&TestMMIOCoordinate.test_sparse_formats  s    ,,*+*+EFELL++QAKv+FG H IELL++QAKv+FGC{{}H,#,/s||C01..0)&(;	 - r   c           	      0   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                        }t        |j                  |dz
  g       t        |j                  |dz
  g       t        |j                  t        d|z  |z        g         y c c}w )Nr   ir6  r<   )	precisionz%%.%dg)r   rangerY   r   
dok_matrixr   r'   rZ   r   r	   rowcolr   datafloat)r)   itest_valuestest_precisionsvaluerk  nAs           r   test_precisionz!TestMMIOCoordinate.test_precision  s    duQR/@A/@!b1g/@AA2, E,		MA%LL++QF3#!A#qs(i8HHOODGG,"1551Q3%0"1551Q3%0x)/Ce/K)L(MN - ! 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  sY     q!((1]]:->?HHOOBJJt,- @??r   N)r   r   r   r*   r0   r   r#  r(  r+  r.  r1  r4  r8  rL  rQ  rU  rX  rh  rx  rz  r   r   r   r  r  '  s^    <#(DIKFID
(2020(( <0O".r   r  c                  @    t        t        j                  d             y )Nzg%%MatrixMarket matrix coordinate complex symmetric
 1 1 1
1 1 -2.1846000000000e+02  0.0000000000000e+00)r   rZ   StringIOr   r   r   test_gh11389r}    s    
2;; G H Ir   c                     g d}| dz  }t        |d      5 }|j                  |       d d d        t        |       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   )r   
writelinesr   )ra  lines	test_filer   s       r   test_gh18123r  	  sC    E
 :%I	i		U 

9 
	s	   <A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 threadpoolctlr?   )limitsr=   rY   )r  user_api)	threadpoolctlhasattrr   skiprC  threadpool_limitsr   fmmPARALLELISM)r  s    r   test_threadpoolctlr    s    }j1KK/0 2 
	(	(	(	2S__a( 
3 
	(	(G	(	DS__a( 
E	D  &' 
3	2 
E	Ds(   %B B91CB65B69CC)2tempfiler   r$   rZ   r.   r   numpyrU   r   r   r   numpy.testingr   r   r	   r
   r   r   r\   scipy.sparserY   scipy.io._mmioscipy.io._fast_matrix_market_fast_matrix_marketr  r   fixturer[   r   r   r   r   r   r   r  r  r	  r  r  r   r"  r'  r*  r-  r0  r3  r  r}  r  r  r   r   r   <module>r     s4    	 	    & &J J  *   * * '02 
 h'<dK$ L$y: y:x}B }B@  !   ) %+ '& "$  % !_% _%D  D
 

 
  "Y. Y.xI	)r   