§
    fŠtjL}  ã                   ó¢   — 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mZ g d¢Zd„ Zd„ Zdd	œd
„Zdd„Z G d„ d¦  «        Zd„ ZdS )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_arrayÚissparseÚ
coo_matrix)ÚmminfoÚmmreadÚmmwriteÚMMFilec                 ót   — t          | t          ¦  «        r|                      d¦  «        S t          | ¦  «        S )NÚlatin1)Ú
isinstanceÚbytesÚdecodeÚstr)Úss    úL/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/io/_mmio.pyÚasstrr      s1   € Ý�!•UÑÔð "Ø�xŠx˜Ñ!Ô!Ð!Ýˆq‰6Œ6€Mó    c                 ó6   — t                                | ¦  «        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   T©Úspmatrixc                óH   — t          ¦   «                              | |¬¦  «        S )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-like object.
    spmatrix : bool, optional (default: True)
        If ``True``, return sparse matrix. Otherwise return sparse array.

    Returns
    -------
    a : ndarray or coo_array or coo_matrix
        Dense or sparse array 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), spmatrix=False)
    >>> m
    <COOrdinate sparse array of dtype 'float64'
         with 7 stored elements and shape (5, 5)>
    >>> m.toarray()
    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    )r   Úread)r   r!   s     r   r   r   T   s   € õ^ ‰8Œ8�=Š=˜¨(ˆ=Ñ3Ô3Ð3r   Ú c                 óR   — t          ¦   «                              | |||||¦  «         dS )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_array
    >>> 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
    0
    0
    2.5
    0
    0
    0
    6.25

    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.00e+00
    0.00e+00
    0.00e+00
    2.50e+00
    0.00e+00
    0.00e+00
    0.00e+00
    6.25e+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_array(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.0e+00 0.0e+00
    1.0e+00 -2.0e+00
    4.0e+00 3.0e+00
    1.0e+00 0.0e+00
    0.0e+00 5.0e+00
    2.5e+00 0.0e+00

    N)r   Úwrite)ÚtargetÚaÚcommentÚfieldÚ	precisionÚsymmetrys         r   r   r   ˆ   s+   € õX �H„H‡N‚N�6˜1˜g u¨i¸ÑBÔBÐBÐBÐ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#d$œd%„Z'	 	 d.d(„Z(d)„ Z)d*„ Z*d+„ Z+	 	 d.d,„Z,d'S )/r   )Ú_rowsÚ_colsÚ_entriesÚ_formatÚ_fieldÚ	_symmetryc                 ó   — | j         S ©N)r.   ©Úselfs    r   ÚrowszMMFile.rows   ó
   € àŒzÐr   c                 ó   — | j         S r5   )r/   r6   s    r   ÚcolszMMFile.cols  r9   r   c                 ó   — | j         S r5   )r0   r6   s    r   ÚentrieszMMFile.entries  s
   € àŒ}Ðr   c                 ó   — | j         S r5   )r1   r6   s    r   ÚformatzMMFile.format  s
   € àŒ|Ðr   c                 ó   — | j         S r5   )r2   r6   s    r   r*   zMMFile.field  s
   € àŒ{Ðr   c                 ó   — | j         S r5   )r3   r6   s    r   r,   zMMFile.symmetry  s
   € àŒ~Ðr   c                 ó8   — | j         | j        | j        | j        fv S r5   )r3   ÚSYMMETRY_SYMMETRICÚSYMMETRY_SKEW_SYMMETRICÚSYMMETRY_HERMITIANr6   s    r   Úhas_symmetryzMMFile.has_symmetry  s'   € àŒ~ $Ô"9Ø"&Ô">Ø"&Ô"9ð";ð ;ð 	;r   Ú
