Ë
    þ�DjÙZ  ã                   óÔ   — d Z dZg d¢ZddlZddlm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  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)Úwarné   )Úspmatrix)Ú_spbaseÚsparrayÚissparse)Ú
IndexMixin)ÚisdenseÚgetdtypeÚisshapeÚ	isintlikeÚisscalarlikeÚupcastÚupcast_scalarÚcheck_shapec                   ó>  ‡ — e Zd ZdZd9d„Zd„ Zd:d„Zd„ Zej                  j                  e_	        ej                  j                  e_	        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;d„Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d „ Z$ˆ f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.„ Z2d<ˆ fd/„	Z3d=d0„Z4ejh                  j                  e4_	        d1„ Z5d2„ Z6ejl                  j                  e6_	        e7d>d3„«       Z8d?d4„Z9ejr                  j                  e9_	        d?d5„Z:ejt                  j                  e:_	        d?d6„Z;ejv                  j                  e;_	        d7„ Z<ejx                  j                  e<_	        d@d8„Z=ˆ xZ>S )AÚ	_dok_baseÚdokc                 óD  — t        j                  | |«       t        | t        «      }t        |t        «      r=t        ||¬«      r0t        ||¬«      | _        i | _        t        |t        ¬«      | _        y t        |«      r’|j                  | j                  k(  r|r|j                  «       n|}n|j                  «       }|�|j!                  |d¬«      }|j                  | _        t        |j"                  |¬«      | _        |j                  | _        y 	 t%        j&                  |«      }|j,                  dkD  rt+        d«      ‚|j,                  dk(  rO|�|j!                  |«      }t/        |«      D ��ci c]  \  }}|d	k7  sŒ||“Œ c}}| _        |j                  | _        nC| j1                  ||¬
«      j                  «       }	|	j                  | _        |	j                  | _        t        |j"                  |¬«      | _        y # t(        $ r}t+        d«      |‚d }~ww xY wc c}}w )N©Úallow_1d)ÚdefaultF©ÚcopyzInvalid input format.é   z(Expected rank <=2 dense array or matrix.r   r   ©Údtype)r	   Ú__init__Ú
isinstancer
   Útupler   r   Ú_shapeÚ_dictr   Úfloatr    r   Úformatr   ÚtodokÚastypeÚshapeÚnpÚasarrayÚ	ExceptionÚ	TypeErrorÚndimÚ	enumerateÚ_coo_container)
ÚselfÚarg1r*   r    r   Úis_arrayÚeÚiÚvÚds
             úUC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\scipy/sparse/_dok.pyr!   z_dok_base.__init__   s­  € Ü×Ñ˜˜tÔ$ä˜d¤GÓ,ˆÜ�dœEÔ"¤w¨t¸hÕ'GÜ% d°XÔ>ˆDŒKØˆDŒJÜ! %´Ô7ˆD�JÜ�dŒ^Ø�{‰{˜dŸk™kÒ)Ù&*�t—y‘y”{°‘à—z‘z“|�àÐ Ø—{‘{ 5¨u�{Ó5�àŸ™ˆDŒJÜ% d§j¡j¸8ÔDˆDŒKØŸ™ˆD�Jð@Ü—z‘z $Ó'�ð �y‰y˜1Š}ÜÐ JÓKÐKà�y‰y˜AŠ~ØÐ$ØŸ;™; uÓ-�DÜ/8¸«×I¡t q¨!À!ÀqÃ&˜a ™dÓI�”
