
    5[g|                         d Z ddlZddlZddlmZmZmZmZmZm	Z	m
Z
mZmZ ddlmZmZ g dZd Zd Zd Zdd	Z G d
 d      Zd Zy)z
  Matrix Market I/O in Python.
  See http://math.nist.gov/MatrixMarket/formats.html
  for information about the Matrix Market format.
    N)	asarrayrealimagconjzerosndarrayconcatenateonescan_cast)
coo_matrixissparse)mminfommreadmmwriteMMFilec                 Z    t        | t              r| j                  d      S t        |       S )Nlatin1)
isinstancebytesdecodestr)ss    I/var/www/html/bid-api/venv/lib/python3.12/site-packages/scipy/io/_mmio.pyasstrr      s$    !Uxx!!q6M    c                 ,    t         j                  |       S )a  
    Return size and storage parameters from Matrix Market file-like 'source'.

    Parameters
    ----------
    source : str or file-like
        Matrix Market filename (extension .mtx) or open file-like object

    Returns
    -------
    rows : int
        Number of matrix rows.
    cols : int
        Number of matrix columns.
    entries : int
        Number of non-zero entries of a sparse matrix
        or rows*cols for a dense matrix.
    format : str
        Either 'coordinate' or 'array'.
    field : str
        Either 'real', 'complex', 'pattern', or 'integer'.
    symmetry : str
        Either 'general', 'symmetric', 'skew-symmetric', or 'hermitian'.

    Examples
    --------
    >>> from io import StringIO
    >>> from scipy.io import mminfo

    >>> text = '''%%MatrixMarket matrix coordinate real general
    ...  5 5 7
    ...  2 3 1.0
    ...  3 4 2.0
    ...  3 5 3.0
    ...  4 1 4.0
    ...  4 2 5.0
    ...  4 3 6.0
    ...  4 4 7.0
    ... '''


    ``mminfo(source)`` returns the number of rows, number of columns,
    format, field type and symmetry attribute of the source file.

    >>> mminfo(StringIO(text))
    (5, 5, 7, 'coordinate', 'real', 'general')
    )r   infosources    r   r   r      s    ` ;;vr   c                 4    t               j                  |       S )aG  
    Reads the contents of a Matrix Market file-like 'source' into a matrix.

    Parameters
    ----------
    source : str or file-like
        Matrix Market filename (extensions .mtx, .mtz.gz)
        or open file-like object.

    Returns
    -------
    a : ndarray or coo_matrix
        Dense or sparse matrix depending on the matrix format in the
        Matrix Market file.

    Examples
    --------
    >>> from io import StringIO
    >>> from scipy.io import mmread

    >>> text = '''%%MatrixMarket matrix coordinate real general
    ...  5 5 7
    ...  2 3 1.0
    ...  3 4 2.0
    ...  3 5 3.0
    ...  4 1 4.0
    ...  4 2 5.0
    ...  4 3 6.0
    ...  4 4 7.0
    ... '''

    ``mmread(source)`` returns the data as sparse matrix in COO format.

    >>> m = mmread(StringIO(text))
    >>> m
    <5x5 sparse matrix of type '<class 'numpy.float64'>'
    with 7 stored elements in COOrdinate format>
    >>> m.A
    array([[0., 0., 0., 0., 0.],
           [0., 0., 1., 0., 0.],
           [0., 0., 0., 2., 3.],
           [4., 5., 6., 7., 0.],
           [0., 0., 0., 0., 0.]])
    )r   readr   s    r   r   r   T   s    Z 8==  r   c                 @    t               j                  | |||||       y)a  
    Writes the sparse or dense array `a` to Matrix Market file-like `target`.

    Parameters
    ----------
    target : str or file-like
        Matrix Market filename (extension .mtx) or open file-like object.
    a : array like
        Sparse or dense 2-D array.
    comment : str, optional
        Comments to be prepended to the Matrix Market file.
    field : None or str, optional
        Either 'real', 'complex', 'pattern', or 'integer'.
    precision : None or int, optional
        Number of digits to display for real or complex values.
    symmetry : None or str, optional
        Either 'general', 'symmetric', 'skew-symmetric', or 'hermitian'.
        If symmetry is None the symmetry type of 'a' is determined by its
        values.

    Returns
    -------
    None

    Examples
    --------
    >>> from io import BytesIO
    >>> import numpy as np
    >>> from scipy.sparse import coo_matrix
    >>> from scipy.io import mmwrite

    Write a small NumPy array to a matrix market file.  The file will be
    written in the ``'array'`` format.

    >>> a = np.array([[1.0, 0, 0, 0], [0, 2.5, 0, 6.25]])
    >>> target = BytesIO()
    >>> mmwrite(target, a)
    >>> print(target.getvalue().decode('latin1'))
    %%MatrixMarket matrix array real general
    %
    2 4
    1.0000000000000000e+00
    0.0000000000000000e+00
    0.0000000000000000e+00
    2.5000000000000000e+00
    0.0000000000000000e+00
    0.0000000000000000e+00
    0.0000000000000000e+00
    6.2500000000000000e+00

    Add a comment to the output file, and set the precision to 3.

    >>> target = BytesIO()
    >>> mmwrite(target, a, comment='\n Some test data.\n', precision=3)
    >>> print(target.getvalue().decode('latin1'))
    %%MatrixMarket matrix array real general
    %
    % Some test data.
    %
    2 4
    1.000e+00
    0.000e+00
    0.000e+00
    2.500e+00
    0.000e+00
    0.000e+00
    0.000e+00
    6.250e+00

    Convert to a sparse matrix before calling ``mmwrite``.  This will
    result in the output format being ``'coordinate'`` rather than
    ``'array'``.

    >>> target = BytesIO()
    >>> mmwrite(target, coo_matrix(a), precision=3)
    >>> print(target.getvalue().decode('latin1'))
    %%MatrixMarket matrix coordinate real general
    %
    2 4 3
    1 1 1.00e+00
    2 2 2.50e+00
    2 4 6.25e+00

    Write a complex Hermitian array to a matrix market file.  Note that
    only six values are actually written to the file; the other values
    are implied by the symmetry.

    >>> z = np.array([[3, 1+2j, 4-3j], [1-2j, 1, -5j], [4+3j, 5j, 2.5]])
    >>> z
    array([[ 3. +0.j,  1. +2.j,  4. -3.j],
           [ 1. -2.j,  1. +0.j, -0. -5.j],
           [ 4. +3.j,  0. +5.j,  2.5+0.j]])

    >>> target = BytesIO()
    >>> mmwrite(target, z, precision=2)
    >>> print(target.getvalue().decode('latin1'))
    %%MatrixMarket matrix array complex hermitian
    %
    3 3
    3.00e+00 0.00e+00
    1.00e+00 -2.00e+00
    4.00e+00 3.00e+00
    1.00e+00 0.00e+00
    0.00e+00 5.00e+00
    2.50e+00 0.00e+00

    N)r   write)targetacommentfield	precisionsymmetrys         r   r   r      s    X HNN61guiBr   c            
          e Zd ZdZed        Zed        Zed        Zed        Zed        Z	ed        Z
ed        Zd	Zd
ZeefZed        ZdZdZdZdZdZeeeeefZed        ZdZdZdZdZeeeefZed        ZededededediZed        Z ed        Z!ed        Z"ed)d       Z#ed        Z$ed         Z%d! Z&d" Z'	 	 d*d$Z(d% Z)d& Z*d' Z+	 	 d*d(Z,y#)+r   )_rows_cols_entries_format_field	_symmetryc                     | j                   S N)r+   selfs    r   rowszMMFile.rows       zzr   c                     | j                   S r2   )r,   r3   s    r   colszMMFile.cols  r6   r   c                     | j                   S r2   )r-   r3   s    r   entrieszMMFile.entries  s    }}r   c                     | j                   S r2   )r.   r3   s    r   formatzMMFile.format
  s    ||r   c                     | j                   S r2   )r/   r3   s    r   r'   zMMFile.field  s    {{r   c                     | j                   S r2   )r0   r3   s    r   r)   zMMFile.symmetry  s    ~~r   c                 `    | j                   | j                  | j                  | j                  fv S r2   )r0   SYMMETRY_SYMMETRICSYMMETRY_SKEW_SYMMETRICSYMMETRY_HERMITIANr3   s    r   has_symmetryzMMFile.has_symmetry  s2    ~~$"9"9"&">">"&"9"9"; ; 	;r   