coordinateÚarrayc                 óP   — || j         vrd|› d| j         › �}t          |¦  «        ‚d S )Nzunknown format type ú, must be one of )ÚFORMAT_VALUESÚ
ValueError)r7   r?   Úmsgs      r   Ú_validate_formatzMMFile._validate_format#  s<   € à˜Ô+Ð+Ð+ØV¨ÐVÐVÀ$ÔBTÐVÐVˆCÝ˜S‘/”/Ð!ð ,Ð+r   Úintegerúunsigned-integerr   ÚcomplexÚpatternc                 óP   — || j         vrd|› d| j         › �}t          |¦  «        ‚d S )Nzunknown field type rJ   )ÚFIELD_VALUESrL   )r7   r*   rM   s      r   Ú_validate_fieldzMMFile._validate_field2  s<   € à˜Ô)Ð)Ð)ØS¨ÐSÐSÀÔ@QÐSÐSˆCÝ˜S‘/”/Ð!ð *Ð)r   ÚgeneralÚ	symmetriczskew-symmetricÚ	hermitianc                 óL   — || j         vrt          d|› d| j         › �¦  «        ‚d S )Nzunknown symmetry type rJ   )ÚSYMMETRY_VALUESrL   )r7   r,   s     r   Ú_validate_symmetryzMMFile._validate_symmetry@  sS   € à˜4Ô/Ð/Ð/Ýð F°hð Fð FØ/3Ô/CðFð Fñ Gô Gð Gð 0Ð/r   ÚintpÚuint64ÚdÚDc                  ó   — d S r5   © ra   r   r   ÚreaderzMMFile.readerM  ó   € àˆr   c                  ó   — d S r5   ra   ra   r   r   ÚwriterzMMFile.writerR  rc   r   c                 ó  — |                       |¦  «        \  }}	 |                     ¦   «         }d„ |                     ¦   «         D ¦   «         \  }}}}}	|                     d¦  «        st	          d¦  «        ‚|                     ¦   «         dk    st	          d|z   ¦  «        ‚|                     ¦   «         dk    r| j        }n|                     ¦   «         dk    r| j        }|rH|                     ¦   «         r1|                     ¦   «         d         d	v r|                     ¦   «         }nn|°H| 	                    ¦   «         s(|                     ¦   «         }| 	                    ¦   «         ¯(|                     ¦   «         }
|| j        k    rVt          |
¦  «        d
k    s%t	          d|                     d¦  «        z   ¦  «        ‚t          t          |
¦  «        \  }}||z  }nQt          |
¦  «        dk    s%t	          d|                     d¦  «        z   ¦  «        ‚t          t          |
¦  «        \  }}}|||||                     ¦   «         |	                     ¦   «         f|r|                     ¦   «          S S # |r|                     ¦   «          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   óX   K  — | ]%}t          |                     ¦   «         ¦  «        V — Œ&d S r5   )r   Ústrip)Ú.0Úparts     r   ú	<genexpr>zMMFile.info.<locals>.<genexpr>y  s2   è è € Ð>Ð>¨•�t—z’z‘|”|Ñ$Ô$Ð>Ð>Ð>Ð>Ð>Ð>r   z%%MatrixMarketz%source is not in Matrix Market formatÚmatrixzProblem reading file header: rH   rG   r   ©ú%é%   é   zHeader line not of length 2: Úasciié   zHeader line not of length 3: )Ú_openÚreadlineÚsplitÚ
startswithrL   ÚlowerÚFORMAT_ARRAYÚFORMAT_COORDINATEÚlstriprh   Úlenr   ÚmapÚintÚclose)r7   r   ÚstreamÚclose_itÚlineÚmmidrl   r?   r*   r,   Ú
split_liner8   r;   r=   s                 r   r   zMMFile.infoW  s‡  € ð6  Ÿ:š: fÑ-Ô-Ñˆ�ð/	ð —?’?Ñ$Ô$ˆDà>Ð>°·²±´Ð>Ñ>Ô>ñ 2ˆD�&˜& %¨à—?’?Ð#3Ñ4Ô4ð JÝ Ð!HÑIÔIÐIØ—<’<‘>”> XÒ-Ð-Ý Ð!@À4Ñ!GÑHÔHÐHð �|Š|‰~Œ~ Ò(Ð(ØÔ*��Ø—’‘” <Ò/Ð/ØÔ/�ð ð Ø—;’;‘=”=ð  T§[¢[¡]¤]°1Ô%5¸Ð%BÐ%BØ!Ÿ?š?Ñ,Ô,�D�Dàð	 ð ð —j’j‘l”lð )Ø—’Ñ(Ô(�ð —j’j‘l”lð )ð Ÿš™œˆJØ˜Ô*Ò*Ð*Ý˜:‘”¨!Ò+Ð+Ý$Ð%DØ%)§[¢[°Ñ%9Ô%9ñ&:ñ ;ô ;ð ;å ¥ jÑ1Ô1‘
��dØ ™+��å˜:‘”¨!Ò+Ð+Ý$Ð%DØ%)§[¢[°Ñ%9Ô%9ñ&:ñ ;ô ;ð ;å&)­#¨zÑ&:Ô&:Ñ#��d˜Gà˜$ ¨°·²±´Ø—N’NÑ$Ô$ð&ð ð Ø—’‘”��ðøˆxð Ø—’‘”��ðøøøs   šH<I. É.JÚrbc                 óÌ  — 	 t          j        | ¦  «        } n# t          $ r | dfcY S w xY w|d         dk    �rt           j                             | ¦  «        swt           j                             | dz   ¦  «        r| dz   } nOt           j                             | dz   ¦  «        r| dz   } n't           j                             | dz   ¦  «        r| dz   } |                      d¦  «        rddl}|                     | |¦  «        }nd|                      d	¦  «        rddl}| 	                    | d
¦  «        }n4t          | |¦  «        }n#| dd…         dk    r| dz   } t          | |¦  «        }|dfS )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.bz2r„   éüÿÿÿT)
ÚosÚfspathÚ	TypeErrorÚpathÚisfileÚendswithÚgzipÚopenÚbz2ÚBZ2File)ÚfilespecÚmoderŽ   r   r�   s        r   rs   zMMFile._open¦  s�  € ð4	#Ý”y Ñ*Ô*ˆHˆHøÝð 	#ð 	#ð 	#Ø˜U�?Ð"Ð"Ð"ð	#øøøð �Œ7�cŠ>‰>õ ”7—>’> (Ñ+Ô+ð 5Ý”7—>’> (¨6¡/Ñ2Ô2ð 5Ø'¨&Ñ0�H�HÝ”W—^’^ H¨YÑ$6Ñ7Ô7ð 5Ø'¨)Ñ3�H�HÝ”W—^’^ H¨ZÑ$7Ñ8Ô8ð 5Ø'¨*Ñ4�Hà× Ò  Ñ'Ô'ð .Ø���ØŸš 8¨TÑ2Ô2��Ø×"Ò" 6Ñ*Ô*ð .Ø�
�
�
ØŸš X¨tÑ4Ô4��å˜h¨Ñ-Ô-��ð ˜˜˜Œ} Ò&Ð&Ø# fÑ,�Ý˜( DÑ)Ô)ˆFà�tˆ|Ðs   ‚ —(§(c                 óü  ‡ ‡— ‰ j         \  }Š|‰k    rt          j        S d}d}‰ j        j        dv }t          ‰ ¦  «        rƒ‰                      ¦   «         Š ‰                      ¦   «         \  }}||k                          ¦   «         ||k                         ¦   «         k    rt          j        S ‰  	                    ¦   «         Š ˆ fd„}nˆ ˆfd„} |¦   «         D ]t\  }}	}
|r|
r	|dk    rd}nY|r||	k    rd}t          j        d¬¦  «        5  |r	||	 k    rd}d d d ¦  «         n# 1 swxY w Y   |r|t          |	¦  «        k    rd}|s|s|s nŒu|rt          j        S |rt          j        S |rt          j        S t          j        S )	NTÚFDc               3   ó�   •K  — ‰                      ¦   «         D ]-\  \  } }}| |k    r‰|| f         }||dfV — Œ | |k    r||dfV — Œ.d S )NFT)Úitems)ÚiÚjÚaijÚajir(   s       €r   Úsymm_iteratorz+MMFile._get_symmetry.<locals>.symm_iteratorú  sy   øè è € Ø%&§W¢W¡Y¤Yð /ð /‘M‘V�a˜˜SØ˜1’u�uØ  1 œg˜Ø" C¨Ð/Ð/Ð/Ð/Ð/Ø˜aš˜Ø" C¨Ð.Ð.Ð.Ð.øð/ð /r   c               3   ó¤   •K  — t          ‰¦  «        D ]<} t          | ‰¦  «        D ])}‰|         |          ‰|          |         }}|||| k    fV — Œ*Œ=d S r5   )Úrange)r™   r˜   rš   r›   r(   Úns       €€r   rœ   z+MMFile._get_symmetry.<locals>.symm_iterator  su   øè è € Ý˜q™œð 1ð 1�AÝ" 1 a™[œ[ð 1ð 1˜Ø#$ Q¤4¨¤7¨A¨a¬D°¬G˜S˜Ø" C¨¨aªÐ0Ð0Ð0Ð0Ð0ð1ð1ð 1r   r   FÚignore)Úover)Úshaper   ÚSYMMETRY_GENERALÚdtypeÚcharr   ÚtocooÚnonzeroÚsumÚtodokÚnpÚerrstater   rC   rD   rE   )r(   ÚmÚissymmÚisskewÚishermÚrowÚcolrœ   rš   r›   Úis_diagonalrŸ   s   `          @r   Ú_get_symmetryzMMFile._get_symmetryå  s-  øø€ àŒw‰ˆˆ1Ø�Š6ˆ6ÝÔ*Ð*ØˆØˆØ”” Ð%ˆõ �A‰;Œ;ð 	1ð —’‘	”	ˆAØŸš™œ‰JˆS�#Ø�c’	�ŠÑ Ô  S¨3¢Y§O¢OÑ$5Ô$5Ò5Ð5ÝÔ.Ð.ð —’‘	”	ˆAð/ð /ð /ð /ð /ð /ð1ð 1ð 1ð 1ð 1ð 1ð (5 }¡¤ð 	ð 	Ñ#ˆS�#�{Øð 
#˜+ð 
#¨#°ª(¨(Ø��àð #˜c Sšj˜jØ"�FÝ”[ hÐ/Ñ/Ô/ð 'ð 'àð ' #¨#¨¢+ +Ø!&˜ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð ð #˜c¥T¨#¡Y¤YÒ.Ð.Ø"�FØð ˜fð ¨ð Ø�øð ð 	-ÝÔ,Ð,Øð 	2ÝÔ1Ð1Øð 	-ÝÔ,Ð,ÝÔ&Ð&s   ÄDÄD!	Ä$D!	c           
      óž   — t           j        d|z  t           j        dt           j        dt           j        d||fz  i                     | 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&  sP   € åÔ! :°	Ñ#9ÝÔ$ fÝÔ% vÝÔ$Ð&7Ø 	Ð*ñ'+ð÷
 ’#�e˜TÑ"Ô"ð	#r   c                 ó    —  | j         di |¤Ž d S )Nra   )Ú_init_attrs)r7   Úkwargss     r   Ú__init__zMMFile.__init__0  s!   € ØˆÔÐ"Ð"˜6Ð"Ð"Ð"Ð"Ð"r   Tr    c                ó>  — |                       |¦  «        \  }}	 |                      |¦  «         |                      |¦  «        }|r|                     ¦   «          n# |r|                     ¦   «          w w xY w|r$t	          |t
          ¦  «        rt          |¦  «        }|S )a9  
        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.
        spmatrix : bool, optional (default: True)
            If ``True``, return sparse matrix. Otherwise return sparse array.

        Returns
        -------
        a : ndarray or coo_array or coo_matrix
            Dense or sparse array depending on the matrix format in the
            Matrix Market file.
        )rs   Ú_parse_headerÚ_parse_bodyr~   r   r   r   )r7   r   r!   r   r€   Údatas         r   r#   zMMFile.read4  s«   € ð$  Ÿ:š: fÑ-Ô-Ñˆ�ð	Ø×Ò˜vÑ&Ô&Ð&Ø×#Ò# FÑ+Ô+ˆDð ð Ø—’‘”�øøð ð Ø—’‘”��ðøøøàð 	$�
 4­Ñ3Ô3ð 	$Ý˜dÑ#Ô#ˆDØˆs   š*A ÁA4r$   Nc                 ó&  — |                       |d¦  «        \  }}	 |                      ||||||¦  «         |r|                     ¦   «          dS |                     ¦   «          dS # |r|                     ¦   «          w |                     ¦   «          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)rs   Ú_writer~   Úflush)	r7   r'   r(   r)   r*   r+   r,   r   r€   s	            r   r&   zMMFile.writeU  s•   € ð.  Ÿ:š: f¨dÑ3Ô3Ñˆ�ð	Ø�KŠK˜  7¨E°9¸hÑGÔGÐGð ð Ø—’‘”���à—’‘”���øð ð Ø—’‘”��à—’‘”��øøøs   ›A# Á#-Bc           
      óD  — | j         j        }d„ |D ¦   «         }t          |                     ¦   «         ¦  «        t          |¦  «        z
  }|r"t	          dt          |¦  «        › d|› �¦  «        ‚|D ]/}t          | ||                     |dd…         d¦  «        ¦  «         Œ0dS )zr
        Initialize each attributes with the corresponding keyword arg value
        or a default of None
        c                 ó"   — g | ]}|d d…         ‘ŒS )é   Nra   )ri   Úattrs     r   ú
