
    e!hoq                        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% Z6y)&    )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    `/var/www/html/diagnosisapp-backend/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 r7   )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r@   r   r-   typevalrH   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rG   rD   rF   r   rI   )r   r@   )r-   rL   rH   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                        rG   r      rD   rD   rF   r   r   rI   )r   npint64intpitemsizer   scipyio_mmioassert_raisesOverflowErrorr+   r@   r-   r;   s     r   test_64bit_integerz TestMMIOArray.test_64bit_integerE   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 )NrU   rV           rG   )rD   rD   rF   r   r   rI   )r   r[   uint64r@   rd   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   rC   rG   rD   rF   r   rI   rJ   rK   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 rl   rJ   rK   s      r   "test_simple_lower_triangle_integerz0TestMMIOArray.test_simple_lower_triangle_integerU   rn   r   c           	      V    | j                  t        g dg dg|      dddd|df       y )	NrC   rD   rE   rF         rG   rD   rE   ru   r   rI   rJ   rK   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 )NrC   rD         @rF   rt   ru   )rE   rD   ru   r   realrI   r>   r,   s    r   test_simple_rectangular_floatz+TestMMIOArray.test_simple_rectangular_float_   s&    

QFS!Hq!f-8	:r   c                 4    | j                  ddgddggd       y )NrC   rD   rE         @rD   rD   rF   r   ry   rI   rz   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 )NrC   rD   rE                 @)rD   rD   rF   r   complexrI   rz   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 )NrC   rD   rF   rG   r   	symmetricrJ   rK   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   rD   )rD   rD   rF   r   r   skew-symmetric)r@   r,   s    r   "test_simple_skew_symmetric_integerz0TestMMIOArray.test_simple_skew_symmetric_integerp   s#    1a&2q'*H	Jr   c                 H    | j                  t        ddgddggd      d       y )Nr   rD          g        f)rD   rD   rF   r   ry   r   )r>   r   r,   s    r    test_simple_skew_symmetric_floatz.TestMMIOArray.test_simple_skew_symmetric_floatt   s(    

51a&4+.4?	Ar   c                 4    | j                  ddgddggd       y )NrC          @      @       @      rF   )rD   rD   rF   r   r   	hermitianrz   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   ry   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   ry   rI   )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_   r`   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 )NrC   rD   r   c   rG   rZ   )r@   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 )NrC   rD   r        X@rG   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.   r4   r>   r@   r   markthread_unsafeparametrizeparametrize_argsrM   rS   re   rj   rm   rp   rv   r{   r   r   r   r   r   r   r   r   	fail_slowr   r   r    r   r   r   r   %   s   <#( [[[[-/?@A A A [[[[-/?@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   r/   r   c                 B    t        j                  | j                         y r   r1   r,   s    r   r4   z!TestMMIOSparseCSR.teardown_method   r5   r   c                     t        | j                  |       t        t        | j                        |       t	        | j                  d      }t        |j                         |j                                y r7   )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 r7   )r   r+   r   r   r   r   r:   s       r   r@   zTestMMIOSparseCSR.check_exact   sH    VDGG_d+477U+QYY[!))+.r   rA   c           	      ~    | j                  t        j                  j                  ddgddgg|      dddd|df       y )NrC   rD   rE   rF   rG   
coordinaterI   r@   r_   sparse	csr_arrayrK   s      r   rM   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 )NrO   i  rQ   rR   rG   rD   rD   rF   r   r   rI   )r_   r   r   r   r[   r   r@   rd   s     r   rS   z$TestMMIOSparseCSR.test_32bit_integer   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        rW   rG   r   rY   r   )r_   r   r   r   r[   r\   r]   r^   r   r`   ra   rb   rc   r+   r@   rd   s     r   re   z$TestMMIOSparseCSR.test_64bit_integer   s    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 )NrO   rP   rQ   rR   rG   rD   rD   rF   r   r   rI   )r_   r   r   r   r[   uint32r@   rd   s     r   test_32bit_unsigned_integerz-TestMMIOSparseCSR.test_32bit_unsigned_integer   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   rg   rh   rG   r   )r_   r   r   r   r[   ri   r@   rd   s     r   rj   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   rC   rG   rD   r   rI   r   rK   s      r   rm   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   rK   s      r   rp   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 )	Nrr   rs   rG   rD   rE   ru   r   rI   r   rK   s      r   rv   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 )NrC   rD   rx   rF   rt   ru   )rE   rD   ru   r   ry   rI   r>   r_   r   r   r,   s    r   r{   z/TestMMIOSparseCSR.test_simple_rectangular_float   s5    

5<<))Aq6C8aV*DE=	?r   c                 n    | j                  t        j                  j                  ddgddgg      d       y )NrC   rD   rE   r}   rD   rD   rF   r   ry   rI   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 )NrC   rD   rE   r   )rD   rD   rF   r   r   rI   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 )NrC   rD   rF   rG   rE   r   r   r   rK   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   rD   r   )rD   rD   rC   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   rD   r   r   )rD   rD   rC   r   ry   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 )NrC   r   r   rF   )rD   rD   rE   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   ry   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   ry   rI   )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      @rC   )rD   rD   rE   r   patternrI   r   )fieldFr8   T)r_   r   r   r[   
zeros_liker   r   r+   r   r   r   r
   
isspmatrix)r-   r;   pr<   r=   s        r   test_simple_patternz%TestMMIOSparseCSR.test_simple_pattern  s    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 )NrC   rD   r   r   rG   r   )r_   r   r   r[   r   r@   rd   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 )NrC   rD   r   r   rG   r   )r_   r   r   r[   r   r>   rd   s     r   r   z7TestMMIOSparseCSR.test_gh13634_non_skew_symmetric_float$  s;    LL""QFRI#6bjj"I

1@Ar   N)r   r   r   r.   r4   r>   r@   r   r   r   r   rM   rS   re   r   rj   rm   rp   rv   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s?   <#</ [[-/?@F 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  r/   r   c                 B    t        j                  | j                         y r   r1   r,   s    r   r4   z)TestMMIOReadLargeIntegers.teardown_methodp  r5   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   rY   Fr8   )openr+   writer   r   r[   r]   r^   r   r_   r`   ra   rb   rc   r   r   )	r-   exampler;   r<   denseover32over64r   r=   s	            r   
check_readz$TestMMIOReadLargeIntegers.check_reads  s    $''3 	1GGG	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 )NrO   rP   rG   rZ   TFr   r   r   )r   r[   r\   r   _32bit_integer_dense_examplerd   s     r   test_read_32bit_integer_densez7TestMMIOReadLargeIntegers.test_read_32bit_integer_dense  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 )NrO   r   rP   rG   rD   rD   rD   r   r   r   Fr  )r   r[   r\   r   _32bit_integer_sparse_examplerd   s     r   test_read_32bit_integer_sparsez8TestMMIOReadLargeIntegers.test_read_32bit_integer_sparse  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 )
NrU   i   r   rX   rG   rZ   TFr  )r   r[   r\   r   _64bit_integer_dense_examplerd   s     r   test_read_64bit_integer_densez7TestMMIOReadLargeIntegers.test_read_64bit_integer_dense  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 )	NrU   rX   r   rG   )rD   rD   rE   r   r   rI   FTr  )r   r[   r\   r   %_64bit_integer_sparse_general_examplerd   s     r   &test_read_64bit_integer_sparse_generalz@TestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_general  sI    E7#w<!(*2=E##$ 	 	&r   c                 |    t        ddgddggt        j                        }| j                  t        |dddd       y )	NrU    rX   rG   )rD   rD   rE   r   r   r   FTr  )r   r[   r\   r   '_64bit_integer_sparse_symmetric_examplerd   s     r   (test_read_64bit_integer_sparse_symmetriczBTestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_symmetric  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 )	NrU   r  rX   rG   )rD   rD   rE   r   r   r   FTr  )r   r[   r\   r   "_64bit_integer_sparse_skew_examplerd   s     r   #test_read_64bit_integer_sparse_skewz=TestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_skew  sJ    E8$W%'.0hh8:L##$ 	 	&r   c                 :    | j                  t        d dddd       y )NrZ   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.   r4   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  r/   r   c                 B    t        j                  | j                         y r   r1   r,   s    r   r4   z"TestMMIOCoordinate.teardown_method7  r5   r   c                    t        | j                  d      }|j                  |       |j                          t	        t        | j                        |       t        | j                  d      j                         }t        ||       y )Nr   Fr8   )	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)rC   r   r   ru   r   )r         %@r   r   r   r   r   Q?r   r   )r        Po@r   )\@@r   r   r   r      rt   rt   rY   r   ry   rI   )r   _general_examplerd   s     r   test_read_generalz$TestMMIOCoordinate.test_read_generalB  s/    '	
 	(!B	Dr   c                 T    g dg dg dg dg dg}| j                  t        |d       y )NrC   r   r   r   r   )r   r#  r   y     Po@Q86r   r$  )r   y     Po@Q86@r   r'  y       )\@)r   r   r   y        )\@@r*  )rt   rt      r   r   r   )r   _hermitian_examplerd   s     r   test_read_hermitianz&TestMMIOCoordinate.test_read_hermitianK  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)  )rt   rt   r0  r   ry   r   )r   _skew_examplerd   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 )Nr/  )r   r#  r   r&  r   r$  )r   r&  r   r'  rY   )r   r   r   rY   r*  )rt   rt   r0  r   ry   r   )r   _symmetric_examplerd   s     r   test_read_symmetricz&TestMMIOCoordinate.test_read_symmetric]  s/    ##	
 	*AD	Fr   c                 T    g dg dg dg dg dg}| j                  t        |d       y )Nr/  )r   rC   r   rC   r   )r   r   rC   r   r   )r   rC   r   rC   rC   )r   r   r   rC   rC   )rt   rt   r0  r   r   r   )r   _symmetric_pattern_examplerd   s     r   test_read_symmetric_patternz.TestMMIOCoordinate.test_read_symmetric_patternf  s/    	
 	2AG	Ir   c                 T    g dg dg dg dg dg}| j                  t        |d       y r"  )r   _empty_lines_examplerd   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   ry   r   Fr8   )