Ø!ŸZ™Z�•
à×'Ñ'¨°EÐ'Ó:×@Ñ@ÓB�ØŸW™W�”
ØŸW™W�”
Ü% d§j¡j¸8ÔDˆD�Køô ò @ÜÐ 7Ó8¸aÐ?ûð@üó Js$   ÄG? Å1HÅ?HÇ?	HÈHÈHc                 ó   — t        d«      ‚)Nz2Direct update to DOK sparse format is not allowed.)ÚNotImplementedError)r2   Úvals     r9   Úupdatez_dok_base.update=   s   € ä!Ð"VÓWÐWó    c                 óF   — |�t        d«      ‚t        | j                  «      S )Nz7_getnnz over an axis is not implemented for DOK format.)r;   Úlenr%   )r2   Úaxiss     r9   Ú_getnnzz_dok_base._getnnzA   s(   € ØÐÜ%ØIóð ô �4—:‘:‹Ðr>   c                 óB   — t        d„ | j                  «       D «       «      S )Nc              3   ó&   K  — | ]	  }|d k7  –— Œ y­w©r   N© )Ú.0Úxs     r9   ú	<genexpr>z*_dok_base.count_nonzero.<locals>.<genexpr>I   s   è ø€ Ò1˜a�1˜•6Ñ1ùs   ‚)ÚsumÚvalues©r2   s    r9   Úcount_nonzeroz_dok_base.count_nonzeroH   s   € ÜÑ1 4§;¡;£=Ô1Ó1Ð1r>   c                 ó,   — t        | j                  «      S ©N)r@   r%   rL   s    r9   Ú__len__z_dok_base.__len__N   s   € Ü�4—:‘:‹Ðr>   c                 ó   — || j                   v S rO   ©r%   ©r2   Úkeys     r9   Ú__contains__z_dok_base.__contains__Q   s   € Ø�d—j‘jÐ Ð r>   c                ó:   — | j                   j                  ||«      S rO   )r%   Ú
setdefault)r2   rT   r   s      r9   rW   z_dok_base.setdefaultT   s   € Ø�z‰z×$Ñ$ S¨'Ó2Ð2r>   c                ó   — | j                   |= y rO   rR   rS   s     r9   Ú__delitem__z_dok_base.__delitem__W   s   € Ø�J‰J�s‰Or>   c                 ó6   — | j                   j                  «       S rO   )r%   ÚclearrL   s    r9   r[   z_dok_base.clearZ   ó   € Ø�z‰z×ÑÓ!Ð!r>   c                ó4   —  | j                   j                  |Ž S rO   )r%   Úpop)r2   Úargss     r9   r^   z_dok_base.pop]   s   € Øˆt�z‰z�~‰~˜tÐ$Ð$r>   c                 ó   — t        d«      ‚)Nz*reversed is not defined for dok_array type)r.   rL   s    r9   Ú__reversed__z_dok_base.__reversed__`   s   € ÜÐDÓEÐEr>   c                 óx   — t        | «      j                  › dt        |«      j                  › �}t        d|› �«      ‚©Nz and z unsupported operand type for |: ©ÚtypeÚ__name__r.   ©r2   ÚotherÚ
type_namess      r9   Ú__or__z_dok_base.__or__c   ó;   € Ü˜T›
×+Ñ+Ð,¨E´$°u³+×2FÑ2FÐ1GÐHˆ
ÜÐ:¸:¸,ÐGÓHÐHr>   c                 óx   — t        | «      j                  › dt        |«      j                  › �}t        d|› �«      ‚rc   rd   rg   s      r9   Ú__ror__z_dok_base.__ror__g   rk   r>   c                 óx   — t        | «      j                  › dt        |«      j                  › �}t        d|› �«      ‚rc   rd   rg   s      r9   Ú__ior__z_dok_base.__ior__k   rk   r>   c                 ó6   — | j                   j                  «       S rO   )r%   ÚpopitemrL   s    r9   rq   z_dok_base.popitemo   s   € Ø�z‰z×!Ñ!Ó#Ð#r>   c                 ó6   — | j                   j                  «       S rO   )r%   ÚitemsrL   s    r9   rs   z_dok_base.itemsr   r\   r>   c                 ó6   — | j                   j                  «       S rO   )r%   ÚkeysrL   s    r9   ru   z_dok_base.keysu   s   € Ø�z‰z�‰Ó Ð r>   c                 ó6   — | j                   j                  «       S rO   )r%   rK   rL   s    r9   rK   z_dok_base.valuesx   s   € Ø�z‰z× Ñ Ó"Ð"r>   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)
z>This provides dict.get method functionality with type checkingr   zIndex z! length needs to match self.shapez%Index must be or consist of integers.Nc              3   ó:   K  — | ]  \  }}|d k  r||z   n|–— Œ y­wrE   rF   ©rG   r6   ÚMs      r9   rI   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rE   rF   ry   s      r9   rI   z _dok_base.get.<locals>.<genexpr>‰   s"   è ø€ Ò@¡4 1 aˆq�1‰uŠ˜˜Q™‹Ñ@ùr{   zIndex out of bounds.r   )r%   r   r/   r@   Ú
IndexErrorÚAssertionErrorr.   Ú
ValueErrorr#   Úzipr*   ÚanyÚget)r2   rT   r   r6   r5   s        r9   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                 ót  •— | j                   dk(  rt        ‰| �	  |«      S t        |t        «      rt        |«      dk(  r|d   }t        t        j                  f}t        ||«      rJ|dk  r|| j                  d   z  }|dk  s|| j                  d   k\  rt        d«      ‚| j                  |«      S t        d«      ‚)Nr   r   r   éÿÿÿÿúindex value out of boundsz4array/slice index for 1d dok_array not yet supported)r/   ÚsuperÚ__getitem__r"   r#   r@   Úintr+   Úintegerr*   r}   Ú_get_int)r2   rT   Ú	INT_TYPESÚ	__class__s      €r9   r‡   z_dok_base.__getitem__�   s©   ø€ Ø�9‰9˜Š>Ü‘7Ñ& sÓ+Ð+ä�cœ5Ô!¤c¨#£h°!¢mØ�a‘&ˆCÜœ"Ÿ*™*Ð%ˆ	Ü�c˜9Ô%Ø�QŠwØ�t—z‘z "‘~Ñ%�Ø�QŠw˜# §¡¨B¡Ò/Ü Ð!<Ó=Ð=Ø—=‘= Ó%Ð%äÐSÓTÐTr>   c                 ól   — | j                   j                  || j                  j                  d«      «      S ©Nr   ©r%   r‚   r    re   )r2   Úidxs     r9   rŠ   z_dok_base._get_int¡   s$   € Ø�z‰z�~‰~˜c 4§:¡:§?¡?°1Ó#5Ó6Ð6r>   c                 óp   — | j                   j                  ||f| j                  j                  d«      «      S rŽ   r�   ©r2   ÚrowÚcols      r9   Ú_get_intXintz_dok_base._get_intXint¥   s(   € Ø�z‰z�~‰~˜s C˜j¨$¯*©*¯/©/¸!Ó*<Ó=Ð=r>   c                 ó@   — | j                  t        ||dz   «      |«      S ©Nr   ©Ú_get_sliceXsliceÚslicer’   s      r9   Ú_get_intXslicez_dok_base._get_intXslice¨   s    € Ø×$Ñ$¤U¨3°°a±Ó%8¸#Ó>Ð>r>   c                 ó@   — | j                  |t        ||dz   «      «      S r—   r˜   r’   s      r9   Ú_get_sliceXintz_dok_base._get_sliceXint«   s    € Ø×$Ñ$ S¬%°°S¸1±WÓ*=Ó>Ð>r>   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   )Úindicesr*   Úranger@   Ú_get_columnXarrayÚ_dok_containerr    ru   Údivmodrˆ   r%   )r2   r“   r”   Ú	row_startÚrow_stopÚrow_stepÚ	col_startÚcol_stopÚcol_stepÚ	row_rangeÚ	col_ranger*   ÚnewdokrT   r6   ÚriÚjÚrjs                     r9   r™   z_dok_base._get_sliceXslice®   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ð ˆr>   c                 óH   — |j                  «       }| j                  |g|«      S rO   ©Úsqueezer¡   r’   s      r9   Ú_get_intXarrayz_dok_base._get_intXarrayÅ   s"   € Ø�k‰k‹mˆØ×%Ñ% s e¨SÓ1Ð1r>   c                 óH   — |j                  «       }| j                  ||g«      S rO   r±   r’   s      r9   Ú_get_arrayXintz_dok_base._get_arrayXintÉ   s"   € Ø�k‰k‹mˆØ×%Ñ% c¨C¨5Ó1Ð1r>   c                 ó€   — t        t        |j                  | j                  d   «      Ž «      }| j	                  ||«      S rŽ   ©Úlistr    rŸ   r*   r¡   r’   s      r9   Ú_get_sliceXarrayz_dok_base._get_sliceXarrayÍ   ó5   € Ü”5˜#Ÿ+™+ d§j¡j°¡mÓ4Ð5Ó6ˆØ×%Ñ% c¨3Ó/Ð/r>   c                 ó€   — t        t        |j                  | j                  d   «      Ž «      }| j	                  ||«      S r—   r·   r’   s      r9   Ú_get_arrayXslicez_dok_base._get_arrayXsliceÑ   rº   r>   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¢   r@   r    r0   r%   r‚   )	r2   r“   r”   r¬   r6   Úrr®   Úcr7   s	            r9   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 Ò&ñ+ð	+ð
 ˆr>   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‚   )r2   r“   r”   r6   r®   r¬   rT   r7   s           r9   Ú_get_arrayXarrayz_dok_base._get_arrayXarrayà   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Ò!ð	&ð ˆr>   c                 óx  •— | j                   dk(  rt        ‰| �	  ||«      S t        |t        «      rt        |«      dk(  r|d   }t        t        j                  f}t        ||«      rK|dk  r|| j                  d   z  }|dk  s|| j                  d   k\  rt        d«      ‚| j                  ||«      S t        d«      ‚)Nr   r   r   r„   r…   z-array index for 1d dok_array not yet provided)r/   r†   Ú__setitem__r"   r#   r@   rˆ   r+   r‰   r*   r}   Ú_set_int)r2   rT   Úvaluer‹   rŒ   s       €r9   rÈ   z_dok_base.__setitem__ì   s­   ø€ Ø�9‰9˜Š>Ü‘7Ñ& s¨EÓ2Ð2ä�cœ5Ô!¤c¨#£h°!¢mØ�a‘&ˆCÜœ"Ÿ*™*Ð%ˆ	Ü�c˜9Ô%Ø�QŠwØ�t—z‘z "‘~Ñ%�Ø�QŠw˜# §¡¨B¡Ò/Ü Ð!<Ó=Ð=Ø—=‘=  eÓ,Ð,äÐLÓMÐMr>   c                 ó`   — |r|| j                   |<   y || j                   v r| j                   |= y y rO   rR   )r2   r�   rH   s      r9   rÉ   z_dok_base._set_intý   s.   € ÙØˆD�J‰J�sŠOØ�D—J‘JÑØ—