<listcomp>z&MMFile._init_attrs.<locals>.<listcomp>  s    € Ð3Ð3Ð3 T˜˜Q˜R˜RœÐ3Ð3Ð3r   zfound z, invalid keyword arguments, please only use rÉ   N)Ú	__class__Ú	__slots__ÚsetÚkeysrL   ÚtupleÚsetattrr¹   )r7   r½   ÚattrsÚpublic_attrsÚinvalid_keysrÊ   s         r   r¼   zMMFile._init_attrsx  sÒ   € ð ”Ô(ˆØ3Ð3¨UÐ3Ñ3Ô3ˆÝ˜6Ÿ;š;™=œ=Ñ)Ô)­C°Ñ,=Ô,=Ñ=ˆàð 	KÝð J¥e¨LÑ&9Ô&9ð Jð JØ;GðJð Jñ Kô Kð Kð ð 	<ð 	<ˆDÝ�D˜$ §
¢
¨4°°°¬8°TÑ :Ô :Ñ;Ô;Ð;Ð;ð	<ð 	<r   c                 ó~   — | j                              |¦  «        \  }}}}}}|                      ||||||¬¦  «         d S )N)r8   r;   r=   r?   r*   r,   )rÌ   r   r¼   )r7   r   r8   r;   r=   r?   r*   r,   s           r   rÀ   zMMFile._parse_headerŠ  sZ   € àŒN×Ò Ñ'Ô'ñ 	5ˆˆd�G˜V U¨Hà×Ò˜d¨°wÀvØ$¨xð 	ñ 	9ô 	9ð 	9ð 	9ð 	9r   c           	      óä  — | j         | j        | j        | j        | j        | j        f\  }}}}}}| j                             |d ¦  «        }| j        }	|| j	        k    }
|| j
        k    }|| j        k    }|| j        k    }|| j        k    }|| j        k    }|| j        k    �ryt!          ||f|¬¦  «        }d}d\  }}|rd|||f<   ||dz
  k     r|dz  }|�r|                     ¦   «         }|r|d         dv s|                     ¦   «         sŒ8|
