Ë
    ÏÍ:j²l  ã                   óÖ   — d Z dZg d¢ZddlZddlZddlmZ ddlm	Z	m
Z
mZ ddlmZ dd	lmZmZmZmZmZmZmZmZ  e«       Z G d
„ de	ee«      Zd„ Z G d„ dee
«      Z G d„ dee«      Zy)zDictionary Of Keys based matrixzrestructuredtext en)Ú	dok_arrayÚ
dok_matrixÚisspmatrix_doké    Né   )Úspmatrix)Ú_spbaseÚsparrayÚissparse)Ú
IndexMixin)ÚisdenseÚgetdtypeÚisshapeÚ	isintlikeÚisscalarlikeÚupcastÚupcast_scalarÚcheck_shapec                   ó²  ‡ — e Zd ZdZdZd<ddœd„Zd„ Zd=d„Zd=d„Ze	j                  j                  e_
        e	j                  j                  e_
        d	„ Zd
„ Zd=d„Zd„ Zd„ Zefd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd>d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d „ Z#d!„ Z$d"„ Z%d#„ Z&d$„ Z'd%„ Z(d&„ Z)d'„ Z*d(„ Z+d)„ Z,d*„ Z-d+„ Z.d,„ Z/d-„ Z0d.„ Z1d/„ Z2d0„ Z3d1„ Z4d2„ Z5d?ˆ fd3„	Z6e	jl                  j                  e6_
        d@d4„Z7e	jn                  j                  e7_
        d5„ Z8e	jp                  j                  e8_
        e9dAd6„«       Z:dBd7„Z;e	jv                  j                  e;_
        dBd8„Z<e	jx                  j                  e<_
        dBd9„Z=e	jz                  j                  e=_
        d:„ Z>e	j|                  j                  e>_
        dCd;„Z?e	j~                  j                  e?_
        ˆ xZ@S )DÚ	_dok_baseÚdok)r   é   N©Úmaxprintc                óÐ  — t        j                  | ||¬«       t        |t        «      rQt	        || j
                  ¬«      r:t        || j
                  ¬«      | _        i | _        t        |t        ¬«      | _        y t        |«      r¥|j                  | j                  k(  r|r|j                  «       n|}n|j                  «       }|�|j!                  |d¬«      }|j                  | _        t        |j"                  | j
                  ¬«      | _        t        |j                  «      | _        y 	 t%        j&                  |«      }|j,                  dkD  rt/        d|j,                  › d	�«      ‚|j,                  d
k(  rZ|�|j!                  |d¬«      }t1        |«      D ��ci c]  \  }}|dk7  sŒ||“Œ c}}| _        t        |j                  «      | _        nM| j3                  |||¬«      j                  «       }	|	j                  | _        t        |	j                  «      | _        t        |j"                  | j
                  ¬«      | _        y # t(        $ r}t+        d«      |‚d }~ww xY wc c}}w )Nr   ©Úallow_nd)ÚdefaultF©ÚcopyzInvalid input format.r   zDOK arrays don't yet support zD input.r   r   ©ÚshapeÚdtype)r   Ú__init__Ú
isinstanceÚtupler   Ú	_allow_ndr   Ú_shapeÚ_dictr   Úfloatr"   r
   Úformatr   ÚtodokÚastyper!   ÚnpÚasarrayÚ	ExceptionÚ	TypeErrorÚndimÚ
ValueErrorÚ	enumerateÚ_coo_container)
ÚselfÚarg1r!   r"   r   r   ÚeÚiÚvÚds
             úf/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/scipy/sparse/_dok.pyr#   z_dok_base.__init__   sÕ  € Ü×Ñ˜˜t¨hÕ7ä�dœEÔ"¤w¨t¸d¿n¹nÕ'MÜ% d°T·^±^ÔDˆDŒKØˆDŒJÜ! %´Ô7ˆD�JÜ�dŒ^Ø�{‰{˜dŸk™kÒ)Ù&*�t—y‘y”{°‘à—z‘z“|�àÐ Ø—{‘{ 5¨u�{Ó5�àŸ™ˆDŒJÜ% d§j¡j¸4¿>¹>ÔJˆDŒKÜ! $§*¡*Ó-ˆD�Jð@Ü—z‘z $Ó'�ð �y‰y˜1Š}Ü Ð#@ÀÇÁÀÈ8Ð!TÓUÐUà�y‰y˜AŠ~ØÐ$ØŸ;™; u°5˜;Ó9�DÜ/8¸«×I¡t q¨!À!ÀqÃ&˜a ™dÓI�”
Ü% d§j¡jÓ1�•
à×'Ñ'¨°EÀÐ'ÓG×MÑMÓO�ØŸW™W�”
Ü% a§g¡gÓ.�”
Ü% d§j¡j¸4¿>¹>ÔJˆD�Køô ò @ÜÐ 7Ó8¸aÐ?ûð@üó Js$   Ä+I ÆI"Æ(I"É	IÉIÉIc                 ó   — t        |t        «      r|j                  «       }n|}|D ]Ë  \  }}t        |«      r|fn
t	        |«      }t        |«      | j                  k7  rt        d|› d�«      ‚t        d„ t        || j                  «      D «       «      rŒmt        || j                  «      D ]F  \  }}t        |«      st        d|› �«      ‚|dk  rt        d|› d�«      ‚||k\  sŒ9t        d|› d	�«      ‚ ŒÍ | j                  j                  |«       y
)a"  Update values from a dict, sparse dok or iterable of 2-tuples like
        ``.items()``.

        Parameters
        ----------
        val : dict, dok_array, iterable of 2-tuples
            The values to update in the dok_array. If a dict or dok_array is
            provided, the keys and values will be taken from it. If an iterable
            of 2-tuples is provided, each tuple should contain a key and a value.
            Keys of the input must be sequences of nonnegative integers less than
            the shape for each axis.
        úIndex ú! length needs to match self.shapec              3   ó\   K  — | ]$  \  }}t        |«      xr d |cxk  xr |k  nc –— Œ& y­w©r   N)r   )Ú.0ÚidxÚmax_idxs      r;   ú	<genexpr>z#_dok_base.update.<locals>.<genexpr>U   s2   è ø€ ò á �C˜ô ˜#“Ò5 1¨Ö#5¨gÔ#5Ó5ñùs   ‚*,z&integer keys required for update. Got r   znegative index z not allowed in updatezindex z is too large for self.shapeN)r$   ÚdictÚitemsr   r%   Úlenr1   Ú