‘
˜3‘ð r>   c                 óh   — ||f}|r|| j                   |<   y || j                   v r| j                   |= y y rO   rR   )r2   r“   r”   rH   rT   s        r9   Ú_set_intXintz_dok_base._set_intXint  s7   € Ø�CˆjˆÙØˆD�J‰J�sŠOØ�D—J‘JÑØ—
‘
˜3‘ð r>   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ˆ   Úravelr%   r=   r€   r+   Únonzero)r2   r“   r”   rH   r6   rT   s         r9   Ú_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ñ		$r>   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rO   rF   )rG   Úkr7   Únews      €r9   rI   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   r   r   r   r'   rs   Útocoor/   r€   ÚcoordsÚdatar+   Úerrstater=   r   ÚtodenseÚNotImplemented)r2   rh   Ú	res_dtyper8   rT   ÚaijÚo_itemsr×   s          @r9   Ú__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 rO   rF   ©r2   rh   s     r9   Ú__radd__z_dok_base.__radd__6  s   € Ø�e‰|Ðr>   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rO   rF   )rG   rÖ   r7   s      r9   rI   z$_dok_base.__neg__.<locals>.<genexpr>?  s   è ø€ Ò:¡T Q¨˜!˜a˜RœÑ:ùs   ‚)r    Úkindr;   r¢   r*   r%   r=   rs   ©r2   r×   s     r9   Ú__neg__z_dok_base.__neg__9  sd   € Ø�:‰:�?‰?˜cÒ!Ü%ØDóð ð ×!Ñ! $§*¡*°D·J±JÐ!Ó?ˆØ�	‰	×ÑÑ:¨T¯Z©Z«\Ô:Ô:Øˆ
r>   c                 óÒ   ‡— t        | j                  ‰«      }| j                  | j                  |¬«      }|j                  j                  ˆfd„| j                  «       D «       «       |S )Nr   c              3   ó2   •K  — | ]  \  }}||‰z  f–— Œ y ­wrO   rF   ©rG   rÖ   r7   rh   s      €r9   rI   z(_dok_base._mul_scalar.<locals>.<genexpr>F  s   øè ø€ ÒB©T¨Q°˜1˜a %™iœ.ÑBùó   ƒ)r   r    r¢   r*   r%   r=   rs   ©r2   rh   rÞ   r×   s    `  r9   Ú_mul_scalarz_dok_base._mul_scalarB  sO   ø€ Ü! $§*¡*¨eÓ4ˆ	à×!Ñ! $§*¡*°IÐ!Ó>ˆØ�	‰	×ÑÓB°T·Z±Z³\ÔBÔCØˆ
r>   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rO   rR   )rG   rÖ   rh   r2   s     €€r9   rI   z+_dok_base._matmul_vector.<locals>.<genexpr>S  s&   øè ø€ Ò$RÈ T§Z¡Z°¡]°U·[±[À±^Õ%CÑ$Rùs   ƒ),c              3   ó4   •K  — | ]  \  }}‰|   |z  –— Œ y ­wrO   rF   rí   s      €r9   rI   z+_dok_base._matmul_vector.<locals>.<genexpr>U  s   øè ø€ Ò$K±d°a¸ U¨1¡X°¥\Ñ$Kùó   ƒr   )r   r    r/   r   r'   ru   rØ   rÙ   rJ   r   rs   rÝ   r+   Úzerosr*   )r2   rh   rÞ   ru   Úresultr6   r®   r7   s   ``      r9   Ú_matmul_vectorz_dok_base._matmul_vectorI  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ð	&àˆr>   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rO   rF   )rG   r®   r7   rh   s      €r9   rI   z0_dok_base._matmul_multivector.<locals>.<genexpr>d  s   øè ø€ ÒC©¨¨1�q˜5 ™8•|ÑCùrô   r   r   )	r   r    r/   rJ   r%   rs   r*   r+   rõ   )	r2   rh   Úresult_dtyperz   Ú	new_shaperö   r6   r®   r7   s	    `       r9   Ú_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ð	&àˆr>   c                 óŽ   ‡— t        ‰«      r4| j                  j                  ˆfd„| j                  «       D «       «       | S t        S )Nc              3   ó2   •K  — | ]  \  }}||‰z  f–— Œ y ­wrO   rF   rí   s      €r9   rI   z%_dok_base.__imul__.<locals>.<genexpr>p  ó   øè ø€ ÒF±°°A˜q ! e¡)œnÑFùrî   ©r   r%   r=   rs   rÝ   rã   s    `r9   Ú__imul__z_dok_base.__imul__n  ó4   ø€ Ü˜ÔØ�J‰J×ÑÓF¸¿¹»ÔFÔFØˆKÜÐr>   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rO   rF   rí   s      €r9   rI   z(_dok_base.__truediv__.<locals>.<genexpr>x  rÿ   rî   )	r   r   r    r¢   r*   r%   r=   rs   Útocsrrï   s    `  r9   Ú__truediv__z_dok_base.__truediv__t  sh   ø€ Ü˜ÔÜ% d§j¡j°%Ó8ˆIØ×%Ñ% d§j¡j¸	Ð%ÓBˆCØ�I‰I×ÑÓF¸¿¹»ÔFÔGØˆJØ�z‰z‹|˜eÑ#Ð#r>   c                 óŽ   ‡— t        ‰«      r4| j                  j                  ˆfd„| j                  «       D «       «       | S t        S )Nc              3   ó2   •K  — | ]  \  }}||‰z  f–— Œ y ­wrO   rF   rí   s      €r9   rI   z)_dok_base.__itruediv__.<locals>.<genexpr>~  rÿ   rî   r   rã   s    `r9   Ú__itruediv__z_dok_base.__itruediv__|  r  r>   c                 ó,   — t         j                  | «      S rO   )ÚdictÚ
__reduce__rL   s    r9   r  z_dok_base.__reduce__‚  s   € ô �‰˜tÓ$Ð$r>   c                 óV   •— | j                   dk(  rt        ‰| �	  |«      S t        d«      ‚)Nr   z diagonal requires two dimensions)r/   r†   Údiagonalr   )r2   rÖ   rŒ   s     €r9   r  z_dok_base.diagonalˆ  s*   ø€ Ø�9‰9˜Š>Ü‘7Ñ# AÓ&Ð&ÜÐ;Ó<Ð<r>   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rO   rF   )rG   ÚleftÚrightr<   s       r9   rI   z&_dok_base.transpose.<locals>.<genexpr>š  s"   è ø€ ÒVÑ3E±=°D¸%À#˜E 4˜=¨#Ô.ÑVùs   ‚)	r/   r   r   r*   r¢   r    r%   r=   rs   )r2   Úaxesr   rz   ÚNr×   s         r9   Ú	transposez_dok_base.transpose�  sˆ   € Ø�9‰9˜Š>Ø—9‘9“;ÐàÐ ¨¢Üð>óð ð �z‰z‰ˆˆ1Ø×!Ñ! 1 a &°·
±
ÀÐ!ÓFˆØ�	‰	×ÑÑVÈÏÉËÔVÔWØˆ
r>   c           	      óž  — d}t        |t        d¬«       | j                  dk(  r1| j                  «       }|j                  j                  «       |_        |S | j                  \  }}| j                  ||f| j                  ¬«      }| j                  «       D ���ci c]   \  \  }}}||ft        j                  |«      “Œ" c}}}|_        |S c c}}}w )zÁDEPRECATED: Return the conjugate transpose.

        .. deprecated:: 1.14.0

            `conjtransp` is deprecated and will be removed in v1.16.0.
            Use `.T.conj()` instead.
        zS`conjtransp` is deprecated and will be removed in v1.16.0. Use `.T.conj()` instead.r   )Ú