coordinatearrayc                 Z    || j                   vrd| d| j                    }t        |      y )Nzunknown format type , must be one of )FORMAT_VALUES
ValueError)r4   r<   msgs      r   _validate_formatzMMFile._validate_format!  s9    +++(0A$BTBTAUVCS/! ,r   integerunsigned-integerr   complexpatternc                 Z    || j                   vrd| d| j                    }t        |      y )Nzunknown field type rG   )FIELD_VALUESrI   )r4   r'   rJ   s      r   _validate_fieldzMMFile._validate_field0  s9    )))'w.?@Q@Q?RSCS/! *r   general	symmetriczskew-symmetric	hermitianc                 V    || j                   vrt        d| d| j                          y )Nzunknown symmetry type rG   )SYMMETRY_VALUESrI   )r4   r)   s     r   _validate_symmetryzMMFile._validate_symmetry>  sC    4///5hZ @//3/C/C.DF G G 0r   intpuint64dDc                       y r2    r^   r   r   readerzMMFile.readerK      r   c                       y r2   r^   r^   r   r   writerzMMFile.writerP  r`   r   c                 :   | j                  |      \  }}	 |j                         }d |j                         D        \  }}}}}	|j                  d      st	        d      |j                         dk(  st	        d|z         |j                         dk(  r| j                  }n|j                         dk(  r| j                  }|r:|j                         r&|j                         d   d	v r|j                         }nn|r:|j                         s!|j                         }|j                         s!|j                         }
|| j                  k(  rDt        |
      d
k(  st	        d|j                  d      z         t        t        |
      \  }}||z  }n?t        |
      dk(  st	        d|j                  d      z         t        t        |
      \  }}}|||||j                         |	j                         f|r|j                          S S # |r|j                          w w xY w)a  
        Return size, storage parameters from Matrix Market file-like 'source'.

        Parameters
        ----------
        source : str or file-like
            Matrix Market filename (extension .mtx) or open file-like object

        Returns
        -------
        rows : int
            Number of matrix rows.
        cols : int
            Number of matrix columns.
        entries : int
            Number of non-zero entries of a sparse matrix
            or rows*cols for a dense matrix.
        format : str
            Either 'coordinate' or 'array'.
        field : str
            Either 'real', 'complex', 'pattern', or 'integer'.
        symmetry : str
            Either 'general', 'symmetric', 'skew-symmetric', or 'hermitian'.
        c              3   N   K   | ]  }t        |j                                 y wr2   )r   strip).0parts     r   	<genexpr>zMMFile.info.<locals>.<genexpr>w  s     >tzz|$s   #%z%%MatrixMarketz%source is not in Matrix Market formatmatrixzProblem reading file header: rE   rD   r   %%      zHeader line not of length 2: ascii   zHeader line not of length 3: )_openreadlinesplit