IndexErrorÚallÚzipr!   r(   Úupdate)r5   ÚvalÚinputsÚkeyÚvalueÚindexrB   rC   s           r;   rK   z_dok_base.update?   s  € ô �cœ4Ô Ø—Y‘Y“[‰FàˆFà ò 	U‰JˆC�Ü'¨œn�S‘F´%¸³*ˆEÜ�5‹z˜TŸY™YÒ&Ü  6¨#¨Ð.OÐ!PÓQÐQÜñ ä$'¨¨t¯z©zÓ$:ôõ ô
 %(¨¨t¯z©zÓ$:ò U‘L�C˜Ü$ Sœ>Ü(Ð+QÐRUÐQVÐ)WÓXÐXØ˜Q’wÜ(¨?¸3¸%Ð?UÐ)VÓWÐWØ˜g“~Ü(¨6°#°Ð6RÐ)SÓTÐTñUð	Uð" 	�
‰
×Ñ˜&Õ!ó    c                 óF   — |�t        d«      ‚t        | j                  «      S )Nz7_getnnz over an axis is not implemented for DOK format.)ÚNotImplementedErrorrG   r(   ©r5   Úaxiss     r;   Ú_getnnzz_dok_base._getnnzd   s(   € ØÐÜ%ØIóð ô �4—:‘:‹ÐrQ   c                 ó†   — |� | j                  «       j                  |¬«      S t        d„ | j                  «       D «       «      S )N)rU   c              3   ó&   K  — | ]	  }|d k7  –— Œ y­wr@   © )rA   Úxs     r;   rD   z*_dok_base.count_nonzero.<locals>.<genexpr>n   s   è ø€ Ò1˜a�1˜•6Ñ1ùs   ‚)ÚtocooÚcount_nonzeroÚsumÚvaluesrT   s     r;   r\   z_dok_base.count_nonzerok   s9   € ØÐØ—:‘:“<×-Ñ-°4Ð-Ó8Ð8ÜÑ1 4§;¡;£=Ô1Ó1Ð1rQ   c                 ó,   — t        | j                  «      S ©N)rG   r(   ©r5   s    r;   Ú__len__z_dok_base.__len__s   s   € Ü�4—:‘:‹ÐrQ   c                 ó   — || j                   v S r`   ©r(   ©r5   rN   s     r;   Ú__contains__z_dok_base.__contains__v   s   € Ø�d—j‘jÐ Ð rQ   c                ó:   — | j                   j                  ||«      S )a©  Insert key with a value of default if key is not in the dictionary.

        Parameters
        ----------
        key : int or tuple of int
            The key to look for in the dok_array.
        default : optional
            The value to insert if `key` is not found. Default is None.

        Returns
        -------
        scalar
            The value for `key` if `key` is in the dictionary, else `default`.
        )r(   Ú
setdefault©r5   rN   r   s      r;   rh   z_dok_base.setdefaulty   s   € ð �z‰z×$Ñ$ S¨'Ó2Ð2rQ   c                ó   — | j                   |= y r`   rd   re   s     r;   Ú__delitem__z_dok_base.__delitem__Š   s   € Ø�J‰J�s‰OrQ   c                 ó8   — | j                   j                  «        y)z$Remove all items from the dok_array.N)r(   Úclearra   s    r;   rm   z_dok_base.clear�   s   € à�
‰
×ÑÕrQ   c                ó€   — |t         u r| j                  j                  |«      S | j                  j                  ||«      S )a"  Remove specified key and return the corresponding value.

        Parameters
        ----------
        key : tuple
            The key to remove from the dok_array.
        default : optional
            The value to return if `key` is not found. If not provided and
            `key` is not found, a KeyError is raised.

        Returns
        -------
        scalar
            The value associated with the removed key.

        Raises
        ------
        KeyError
            If the key is not found and default is not provided.
        )Ú_NoValuer(   Úpopri   s      r;   rp   z_dok_base.pop‘   s4   € ð* ”hÑØ—:‘:—>‘> #Ó&Ð&à—:‘:—>‘> # wÓ/Ð/rQ   c                 ó   — t        d«      ‚)Nz*reversed is not defined for dok_array type)r0   ra   s    r;   Ú__reversed__z_dok_base.__reversed__«   s   € ÜÐDÓEÐErQ   c                 óx   — t        | «      j                  › dt        |«      j                  › �}t        d|› �«      ‚©Nz and z unsupported operand type for |: ©ÚtypeÚ__name__r0   ©r5   ÚotherÚ
type_namess      r;   Ú__or__z_dok_base.__or__®   ó;   € Ü˜T›
×+Ñ+Ð,¨E´$°u³+×2FÑ2FÐ1GÐHˆ
ÜÐ:¸:¸,ÐGÓHÐHrQ   c                 óx   — t        | «      j                  › dt        |«      j                  › �}t        d|› �«      ‚rt   ru   rx   s      r;   Ú__ror__z_dok_base.__ror__²   r|   rQ   c                 óx   — t        | «      j                  › dt        |«      j                  › �}t        d|› �«      ‚rt   ru   rx   s      r;   Ú__ior__z_dok_base.__ior__¶   r|   rQ   c                 ó6   — | j                   j                  «       S )al  
        Remove and return a (key, value) pair as a 2-tuple, returned in LIFO (last-in,
        first-out) order.

        Returns
        -------
        key : tuple
            The key of the removed item.
        value : scalar
            The value of the removed item.

        Raises
        ------
        KeyError
            If the dict is empty.
        )r(   Úpopitemra   s    r;   r‚   z_dok_base.popitemº   s   € ð" �z‰z×!Ñ!Ó#Ð#rQ   c                 ó6   — | j                   j                  «       S )zÕ
        Return a set-like object providing a view on the array's items.

        Returns
        -------
        dict_items
            A view object displaying a list of a array's key-value tuple pairs.
        )r(   rF   ra   s    r;   rF   z_dok_base.itemsÍ   s   € ð �z‰z×ÑÓ!Ð!rQ   c                 ó6   — | j                   j                  «       S )zÑ
        Return a set-like object providing a view on the dict's keys.

        Returns
        -------
        dict_keys
            A view object displaying a list of all the keys in the dictionary.
        )r(   Úkeysra   s    r;   r…   z_dok_base.keysØ   s   € ð �z‰z�‰Ó Ð rQ   c                 ó6   — | j                   j                  «       S )zÏ
        Return an object providing a view on the dict's values.

        Returns
        -------
        dict_values
            A view object displaying a list of all the values in the dictionary.
        )r(   r^   ra   s    r;   r^   z_dok_base.valuesã   s   € ð �z‰z× Ñ Ó"Ð"rQ   c                 óN  — || j                   v r| j                   |   S t        |«      r| j                  dk(  r|f}| j                  t        |«      k7  rt	        d|› d�«      ‚	 |D ]  }t        |«      rŒJ ‚ 	 t        d„ t        || j                  «      D «       «      }t        d„ t        || j                  «      D «       «      rt	        d«      ‚| j                  dk(  r|d	   }| j                   j                  ||«      S # t
        t        t        f$ r}t	        d«      |‚d}~ww xY w)