stacklevelr   r   )r   ÚDeprecationWarningr/   rØ   rÚ   Ú	conjugater*   r¢   r    rs   r+   Úconjr%   )r2   Úmsgr×   rz   r  r  r  r<   s           r9   Ú
conjtranspz_dok_base.conjtranspŸ  s¯   € ð.ˆäˆSÔ$°Õ3à�9‰9˜Š>Ø—*‘*“,ˆCØ—x‘x×)Ñ)Ó+ˆCŒHØˆJà�z‰z‰ˆˆ1Ø×!Ñ! 1 a &°·
±
Ð!Ó;ˆØKOÏ:É:Ë<×XÐXÑ5G±]°d¸EÀC�e˜T�]¤B§G¡G¨C£LÑ0ÔXˆŒ	Øˆ
ùô Ys   Â%Cc                 óž   — | j                  | j                  | j                  ¬«      }|j                  j	                  | j                  «       |S ©Nr   )r¢   r*   r    r%   r=   ré   s     r9   r   z_dok_base.copyµ  s:   € Ø×!Ñ! $§*¡*°D·J±JÐ!Ó?ˆØ�	‰	×Ñ˜Ÿ™Ô$Øˆ
r>   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)rG   r�   s     r9   rI   z%_dok_base.fromkeys.<locals>.<genexpr>À  s   è ø€ Ò<¨3œ#˜c›( Q�,Ñ<ùs   ‚r   r   )
r  Úfromkeysr"   ÚnextÚiterr#   r€   r!  re   r%   )ÚclsÚiterablerÊ   Útmpr*   rö   s         r9   r"  z_dok_base.fromkeys¼  sc   € ä�m‰m˜H eÓ,ˆÜ”dœ4 ›9“o¤uÔ-ÜÑ<´#°s°)Ô<Ó<‰Eä˜“X ‘\�OˆEÙ�U¤$ u£+Ô.ˆØˆŒØˆr>   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)r*  N)r+   Úfromiter)rG   ÚixÚ	idx_dtypeÚnnzs     €€r9   rI   z"_dok_base.tocoo.<locals>.<genexpr>Ð  s!   øè ø€ ÒRÀr”r—{‘{ 2¨Y¸c×BÐBÑRùs   ƒ"%)r*   r    T)r0  r1   r*   r    Ú_get_index_dtyper!  r+   r-  rK   r/   r€   ru   r#   Úhas_canonical_format)r2   r   rÚ   ÚindsrÙ   ÚAr/  r0  s         @@r9   rØ   z_dok_base.tocooÇ  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ˆØ!%ˆÔØˆr>   c                 ó*   — |r| j                  «       S | S rO   r   ©r2   r   s     r9   r(   z_dok_base.todok×  s   € ÙØ—9‘9“;ÐØˆr>   c                 óz   — | j                   dk(  rt        d«      ‚| j                  d¬«      j                  |¬«      S )Nr   z%tocsr() not valid for 1d sparse arrayFr   )r/   r;   rØ   Útocscr6  s     r9   r8  z_dok_base.tocscÞ  s8   € Ø�9‰9˜Š>Ü%Ð&MÓNÐNØ�z‰z˜uˆzÓ%×+Ñ+°Ð+Ó6Ð6r>   c                 óÞ  — t        | t        «      }t        ||¬«      }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"   r
   r   r@   r*   r;   r/   r¸   r%   r$   ru   )	r2   r*   r4   ÚnewNr6   ÚnewMrz   r  r®   s	            r9   Úresizez_dok_base.resizeå  så   € Ü˜d¤GÓ,ˆÜ˜E¨HÔ5ˆÜˆ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Ñ(ð)ð ˆ�r>   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*   Úarrayr¸   r%   rK   r  r€   r   )r2   r    Úcastingr   rö   rÚ   s         r9   r)   z_dok_base.astype   s†   € Ü—‘˜“ˆØ�:‰:˜ÒØ×(Ñ(¨¯©¸5Ð(ÓAˆFÜ—8‘8œD §¡×!2Ñ!2Ó!4Ó5¸UÔCˆDÜ¤ D§J¡J°Ó 5Ó6ˆFŒLØˆMÙØ—9‘9“;ÐØˆr>   )NNFrO   )g        )r   )NF)r   )F)ÚunsafeT)?rf   Ú
