o
    ?Hhoq                     @   sd  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  mZ ddgZejjZejdejjefd	d
dd Z G dd dZ!G dd de!Z"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*G dd dZ+dZ,dZ-dZ.dZ/dZ0d Z1G d!d" d"Z2d#d$ Z3d%d& Z4d'd( Z5d)d* Z6dS )+    )mkdtempN)array	transposepi)assert_equalassert_allcloseassert_array_equalassert_array_almost_equal)raises)integerint)unsigned-integeruintmoduleT)scopeparamsautousec                 C   s   | j ja| j ja| j jad S N)parammminfommreadmmwrite)request r   X/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/scipy/io/tests/test_mmio.pyimplementations   s   r   c                   @   s4  e Zd Zdd Zdd Zdd Zdd Zejj	ej
d	ed
d Zejj	ej
d	edd Zdd Zdd Zej
d	edd Zej
d	edd Zej
d	edd Zdd Zdd Zdd Zej
d	edd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zejd*d+d, Zd-d. Zd/d0 Zd1S )2TestMMIOArrayc                 C   *   t tt d| _tj| jd| _d S N)suffixztestfile.mtx	r   str	threadingget_native_idtmpdirospathjoinfnselfr   r   r   setup_method&      zTestMMIOArray.setup_methodc                 C      t | j d S r   shutilrmtreer$   r)   r   r   r   teardown_method*      zTestMMIOArray.teardown_methodc                 C   s8   t | j| tt| j| t| jdd}t|| d S NFspmatrix)r   r(   r   r   r   r	   r*   ainfobr   r   r   check-      zTestMMIOArray.checkc                 C   s8   t | j| tt| j| t| jdd}t|| d S r3   )r   r(   r   r   r   r6   r   r   r   check_exact3   r;   zTestMMIOArray.check_exacttypeval, dtypec              	   C   s0   |  tddgddgg|ddddd|df d S )N            dtyper   generalr<   r   r*   typevalrC   r   r   r   test_simple_integer9   s   z!TestMMIOArray.test_simple_integerc              	   C   s4   t ddgddgg|d}| |dddd|d	f d S )
NrB   r?   rA   r   rD   )r   r<   )r*   rG   rC   r7   r   r   r   test_32bit_integer?   s   z TestMMIOArray.test_32bit_integerc                 C   s\   t ddgddggtjd}tdjdk r&ttjjjkr&t	t
t| j| d S | |d d S )	N                        rB   r      r?   r?   rA   r   r   rD   )r   npint64intpitemsizer   scipyio_mmioassert_raisesOverflowErrorr(   r<   r*   r7   r   r   r   test_64bit_integerE   s   z TestMMIOArray.test_64bit_integerc                 C   s*   t ddgddggtjd}| |d d S )NrN   rO           rB   )r?   r?   rA   r   r   rD   )r   rT   uint64r<   r]   r   r   r   test_64bit_unsigned_integerL   s   z)TestMMIOArray.test_64bit_unsigned_integerc              	   C   s0   |  tddgddgg|ddddd|df d S Nr   r>   rB   r?   rA   r   rD   rE   rF   r   r   r   "test_simple_upper_triangle_integerP      z0TestMMIOArray.test_simple_upper_triangle_integerc              	   C   s0   |  tddgddgg|ddddd|df d S rc   rE   rF   r   r   r   "test_simple_lower_triangle_integerU   re   z0TestMMIOArray.test_simple_lower_triangle_integerc              	   C   s0   |  tg dg dg|ddddd|df d S )	Nr>   r?   r@   rA         rB   r?   r@   rj   r   rD   rE   rF   r   r   r   test_simple_rectangular_integerZ   re   z-TestMMIOArray.test_simple_rectangular_integerc                 C   s"   |  ddgddgddggd d S )Nr>   r?         @rA   ri   rj   )r@   r?   rj   r   realrD   r:   r)   r   r   r   test_simple_rectangular_float_      z+TestMMIOArray.test_simple_rectangular_floatc                 C      |  ddgddggd d S )Nr>   r?   r@         @r?   r?   rA   r   rm   rD   rn   r)   r   r   r   test_simple_floatc      zTestMMIOArray.test_simple_floatc                 C   rq   )Nr>   r?   r@                 @)r?   r?   rA   r   complexrD   rn   r)   r   r   r   test_simple_complexg   ru   z!TestMMIOArray.test_simple_complexc              	   C   s0   |  tddgddgg|ddddd|df d S )Nr>   r?   rA   rB   r   	symmetricrE   rF   r   r   r   test_simple_symmetric_integerk   re   z+TestMMIOArray.test_simple_symmetric_integerc                 C   s   |  ddgddggd d S )Nr   r?   )r?   r?   rA   r   r   skew-symmetric)r<   r)   r   r   r   "test_simple_skew_symmetric_integerp   ru   z0TestMMIOArray.test_simple_skew_symmetric_integerc                 C   s"   |  tddgddggdd d S )Nr   r?          g        f)r?   r?   rA   r   rm   r|   )r:   r   r)   r   r   r    test_simple_skew_symmetric_floatt   rp   z.TestMMIOArray.test_simple_skew_symmetric_floatc                 C   rq   )Nr>          @      @       @      rA   )r?   r?   rA   r   rw   	hermitianrn   r)   r   r   r   test_simple_hermitian_complexx   ru   z+TestMMIOArray.test_simple_hermitian_complexc                 C   s,   d}t j|}|t| }| |d d S )N   r   )r   r   i  r   rm   ry   )rT   randomr   r:   r*   szr7   r   r   r   test_random_symmetric_float|      z)TestMMIOArray.test_random_symmetric_floatc                 C   s    d}t j|}| |d d S )Nr      )r   r   ,  r   rm   rD   )rT   r   r:   r   r   r   r   test_random_rectangular_float   s   z+TestMMIOArray.test_random_rectangular_float
   c                 C   Z   d}t |d}tjtdd tjt	| W d    d S 1 s&w   Y  d S )Nz            %%MatrixMarket matrix array real general
              3  3 999
            1.0
            2.0
            3.0
            4.0
            5.0
            6.0
            7.0
            8.0
            9.0
            asciiznot of length 2match