r_   r   	coo_arrayr   r+   r   r   r   r   r
   )r-   r=   r;   s      r   test_empty_write_readz(TestMMIOCoordinate.test_empty_write_readx  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   rC   rD   rE   rE   rE   rF   r   rE   rC   rD   rC   rE   rF   rF   g      ?g      @r#  r%  r&  g     qr(  g      (@rt   rt   shapez.bz2rbwbFr8   )bz2ImportErrorr   r_   r   r@  r   r+   r   BZ2Filer   readr   r   r   r
   )
r-   rK  IJVr=   fn_bzip2f_inf_outr;   s
             r   test_bzip2_py3z!TestMMIOCoordinate.test_bzip2_py3  s    	 *+*+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   rC  rD  rE  rF  rG  z.gzrI  rJ  Fr8   )gziprL  r   r_   r   r@  r   r+   r   r   rN  r   r   r   r
   )
r-   rX  rO  rP  rQ  r=   fn_gziprS  rT  r;   s
             r   test_gzip_py3z TestMMIOCoordinate.test_gzip_py3  s    	 *+*+EFLL""A1v;f"=WWIS/$''4  	DIIgt,EKK		$KKM	
 7U+335!!QYY[1#  			 	rV  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 )	NrC  rD  rE  rF  rG  r+  Fr8   r   r_   r   r@  r   r+   r   r   r   r   r
   r-   rO  rP  rQ  r=   r;   s         r   test_real_write_readz'TestMMIOCoordinate.test_real_write_read  s    *+*+E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 )	NrC  rD  y      ?      @y      @       @y      %@?yQ?y     Po@        y     q      @y)\@@@y      (@?rF  rG  )rt   rt   rY   r   r   rI   Fr8   r\  r]  s         r   test_complex_write_readz*TestMMIOCoordinate.test_complex_write_read  s    *+*+ H 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_formatsrC  rD  rE  rF  rG  r`  )csrcsccooz.mtxFr8   )mkdirr   appendr_   r   r@  r   r   asformatr   r
   )r-   tmp_pathr'   matsrO  rP  rQ  matexpectedfmtfnameresults               r   test_sparse_formatsz&TestMMIOCoordinate.test_sparse_formats  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	|z  |z        g         y c c}w )