a£  This provides dict.get method functionality with type checking.

        Parameters
        ----------
        key : int or tuple of int
            The key to look for in the dok_array.
        default : optional
            The value to return if `key` is not found. Default is 0.0.

        Returns
        -------
        value
            The value associated with `key` if it exists, otherwise `default`.
        r   r=   r>   z%Index must be or consist of integers.Nc              3   ó:   K  — | ]  \  }}|d k  r||z   n|–— Œ y­wr@   rY   ©rA   r8   ÚMs      r;   rD   z _dok_base.get.<locals>.<genexpr>  s#   è ø€ ÒK©d¨a°˜Q šU�A˜’E¨Ó)ÑKùó   ‚c              3   ó:   K  — | ]  \  }}|d k  xs ||k\  –— Œ y­wr@   rY   r‰   s      r;   rD   z _dok_base.get.<locals>.<genexpr>	  s"   è ø€ Ò@¡4 1 aˆq�1‰uŠ˜˜Q™‹Ñ@ùr‹   zIndex out of bounds.r   )r(   r   r1   rG   rH   ÚAssertionErrorr0   r2   r%   rJ   r!   ÚanyÚget)r5   rN   r   r8   r7   s        r;   r�   z_dok_base.getî   s  € ð �$—*‘*ÑØ—:‘:˜c‘?Ð"Ü�SŒ>˜dŸi™i¨1šnØ�&ˆCØ�9‰9œ˜C›Ò Ü˜v c UÐ*KÐLÓMÐMð	MØò $�Ü  •|Ð#�|ñ$ô ÑK´c¸#¸t¿z¹zÓ6JÔKÓKˆÜÑ@¬3¨s°D·J±JÓ+?Ô@Ô@ÜÐ3Ó4Ð4Ø�9‰9˜Š>Ø�a‘&ˆCØ�z‰z�~‰~˜c 7Ó+Ð+øô ¤	¬:Ð6ò 	MÜÐDÓEÈ1ÐLûð	Mús   Á#C? Á4C? Ã?D$ÄDÄD$c                 ól   — | j                   j                  || j                  j                  d«      «      S ©Nr   ©r(   r�   r"   rv   )r5   rB   s     r;   Ú_get_intz_dok_base._get_int  s$   € Ø�z‰z�~‰~˜c 4§:¡:§?¡?°1Ó#5Ó6Ð6rQ   c                 ó~   — t        |j                  | j                  d   «      Ž }| j                  t	        |«      «      S r‘   )ÚrangeÚindicesr!   Ú
_get_arrayÚlist)r5   rB   Úi_ranges      r;   Ú
_get_slicez_dok_base._get_slice  s0   € Ü˜Ÿ™ T§Z¡Z°¡]Ó3Ð4ˆØ�‰œt G›}Ó-Ð-rQ   c                 óR  — t        j                  |«      }|j                  dk(  r_| j                  j	                  t        |«      | j                  j                  d«      «      }t        j                  || j                  ¬«      S | j                  |j                  | j                  ¬«      }|j                  «       D �cg c]  }| j                  j	                  |d«      ‘Œ  }}|r¾t        |j                  «      dk(  r't        |«      D ]  \  }}|sŒ	||j                  |<   Œ |S t        j                  t        j                  t        |«      «      |j                  «      }t        |«      dk(  r|d   nt!        |Ž }t!        ||d¬«      D ]  \  }}|sŒ	||j                  |<   Œ |S c c}w )Nr   )Ústype©r"   r   T)Ústrict)r-   r.   r1   r(   r�   Úintr"   rv   ÚarrayÚ_dok_containerr!   ÚravelrG   r3   Úunravel_indexÚarangerJ   )r5   rB   rL   Únew_dokr8   Údok_valsr9   Únew_idxs           r;   r—   z_dok_base._get_array  sT  € Ü�j‰j˜‹oˆØ�8‰8�qŠ=Ø—*‘*—.‘.¤ S£¨4¯:©:¯?©?¸1Ó+=Ó>ˆCÜ—8‘8˜C t§z¡zÔ2Ð2Ø×%Ñ% c§i¡i°t·z±zÐ%ÓBˆØ25·)±)³+Ö>¨Q�D—J‘J—N‘N 1 aÕ(Ð>ˆÐ>ÙÜ�3—9‘9‹~ Ò"Ü% hÓ/ò -‘D�A�qÚØ+,˜Ÿ™ aÒ(ð-ð ˆô ×*Ñ*¬2¯9©9´S¸³]Ó+CÀSÇYÁYÓO�Ü(+¨G«¸Ò(9˜' !š*¼sÀG¸}�Ü ¨¸$Ô?ò -‘D�A�qÚØ+,˜Ÿ™ aÒ(ð-ð ˆùò ?s   Â=#F$c                 óp   — | j                   j                  ||f| j                  j                  d«      «      S r‘   r’   ©r5   ÚrowÚcols      r;   Ú_get_intXintz_dok_base._get_intXint,  s(   € Ø�z‰z�~‰~˜s C˜j¨$¯*©*¯/©/¸!Ó*<Ó=Ð=rQ   c                 ó@   — | j                  t        ||dz   «      |«      S ©Nr   ©Ú_get_sliceXsliceÚslicer©   s      r;   Ú_get_intXslicez_dok_base._get_intXslice/  s    € Ø×$Ñ$¤U¨3°°a±Ó%8¸#Ó>Ð>rQ   c                 ó@   — | j                  |t        ||dz   «      «      S r®   r¯   r©   s      r;   Ú_get_sliceXintz_dok_base._get_sliceXint2  s    € Ø×$Ñ$ S¬%°°S¸1±WÓ*=Ó>Ð>rQ   c                 óª  — |j                  | j                  d   «      \  }}}|j                  | j                  d   «      \  }}}t        |||«      }	t        |||«      }
t        |	«      t        |
«      f}t        | «      d|d   z  |d   z  k\  r| j	                  |	|
«      S | j                  || j                  ¬«      }| j                  «       D ]‚  }t        t        |d   «      |z
  |«      \  }}|dk7  s|dk  s||d   k\  rŒ4t        t        |d   «      |z
  |«      \  }}|dk7  s|dk  s||d   k\  rŒe| j                  |   |j                  ||f<   Œ„ |S )Nr   r   r   r�   )r–   r!   r•   rG   Ú_get_columnXarrayr¡   r"   r…   ÚdivmodrŸ   r(   )r5   rª   r«   Ú	row_startÚrow_stopÚrow_stepÚ	col_startÚcol_stopÚcol_stepÚ	row_rangeÚ	col_ranger!   ÚnewdokrN   r8   ÚriÚjÚrjs                     r;   r°   z_dok_base._get_sliceXslice5  sY  € Ø(+¯©°D·J±J¸q±MÓ(BÑ%ˆ	�8˜XØ(+¯©°D·J±J¸q±MÓ(BÑ%ˆ	�8˜XÜ˜) X¨xÓ8ˆ	Ü˜) X¨xÓ8ˆ	Ü�Y“¤ Y£Ð0ˆô ˆt‹9˜˜E !™H™ u¨Q¡xÑ/Ò/à×)Ñ)¨)°YÓ?Ð?à×$Ñ$ U°$·*±*Ð$Ó=ˆØ—9‘9“;ò 	1ˆCÜœ3˜s 1™v›;¨Ñ2°HÓ=‰EˆAˆrØ�QŠw˜!˜aš% 1¨¨a©¢=ØÜœ3˜s 1™v›;¨Ñ2°HÓ=‰EˆAˆrØ�QŠw˜!˜aš% 1¨¨a©¢=ØØ!%§¡¨C¡ˆF�L‰L˜˜A˜Òð	1ð ˆrQ   c                 óD   — | j                  |g|j                  «       «      S r`   )r¶   r¢   r©   s      r;   Ú_get_intXarrayz_dok_base._get_intXarrayL  s   € Ø×%Ñ% s e¨S¯Y©Y«[Ó9Ð9rQ   c                 óœ   — | j                  |j                  «       |g«      }|j                  dkD  r|j                  |j                  «      S |S r®   )r¶   r¢   r1   Úreshaper!   )r5   rª   r«   Úress       r;   Ú_get_arrayXintz_dok_base._get_arrayXintO  s?   € Ø×$Ñ$ S§Y¡Y£[°3°%Ó8ˆØ�8‰8�aŠ<Ø—;‘;˜sŸy™yÓ)Ð)Øˆ