startswithrI   lowerFORMAT_ARRAYFORMAT_COORDINATElstripre   lenr   mapintclose)r4   r   streamclose_itlinemmidri   r<   r'   r)   
split_liner5   r8   r:   s                 r   r   zMMFile.infoU  s   6  ::f-/	 ??$D>> 2D&&%??#34 !HII<<>X- !@4!GHH ||~(**</// ;;=T[[]1%5%B!??,D	  jjl( jjl J***:!+$%D%)[[%9&: ; ; j1
d+:!+$%D%)[[%9&: ; ;&)#z&:#dG$NN$&  x s   C$H ;0H ,CH Hc                    	 t        j                  |       } |d   dk(  rt         j                  j	                  |       swt         j                  j	                  | dz         r| dz   } nOt         j                  j	                  | dz         r| dz   } n't         j                  j	                  | dz         r| dz   } | j                  d      rddl}|j                  | |      }|dfS | j                  d	      rddl}|j                  | d
      }|dfS t        | |      }|dfS | dd dk7  r| dz   } t        | |      }|dfS # t        $ r | dfcY S w xY w)a   Return an open file stream for reading based on source.

        If source is a file name, open it (after trying to find it with mtx and
        gzipped mtx extensions). Otherwise, just return source.

        Parameters
        ----------
        filespec : str or file-like
            String giving file name or file-like object
        mode : str, optional
            Mode with which to open file, if `filespec` is a file name.

        Returns
        -------
        fobj : file-like
            Open file-like object.
        close_it : bool
            True if the calling function should close this file when done,
            false otherwise.
        Fr   rz.mtxz.mtx.gzz.mtx.bz2z.gzNz.bz2rbT)