__module__Ú__qualname__Ú_formatr!   r=   rB   rM   r	   Ú__doc__rP   rU   rW   rY   r[   r^   ra   rj   rm   ro   rq   rs   ru   rK   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(   r8  r<  r)   Ú__classcell__)rŒ   s   @r9   r   r      sÍ  ø„ Ø€Gó&EòPXóò2ð —o‘o×-Ñ-€G„OØ#×1Ñ1×9Ñ9€MÔòò!ó3òò"ò%òFòIòIòIò$ò"ò!ò#ó,ô*Uò"7ò>ò?ò?òò.2ò2ò0ò0ò	ò	ôNò" ò ò
$òò>òòòò,òò$òò%õ=ó
ð   ×)Ñ)×1Ñ1€IÔòò,ð
 —<‘<×'Ñ'€D„Làòó ðóð —M‘M×)Ñ)€E„Móð
 —M‘M×)Ñ)€E„Mó7ð
 —M‘M×)Ñ)€E„Mòð0 —^‘^×+Ñ+€F„N÷	r>   r   c                 ó"   — t        | t        «      S )aÑ  Is `x` of dok_array type?

    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   )rH   s    r9   r   r     s   € ô. �aœÓ$Ð$r>   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)
    nnz
        Number of nonzero elements
    size
    T

    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)rf   rA  rB  rD  rF   r>   r9   r   r   '  s   „ ò1r>   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.

    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)
    nnz
        Number of nonzero elements
    size
    T

    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   )ÚreshapeÚasformatr'   Ú__dict__)r2   r*   Ú