rQ   c                 ó€   — t        t        |j                  | j                  d   «      Ž «      }| j	                  ||«      S r‘   ©r˜   r•   r–   r!   r¶   r©   s      r;   Ú_get_sliceXarrayz_dok_base._get_sliceXarrayU  ó5   € Ü”5˜#Ÿ+™+ d§j¡j°¡mÓ4Ð5Ó6ˆØ×%Ñ% c¨3Ó/Ð/rQ   c                 ó€   — t        t        |j                  | j                  d   «      Ž «      }| j	                  ||«      S r®   rË   r©   s      r;   Ú_get_arrayXslicez_dok_base._get_arrayXsliceY  rÍ   rQ   c                 ó  — | j                  t        |«      t        |«      f| j                  ¬«      }t        |«      D ]J  \  }}t        |«      D ]7  \  }}| j                  j                  ||fd«      }|sŒ'||j                  ||f<   Œ9 ŒL |S )Nr�   r   )r¡   rG   r"   r3   r(   r�   )	r5   rª   r«   rÀ   r8   ÚrrÂ   Úcr9   s	            r;   r¶   z_dok_base._get_columnXarray]  sŠ   € à×$Ñ$¤c¨#£h´°C³Ð%9ÀÇÁÐ$ÓLˆä˜c“Nò 	+‰DˆAˆqÜ! #›ò +‘��1Ø—J‘J—N‘N A q 6¨1Ó-�ÚØ)*�F—L‘L  A Ò&ñ+ð	+ð
 ˆrQ   c                 ó°  — t        t        j                  t        j                  ||«      «      \  }}| j	                  |j
                  | j                  ¬«      }t        j                  t        |j
                  d   «      t        |j
                  d   «      «      D ]8  }| j                  j                  ||   ||   fd«      }|sŒ*||j                  |<   Œ: |S )Nr�   r   r   )Úmapr-   Ú