osfspath	TypeErrorpathisfileendswithgzipopenbz2BZ2File)filespecmoder   r|   r   s        r   rp   zMMFile._open  sR   4	#yy*H 7c> 77>>(+77>>(6/2'&0HWW^^HY$67')3HWW^^HZ$78'*4H  '8T2 t| ""6*Xt4 t| h- t|	 }&#f,(D)Ft|A  	#U?"	#s   D8 8EEc                       j                   \  }|k7  rt        j                  S d}d} j                  j                  dv }t               rp j                           j                         \  }}||k  j                         ||kD  j                         k7  rt        j                  S  j                           fd}n fd} |       D ]`  \  }}	}
|r
|
r|dk7  rd}nD|r||	k7  rd}t        j                  d      5  |r||	 k7  rd}d d d        |r|t        |	      k7  rd}|rZ|r]|r` n |rt        j                  S |rt        j                  S |rt        j                  S t        j                  S # 1 sw Y   mxY w)	NTFDc               3      K   j                         D ])  \  \  } }}| |kD  r|| f   }||df | |k(  s#||df + y w)NFT)items)ijaijajir%   s       r   symm_iteratorz+MMFile._get_symmetry.<locals>.symm_iterator  sT     %&WWYMVaS1u1g"C//a"C.. &/s
   3A
Ac               3      K   t              D ]-  } t        |       D ]  }|   |    |    |   }}|||| k(  f  / y wr2   )range)r   r   r   r   r%   ns       r   r   z+MMFile._get_symmetry.<locals>.symm_iterator  sO     qA"1a[#$Q47AaDGS"Ca00 ) "s   =A r   Fignore)over)shaper   SYMMETRY_GENERALdtypecharr   tocoononzerosumtodoknperrstater   r@   rA   rB   )r%   missymmisskewishermrowcolr   r   r   is_diagonalr   s   `          @r   _get_symmetryzMMFile._get_symmetry  s\   ww16***% A; 	AJS#c	 S3YOO$55... 	A/1 (5#S#{+#(cSj"F[[h/##+!& 0 cT#Y."Ff (7  ,,,111,,,&&&! 0/s   =E44E=	c           
          t         j                  d|z  t         j                  dt         j                  dt         j                  d||fz  ij                  | d       S )Nz%%.%ie