rt'          |¦  «        }nR|rt'          |¦  «        }n@|r/t)          t+          t,          |                     ¦   «         ¦  «        Ž }nt-          |¦  «        }||||f<   |	r/||k    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 |d|fv r	||dz
  k    st3          d¦  «        ‚�nv|d|fv r||k    st3          d¦  «        ‚�nY|| j        k    �r>|dk    rt7          ||f|¬¦  «        S t!          |d¬¦  «        }t!          |d¬¦  «        }|rt9          |d¬¦  «        }nM|
rt!          |d	¬¦  «        }n9|rt!          |d
¬¦  «        }n%|rt!          |d¬¦  «        }nt!          |d¬¦  «        }d}|D ]ô}|r|d         dv s|                     ¦   «         sŒ#|dz   |k    rt3          d¦  «        ‚|                     ¦   «         }t+          t&          |d d…         ¦  «        \  ||<   ||<   |sx|
rt'          |d         ¦  «        ||<   n]|rt'          |d         ¦  «        ||<   nB|r(t)          t+          t,          |dd …         ¦  «        Ž ||<   nt-          |d         ¦  «        ||<   |dz  }Œõ||k     rt3          d¦  «        ‚|dz  }|dz  }|	ro||k    }||         }||         }||         }t;          ||f¦  «        }t;          ||f¦  «        }|r|dz  }n|r|                     ¦   «         }t;          ||f¦  «        }t7          |||ff||f|¬¦  «        }nt?          |¦  «        ‚|S )N)r¤   rÉ   )r   r   r   rm   z$Parse error, did not read all lines.ÚintcÚint8r\   r]   rQ   Úfloatz5'entries' in header is smaller than number of entriesrp   z4'entries' in header is larger than number of entrieséÿÿÿÿ)r¢   r¤   ) r8   r;   r=   r?   r*   r,   ÚDTYPES_BY_FIELDr¹   rF   r¶   r·   r¸   rD   rE   ÚFIELD_PATTERNrx   r   rt   rh   r}   rQ   r|   rÙ   ru   r   rL   ry   r   r
   r	   Ú	conjugateÚNotImplementedError)r7   r   r8   r;   r=   r?   r*   Úsymmr¤   rF   Ú
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­  € Ø48´I¸t¼yØ48´LÀ$Ä+Ø48´JÀÄð4OÑ0ˆˆd�G˜V U¨Dð Ô$×(Ò(¨°Ñ5Ô5ˆàÔ(ˆØ˜dÔ0Ò0ˆ
Ø# tÔ':Ò:ÐØ˜dÔ0Ò0ˆ
Ø˜$Ô6Ò6ˆØ˜$Ô1Ò1ˆØ˜dÔ0Ò0ˆ
à�TÔ&Ò&Ñ&Ý�t˜T�l¨%Ð0Ñ0Ô0ˆAØˆDØ‰DˆAˆqØð Ø��!�Q�$‘Ø�t˜a‘x’<�<Ø˜‘F�AØñ  'Ø—’Ñ(Ô(�àð ˜t Aœw¨)Ð3Ð3¸4¿:º:¹<¼<Ð3ØØð &Ý˜d™)œ)�C�CØ(ð &Ý˜d™)œ)�C�CØð &Ý!¥3¥u¨d¯jªj©l¬lÑ#;Ô#;Ð<�C�Cå ™+œ+�CØ��!�Q�$‘Øð & A¨¢F FØð &Ø#& $˜˜!˜Q˜$™˜Ø ð &Ý"& s¡)¤)˜˜!˜Q˜$™˜à"%˜˜!˜Q˜$™Ø�t˜A‘v’:�:Ø˜A™�A�Aà˜A™�AØ'ð 'Ø˜˜à˜Ø"ð 'Ø&'˜A˜a ˜d™GØ  4¨¡6šz˜zØ ! Q¡ ðA ñ  'ðD ð MØ˜a ˜V˜˜¨¨T°A©Xª¨Ý$Ð%KÑLÔLÐLñ )6ð ˜a ˜V˜˜¨¨Tª	¨	Ý$Ð%KÑLÔLÐLñ )2ð �tÔ-Ò-Ñ-ð ˜!Š|ˆ|å  $¨ °UÐ;Ñ;Ô;Ð;å�g VÐ,Ñ,Ô,ˆAÝ�g VÐ,Ñ,Ô,ˆAØð 	2Ý˜¨Ð/Ñ/Ô/��Øð 2Ý˜'¨Ð0Ñ0Ô0��Ø$ð 2Ý˜'¨Ð2Ñ2Ô2��Øð 2Ý˜'¨Ð3Ñ3Ô3��å˜'¨Ð1Ñ1Ô1�àˆLØð "ð "�àð ˜t Aœw¨)Ð3Ð3¸4¿:º:¹<¼<Ð3Øà ‘> GÒ+Ð+Ý$ð &9ñ :ô :ð :à—J’J‘L”L�Ý36µs¸A¸b¸q¸b¼E±?´?Ñ0��,‘  <¡à!ð 6Ø!ð 6Ý*-¨a°¬d©)¬)˜˜,™˜Ø,ð 6Ý*-¨a°¬d©)¬)˜˜,™˜Ø#ð 6Ý*1µ3µu¸aÀÀÀ¼eÑ3DÔ3DÐ*E˜˜,™˜å*/°°!´©+¬+˜˜,™Ø Ñ!��Ø˜gÒ%Ð%Ý ð "5ñ 6ô 6ð 6ð �‰FˆAØ�‰FˆAàð +Ø˜Qš�Ø˜”w�Ø˜”w�Ø˜”w�å  D 	Ñ*Ô*�Ý  D 	Ñ*Ô*�àð ,Ø˜B‘J�D�DØð ,ØŸ>š>Ñ+Ô+�Då  D 	Ñ*Ô*�å˜1˜q !˜f˜+¨d°D¨\ÀÐGÑGÔGˆAˆAå% fÑ-Ô-Ð-àˆr   c                 ó|  — t          |t          ¦  «        s:t          |t          ¦  «        s%t          |t          ¦  «        st	          |d¦  «        rì| j        }t          |¦  «        }t          |j        ¦  «        dk    rt          d¦  «        ‚|j        \  }}	|�¢|| j
        k    r:t          |j        d¦  «        st          d¦  «        ‚|                     d¦  «        }n˜|| j        k    r$|j        j        dvr|                     d¦  «        }ni|| j        k    r#|j        j        dvr|                     d	¦  «        }n:t%          |¦  «        st          d