new_matrixs      r9   Ú	set_shapezdok_matrix.set_shape�  s0   € Ø—\‘\ %¨e�\Ó4×=Ñ=¸d¿k¹kÓJˆ
Ø"×+Ñ+ˆ�r>   c                 ó   — | j                   S )zGet shape of a sparse matrix.)r$   rL   s    r9   Ú	get_shapezdok_matrix.get_shape”  s   € à�{‰{Ðr>   )ÚfgetÚfsetc                 ó6   — | j                   j                  «       S rO   )r%   ra   rL   s    r9   ra   zdok_matrix.__reversed__š  s   € Ø�z‰z×&Ñ&Ó(Ð(r>   c                 ór   — t        |t        «      r| j                  |j                  z  S | j                  |z  S rO   ©r"   r   r%   rã   s     r9   rj   zdok_matrix.__or__�  ó.   € Ü�eœYÔ'Ø—:‘: §¡Ñ+Ð+Ø�z‰z˜EÑ!Ð!r>   c                 ór   — t        |t        «      r| j                  |j                  z  S | j                  |z  S rO   rV  rã   s     r9   rm   zdok_matrix.__ror__¢  rW  r>   c                 ó’   — t        |t        «      r!| xj                  |j                  z  c_        | S | xj                  |z  c_        | S rO   rV  rã   s     r9   ro   zdok_matrix.__ior__§  s:   € Ü�eœYÔ'Ø�JŠJ˜%Ÿ+™+Ñ%�Jð ˆð �JŠJ˜%Ñ�JØˆr>   N)rf   rA  rB  rD  rO  rQ  Úpropertyr*   ra   rj   rm   ro   rF   r>   r9   r   r   \  s4   „ ñ1òf,òñ ˜)¨)Ô4€Eò)ò"ò
"ó
r>   r   )rD  Ú__docformat__Ú__all__rÄ   Úwarningsr   Únumpyr+   Ú_matrixr   Ú_baser	   r
   r   Ú_indexr   Ú_sputilsr   r   r   r   r   r   r   r   r  r   r   r   r   rF   r>   r9   ú<module>rc     sm   ðÙ %à%€â
7€ã Ý Û å ß -Ñ -Ý ÷;÷ ;ó ;ôw�˜ Tô wòt%ô62�	˜7ô 2ôjP�˜9õ Pr>   