z%i
z%u
z%%.%ie %%.%ie
)r   
FIELD_REALFIELD_INTEGERFIELD_UNSIGNEDFIELD_COMPLEXget)r'   r(   s     r   _field_templatezMMFile._field_template$  sY    !!:	#9$$f%%v$$&7	*'+
 #eT"	#r   c                 (     | j                   di | y )Nr^   )_init_attrs)r4   kwargss     r   __init__zMMFile.__init__.  s    "6"r   c                     | j                  |      \  }}	 | j                  |       | j                  |      |r|j                          S S # |r|j                          w w xY w)a  
        Reads the contents of a Matrix Market file-like 'source' into a matrix.

        Parameters
        ----------
        source : str or file-like
            Matrix Market filename (extensions .mtx, .mtz.gz)
            or open file object.

        Returns
        -------
        a : ndarray or coo_matrix
            Dense or sparse matrix depending on the matrix format in the
            Matrix Market file.
        )rp   _parse_header_parse_bodyr{   )r4   r   r|   r}   s       r   r!   zMMFile.read2  s]       ::f-	v&##F+  x s   !A A Nc                     | j                  |d      \  }}	 | j                  ||||||       |r|j                          y|j                          y# |r|j                          w |j                          w xY w)a7  
        Writes sparse or dense array `a` to Matrix Market file-like `target`.

        Parameters
        ----------
        target : str or file-like
            Matrix Market filename (extension .mtx) or open file-like object.
        a : array like
            Sparse or dense 2-D array.
        comment : str, optional
            Comments to be prepended to the Matrix Market file.
        field : None or str, optional
            Either 'real', 'complex', 'pattern', or 'integer'.
        precision : None or int, optional
            Number of digits to display for real or complex values.
        symmetry : None or str, optional
            Either 'general', 'symmetric', 'skew-symmetric', or 'hermitian'.
            If symmetry is None the symmetry type of 'a' is determined by its
            values.
        wbN)rp   _writer{   flush)	r4   r$   r%   r&   r'   r(   r)   r|   r}   s	            r   r#   zMMFile.writeM  sd    .  ::fd3	KK7E9hG  s   A %A6c           
      B   | j                   j                  }|D cg c]  }|dd 	 }}t        |j                               t        |      z
  }|r$t	        dj                  t        |      |            |D ]"  }t        | ||j                  |dd d             $ yc c}w )zr
        Initialize each attributes with the corresponding keyword arg value
        or a default of None
           NzVfound {} invalid keyword arguments, please only
                                use {})		__class__	__slots__setkeysrI   r<   tuplesetattrr   )r4   r   attrsattrpublic_attrsinvalid_keyss         r   r   zMMFile._init_attrsp  s     ((-23UTQRU36;;=)C,== **0&|1D-9+;< < DD$

48T :;  4s   Bc                 v    | j                   j                  |      \  }}}}}}| j                  ||||||       y )N)r5   r8   r:   r<   r'   r)   )r   r   r   )r4   r|   r5   r8   r:   r<   r'   r)   s           r   r   zMMFile._parse_header  sE    NN' 	5dGVUHdwv$x 	 	9r   c           	         | j                   | j                  | j                  | j                  | j                  | j
                  f\  }}}}}}| j                  j                  |d       }| j                  }	|| j                  k(  }
|| j                  k(  }|| j                  k(  }|| j                  k(  }|| j                  k(  }|| j                  k(  }|| j                  k(  r?t!        ||f|      }d}d\  }}|rd|||f<   ||dz
  k  r|dz  }|r|j#                         }|r|d   dv s|j%                         s,|
rt'        |      }n@|rt'        |      }n2|r%t)        t+        t,        |j/                                }nt-        |      }||||f<   |	r*||k7  r%|r	| |||f<   n|rt1        |      |||f<   n||||f<   ||dz
  k  r|dz   }n"|dz   }|	sd}n|}|rd|||f<   ||dz
  k  r|dz  }|r|r|d|fv r||dz
  k(  s!t3        d      |d|fv r||k(  st3        d      |S || j4                  k(  r|dk(  rt7        ||f|      S t!        |d      }t!        |d      }|rt9        |d      }n=|
rt!        |d	      }n-|rt!        |d
      }n|rt!        |d      }nt!        |d      }d}|D ]  }|r|d   dv s|j%                         s|dz   |kD  rt3        d      |j/                         }t+        t&        |d d       \  ||<   ||<   |sX|