atleast_2dÚbroadcast_arraysr¡   r!   r"   Ú	itertoolsÚproductr•   r(   r�   )r5   rª   r«   r8   rÂ   rÀ   rN   r9   s           r;   Ú_get_arrayXarrayz_dok_base._get_arrayXarrayh  s¯   € ä”2—=‘=¤"×"5Ñ"5°c¸3Ó"?Ó@‰ˆˆ1Ø×$Ñ$ Q§W¡W°D·J±JÐ$Ó?ˆä×$Ñ$¤U¨1¯7©7°1©:Ó%6¼¸a¿g¹gÀa¹jÓ8IÓJò 	&ˆCØ—
‘
—‘  #¡¨¨#©Ð/°Ó3ˆAÚØ$%�—‘˜SÒ!ð	&ð ˆrQ   c                 ó`   — |r|| j                   |<   y || j                   v r| j                   |= y y r`   rd   )r5   rB   rZ   s      r;   Ú_set_intz_dok_base._set_intt  s.   € ÙØˆD�J‰J�sŠOØ�D—J‘JÑØ—
‘
˜3‘ð rQ   c                 ó†  — |j                  «       }|j                  «       }t        |«      t        |«      k7  rHt        |«      dk(  r/t        j                  t        |«      |d   | j                  ¬«      }nt        d«      ‚t        ||«      D ]3  \  }}|r|| j                  |<   Œ|| j                  v sŒ'| j                  |= Œ5 y )Nr   r   r�   z*Need len(index)==len(data) or len(data)==1)r¢   rG   r-   Úfullr"   r2   rJ   r(   )r5   rB   rZ   Úidx_setÚx_setr8   r9   s          r;   Ú
_set_arrayz_dok_base._set_arrayz  s�   € Ø—)‘)“+ˆØ—‘“	ˆÜˆw‹<œ3˜u›:Ò%Ü�5‹z˜QŠÜŸ™¤ G£¨e°A©h¸d¿j¹jÔI‘äÐKÓLÐLÜ˜ Ó'ò 	"‰DˆAˆqÙØ !�—
‘
˜1’Ø�d—j‘j’Ø—J‘J˜q‘Mñ		"rQ   c                 óh   — ||f}|r|| j                   |<   y || j                   v r| j                   |= y y r`   rd   )r5   rª   r«   rZ   rN   s        r;   Ú_set_intXintz_dok_base._set_intXint‰  s7   € Ø�CˆjˆÙØˆD�J‰J�sŠOØ�D—J‘JÑØ—
‘
˜3‘ð rQ   c                 ó²  — t        t        t        |j                  «       «      «      }t        t        t        |j                  «       «      «      }|j                  «       }| j                  j                  t        t        ||«      |«      «       t        j                  |dk(  «      d   D ],  }||   ||   f}| j                  |   dk(  sŒ | j                  |= Œ. y r‘   )	r˜   rÔ   rŸ   r¢   r(   rK   rJ   r-   Únonzero)r5   rª   r«   rZ   r8   rN   s         r;   Ú_set_arrayXarrayz_dok_base._set_arrayXarray�  s¨   € Ü”3”s˜CŸI™I›KÓ(Ó)ˆÜ”3”s˜CŸI™I›KÓ(Ó)ˆØ�G‰G‹IˆØ�
‰
×Ñœ#œc # s›m¨QÓ/Ô0ä—‘˜A ™FÓ# AÑ&ò 	$ˆAØ�q‘6˜3˜q™6Ð"ˆCØ�z‰z˜#‰ !Ó#à—J‘J˜s‘Oñ		$rQ   c                 óf  ‡— t        |«      r”t        | j                  |«      }| j                  | j                  |¬«      Št        j                  | j                  D �cg c]  }t        |«      ‘Œ c}Ž D ])  }| j                  j                  |d«      |z   }|sŒ%|‰|<   Œ+ ‰S t        |«      �rN|j                  | j                  k7  rt        d«      ‚t        | j                  |j                  «      }| j                  | j                  |¬«      Š| j                  j                  «       ‰_        |j                  dk(  r|j                  «       }ni|j!                  «       }| j"                  dk(  r$t%        |j&                  d   |j(                  «      }n&t%        t%        |j&                  Ž |j(                  «      }t+        j,                  d¬«      5  ‰j                  j/                  ˆfd„|D «       «       d d d «       ‰S t1        |«      r| j3                  «       |z   Š‰S t4        S c c}w # 1 sw Y   ‰S xY w)	Nr�   r   z Matrix dimensions are not equal.r   r   Úignore)Úoverc              3   ó8   •K  — | ]  \  }}|‰|   |z   f–— Œ y ­wr`   rY   )rA   Úkr9   Únews      €r;   rD   z$_dok_base.__add__.<locals>.<genexpr>´  s!   øè ø€ Ò E±T°Q¸ ! S¨¡V¨a¡Z¤Ñ Eùs   ƒ)r   r   r"   r¡   r!   r×   rØ   r•   r(   r�   r
   r2   r   r   r*   rF   r[   r1   rJ   ÚcoordsÚdatar-   ÚerrstaterK   r   ÚtodenseÚNotImplemented)r5   ry   Ú	res_dtyper:   rN   ÚaijÚo_itemsrë   s          @r;   Ú__add__z_dok_base.__add__œ  sÂ  ø€ Ü˜ÔÜ% d§j¡j°%Ó8ˆIØ×%Ñ% d§j¡j¸	Ð%ÓBˆCä ×(Ñ(¸T¿Z¹ZÖ*H¸¬5°­8Ò*HÐIò #�Ø—j‘j—n‘n S¨!Ó,¨uÑ4�ÚØ"�C˜’Hð#ð0 ˆ
ô) �e�_Ø�{‰{˜dŸj™jÒ(Ü Ð!CÓDÐDÜ˜tŸz™z¨5¯;©;Ó7ˆIØ×%Ñ% d§j¡j¸	Ð%ÓBˆCØŸ
™
Ÿ™Ó)ˆCŒIØ�|‰|˜uÒ$ØŸ+™+›-‘àŸ™›�Ø—9‘9 ’>Ü! %§,¡,¨q¡/°5·:±:Ó>‘Gä!¤# u§|¡|Ð"4°e·j±jÓA�GÜ—‘ (Ô+ñ FØ—	‘	× Ñ Ó E¸WÔ EÔE÷Fð ˆ
ô	 �UŒ^Ø—,‘,“. 5Ñ(ˆCð ˆ
ô "Ð!ùò/ +I÷$Fð ˆ
ús   ÁH!Ç%H&È&H0c                 ó   — | |z   S r`   rY   ©r5   ry   s     r;   Ú__radd__z_dok_base.__radd__»  s   € Ø�e‰|ÐrQ   c                 óü   — | j                   j                  dk(  rt        d«      ‚| j                  | j                  | j                   ¬«      }|j
                  j                  d„ | j                  «       D «       «       |S )NÚbz2Negating a sparse boolean matrix is not supported.r�   c              3   ó,   K  — | ]  \  }}|| f–— Œ y ­wr`   rY   )rA   rê   r9   s      r;   rD   z$_dok_base.__neg__.<locals>.<genexpr>Ä  s   è ø€ Ò:¡T Q¨˜!˜a˜RœÑ:ùs   ‚)r"   ÚkindrS   r¡   r!   r(   rK   rF   ©r5   rë   s     r;   Ú__neg__z_dok_base.__neg__¾  sd   € Ø�:‰:�?‰?˜cÒ!Ü%ØDóð ð ×!Ñ! $§*¡*°D·J±JÐ!Ó?ˆØ�	‰	×ÑÑ:¨T¯Z©Z«\Ô:Ô:Øˆ
rQ   c                 óÒ   ‡— t        | j                  ‰«      }| j                  | j                  |¬«      }|j                  j                  ˆfd„| j                  «       D «       «       |S )Nr�   c              3   ó2   •K  — | ]  \  }}||‰z  f–— Œ y ­wr`   rY   ©rA   rê   r9   ry   s      €r;   rD   z(_dok_base._mul_scalar.<locals>.<genexpr>Ë  s   øè ø€ ÒB©T¨Q°˜1˜a %™iœ.ÑBùó   ƒ)r   r"   r¡   r!   r(   rK   rF   ©r5   ry   rñ   rë   s    `  r;   Ú_mul_scalarz_dok_base._mul_scalarÇ  sO   ø€ Ü! $§*¡*¨eÓ4ˆ	à×!Ñ! $§*¡*°IÐ!Ó>ˆØ�	‰	×ÑÓB°T·Z±Z³\ÔBÔCØˆ
rQ   c                 óˆ  ‡ ‡— t        ‰ j                  ‰j                  «      }‰ j                  dk(  r¾t        ‰«      rz‰j                  dk(  r"‰ j                  «       ‰j                  «       z  }n.‰ j                  «       ‰j                  «       j                  d   z  } |t        ˆˆ fd„|D «       «      «      S t        ‰«      r( |t        ˆfd„‰ j                  «       D «       «      «      S t        S t        j                  ‰ j                  d   |¬«      }‰ j                  «       D ]  \  \  }}}||xx   |‰|   z  z  cc<   Œ |S )Nr   r   r   c              3   ó\   •K  — | ]#  }‰j                   |   ‰j                   |   z  –— Œ% y ­wr`   rd   )rA   rê   ry   r5   s     €€r;   rD   z+_dok_base._matmul_vector.<locals>.<genexpr>Ø  s&   øè ø€ Ò$RÈ T§Z¡Z°¡]°U·[±[À±^Õ%CÑ$Rùs   ƒ),c              3   ó4   •K  — | ]  \  }}‰|   |z  –— Œ y ­wr`   rY   r   s      €r;   rD   z+_dok_base._matmul_vector.<locals>.<genexpr>Ú  s   øè ø€ Ò$K±d°a¸ U¨1¡X°¥\Ñ$Kùó   ƒr�   )r   r"   r1   r
   r*   r…   r[   rì   r]   r   rF   rð   r-   Úzerosr!   )r5   ry   rñ   r…   Úresultr8   rÂ   r9   s   ``      r;   Ú_matmul_vectorz_dok_base._matmul_vectorÎ  sÿ   ù€ Ü˜4Ÿ:™: u§{¡{Ó3ˆ	ð �9‰9˜Š>Ü˜ŒØ—<‘< 5Ò(ØŸ9™9›;¨¯©«Ñ5‘DàŸ9™9›;¨¯©«×)=Ñ)=¸aÑ)@Ñ@�DÙ ¤Ô$RÈTÔ$RÓ!RÓSÐSÜ˜”Ù ¤Ó$K¸d¿j¹j»lÔ$KÓ!KÓLÐLä%Ð%ô —‘˜$Ÿ*™* Q™-¨yÔ9ˆØŸ™›ò 	&‰I‰FˆQ��AØ�1‹I˜˜U 1™X™Ñ%ŒIð	&àˆrQ   c                 ó¬  ‡— t        | j                  ‰j                  «      }| j                  dk(  r,t        ˆfd„| j                  j                  «       D «       «      S | j                  d   }‰j                  dk(  r|fn|‰j                  d   f}t        j                  ||¬«      }| j                  «       D ]  \  \  }}}||xx   |‰|   z  z  cc<   Œ |S )Nr   c              3   ó4   •K  — | ]  \  }}|‰|   z  –— Œ y ­wr`   rY   )rA   rÂ   r9   ry   s      €r;   rD   z0_dok_base._matmul_multivector.<locals>.<genexpr>é  s   øè ø€ ÒC©¨¨1�q˜5 ™8•|ÑCùr  r   r�   )	r   r"   r1   r]   r(   rF   r!   r-   r  )	r5   ry   Úresult_dtyperŠ   Ú	new_shaper	  r8   rÂ   r9   s	    `       r;   Ú_matmul_multivectorz_dok_base._matmul_multivectorä  s·   ø€ Ü˜dŸj™j¨%¯+©+Ó6ˆà�9‰9˜Š>äÓC°·