Nr   ir   rC   )	precisionFr8   z%%.%dg)r   ranger_   r   	dok_arrayr   r+   r`   r   r	   rowcolr   datafloat)r-   itest_valuestest_precisionsvaluert  nAs           r   test_precisionz!TestMMIOCoordinate.test_precision  s   duQR/@A!b1gAA2,  	OE, O		MA%LL**Aq62#!A#qs(i8HHOODGGeO<"1551Q3%0"1551Q3%0x)/Ce/K)L(MNO	O 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.   r4   r   r-  r2  r5  r8  r;  r>  rA  rU  rZ  r^  ra  rq  r  r  r   r   r   r  r  2  s^    <#(DIKFID
(2020(( <0O".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+00Fr8   )r   r`   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   Fr8   )r   
writelinesr   )rj  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  Fr8   test_mtxztest_mtx.mtx)r   r`   r  r   )rj  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 threadpoolctlrF   )limitsrD   r_   )r  user_api)	threadpoolctlhasattrr   skiprL  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)7tempfiler   r(   r`   r2   r%   r   numpyr[   r   r   r   numpy.testingr   r   r	   r
   r   r   rb   scipy.sparser_   scipy.io._mmioscipy.io._fast_matrix_market_fast_matrix_marketr  r   r   r   
pytestmarkfixturera   r   r   r   r  r  r	  r  r  r  r  r  r   r,  r1  r4  r7  r:  r=  r  r  r  r  r  r   r   r   <module>r     sL    	 	     & &J J  *   * * '02  [[&&
 h'<dK$ L${: {:|CB CBL  !   ) %+ '& "$  % !_% _%D  D
 

 
  "Y. Y.x	&*)r   