rt'        |d         ||<   nD|rt'        |d         ||<   n0|rt)        t+        t,        |dd         ||<   nt-        |d         ||<   |dz  } ||k  rt3        d      |dz  }|dz  }|	rU||k7  }||   }||   }||   }t;        ||f      }t;        ||f      }|r|dz  }n|r|j=                         }t;        ||f      }t7        |||ff||f|      }|S t?        |      )N)r   r   )r   r   r   rj   z$Parse error, did not read all lines.intcint8rY   rZ   rN   floatz5'entries' in header is smaller than number of entriesrm   z4'entries' in header is larger than number of entries)r   r   ) r5   r8   r:   r<   r'   r)   DTYPES_BY_FIELDr   rC   r   r   r   rA   rB   FIELD_PATTERNru   r   rq   re   rz   rN   ry   r   rr   r   rI   rv   r   r
   r	   	conjugateNotImplementedError)r4   r|   r5   r8   r:   r<   r'   symmr   rC   
is_integeris_unsigned_integer
is_complexis_skewis_herm
is_patternr%   r~   r   r   r   IJVentry_numberlmaskod_Iod_Jod_Vs                                 r   r   zMMFile._parse_body  s   48IItyy48LL$++48JJ4O0dGVUD $$((5((d000
#t':'::d000
$666$111d000
T&&&tTl%0ADDAq!Q$tax<FA(tAw)34::<d)C(d)C!3udjjl#;<C+C!Q$AF#&$!Q$ "&s)!Q$"%!Q$tAv:AAAA'"&'AadG 46z !QA D aVTAX$%KLLaVT	$%KLLN K t--- !|!4,e<<gV,AgV,A/'0$'2'3'1LtAw)34::<>G+$ &9 : :JJL36sAbqE?0,<!!*-ad),,*-ad),#*13uae3D*E,*/!+,!) * g%  "5 6 6 FAFAQwwwD	*D	*BJD>>+DD	*A1v;tTl%HA  &f--r   c                    t        |t              s,t        |t              st        |t              st	        |d      r| j
                  }t        |      }t        |j                        dk7  rt        d      |j                  \  }}	||| j                  k(  r3t        |j                  d      st        d      |j                  d      }n|| j                  k(  r*|j                  j                   dvr~|j                  d      }nl|| j"                  k(  r]|j                  j                   dvrE|j                  d	      }n3t%        |      st        d
t'        |      z        d}|j                  \  }}	|j                  j                   }
|	|
dv rd}nd}|e|j                  j(                  }|dk(  r$t        |j                  d      st        d      d}n&|dk(  rd}n|dk(  rd}n|dk(  rd}nt+        d|z         || j-                  |      }| j.                  j1                  |       | j.                  j3                  |       | j.                  j5                  |       d| d| d| d}|j7                  |j9                  d             |j;                  d      D ]'  }d|z  }|j7                  |j9                  d             ) | j=                  ||      }|| j
                  k(  rZd||	fz  }|j7                  |j9                  d             || j                  | j                  | j>                  fv r|| j@                  k(  rKtC        |	      D ]<  }tC        |      D ],  }||||f   z  }|j7                  |j9                  d             . > y || jD                  k(  rOtC        |	      D ]@  }tC        |dz   |      D ],  }||||f   z  }|j7                  |j9                  d             . B y tC        |	      D ]=  }tC        ||      D ],  }||||f   z  }|j7                  |j9                  d             . ? y || j"                  k(  r|| j@                  k(  ratC        |	      D ]R  }tC        |      D ]B  }|||f   }|tG        |      tI        |      fz  }|j7                  |j9                  d             D T y tC        |	      D ]S  }tC        ||      D ]B  }|||f   }|tG        |      tI        |      fz  }|j7                  |j9                  d             D U y || jJ                  k(  rt        d      t+        d |z        |jM                         }|| j@                  k7  r[|jN                  |jP                  k\  }tS        |jT                  |   |jN                  |   |jP                  |   ff|j                  !      }d"||	|jV                  fz  }|j7                  |j9                  d             | j=                  ||dz
        }|| jJ                  k(  rVtY        |jN                  dz   |jP                  dz         D ],  \  }}d||fz  }|j7                  |j9                  d             . y || j                  | j                  | j>                  fv rhtY        |jN                  dz   |jP                  dz   |jT                        D ]3  \  }}}d#||fz  ||z  z   }|j7                  |j9                  d             5 y || j"                  k(  r~tY        |jN                  dz   |jP                  dz   |jT                        D ]I  \  }}}d#||fz  ||jF                  |jH                  fz  z   }|j7                  |j9                  d             K y t+        d |z        )$N	__array__rm   zExpected 2 dimensional arrayrY   zBmmwrite does not support integer dtypes larger than native 'intp'.fdr[   r   r\   zunknown matrix type: %srD   fF      r   rL   fr   crN   urM   zunexpected dtype kind z%%MatrixMarket matrix  