±
×0@Ñ0@Ó0BÔCÓCÐCð �J‰J�q‰MˆØ!ŸJ™J¨!šO�Q‘D°!°U·[±[À±^Ð1Dˆ	Ü—‘˜)¨<Ô8ˆØŸ™›ò 	&‰I‰FˆQ��AØ�1‹I˜˜U 1™X™Ñ%ŒIð	&àˆrQ   c                 óŽ   ‡— t        ‰«      r4| j                  j                  ˆfd„| j                  «       D «       «       | S t        S )Nc              3   ó2   •K  — | ]  \  }}||‰z  f–— Œ y ­wr`   rY   r   s      €r;   rD   z%_dok_base.__imul__.<locals>.<genexpr>õ  ó   øè ø€ ÒF±°°A˜q ! e¡)œnÑFùr  ©r   r(   rK   rF   rð   rö   s    `r;   Ú__imul__z_dok_base.__imul__ó  ó4   ø€ Ü˜ÔØ�J‰J×ÑÓF¸¿¹»ÔFÔFØˆKÜÐrQ   c                 ó  ‡— t        ‰«      rgt        | j                  ‰«      }| j                  | j                  |¬«      }|j
                  j                  ˆfd„| j                  «       D «       «       |S | j                  «       ‰z  S )Nr�   c              3   ó2   •K  — | ]  \  }}||‰z  f–— Œ y ­wr`   rY   r   s      €r;   rD   z(_dok_base.__truediv__.<locals>.<genexpr>ý  r  r  )	r   r   r"   r¡   r!   r(   rK   rF   Útocsrr  s    `  r;   Ú__truediv__z_dok_base.__truediv__ù  sh   ø€ Ü˜ÔÜ% d§j¡j°%Ó8ˆIØ×%Ñ% d§j¡j¸	Ð%ÓBˆCØ�I‰I×ÑÓF¸¿¹»ÔFÔGØˆJØ�z‰z‹|˜eÑ#Ð#rQ   c                 óŽ   ‡— t        ‰«      r4| j                  j                  ˆfd„| j                  «       D «       «       | S t        S )Nc              3   ó2   •K  — | ]  \  }}||‰z  f–— Œ y ­wr`   rY   r   s      €r;   rD   z)_dok_base.__itruediv__.<locals>.<genexpr>  r  r  r  rö   s    `r;   Ú__itruediv__z_dok_base.__itruediv__  r  rQ   c                 ó,   — t         j                  | «      S r`   )rE   Ú
__reduce__ra   s    r;   r  z_dok_base.__reduce__  s   € ô �‰˜tÓ$Ð$rQ   c                 óV   •— | j                   dk(  rt        ‰| �	  |«      S t        d«      ‚)Nr   z diagonal requires two dimensions)r1   ÚsuperÚdiagonalr2   )r5   rê   Ú	__class__s     €r;   r!  z_dok_base.diagonal  s*   ø€ Ø�9‰9˜Š>Ü‘7Ñ# AÓ&Ð&ÜÐ;Ó<Ð<rQ   c                 ó&  — | j                   dk(  r| j                  «       S |�|dk7  rt        d«      ‚| j                  \  }}| j	                  ||f| j
                  |¬«      }|j                  j                  d„ | j                  «       D «       «       |S )Nr   )r   r   zvSparse arrays/matrices do not support an 'axes' parameter because swapping dimensions is the only logical permutation.)r"   r   c              3   ó4   K  — | ]  \  \  }}}||f|f–— Œ y ­wr`   rY   )rA   ÚleftÚrightrL   s       r;   rD   z&_dok_base.transpose.<locals>.<genexpr>!  s"   è ø€ ÒVÑ3E±=°D¸%À#˜E 4˜=¨#Ô.ÑVùs   ‚)	r1   r   r2   r!   r¡   r"   r(   rK   rF   )r5   Úaxesr   rŠ   ÚNrë   s         r;   Ú	transposez_dok_base.transpose  sˆ   € Ø�9‰9˜Š>Ø—9‘9“;ÐàÐ ¨¢Üð>óð ð �z‰z‰ˆˆ1Ø×!Ñ! 1 a &°·
±
ÀÐ!ÓFˆØ�	‰	×ÑÑVÈÏÉËÔVÔWØˆ
rQ   c                 óž   — | j                  | j                  | j                  ¬«      }|j                  j	                  | j                  «       |S ©Nr�   )r¡   r!   r"   r(   rK   rü   s     r;   r   z_dok_base.copy&  s:   € Ø×!Ñ! $§*¡*°D·J±JÐ!Ó?ˆØ�	‰	×Ñ˜Ÿ™Ô$Øˆ
rQ   c                óú   — t         j                  ||«      }t        t        t	        |«      «      t
        «      rt        d„ t        |Ž D «       «      }nt        |«      dz   f} | |t        |«      ¬«      }||_	        |S )Nc              3   ó8   K  — | ]  }t        |«      d z   –— Œ y­w)r   N)Úmax)rA   rB   s     r;   rD   z%_dok_base.fromkeys.<locals>.<genexpr>1  s   è ø€ Ò<¨3œ#˜c›( Q�,Ñ<ùs   ‚r   r�   )