t'          |¦  «        › �¦  «        ‚d}|j        \  }}	|j        j        }
|€	|
dv rd}nd}|€f|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                             |¦  «         | j                             |¦  «         d|› d|› d|› d�}|                     |                     d¦  «        ¦  «         |                     d¦  «        D ]0}d|› d�}|                     |                     d¦  «        ¦  «         Œ1|                      ||¦  «        }|| j        k    �r§d||	fz  }|                     |                     d¦  «        ¦  «         || j
        | j        | j        fv �r,|| j         k    r[tC          |	¦  «        D ]I}tC          |¦  «        D ]7}||||f         z  }|                     |                     d¦  «        ¦  «         Œ8ŒJd S || j"        k    r_tC          |	¦  «        D ]M}tC          |dz   |¦  «        D ]7}||||f         z  }|                     |                     d¦  «        ¦  «         Œ8ŒNd S tC          |	¦  «        D ]J}tC          ||¦  «        D ]7}||||f         z  }|                     |                     d¦  «        ¦  «         Œ8ŒKd S || j        k    rþ|| j         k    rytC          |	¦  «        D ]g}tC          |¦  «        D ]U}|||f         }|tG          |¦  «        tI          |¦  «        fz  }|                     |                     d¦  «        ¦  «         ŒVŒhd S tC          |	¦  «        D ]h}tC          ||¦  «        D ]U}|||f         }|tG          |¦  «        tI          |¦  «        fz  }|                     |                     d¦  «        ¦  «         ŒVŒid S || j%        k    rt          d¦  «        ‚t+          d |› �¦  «        ‚| &                    ¦   «         }|| j         k    rK|j'        |j(        k    }tS          |j*        |         |j'        |         |j(        |         ff|j        ¬!¦  «        }d"||	|j+        fz  }|                     |                     d¦  «        ¦  «         |                      ||dz
  ¦  «        }|| j%        k    rWtY          |j'        dz   |j(        dz   ¦  «        D ]4\  }}d||fz  }|                     |                     d¦  «        ¦  «         Œ5d S || j
        | j        | j        fv rdtY          |j'        dz   |j(        dz   |j*        ¦  «        D ];\  }}}d#||fz  ||z  z   }|                     |                     d¦  «        ¦  «         Œ<d S || j        k    rptY          |j'        dz   |j(        dz   |j*        ¦  «        D ]G\  }}}d#||fz  ||j#        |j$        fz  z   }|                     |                     d¦  «        ¦  «         ŒHd S t+          d |› �¦  «        ‚)$NÚ	__array__rp   zExpected 2 dimensional arrayr\   zBmmwrite does not support integer dtypes larger than native 'intp'.Úfdr^   r•   r_   zunknown matrix type: rG   ÚfFé   é   r˜   rO   Úfr   ÚcrQ   ÚurP   zunexpected dtype kind z%%MatrixMarket matrix ú ú