r   z%%%s
z%i %i
r   z*pattern type inconsisted with dense formatzUnknown field type %s)r   z	%i %i %i
z%i %i )-r   listr   r   hasattrru   r   rx   r   rI   r   r   r   OverflowErrorastyper   r   r   r   typekindr   r   r   rK   rR   rX   r#   encoderr   r   r   r   r   rA   r   r   r   r   r   r   r   datannzzip)r4   r|   r%   r&   r'   r(   r)   repr5   r8   typecoder   r   r~   templater   r   r   coolower_triangle_maskr   r   r[   s                          r   r   zMMFile._write  s   a*Q"8a71k#:##C
A177|q  !?@@JD$ D...#AGGV4+ -P Q Q(Adoo-ww||4/HHSMd000ww||4/HHSM A; !:T!W!DEECJD$77<<4		=77<<Ds{0' )L M M!!* 84 ?@@))!,H 	'',&&u-))(3 (uAeWAhZrBT[[*+ MM$'Dt$DLLX./ ( ''y9$###d|+DLLX./++T__,,. .t444"4[!&tA#+a1g#5D"LLX)>? "- )
 !=!=="4[!&q1ud!3A#+a1g#5D"LLX)>? "4 ) #4[!&q$A#+a1g#5D"LLX)>? "0 )
 $,,,t444"4[!&tA"#AqD'C#+tCy$s).D#DD"LLX)>? "- ) #4[!&q$A"#AqD'C#+tCy$s).D#DD"LLX)>? "0 ) $,,, !MNN   7% ?@@ '')C 4000&)gg&8# #((+>"?"%''*=">"%''*=">"@"A (+yy2  4sww"77DLLX./++E9Q;?H***	377195DAq$1v-DLLX!67 6 4--t..0 0"37719cggaiBGAq!$1v-(Q,?DLLX!67  C $,,,"37719cggaiBGAq!$1v-(affaff=M2MNDLLX!67  C   7% ?@@r   )r    NNN)-__name__
__module____qualname__r   propertyr5   r8   r:   r<   r'   r)   rC   rv   ru   rH   classmethodrK   r   r   r   r   r   rQ   rR   r   r@   rA   rB   rW   rX   r   staticmethodr_   rb   r   rp   r   r   r   r!   r#   r   r   r   r   r^   r   r   r   r      s   I             ; ; %L&5M" " M'NJMM!>:}!#L " " !$.$');.0BDO G G
 %f%x!3$c$c	+O     K K\ ; ;| =' ='@ # ##6 BF F<&9EP CGWAr   r   c                     g }	 ddl }|j                  |j                         	 ddl}|j                  |j
                         t        |      }t        | |       S # t        $ r Y Cw xY w# t        $ r Y 2w xY w)z
    Check whether `stream` is compatible with numpy.fromfile.

    Passing a gzipped file object to ``fromfile/fromstring`` doesn't work with
    Python 3.
    r   N)r   appendGzipFileImportErrorr   r   r   r   )r|   bad_clsr   r   s       r   _is_fromfile_compatibler    s{     Gt}}%s{{# GnG&'***  
  s"   A A* 	A'&A'*	A65A6r  )__doc__r   numpyr   r   r   r   r   r   r   r	   r
   r   scipy.sparser   r   __all__r   r   r   r   r   r  r^   r   r   <module>r     sX    
 # # # .
30j-!dlC`s
A s
Al+r   