rE   Úfromkeysr$   ÚnextÚiterr%   rJ   r.  rv   r(   )ÚclsÚiterablerO   Útmpr!   r	  s         r;   r/  z_dok_base.fromkeys-  sc   € ä�m‰m˜H eÓ,ˆÜ”dœ4 ›9“o¤uÔ-ÜÑ<´#°s°)Ô<Ó<‰Eä˜“X ‘\�OˆEÙ�U¤$ u£+Ô.ˆØˆŒØˆrQ   c                 ó  ‡‡— | j                   Š‰dk(  r'| j                  | j                  | j                  ¬«      S | j	                  t        | j                  «      ¬«      Št        j                  | j                  «       | j                  ‰¬«      }| j                  dkD  rt        | j                  «       Ž n| j                  «       f}t        ˆˆfd„|D «       «      }| j                  ||f| j                  | j                  ¬«      }d|_        |S )	Nr   r�   )Úmaxval©r"   Úcountr   c              3   óN   •K  — | ]  }t        j                  |‰‰¬ «      –— Œ y­w)r7  N)r-   Úfromiter)rA   ÚixÚ	idx_dtypeÚnnzs     €€r;   rD   z"_dok_base.tocoo.<locals>.<genexpr>A  s!   øè ø€ ÒRÀr”r—{‘{ 2¨Y¸c×BÐBÑRùs   ƒ"%r    T)r=  r4   r!   r"   Ú_get_index_dtyper.  r-   r:  r^   r1   rJ   r…   r%   Úhas_canonical_format)r5   r   rí   Úindsrì   ÚAr<  r=  s         @@r;   r[   z_dok_base.tocoo8  sÌ   ù€ Ø�h‰hˆØ�!Š8Ø×&Ñ& t§z¡z¸¿¹Ð&ÓDÐDà×)Ñ)´°T·Z±Z³Ð)ÓAˆ	Ü�{‰{˜4Ÿ;™;›=°·
±
À#ÔFˆà$(§I¡I°¢MŒs�D—I‘I“KÑ ¸¿	¹	»°~ˆÜÔRÈTÔRÓRˆØ×Ñ  v °d·j±jÈÏ
É
ÐÓSˆØ!%ˆÔØˆrQ   c                 ó*   — |r| j                  «       S | S r`   r   ©r5   r   s     r;   r+   z_dok_base.todokH  s   € ÙØ—9‘9“;ÐØˆrQ   c                 óz   — | j                   dk(  rt        d«      ‚| j                  d¬«      j                  |¬«      S )Nr   z%tocsr() not valid for 1d sparse arrayFr   )r1   rS   r[   ÚtocscrC  s     r;   rE  z_dok_base.tocscO  s8   € Ø�9‰9˜Š>Ü%Ð&MÓNÐNØ�z‰z˜uˆzÓ%×+Ñ+°Ð+Ó6Ð6rQ   c                 óÒ  — t        || j                  ¬«      }t        |«      t        | j                  «      k7  rt        ‚| j
                  dk(  r:|d   }t        | j                  «      D ]  }||k\  sŒ	| j                  |= Œ || _        y |\  }}| j                  \  }}||k  s||k  r;t        | j                  «       «      D ]  \  }}||k\  s||k\  sŒ| j                  ||f= Œ! || _        y )Nr   r   éÿÿÿÿ)
r   r&   rG   r!   rS   r1   r˜   r(   r'   r…   )r5   r!   ÚnewNr8   ÚnewMrŠ   r(  rÂ   s           r;   Úresizez_dok_base.resizeV  sÝ   € Ü˜E¨D¯N©NÔ;ˆÜˆu‹:œ˜TŸZ™Z›Ò(ä%Ð%à�9‰9˜Š>Ø˜‘9ˆDÜ˜$Ÿ*™*Ó%ò &�Ø˜“9ØŸ
™
 1™ð&ð  ˆDŒKØà‰
ˆˆdØ�z‰z‰ˆˆ1Ø�!Š8�t˜a’xä˜TŸY™Y›[Ó)ò )‘��1Ø˜’9  T£	ØŸ
™
 1 a 4Ñ(ð)ð ˆ�rQ   c                 óh  — t        j                  |«      }| j                  |k7  r{| j                  | j                  |¬«      }t        j                  t        | j                  j                  «       «      |¬«      }t        t        | j                  |«      «      |_        |S |r| j                  «       S | S r+  )r-   r"   r¡   r!   r    r˜   r(   r^   rE   rJ   r   )r5   r"   Úcastingr   r	  rí   s         r;   r,   z_dok_base.astypep  s†   € Ü—‘˜“ˆØ�:‰:˜ÒØ×(Ñ(¨¯©¸5Ð(ÓAˆFÜ—8‘8œD §¡×!2Ñ!2Ó!4Ó5¸UÔCˆDÜ¤ D§J¡J°Ó 5Ó6ˆFŒLØˆMÙØ—9‘9“;ÐØˆrQ   )NNFr`   )g        )r   )NF)r   )F)ÚunsafeT)Arw   Ú
__module__Ú__qualname__Ú_formatr&   r#   rK   rV   r\   r   Ú__doc__rb   rf   rh   rk   rm   ro   rp   rr   r{   r~   r€   r‚   rF   r…   r^   r�   r“   rš   r—   r¬   r²   r´   r°   rÅ   rÉ   rÌ   rÏ   r¶   rÙ   rÛ   rà   râ   rå   rô   r÷   rý   r  r
  r  r  r  r  r  r!  r)  r   Úclassmethodr/  r[   r+   rE  rJ  r,   Ú__classcell__)r"  s   @r;   r   r      s	  ø„ Ø€GØ€Ið%KÈTô %KòN#"óJó2ð
 —o‘o×-Ñ-€G„OØ#×1Ñ1×9Ñ9€MÔòò!ó3ò"òð  (ó 0ò4FòIòIòIò$ò&	"ò	!ò	#ó,òD7ò.òò*>ò?ò?òò.:òò0ò0ò	ò	ò ò"ò ò