r   rn   z%i %i
rÉ   z*pattern type inconsisted with dense formatzUnknown field type )r¢   z	%i %i %i
z%i %i )-r   Úlistr   rÐ   Úhasattrrx   r   r{   r¢   rL   r¶   r   r¤   ÚOverflowErrorÚastyperµ   r¥   r¸   r   ÚtypeÚkindrŠ   r³   rÌ   rN   rU   r[   r&   Úencoderu   rº   r·   r£   rž   rD   r   r   rÜ   r¦   r°   r±   r   rÂ   ÚnnzÚzip)r7   r   r(   r)   r*   r+   r,   Úrepr8   r;   Útypecoderÿ   rÂ   r�   Útemplater™   r˜   rš   ÚcooÚlower_triangle_maskr†   rö   r^   s                          r   rÅ   zMMFile._write  sß  € å�a�ÑÔð 	!¥*¨QµÑ"8Ô"8ð 	!Ý�a�ÑÔð	!Ý#*¨1¨kÑ#:Ô#:ð	!àÔ#ˆCÝ˜‘
”
ˆAÝ�1”7‰|Œ|˜qÒ Ð Ý Ð!?Ñ@Ô@Ð@Øœ‰JˆD�$àÐ à˜DÔ.Ò.Ð.Ý# A¤G¨VÑ4Ô4ð QÝ+ð -Pñ Qô Qð QàŸš Ñ(Ô(�A�AØ˜dœoÒ-Ð-Ø”w”|¨4Ð/Ð/ØŸHšH S™MœM˜øØ˜dÔ0Ò0Ð0Ø”w”|¨4Ð/Ð/ØŸHšH S™MœM˜øõ ˜A‘;”;ð DÝ Ð!B½¸a¹¼Ð!BÐ!BÑCÔCÐCàˆCØœ‰JˆD�$à”7”<ˆàÐØ˜4ÐÐØ�	�	à�	Øˆ=Ø”7”<ˆDØ�sŠ{ˆ{Ý ¤¨Ñ0Ô0ð MÝ'ð )Lñ Mô Mð Mà!��Ø˜’�Ø��Ø˜’�Ø!��Ø˜’�Ø*��åÐ 8¸4Ñ ?Ñ@Ô@Ð@àÐØ×)Ò)¨!Ñ,Ô,ˆHð 	Œ×'Ò'¨Ñ,Ô,Ð,ØŒ×&Ò& uÑ-Ô-Ð-ØŒ×)Ò)¨(Ñ3Ô3Ð3ð C¨ÐBÐB¨eÐBÐB°hÐBÐBÐBˆØ�Š�T—[’[ Ñ*Ô*Ñ+Ô+Ð+ð —M’M $Ñ'Ô'ð 	0ð 	0ˆDØ�t�<�<�<ˆDØ�LŠL˜Ÿš XÑ.Ô.Ñ/Ô/Ð/Ð/à×'Ò'¨¨yÑ9Ô9ˆà�$Ô#Ò#Ñ#à  d˜|Ñ+ˆDØ�LŠL˜Ÿš XÑ.Ô.Ñ/Ô/Ð/à˜Ô+¨T¬_ØÔ,ð.ð .ñ .à˜tÔ4Ò4Ð4Ý" 4™[œ[ð @ð @˜Ý!& t¡¤ð @ð @˜AØ#+¨a°°1°¬gÑ#5˜DØ"ŸLšL¨¯ª°XÑ)>Ô)>Ñ?Ô?Ð?Ð?ð@ð@ð @ð
  Ô!=Ò=Ð=Ý" 4™[œ[ð @ð @˜Ý!& q¨1¡u¨dÑ!3Ô!3ð @ð @˜AØ#+¨a°°1°¬gÑ#5˜DØ"ŸLšL¨¯ª°XÑ)>Ô)>Ñ?Ô?Ð?Ð?ð@ð@ð @õ # 4™[œ[ð @ð @˜Ý!& q¨$¡¤ð @ð @˜AØ#+¨a°°1°¬gÑ#5˜DØ"ŸLšL¨¯ª°XÑ)>Ô)>Ñ?Ô?Ð?Ð?ð@ð@ð @ð
 ˜$Ô,Ò,Ð,à˜tÔ4Ò4Ð4Ý" 4™[œ[ð @ð @˜Ý!& t¡¤ð @ð @˜AØ"# A q D¤'˜CØ#+­t°C©y¬y½$¸s¹)¼)Ð.DÑ#D˜DØ"ŸLšL¨¯ª°XÑ)>Ô)>Ñ?Ô?Ð?Ð?ð@ð@ð @õ # 4™[œ[ð @ð @˜Ý!& q¨$¡¤ð @ð @˜AØ"# A q D¤'˜CØ#+­t°C©y¬y½$¸s¹)¼)Ð.DÑ#D˜DØ"ŸLšL¨¯ª°XÑ)>Ô)>Ñ?Ô?Ð?Ð?ð@ð@ð @ð ˜$Ô,Ò,Ð,Ý Ð!MÑNÔNÐNõ  Ð =°eÐ =Ð =Ñ>Ô>Ð>ð —'’'‘)”)ˆCð ˜4Ô0Ò0Ð0Ø&)¤g°´Ò&8Ð#Ý ¤Ð*=Ô!>Ø!$¤Ð)<Ô!=Ø!$¤Ð)<Ô!=ð!?ð!@ð '*¤ið1ñ 1ô 1�ð   4¨¨s¬wÐ"7Ñ7ˆDØ�LŠL˜Ÿš XÑ.Ô.Ñ/Ô/Ð/à×+Ò+¨E°9¸Q±;Ñ?Ô?ˆHà˜Ô*Ò*Ð*Ý ¤¨¡	¨3¬7°1©9Ñ5Ô5ð 8ð 8‘D�A�qØ$¨¨1 vÑ-�DØ—L’L §¢¨XÑ!6Ô!6Ñ7Ô7Ð7Ð7ð8ð 8ð ˜4Ô-¨t¬ØÔ.ð0ð 0ð 0å" 3¤7¨1¡9¨c¬g°a©i¸¼ÑBÔBð 8ð 8‘G�A�q˜!Ø$¨¨1 vÑ-°(¸Q±,Ñ?�DØ—L’L §¢¨XÑ!6Ô!6Ñ7Ô7Ð7Ð7ð8ð 8ð ˜$Ô,Ò,Ð,Ý" 3¤7¨1¡9¨c¬g°a©i¸¼ÑBÔBð 8ð 8‘G�A�q˜!Ø$¨¨1 vÑ-°(¸a¼fÀaÄfÐ=MÑ2MÑN�DØ—L’L §¢¨XÑ!6Ô!6Ñ7Ô7Ð7Ð7ð8ð 8õ  Ð =°eÐ =Ð =Ñ>Ô>Ð>r   )r„   ©r$   NNN)-Ú__name__Ú