textwrapdedentencodepytestr
   
ValueErrorrX   rY   r   BytesIOr*   stextr   r   r   &test_bad_number_of_array_header_fields   s
   "z4TestMMIOArray.test_bad_number_of_array_header_fieldsc                 C   &   |  tddgddggtjdd d S )Nr>   r?   r{   c   rB   rS   )r<   r   rT   int32r)   r   r   r   #test_gh13634_non_skew_symmetric_int      z1TestMMIOArray.test_gh13634_non_skew_symmetric_intc                 C   r   )Nr>   r?   r{        X@rB   rs   )r:   r   rT   float32r)   r   r   r   %test_gh13634_non_skew_symmetric_float   r   z3TestMMIOArray.test_gh13634_non_skew_symmetric_floatN) __name__
__module____qualname__r+   r1   r:   r<   r   markthread_unsafeparametrizeparametrize_argsrH   rM   r^   rb   rd   rf   rk   ro   rt   rx   rz   r}   r   r   r   r   	fail_slowr   r   r   r   r   r   r   r   %   sB    





r   c                   @   s  e Zd Zdd Zdd Zdd Zdd Zej	d	e
d
d Zdd Zdd Zdd Zdd Zej	d	e
dd Zej	d	e
dd Zej	d	e
dd Zdd Zdd Zdd Zej	d	e
d d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2S )3TestMMIOSparseCSRc                 C   r   r   r    r)   r   r   r   r+      r,   zTestMMIOSparseCSR.setup_methodc                 C   r-   r   r.   r)   r   r   r   r1      r2   z!TestMMIOSparseCSR.teardown_methodc                 C   s@   t | j| tt| j| t| jdd}t| |  d S r3   )r   r(   r   r   r   r	   toarrayr6   r   r   r   r:         zTestMMIOSparseCSR.checkc                 C   s@   t | j| tt| j| t| jdd}t| |  d S r3   )r   r(   r   r   r   r   r6   r   r   r   r<      r   zTestMMIOSparseCSR.check_exactr=   c              	   C   s4   |  tjjddgddgg|ddddd|df d S )Nr>   r?   r@   rA   rB   
coordinaterD   r<   rX   sparse	csr_arrayrF   r   r   r   rH         z%TestMMIOSparseCSR.test_simple_integerc                 C   2   t jtddgddggtjd}| |d d S )NrI   i  rK   rL   rB   r?   r?   rA   r   r   rD   )rX   r   r   r   rT   r   r<   r]   r   r   r   rM         z$TestMMIOSparseCSR.test_32bit_integerc                 C   sd   t jtddgddggtjd}tdjdk r*tt j	j
jkr*ttt| j| d S | |d d S )N        rP   rB   r   rR   r   )rX   r   r   r   rT   rU   rV   rW   r   rY   rZ   r[   r\   r(   r<   r]   r   r   r   r^      s   z$TestMMIOSparseCSR.test_64bit_integerc                 C   r   )NrI   rJ   rK   rL   rB   r?   r?   rA   r   r   rD   )rX   r   r   r   rT   uint32r<   r]   r   r   r   test_32bit_unsigned_integer   r   z-TestMMIOSparseCSR.test_32bit_unsigned_integerc                 C   s2   t jtddgddggtjd}| |d d S )Nr   r_   r`   rB   r   )rX   r   r   r   rT   ra   r<   r]   r   r   r   rb      r   z-TestMMIOSparseCSR.test_64bit_unsigned_integerc              	   C   s4   |  tjjddgddgg|ddddd|df d S Nr   r>   rB   r?   r   rD   r   rF   r   r   r   rd      r   z4TestMMIOSparseCSR.test_simple_upper_triangle_integerc              	   C   s4   |  tjjddgddgg|ddddd|df d S r   r   rF   r   r   r   rf      r   z4TestMMIOSparseCSR.test_simple_lower_triangle_integerc              	   C   s4   |  tjjg dg dg|ddddd|df d S )	Nrg   rh   rB   r?   r@   rj   r   rD   r   rF   r   r   r   rk      r   z1TestMMIOSparseCSR.test_simple_rectangular_integerc                 C   s*   |  tjddgddgddggd d S )Nr>   r?   rl   rA   ri   rj   )r@   r?   rj   r   rm   rD   r:   rX   r   r   r)   r   r   r   ro          z/TestMMIOSparseCSR.test_simple_rectangular_floatc                 C   $   |  tjddgddggd d S )Nr>   r?   r@   rr   r?   r?   rA   r   rm   rD   r   r)   r   r   r   rt         z#TestMMIOSparseCSR.test_simple_floatc                 C   r   )Nr>   r?   r@   rv   )r?   r?   rA   r   rw   rD   r   r)   r   r   r   rx      r   z%TestMMIOSparseCSR.test_simple_complexc              	   C   s4   |  tjjddgddgg|ddddd|df d S )Nr>   r?   rA   rB   r@   r   ry   r   rF   r   r   r   rz      r   z/TestMMIOSparseCSR.test_simple_symmetric_integerc                 C   s$   |  tjddgddggd d S )Nr   r?   r{   )r?   r?   r>   r   r   r|   r   r)   r   r   r   r}      r   z4TestMMIOSparseCSR.test_simple_skew_symmetric_integerc                 C   s*   |  tjtddgddggdd d S )Nr   r?   r~   r   )r?   r?   r>   r   rm   r|   )r:   rX   r   r   r   r)   r   r   r   r      r   z2TestMMIOSparseCSR.test_simple_skew_symmetric_floatc                 C   r   )Nr>   r   r   rA   )r?   r?   r@   r   rw   r   r   r)   r   r   r   r      r   z/TestMMIOSparseCSR.test_simple_hermitian_complexc                 C   s8   d}t j|}|t| }tj|}| |d d S )Nr   )r   r      r   rm   ry   )rT   r   r   rX   r   r   r:   r   r   r   r   r     s
   z-TestMMIOSparseCSR.test_random_symmetric_floatc                 C   s,   d}t j|}tj|}| |d d S )Nr   )r   r   r   r   rm   rD   )rT   r   rX   r   r   r:   r   r   r   r   r   
  r   z/TestMMIOSparseCSR.test_random_rectangular_floatc                 C   s   t jddgddgg}t| }d|| dk< d}t| j|dd tt	| j| t
| jd	d
}t||  t j|rCJ t
| jdd
}t j|sRJ t
| j}t j|s_J d S )Nr   g      ?g      @g      @r>   )r?   r?   r@   r   patternrD   r   )fieldFr4   T)rX   r   r   rT   
zeros_liker   r   r(   r   r   r   r	   
isspmatrix)r*   r7   pr8   r9   r   r   r   test_simple_pattern  s   
z%TestMMIOSparseCSR.test_simple_patternc                 C   .   t jjddgddggtjd}| |d d S )Nr>   r?   r{   r   rB   r   )rX   r   r   rT   r   r<   r]   r   r   r   r         z5TestMMIOSparseCSR.test_gh13634_non_skew_symmetric_intc                 C   r   )Nr>   r?   r{   r   rB   r   )rX   r   r   rT   r   r:   r]   r   r   r   r   $  r   z7TestMMIOSparseCSR.test_gh13634_non_skew_symmetric_floatN)r   r   r   r+   r1   r:   r<   r   r   r   r   rH   rM   r^   r   rb   rd   rf   rk   ro   rt   rx   rz   r}   r   r   r   r   r   r   r   r   r   r   r   r      s<    
	



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                   @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )TestMMIOReadLargeIntegersc                 C   r   r   r    r)   r   r   r   r+   l  r,   z&TestMMIOReadLargeIntegers.setup_methodc                 C   r-   r   r.   r)   r   r   r   r1   p  r2   z)TestMMIOReadLargeIntegers.teardown_methodc           	      C   s   t | jd}|| W d    n1 sw   Y  tt| j| |r4tdjdk r4tt	j
jjks6|r?ttt| j d S t| jdd}|sL| }t|| d S )Nwr   rR   Fr4   )openr(   writer   r   rT   rV   rW   r   rX   rY   rZ   r[   r\   r   r   )	r*   exampler7   r8   denseover32over64r   r9   r   r   r   
check_reads  s   "z$TestMMIOReadLargeIntegers.check_readc                 C   s4   t ddgddggtjd}| jt|ddddd d S )NrI   rJ   rB   rS   TFr   r   r   )r   rT   rU   r   _32bit_integer_dense_exampler]   r   r   r   test_read_32bit_integer_dense     
z7TestMMIOReadLargeIntegers.test_read_32bit_integer_densec                 C   s4   t ddgddggtjd}| jt|ddddd d S )NrI   r   rJ   rB   r?   r?   r?   r   r   ry   Fr   )r   rT   rU   r   _32bit_integer_sparse_exampler]   r   r   r   test_read_32bit_integer_sparse  r   z8TestMMIOReadLargeIntegers.test_read_32bit_integer_sparsec                 C   s4   t ddgddggtjd}| jt|ddddd	 d S )
NrN   i   r   rQ   rB   rS   TFr   )r   rT   rU   r   _64bit_integer_dense_exampler]   r   r   r   test_read_64bit_integer_dense  r   z7TestMMIOReadLargeIntegers.test_read_64bit_integer_densec                 C   s4   t ddgddggtjd}| jt|ddddd d S )	NrN   rQ   r   rB   )r?   r?   r@   r   r   rD   FTr   )r   rT   rU   r   %_64bit_integer_sparse_general_exampler]   r   r   r   &test_read_64bit_integer_sparse_general  r   z@TestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_generalc                 C   s4   t ddgddggtjd}| jt|ddddd d S )	NrN    rQ   rB   )r?   r?   r@   r   r   ry   FTr   )r   rT   rU   r   '_64bit_integer_sparse_symmetric_exampler]   r   r   r   (test_read_64bit_integer_sparse_symmetric  r   zBTestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_symmetricc                 C   s4   t ddgddggtjd}| jt|ddddd d S )	NrN   r   rQ   rB   )r?   r?   r@   r   r   r|   FTr   )r   rT   rU   r   "_64bit_integer_sparse_skew_exampler]   r   r   r   #test_read_64bit_integer_sparse_skew  r   z=TestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_skewc                 C   s   | j td ddddd d S )NrS   Tr   )r    _over64bit_integer_dense_exampler)   r   r   r   !test_read_over64bit_integer_dense     
z;TestMMIOReadLargeIntegers.test_read_over64bit_integer_densec                 C   s   | j td ddddd d S )Nr   FTr   )r   !_over64bit_integer_sparse_exampler)   r   r   r   "test_read_over64bit_integer_sparse  r   z<TestMMIOReadLargeIntegers.test_read_over64bit_integer_sparseN)r   r   r   r+   r1   r   r   r   r   r   r   r   r   r   r   r   r   r   r   k  s    





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                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#S )$TestMMIOCoordinatec                 C   r   r   r    r)   r   r   r   r+   3  r,   zTestMMIOCoordinate.setup_methodc                 C   r-   r   r.   r)   r   r   r   r1   7  r2   z"TestMMIOCoordinate.teardown_methodc                 C   sN   t | jd}|| |  tt| j| t| jdd }t|| d S )Nr   Fr4   )	r   r(   r   closer   r   r   r   r	   )r*   r   r7   r8   r   r9   r   r   r   r   :  s   
zTestMMIOCoordinate.check_readc                 C   4   g dg dg dg dg dg}|  t|d d S N)r>   r   r   rj   r   )r         %@r   r   r   r   r   Q?r   r   )r        Po@r   )\@@r   r   r   r      ri   ri   rR   r   rm   rD   )r   _general_exampler]   r   r   r   test_read_generalB     z$TestMMIOCoordinate.test_read_generalc                 C   r   )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   )ri   ri      r   rw   r   )r   _hermitian_exampler]   r   r   r   test_read_hermitianK  r   z&TestMMIOCoordinate.test_read_hermitianc                 C   r   )Nr   )r   r   r   g     Por   r   )r   r   r   r   r   r   )ri   ri   r   r   rm   r|   )r   _skew_exampler]   r   r   r   test_read_skewT  r   z!TestMMIOCoordinate.test_read_skewc                 C   r   )Nr   )r   r   r   r   r   r   )r   r   r   r   rR   )r   r   r   rR   r   )ri   ri   r   r   rm   ry   )r   _symmetric_exampler]   r   r   r   test_read_symmetric]  r   z&TestMMIOCoordinate.test_read_symmetricc                 C   r   )Nr   )r   r>   r   r>   r   )r   r   r>   r   r   )r   r>   r   r>   r>   )r   r   r   r>   r>   )ri   ri   r   r   r   ry   )r   _symmetric_pattern_exampler]   r   r   r   test_read_symmetric_patternf  r   z.TestMMIOCoordinate.test_read_symmetric_patternc                 C   r   r   )r   _empty_lines_exampler]   r   r   r   test_read_empty_lineso  r   z(TestMMIOCoordinate.test_read_empty_linesc                 C   sP   t jd}t| j| tt| jd | }t| jdd }t	|| d S )N)r   r   )r   r   r   r   rm   ry   Fr4   )
rX   r   	coo_arrayr   r(   r   r   r   r   r	   )r*   r9   r7   r   r   r   test_empty_write_readx  s   
z(TestMMIOCoordinate.test_empty_write_readc           
      C   s   zdd l }W n
 ty   Y d S w tg d}tg d}tg d}tjj|||ffdd}t| j| | j d}t| jd}|	|d	}|
|  |  W d    n1 s]w   Y  t|d
d }	t|	|  d S )Nr   r   r   r>   r?   r@   r@   r@   rA   r   r@   r>   r?   r>   r@   rA   rA   g      ?g      @r   r   r   g     qr   g      (@ri   ri   shapez.bz2rbwbFr4   )bz2ImportErrorr   rX   r   r	  r   r(   r   BZ2Filer   readr   r   r   r	   )
r*   r  IJVr9   fn_bzip2f_inf_outr7   r   r   r   test_bzip2_py3  $   
z!TestMMIOCoordinate.test_bzip2_py3c           
      C   s   zdd l }W n
 ty   Y d S w tg d}tg d}tg d}tjj|||ffdd}t| j| | j d}t| jd}||d	}|	|
  |  W d    n1 s]w   Y  t|d
d }	t|	|  d S )Nr   r  r  r  r  r  z.gzr  r  Fr4   )gzipr  r   rX   r   r	  r   r(   r   r   r  r   r   r   r	   )
r*   r  r  r  r  r9   fn_gzipr  r  r7   r   r   r   test_gzip_py3  r  z TestMMIOCoordinate.test_gzip_py3c                 C      t g d}t g d}t g d}tjj|||ffdd}t| j| tt| jd | }t	| jdd }t
|| d S )	Nr  r  r  r  r  r   Fr4   r   rX   r   r	  r   r(   r   r   r   r   r	   r*   r  r  r  r9   r7   r   r   r   test_real_write_read  s   
z'TestMMIOCoordinate.test_real_write_readc                 C   r"  )	Nr  r  y      ?      @y      @       @y      %@?yQ?y     Po@        y     q      @y)\@@@y      (@?r  r  )ri   ri   rR   r   rw   rD   Fr4   r#  r$  r   r   r   test_complex_write_read  s   
z*TestMMIOCoordinate.test_complex_write_readc                 C   s   |d }|   g }tg d}tg d}tg d}|tjj|||ffdd tg d}|tjj|||ffdd |D ]&}| }dD ]}	||	d	  }
t|
||	 t	|
d
d }t
|| qJqBd S )Nsparse_formatsr  r  r  r  r  r&  )csrcsccooz.mtxFr4   )mkdirr   appendrX   r   r	  r   r   asformatr   r	   )r*   tmp_pathr$   matsr  r  r  matexpectedfmtfnameresultr   r   r   test_sparse_formats  s$   z&TestMMIOCoordinate.test_sparse_formatsc                 C   s   t gdd tdddD  }tdd}|D ]O}|D ]J}d| d }tj||f}|||d |d f< t| j||d tjj| jd	d
}t	|j
|d g t	|j|d g t|jtd| | g qqd S )Nc                 S   s   g | ]}d | qS )r   r   ).0ir   r   r   
<listcomp>  s    z5TestMMIOCoordinate.test_precision.<locals>.<listcomp>r   ir>   r   )	precisionFr4   z%%.%dg)r   rangerX   r   	dok_arrayr   r(   rY   r   r   rowcolr   datafloat)r*   test_valuestest_precisionsvaluer;  nAr   r   r   test_precision  s   
z!TestMMIOCoordinate.test_precisionc                 C   r   )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   r   r   r   +test_bad_number_of_coordinate_header_fields  s
   "z>TestMMIOCoordinate.test_bad_number_of_coordinate_header_fieldsN)r   r   r   r+   r1   r   r   r   r  r  r  r  r
  r  r!  r%  r'  r6  rG  rH  r   r   r   r   r   2  s$    						r   c                   C   s   t tddd d S )Ng%%MatrixMarket matrix coordinate complex symmetric
 1 1 1
1 1 -2.1846000000000e+02  0.0000000000000e+00Fr4   )r   rY   StringIOr   r   r   r   test_gh11389  s   

rK  c                 C   sT   g d}| d }t |d}|| W d    n1 sw   Y  t|dd d S )N)z/ %%MatrixMarket matrix coordinate real general
z5 5 3
z2 3 1.0
z3 4 2.0
z3 5 3.0
ztest.mtxr   Fr4   )r   
writelinesr   )r/  lines	test_filer   r   r   r   test_gh18123  s   rO  c                 C   s<   t tddd}| d }| d }t|| t |dd d S )NrI  Fr4   test_mtxztest_mtx.mtx)r   rY   rJ  r   )r/  r7   test_writefiletest_readfiler   r   r   test_mtx_append   s   

rS  c                  C   s   zdd l } t| dstd W d S W n ty"   td Y d S w | jdd ttjd W d    n1 s:w   Y  | jddd	 ttjd W d    d S 1 sXw   Y  d S )
Nr   registerzthreadpoolctl too oldzno threadpoolctlrA   )limitsr?   rX   )rU  user_api)	threadpoolctlhasattrr   skipr  threadpool_limitsr   fmmPARALLELISM)rW  r   r   r   test_threadpoolctl+  s    


"r]  )7tempfiler   r%   rY   r/   r"   r   numpyrT   r   r   r   numpy.testingr   r   r   r	   r   r
   r[   scipy.sparserX   scipy.io._mmioscipy.io._fast_matrix_market_fast_matrix_marketr[  r   r   r   
pytestmarkfixturerZ   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   rK  rO  rS  r]  r   r   r   r   <module>   sX    
	~ 			b" ]