$òò>òòòò,òò$òò%õ=ð
 ×'Ñ'×/Ñ/€HÔóð   ×)Ñ)×1Ñ1€IÔòð
 —<‘<×'Ñ'€D„Làòó ðóð —M‘M×)Ñ)€E„Móð
 —M‘M×)Ñ)€E„Mó7ð
 —M‘M×)Ñ)€E„Mòð. —^‘^×+Ñ+€F„Nó	ð —^‘^×+Ñ+€F‡N€NrQ   r   c                 ó"   — t        | t        «      S )a“  Is `x` of dok_array type?

    .. warning::

       SciPy sparse is shifting from a sparse matrix interface to a sparse
       array interface. In the next few releases we expect to deprecate the
       sparse matrix interface. For documentation of the matrix
       interface, see the :ref:`spmatrix interface docs <spmatrix_api>`.
       For guidance on converting existing code to sparse arrays, see
       :ref:`Migration from spmatrix to sparray <migration_to_sparray>`.

    Parameters
    ----------
    x
        object to check for being a dok matrix

    Returns
    -------
    bool
        True if `x` is a dok matrix, False otherwise

    Examples
    --------
    >>> from scipy.sparse import dok_array, dok_matrix, coo_matrix, isspmatrix_dok
    >>> isspmatrix_dok(dok_matrix([[5]]))
    True
    >>> isspmatrix_dok(dok_array([[5]]))
    False
    >>> isspmatrix_dok(coo_matrix([[5]]))
    False
    )r$   r   )rZ   s    r;   r   r   ~  s   € ô@ �aœÓ$Ð$rQ   c                   ó   — e Zd ZdZy)r   a+  
    Dictionary Of Keys based sparse array.

    This is an efficient structure for constructing sparse
    arrays incrementally.

    This can be instantiated in several ways:
        dok_array(D)
            where D is a 2-D ndarray

        dok_array(S)
            with another sparse array or matrix S (equivalent to S.todok())

        dok_array((M,N), [dtype])
            create the array with initial shape (M,N)
            dtype is optional, defaulting to dtype='d'

    Attributes
    ----------
    dtype : dtype
        Data type of the array
    shape : 2-tuple
        Shape of the array
    ndim : int
        Number of dimensions (this is always 2)
    format : str
        Three letter code for the format of the array storage, e.g. 'dok'
    nnz : int
        Number of values stored in the array
    size : int
        Number of values stored in the array
    T : dok_array
        The transpose of the array
    mT : dok_array
        The matrix transpose of the array

    Notes
    -----

    Sparse arrays can be used in arithmetic operations: they support
    addition, subtraction, multiplication, division, and matrix power.

    - Allows for efficient O(1) access of individual elements.
    - Duplicates are not allowed.
    - Can be efficiently converted to a coo_array once constructed.

    Examples
    --------
    >>> import numpy as np
    >>> from scipy.sparse import dok_array
    >>> S = dok_array((5, 5), dtype=np.float32)
    >>> for i in range(5):
    ...     for j in range(5):
    ...         S[i, j] = i + j    # Update element

    N)rw   rN  rO  rQ  rY   rQ   r;   r   r   ¢  s   „ ò7rQ   r   c                   óH   — e Zd ZdZd„ Zd„ Z eee¬«      Zd„ Zd„ Z	d„ Z
d„ Zy	)
r   aô  
    Dictionary Of Keys based sparse matrix.

    This is an efficient structure for constructing sparse
    matrices incrementally.

    .. warning::

       SciPy sparse is shifting from a sparse matrix interface to a sparse
       array interface. In the next few releases we expect to deprecate the
       sparse matrix interface. For documentation of the matrix
       interface, see the :ref:`spmatrix interface docs <spmatrix_api>`.
       For guidance on converting existing code to sparse arrays, see
       :ref:`Migration from spmatrix to sparray <migration_to_sparray>`.

    This can be instantiated in several ways:
        dok_matrix(D)
            where D is a 2-D ndarray

        dok_matrix(S)
            with another sparse array or matrix S (equivalent to S.todok())

        dok_matrix((M,N), [dtype])
            create the matrix with initial shape (M,N)
            dtype is optional, defaulting to dtype='d'

    Attributes
    ----------
    dtype : dtype
        Data type of the matrix
    shape : 2-tuple
        Shape of the matrix
    ndim : int
        Number of dimensions (this is always 2)
    format : str
        Three letter code for the format of the matrix storage, e.g. 'dok'
    nnz : int
        Number of values stored in the matrix
    size : int
        Number of values stored in the matrix
    T : dok_matrix
        The transpose of the matrix
    mT : dok_matrix
        The matrix transpose

    Notes
    -----

    Sparse matrices can be used in arithmetic operations: they support
    addition, subtraction, multiplication, division, and matrix power.

    - Allows for efficient O(1) access of individual elements.
    - Duplicates are not allowed.
    - Can be efficiently converted to a coo_matrix once constructed.

    Examples
    --------
    >>> import numpy as np
    >>> from scipy.sparse import dok_matrix
    >>> S = dok_matrix((5, 5), dtype=np.float32)
    >>> for i in range(5):
    ...     for j in range(5):
    ...         S[i, j] = i + j    # Update element

    c                 ó~   — | j                  |d¬«      j                  | j                  «      }|j                  | _        y )NFr   )rÇ   Úasformatr*   Ú__dict__)r5   r!   Ú
new_matrixs      r;   Ú	set_shapezdok_matrix.set_shape   s0   € Ø—\‘\ %¨e�\Ó4×=Ñ=¸d¿k¹kÓJˆ
Ø"×+Ñ+ˆ�rQ   c                 ó   — | j                   S )zGet shape of a sparse matrix.)r'   ra   s    r;   Ú	get_shapezdok_matrix.get_shape$  s   € à�{‰{ÐrQ   )ÚfgetÚfsetc                 ó6   — | j                   j                  «       S r`   )r(   rr   ra   s    r;   rr   zdok_matrix.__reversed__*  s   € Ø�z‰z×&Ñ&Ó(Ð(rQ   c                 ór   — t        |t        «      r| j                  |j                  z  S | j                  |z  S r`   ©r$   r   r(   rö   s     r;   r{   zdok_matrix.__or__-  ó.   € Ü�eœYÔ'Ø—:‘: §¡Ñ+Ð+Ø�z‰z˜EÑ!Ð!rQ   c                 ór   — t        |t        «      r| j                  |j                  z  S | j                  |z  S r`   rb  rö   s     r;   r~   zdok_matrix.__ror__2  rc  rQ   c                 ó’   — t        |t        «      r!| xj                  |j                  z  c_        | S | xj                  |z  c_        | S r`   rb  rö   s     r;   r€   zdok_matrix.__ior__7  s:   € Ü�eœYÔ'Ø�JŠJ˜%Ÿ+™+Ñ%�Jð ˆð �JŠJ˜%Ñ�JØˆrQ   N)rw   rN  rO  rQ  r[  r]  Úpropertyr!   rr   r{   r~   r€   rY   rQ   r;   r   r   Ý  s5   „ ñ@òD,òñ ˜)¨)Ô4€Eò)ò"ò
"ó
rQ   r   )rQ  Ú__docformat__Ú__all__r×   Únumpyr-   Ú_matrixr   Ú_baser   r	   r
   Ú_indexr   Ú_sputilsr   r   r   r   r   r   r   r   Úobjectro   rE   r   r   r   r   rY   rQ   r;   ú<module>ro     st   ðÙ %à%€â
7€ã Û å ß -Ñ -Ý ÷;÷ ;ó ;ñ ‹8€ôg	,�˜ Tô g	,òT %ôH8�	˜7ô 8ôv_�˜9õ _rQ   