__module__Ú__qualname__rÍ   Úpropertyr8   r;   r=   r?   r*   r,   rF   ry   rx   rK   ÚclassmethodrN   r¶   r·   rµ   r¸   rÜ   rT   rU   r£   rC   rD   rE   rZ   r[   rÛ   Ústaticmethodrb   re   r   rs   r³   rº   r¾   r#   r&   r¼   rÀ   rÁ   rÅ   ra   r   r   r   r   ø   s  € € € € € ð€Ið ðð ñ „Xðð ðð ñ „Xðð ðð ñ „Xðð ðð ñ „Xðð ðð ñ „Xðð ðð ñ „Xðð ð;ð ;ñ „Xð;ð %ÐØ€LØ&¨Ð5€Màð"ð "ñ „[ð"ð €MØ'€NØ€JØ€MØ€MØ! >°:¸}Ø!ð#€Lð ð"ð "ñ „[ð"ð !ÐØ$ÐØ.ÐØ$ÐØ'Ð);Ø.Ð0BðD€Oð ðGð Gñ „[ðGð
 % fØ% xØ! 3Ø$ cØ$ cð	+€Oð ðð ñ „\ðð ðð ñ „\ðð ðKð Kñ „[ðKð\ ð;ð ;ð ;ñ „\ð;ð| ð='ð ='ñ „\ð='ð@ ð#ð #ñ „\ð#ð#ð #ð #ð (,ð ð ð ð ð ðB BFØð ð  ð  ð  ðF<ð <ð <ð$9ð 9ð 9ðEð Eð EðP CGØðW?ð W?ð W?ð W?ð W?ð W?r   r   c                 ó  — g }	 ddl }|                     |j        ¦  «         n# t          $ r Y nw xY w	 ddl}|                     |j        ¦  «         n# t          $ r Y nw xY wt          |¦  «        }t          | |¦  «         S )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”{Ñ#Ô#Ð#Ð#øÝð ð ð Øˆðøøøõ �G‰nŒn€GÝ˜& 'Ñ*Ô*Ð*Ð*s   „# £
0¯0´A Á
A ÁA r  )Ú__doc__rˆ   Únumpyrª   r   r   r   r   r   r   r	   r
   r   Úscipy.sparser   r   r   Ú__all__r   r   r   r   r   r  ra   r   r   ú<module>r     sd  ððð ð 
€	€	€	à Ð Ð Ð ð#ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð 9Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8à
3Ð
3Ð
3€ðð ð ð0ð 0ð 0ðj  $ð /4ð /4ð /4ð /4ð /4ðhlCð lCð lCð lCð`x
?ð x
?ð x
?ð x
?ð x
?ñ x
?ô x
?ð x
?ðv+ð +ð +ð +ð +r   