ó
    Eñi[[  ã                   óÈ   • S r Sr/ SQrSSKrSSKrSSKJr  SSKJ	r	J
r
Jr  SSKJr  SS	KJrJrJrJrJrJrJrJr   " S
 S\	\\5      rS r " S S\\
5      r " S S\\5      rg)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                   óf  ^ • \ rS rSrSrSrS>SS.S jjrS rS?S jrS?S	 jr	\
R                  R                  \l        \
R                  R                  \	l        S
 rS rS?S jrS rS rS rS rS rS rS rS rS rS rS rS@S jrS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1S0 r2S1 r3S2 r4S3 r5SAU 4S4 jjr6SBS5 jr7\
Rn                  R                  \7l        S6 r8\
Rp                  R                  \8l        \9SCS7 j5       r:SDS8 jr;\
Rv                  R                  \;l        SDS9 jr<\
Rx                  R                  \<l        SDS: jr=\
Rz                  R                  \=l        S; r>\
R|                  R                  \>l        SES< jr?S=r@U =rA$ )FÚ	_dok_baseé   Údok)r   é   N©Úmaxprintc                óÐ  • [         R                  " XUS9  [        U[        5      (       aK  [	        XR
                  S9(       a3  [        XR
                  S9U l        0 U l        [        U[        S9U l        g [        U5      (       a¦  UR                  U R                  :X  a  U(       a  UR                  5       OUnOUR                  5       nUb  UR!                  USS9nUR                  U l        [        UR"                  U R
                  S9U l        [        UR                  5      U l        g  [$        R&                  " U5      nUR,                  S:”  a  [/        SUR,                   S	35      eUR,                  S
:X  a[  Ub  UR!                  USS9n[1        U5       VVs0 s H  u  pxUS:w  d  M  Xx_M     snnU l        [        UR                  5      U l        OIU R3                  XUS9R                  5       n	U	R                  U l        [        U	R                  5      U l        [        UR"                  U R
                  S9U l        g ! [(         a  n[+        S5      UeS nAff = fs  snnf )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
             ÚN/home/mande/repo/quber/.venv/lib/python3.13/site-packages/scipy/sparse/_dok.pyr$   Ú_dok_base.__init__   sÔ  € Ü×Ò˜¨hÒ7ä�dœE×"Ñ"¤w¨t¿n¹n×'MÜ% d·^±^Ñ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Á&›d˜ašd©ÒI�”
Ü% d§j¡jÓ1�•
à×'Ñ'¨ÀÐ'Ð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                 óN  • [        U[        5      (       a  UR                  5       nOUnU HÜ  u  p4[        U5      (       a  U4O
[	        U5      n[        U5      U R                  :w  a  [        SU S35      e[        S [        XPR                  5       5       5      (       a  Mw  [        XPR                  5       HL  u  pg[        U5      (       d  [        SU 35      eUS:  a  [        SU S35      eXg:¼  d  M?  [        SU S	35      e   MÞ     U R                  R                  U5        g
)z¬Update values from a dict, sparse dok or iterable of 2-tuples like .items()

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   ót   #   • U  H.  u  p[        U5      =(       a    S Us=:*  =(       a    U:  Os  v •  M0     g7f©r   N)r   )Ú.0ÚidxÚmax_idxs      r<   Ú	<genexpr>Ú#_dok_base.update.<locals>.<genexpr>K   s2   é € ð â$:‘L�Cô ˜#“×5 1¨×#5Ó#5¨gÔ#5Ô5Ú$:ùs   ‚68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&   Úlenr2   Ú
IndexErrorÚallÚzipr"   r)   Úupdate)r6   ÚvalÚinputsÚkeyÚvalueÚindexrD   rE   s           r<   rN   Ú_dok_base.update<   s	  € ô �cœ4× Ñ Ø—Y‘Y“[‰FàˆFã ‰JˆCÜ'¨Ÿn™n�S‘F´%¸³*ˆEÜ�5‹z˜TŸY™YÓ&Ü  6¨#¨Ð.OÐ!PÓQÐQÜñ ä$'¨¯z©zÔ$:ó÷ ó ô
 %(¨¯z©zÖ$:‘L�CÜ$ SŸ>™>Ü(Ð+QÐRUÐQVÐ)WÓXÐXØ˜Q“wÜ(¨?¸3¸%Ð?UÐ)VÓWÐWØ•~Ü(¨6°#°Ð6RÐ)SÓTÐTó %;ñ !ð" 	�
‰
×Ñ˜&Õ!ó    c                 óH   • Ub  [        S5      e[        U R                  5      $ )Nz7_getnnz over an axis is not implemented for DOK format.)ÚNotImplementedErrorrJ   r)   ©r6   Úaxiss     r<   Ú_getnnzÚ_dok_base._getnnzZ   s(   € ØÑÜ%ØIóð ô �4—:‘:‹ÐrU   c                 ó^   • Ub  [        S5      e[        S U R                  5        5       5      $ )Nz=count_nonzero over an axis is not implemented for DOK format.c              3   ó*   #   • U  H	  oS :g  v •  M     g7frB   © )rC   Úxs     r<   rF   Ú*_dok_base.count_nonzero.<locals>.<genexpr>f   s   é € Ð1¢=˜a˜–6¢=ùs   ‚)rW   ÚsumÚvaluesrX   s     r<   Úcount_nonzeroÚ_dok_base.count_nonzeroa   s1   € ØÑÜ%ØOóð ô Ñ1 4§;¡;¤=Ó1Ó1Ð1rU   c                 ó,   • [        U R                  5      $ ©N)rJ   r)   ©r6   s    r<   Ú__len__Ú_dok_base.__len__k   s   € Ü�4—:‘:‹ÐrU   c                 ó   • XR                   ;   $ rf   ©r)   ©r6   rQ   s     r<   Ú__contains__Ú_dok_base.__contains__n   s   € Ø—j‘jÑ Ð rU   c                ó8   • U R                   R                  X5      $ rf   )r)   Ú
setdefault)r6   rQ   r   s      r<   rp   Ú_dok_base.setdefaultq   s   € Ø�z‰z×$Ñ$ SÓ2Ð2rU   c                ó   • U R                   U	 g rf   rk   rl   s     r<   Ú__delitem__Ú_dok_base.__delitem__t   s   € Ø�J‰J�s‰OrU   c                 ó6   • U R                   R                  5       $ rf   )r)   Úclearrg   s    r<   rv   Ú_dok_base.clearw   ó   € Ø�z‰z×ÑÓ!Ð!rU   c                ó4   • U R                   R                  " U6 $ rf   )r)   Úpop)r6   Úargss     r<   rz   Ú_dok_base.popz   s   € Ø�z‰z�~Š~˜tÐ$Ð$rU   c                 ó   • [        S5      e)Nz*reversed is not defined for dok_array type)r1   rg   s    r<   Ú__reversed__Ú_dok_base.__reversed__}   s   € ÜÐDÓEÐErU   c                 óx   • [        U 5      R                   S[        U5      R                   3n[        SU 35      e©Nz and z unsupported operand type for |: ©ÚtypeÚ__name__r1   ©r6   ÚotherÚ
type_namess      r<   Ú__or__Ú_dok_base.__or__€   ó;   € Ü˜T›
×+Ñ+Ð,¨E´$°u³+×2FÑ2FÐ1GÐHˆ
ÜÐ:¸:¸,ÐGÓHÐHrU   c                 óx   • [        U 5      R                   S[        U5      R                   3n[        SU 35      er�   r‚   r…   s      r<   Ú__ror__Ú_dok_base.__ror__„   rŠ   rU   c                 óx   • [        U 5      R                   S[        U5      R                   3n[        SU 35      er�   r‚   r…   s      r<   Ú__ior__Ú_dok_base.__ior__ˆ   rŠ   rU   c                 ó6   • U R                   R                  5       $ rf   )r)   Úpopitemrg   s    r<   r’   Ú_dok_base.popitemŒ   s   € Ø�z‰z×!Ñ!Ó#Ð#rU   c                 ó6   • U R                   R                  5       $ rf   )r)   rI   rg   s    r<   rI   Ú_dok_base.items�   rx   rU   c                 ó6   • U R                   R                  5       $ rf   )r)   Úkeysrg   s    r<   r—   Ú_dok_base.keys’   s   € Ø�z‰z�‰Ó Ð rU   c                 ó6   • U R                   R                  5       $ rf   )r)   rb   rg   s    r<   rb   Ú_dok_base.values•   s   € Ø�z‰z× Ñ Ó"Ð"rU   c                 ór  • XR                   ;   a  U R                   U   $ [        U5      (       a  U R                  S:X  a  U4nU R                  [        U5      :w  a  [	        SU S35      e U H  n[        U5      (       a  M   e   [        S [        XR                  5       5       5      n[        S [        XR                  5       5       5      (       a  [	        S5      eU R                  S:X  a  US	   nU R                   R                  X5      $ ! [
        [        [        4 a  n[	        S5      UeSnAff = f)
z>This provides dict.get method functionality with type checkingr   r?   r@   z%Index must be or consist of integers.Nc              3   ó>   #   • U  H  u  pUS :  a  X-   OUv •  M     g7frB   r^   ©rC   r9   ÚMs      r<   rF   Ú _dok_base.get.<locals>.<genexpr>¥   s!   é € ÐKÒ6J©d¨a˜Q ›U�A’E¨Ô)Ò6Jùó   ‚c              3   óF   #   • U  H  u  pUS :  =(       d    X:¬  v •  M     g7frB   r^   r�   s      r<   rF   rŸ   ¦   s    é € Ð@Ò+?¡4 1ˆq�1‰u�˜™ŒÒ+?ùs   ‚!zIndex out of bounds.r   )r)   r   r2   rJ   rK   ÚAssertionErrorr1   r3   r&   rM   r"   ÚanyÚget)r6   rQ   r   r9   r8   s        r<   r¤   Ú_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¸#¿z¹zÔ6JÓKÓKˆÜÑ@¬3¨s·J±JÔ+?Ó@×@Ñ@ÜÐ3Ó4Ð4Ø�9‰9˜‹>Ø�a‘&ˆCØ�z‰z�~‰~˜cÓ+Ð+øô ¤	¬:Ð6ó 	MÜÐDÓEÈ1ÐLûð	Mús   Á+D ÂD ÄD6Ä%D1Ä1D6c                 ój   • U R                   R                  XR                  R                  S5      5      $ ©Nr   ©r)   r¤   r#   rƒ   )r6   rD   s     r<   Ú_get_intÚ_dok_base._get_int­   s"   € Ø�z‰z�~‰~˜c§:¡:§?¡?°1Ó#5Ó6Ð6rU   c                 ó~   • [        UR                  U R                  S   5      6 nU R                  [	        U5      5      $ r§   )ÚrangeÚindicesr"   Ú
_get_arrayÚlist)r6   rD   Úi_ranges      r<   Ú
_get_sliceÚ_dok_base._get_slice°   s0   € Ü˜Ÿ™ T§Z¡Z°¡]Ó3Ð4ˆØ�‰œt G›}Ó-Ð-rU   c                 óp  • [         R                  " U5      nUR                  S:X  a\  U R                  R	                  [        U5      U R                  R                  S5      5      n[         R                  " X R                  S9$ U R                  UR                  U R                  S9nUR                  5        Vs/ s H  o@R                  R	                  US5      PM      nnU(       aÊ  [        UR                  5      S:X  a-  [        U5       H  u  pFU(       d  M  XcR                  U'   M     U$ [         R                  " [         R                  " [        U5      5      UR                  5      n[        U5      S:X  a  US   O[!        U6 n[!        XuSS9 H  u  pFU(       d  M  XcR                  U'   M     U$ s  snf )Nr   )Ústype©r#   r   T)Ústrict)r.   r/   r2   r)   r¤   Úintr#   rƒ   ÚarrayÚ_dok_containerr"   ÚravelrJ   r4   Úunravel_indexÚarangerM   )r6   rD   rO   Únew_dokr9   Údok_valsr:   Únew_idxs           r<   r®   Ú_dok_base._get_array´   sB  € Ü�jŠj˜‹oˆØ�8‰8�q‹=Ø—*‘*—.‘.¤ S£¨4¯:©:¯?©?¸1Ó+=Ó>ˆCÜ—8’8˜C§z¡zÑ2Ð2Ø×%Ñ% c§i¡i°t·z±zÐ%ÐBˆØ25·)±)´+Ó>²+¨Q—J‘J—N‘N 1 aÖ(±+ˆÐ>ÞÜ�3—9‘9‹~ Ó"Ü% hÖ/‘D�Aß�qØ+,Ÿ™ aÓ(ñ 0ð ˆô ×*Ò*¬2¯9ª9´S¸³]Ó+CÀSÇYÁYÓO�Ü(+¨G«¸Ó(9˜' !š*¼sÀG¸}�Ü ¸$Ô?‘D�Aß�qØ+,Ÿ™ aÓ(ñ @ð ˆùò ?s   Â9%F3c                 ón   • U R                   R                  X4U R                  R                  S5      5      $ r§   r¨   ©r6   ÚrowÚcols      r<   Ú_get_intXintÚ_dok_base._get_intXintÉ   s&   € Ø�z‰z�~‰~˜s˜j¨$¯*©*¯/©/¸!Ó*<Ó=Ð=rU   c                 ó>   • U R                  [        XS-   5      U5      $ ©Nr   ©Ú_get_sliceXsliceÚslicerÂ   s      r<   Ú_get_intXsliceÚ_dok_base._get_intXsliceÌ   s   € Ø×$Ñ$¤U¨3°a±Ó%8¸#Ó>Ð>rU   c                 ó>   • U R                  U[        X"S-   5      5      $ rÈ   rÉ   rÂ   s      r<   Ú_get_sliceXintÚ_dok_base._get_sliceXintÏ   s   € Ø×$Ñ$ S¬%°¸1±WÓ*=Ó>Ð>rU   c                 óª  • UR                  U R                  S   5      u  p4nUR                  U R                  S   5      u  pgn[        X4U5      n	[        XgU5      n
[        U	5      [        U
5      4n[        U 5      SUS   -  US   -  :¼  a  U R	                  Xš5      $ U R                  X°R                  S9nU R                  5        H‰  n[        [        US   5      U-
  U5      u  pïUS:w  d  US:  d  XëS   :¼  a  M6  [        [        US   5      U-
  U5      u  nnUS:w  d  US:  d	  UUS   :¼  a  Mk  U R                  U   UR                  UU4'   M‹     U$ )Nr   r   r   rµ   )r­   r"   r¬   rJ   Ú_get_columnXarrayr¹   r#   r—   Údivmodr·   r)   )r6   rÃ   rÄ   Ú	row_startÚrow_stopÚrow_stepÚ	col_startÚcol_stopÚcol_stepÚ	row_rangeÚ	col_ranger"   ÚnewdokrQ   r9   ÚriÚjÚrjs                     r<   rÊ   Ú_dok_base._get_sliceXsliceÒ   sD  € Ø(+¯©°D·J±J¸q±MÓ(BÑ%ˆ	˜XØ(+¯©°D·J±J¸q±MÓ(BÑ%ˆ	˜XÜ˜)¨xÓ8ˆ	Ü˜)¨xÓ8ˆ	Ü�Y“¤ Y£Ð0ˆô ˆt‹9˜˜E !™H™ u¨Q¡xÑ/Ó/à×)Ñ)¨)Ó?Ð?à×$Ñ$ U·*±*Ð$Ð=ˆØ—9‘9–;ˆCÜœ3˜s 1™v›;¨Ñ2°HÓ=‰EˆAØ�Q‹w˜!˜a›% 1¨a©£=ÙÜœ3˜s 1™v›;¨Ñ2°HÓ=‰EˆAˆrØ�Q‹w˜!˜a›% 1¨¨a©£=ÙØ!%§¡¨C¡ˆF�L‰L˜˜A˜Óñ ð ˆrU   c                 óD   • U R                  U/UR                  5       5      $ rf   )rÒ   rº   rÂ   s      r<   Ú_get_intXarrayÚ_dok_base._get_intXarrayé   s   € Ø×%Ñ% s e¨S¯Y©Y«[Ó9Ð9rU   c                 óž   • U R                  UR                  5       U/5      nUR                  S:”  a  UR                  UR                  5      $ U$ rÈ   )rÒ   rº   r2   Úreshaper"   )r6   rÃ   rÄ   Úress       r<   Ú_get_arrayXintÚ_dok_base._get_arrayXintì   s?   € Ø×$Ñ$ S§Y¡Y£[°3°%Ó8ˆØ�8‰8�a‹<Ø—;‘;˜sŸy™yÓ)Ð)Øˆ
rU   c                 ó~   • [        [        UR                  U R                  S   5      6 5      nU R	                  X5      $ r§   ©r¯   r¬   r­   r"   rÒ   rÂ   s      r<   Ú_get_sliceXarrayÚ_dok_base._get_sliceXarrayò   ó3   € Ü”5˜#Ÿ+™+ d§j¡j°¡mÓ4Ð5Ó6ˆØ×%Ñ% cÓ/Ð/rU   c                 ó~   • [        [        UR                  U R                  S   5      6 5      nU R	                  X5      $ rÈ   rê   rÂ   s      r<   Ú_get_arrayXsliceÚ_dok_base._get_arrayXsliceö   rí   rU   c                 ó  • U R                  [        U5      [        U5      4U R                  S9n[        U5       HN  u  pE[        U5       H:  u  pgU R                  R                  XW4S5      nU(       d  M+  XƒR                  XF4'   M<     MP     U$ )Nrµ   r   )r¹   rJ   r#   r4   r)   r¤   )	r6   rÃ   rÄ   rÜ   r9   ÚrrÞ   Úcr:   s	            r<   rÒ   Ú_dok_base._get_columnXarrayú   sx   € à×$Ñ$¤c¨#£h´°C³Ð%9ÀÇÁÐ$ÐLˆä˜c–N‰DˆAÜ! #ž‘�Ø—J‘J—N‘N A 6¨1Ó-�ß�1Ø)*—L‘L  Ó&ó 'ñ #ð
 ˆrU   c                 ó´  • [        [        R                  [        R                  " X5      5      u  p4U R	                  UR
                  U R                  S9n[        R                  " [        UR
                  S   5      [        UR
                  S   5      5       H<  nU R                  R                  X6   XF   4S5      nU(       d  M.  XuR                  U'   M>     U$ )Nrµ   r   r   )Úmapr.   Ú
atleast_2dÚbroadcast_arraysr¹   r"   r#   Ú	itertoolsÚproductr¬   r)   r¤   )r6   rÃ   rÄ   r9   rÞ   rÜ   rQ   r:   s           r<   Ú_get_arrayXarrayÚ_dok_base._get_arrayXarray  s£   € ä”2—=‘=¤"×"5Ò"5°cÓ"?Ó@‰ˆØ×$Ñ$ Q§W¡W°D·J±JÐ$Ð?ˆä×$Ò$¤U¨1¯7©7°1©:Ó%6¼¸a¿g¹gÀa¹jÓ8IÖJˆCØ—
‘
—‘ ¡¨©Ð/°Ó3ˆAßˆqØ$%—‘˜SÓ!ñ Kð ˆrU   c                 ój   • U(       a  X R                   U'   g XR                   ;   a  U R                   U	 g g rf   rk   )r6   rD   r_   s      r<   Ú_set_intÚ_dok_base._set_int  s*   € ÞØ�J‰J�sŠOØ—J‘JÓØ—
‘
˜3‘ð rU   c                 ó”  • UR                  5       nUR                  5       n[        U5      [        U5      :w  aG  [        U5      S:X  a-  [        R                  " [        U5      US   U R                  S9nO[        S5      e[        X45       H:  u  pVU(       a  X`R                  U'   M  XPR                  ;   d  M-  U R                  U	 M<     g )Nr   r   rµ   z*Need len(index)==len(data) or len(data)==1)rº   rJ   r.   Úfullr#   r3   rM   r)   )r6   rD   r_   Úidx_setÚx_setr9   r:   s          r<   Ú
_set_arrayÚ_dok_base._set_array  s�   € Ø—)‘)“+ˆØ—‘“	ˆÜˆw‹<œ3˜u›:Ó%Ü�5‹z˜Q‹ÜŸš¤ G£¨e°A©h¸d¿j¹jÑI‘äÐKÓLÐLÜ˜Ö'‰DˆAÞØ !—
‘
˜1“Ø—j‘j•Ø—J‘J˜q’Mò	 (rU   c                 óp   • X4nU(       a  X0R                   U'   g X@R                   ;   a  U R                   U	 g g rf   rk   )r6   rÃ   rÄ   r_   rQ   s        r<   Ú_set_intXintÚ_dok_base._set_intXint&  s1   € ØˆjˆÞØ�J‰J�sŠOØ—J‘JÓØ—
‘
˜3‘ð rU   c                 ó¶  • [        [        [        UR                  5       5      5      n[        [        [        UR                  5       5      5      nUR                  5       nU R                  R                  [        [        X5      U5      5        [        R                  " US:H  5      S    H-  nX   X$   4nU R                  U   S:X  d  M   U R                  U	 M/     g r§   )	r¯   rö   r·   rº   r)   rN   rM   r.   Únonzero)r6   rÃ   rÄ   r_   r9   rQ   s         r<   Ú_set_arrayXarrayÚ_dok_base._set_arrayXarray-  s�   € Ü”3”s˜CŸI™I›KÓ(Ó)ˆÜ”3”s˜CŸI™I›KÓ(Ó)ˆØ�G‰G‹IˆØ�
‰
×Ñœ#œc #›m¨QÓ/Ô0ä—’˜A ™FÓ# AÔ&ˆAØ‘6˜3™6Ð"ˆCØ�z‰z˜#‰ !Õ#à—J‘J˜s’Oò	 'rU   c                 óž  ^• [        U5      (       a�  [        U R                  U5      nU R                  U R                  US9m[
        R                  " U R                   Vs/ s H  n[        U5      PM     sn6  H0  nU R                  R                  US5      U-   nU(       d  M+  UTU'   M2     T$ [        U5      (       GaM  UR                  U R                  :w  a  [        S5      e[        U R                  UR                  5      nU R                  U R                  US9mU R                  R                  5       Tl        UR                  S:X  a  UR                  5       nOjUR!                  5       nU R"                  S:X  a$  [%        UR&                  S   UR(                  5      nO&[%        [%        UR&                  6 UR(                  5      n[*        R,                  " SS9   TR                  R/                  U4S jU 5       5        S S S 5        T$ [1        U5      (       a  U R3                  5       U-   mT$ [4        $ s  snf ! , (       d  f       T$ = f)	Nrµ   r   z Matrix dimensions are not equal.r   r   Úignore)Úoverc              3   ó<   >#   • U  H  u  pUTU   U-   4v •  M     g 7frf   r^   )rC   Úkr:   Únews      €r<   rF   Ú$_dok_base.__add__.<locals>.<genexpr>Q  s   øé € Ð EºW±T°Q ! S¨¡V¨a¡Z¥ºWùs   ƒ)r   r   r#   r¹   r"   rù   rú   r¬   r)   r¤   r
   r3   r   r    r+   rI   Útocoor2   rM   ÚcoordsÚdatar.   ÚerrstaterN   r   ÚtodenseÚNotImplemented)r6   r†   Ú	res_dtyper;   rQ   ÚaijÚo_itemsr  s          @r<   Ú__add__Ú_dok_base.__add__9  sÆ  ø€ Ü˜×ÑÜ% d§j¡j°%Ó8ˆIØ×%Ñ% d§j¡j¸	Ð%ÐBˆCä ×(Ò(¸T¿ZºZÓ*HºZ¸¬5°®8¹ZÑ*HÓI�Ø—j‘j—n‘n S¨!Ó,¨uÑ4�ß�3Ø"�C˜“Hñ Jð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Ü—’ (Ó+Ø—	‘	× Ñ Ô E¹WÓ EÔE÷ ,ð ˆ
ô	 �U�^‰^Ø—,‘,“. 5Ñ(ˆCð ˆ
ô "Ð!ùò/ +I÷$ ,Ô+ð ˆ
ús   Á H8Ç&H=È=
Ic                 ó
   • X-   $ rf   r^   ©r6   r†   s     r<   Ú__radd__Ú_dok_base.__radd__X  s
   € Ø‰|ÐrU   c                 óø   • U R                   R                  S:X  a  [        S5      eU R                  U R                  U R                   S9nUR
                  R                  S U R                  5        5       5        U$ )NÚbz2Negating a sparse boolean matrix is not supported.rµ   c              3   ó.   #   • U  H  u  pX* 4v •  M     g 7frf   r^   )rC   r  r:   s      r<   rF   Ú$_dok_base.__neg__.<locals>.<genexpr>a  s   é € Ð:ª\¡T Q˜!˜R�ª\ùs   ‚)r#   ÚkindrW   r¹   r"   r)   rN   rI   ©r6   r  s     r<   Ú__neg__Ú_dok_base.__neg__[  sd   € Ø�:‰:�?‰?˜cÓ!Ü%ØDóð ð ×!Ñ! $§*¡*°D·J±JÐ!Ð?ˆØ�	‰	×ÑÑ:¨T¯Z©Z¬\Ó:Ô:Øˆ
rU   c                 óÎ   ^• [        U R                  T5      nU R                  U R                  US9nUR                  R                  U4S jU R                  5        5       5        U$ )Nrµ   c              3   ó4   >#   • U  H  u  pXT-  4v •  M     g 7frf   r^   ©rC   r  r:   r†   s      €r<   rF   Ú(_dok_base._mul_scalar.<locals>.<genexpr>h  s   øé € ÐB²\©T¨Q˜1 %™i�.²\ùó   ƒ)r   r#   r¹   r"   r)   rN   rI   ©r6   r†   r  r  s    `  r<   Ú_mul_scalarÚ_dok_base._mul_scalard  sO   ø€ Ü! $§*¡*¨eÓ4ˆ	à×!Ñ! $§*¡*°IÐ!Ð>ˆØ�	‰	×ÑÔB°T·Z±Z´\ÓBÔCØˆ
rU   c                 ó   ^ ^• [        T R                  TR                  5      nT R                  S:X  aË  [        T5      (       a|  TR                  S:X  a"  T R                  5       TR                  5       -  nO.T R                  5       TR                  5       R                  S   -  nU" [        UU 4S jU 5       5      5      $ [        T5      (       a)  U" [        U4S jT R                  5        5       5      5      $ [        $ [        R                  " T R                  S   US9nT R                  5        H  u  u  pVnXE==   UTU   -  -  ss'   M     U$ )Nr   r   r   c              3   ób   >#   • U  H$  nTR                   U   TR                   U   -  v •  M&     g 7frf   rk   )rC   r  r†   r6   s     €€r<   rF   Ú+_dok_base._matmul_vector.<locals>.<genexpr>u  s&   øé € Ð$RÊTÈ T§Z¡Z°¡]°U·[±[À±^Ö%CÊTùs   ƒ,/c              3   ó8   >#   • U  H  u  pTU   U-  v •  M     g 7frf   r^   r-  s      €r<   rF   r5  w  s   øé € Ð$Kºl±d°a U¨1¡X°¦\ºlùó   ƒrµ   )r   r#   r2   r
   r+   r—   r  r  ra   r   rI   r  r.   Úzerosr"   )r6   r†   r  r—   Úresultr9   rÞ   r:   s   ``      r<   Ú_matmul_vectorÚ_dok_base._matmul_vectork  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Ø‹I˜˜U 1™X™Ñ%�Iñ &àˆrU   c                 ó¬  ^• [        U R                  TR                  5      nU R                  S:X  a-  [        U4S jU R                  R                  5        5       5      $ U R                  S   nTR                  S:X  a  U4OUTR                  S   4n[        R                  " XBS9nU R                  5        H  u  u  pgnXV==   UTU   -  -  ss'   M     U$ )Nr   c              3   ó8   >#   • U  H  u  pUTU   -  v •  M     g 7frf   r^   )rC   rÞ   r:   r†   s      €r<   rF   Ú0_dok_base._matmul_multivector.<locals>.<genexpr>†  s   øé € ÐCÒ0B©¨�q˜5 ™8–|Ò0Bùr7  r   rµ   )	r   r#   r2   ra   r)   rI   r"   r.   r8  )	r6   r†   Úresult_dtyperž   Ú	new_shaper9  r9   rÞ   r:   s	    `       r<   Ú_matmul_multivectorÚ_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Ø‹I˜˜U 1™X™Ñ%�Iñ &àˆrU   c                 óš   ^• [        T5      (       a5  U R                  R                  U4S jU R                  5        5       5        U $ [        $ )Nc              3   ó4   >#   • U  H  u  pXT-  4v •  M     g 7frf   r^   r-  s      €r<   rF   Ú%_dok_base.__imul__.<locals>.<genexpr>’  ó   øé € ÐFº±°˜q e¡)�nºùr/  ©r   r)   rN   rI   r  r   s    `r<   Ú__imul__Ú_dok_base.__imul__�  ó7   ø€ Ü˜×ÑØ�J‰J×ÑÔF¸¿¹¼ÓFÔFØˆKÜÐrU   c                 ó  ^• [        T5      (       ae  [        U R                  T5      nU R                  U R                  US9nUR
                  R                  U4S jU R                  5        5       5        U$ U R                  5       T-  $ )Nrµ   c              3   ó4   >#   • U  H  u  pXT-  4v •  M     g 7frf   r^   r-  s      €r<   rF   Ú(_dok_base.__truediv__.<locals>.<genexpr>š  rF  r/  )	r   r   r#   r¹   r"   r)   rN   rI   Útocsrr0  s    `  r<   Ú__truediv__Ú_dok_base.__truediv__–  sk   ø€ Ü˜×ÑÜ% d§j¡j°%Ó8ˆIØ×%Ñ% d§j¡j¸	Ð%ÐBˆCØ�I‰I×ÑÔF¸¿¹¼ÓFÔGØˆJØ�z‰z‹|˜eÑ#Ð#rU   c                 óš   ^• [        T5      (       a5  U R                  R                  U4S jU R                  5        5       5        U $ [        $ )Nc              3   ó4   >#   • U  H  u  pXT-  4v •  M     g 7frf   r^   r-  s      €r<   rF   Ú)_dok_base.__itruediv__.<locals>.<genexpr>   rF  r/  rG  r   s    `r<   Ú__itruediv__Ú_dok_base.__itruediv__ž  rJ  rU   c                 ó,   • [         R                  U 5      $ rf   )rH   Ú
__reduce__rg   s    r<   rW  Ú_dok_base.__reduce__¤  s   € ô �‰˜tÓ$Ð$rU   c                 óX   >• U R                   S:X  a  [        TU ]	  U5      $ [        S5      e)Nr   z diagonal requires two dimensions)r2   ÚsuperÚdiagonalr3   )r6   r  Ú	__class__s     €r<   r[  Ú_dok_base.diagonalª  s*   ø€ Ø�9‰9˜‹>Ü‘7Ñ# AÓ&Ð&ÜÐ;Ó<Ð<rU   c                 ó"  • U R                   S:X  a  U R                  5       $ Ub  US:w  a  [        S5      eU R                  u  p4U R	                  XC4U R
                  US9nUR                  R                  S U R                  5        5       5        U$ )Nr   )r   r   zvSparse arrays/matrices do not support an 'axes' parameter because swapping dimensions is the only logical permutation.)r#   r    c              3   ó6   #   • U  H  u  u  po2U4U4v •  M     g 7frf   r^   )rC   ÚleftÚrightrO   s       r<   rF   Ú&_dok_base.transpose.<locals>.<genexpr>¼  s   é € ÐVÊÑ3E±=°DÀ# 4˜=¨#Õ.Êùs   ‚)	r2   r    r3   r"   r¹   r#   r)   rN   rI   )r6   Úaxesr    rž   ÚNr  s         r<   Ú	transposeÚ_dok_base.transpose¯  s„   € Ø�9‰9˜‹>Ø—9‘9“;ÐàÑ ¨£Üð>óð ð �z‰z‰ˆØ×!Ñ! 1 &°·
±
ÀÐ!ÐFˆØ�	‰	×ÑÑVÈÏÉÌÓVÔWØˆ
rU   c                 ó˜   • U R                  U R                  U R                  S9nUR                  R	                  U R                  5        U$ ©Nrµ   )r¹   r"   r#   r)   rN   r(  s     r<   r    Ú_dok_base.copyÁ  s:   € Ø×!Ñ! $§*¡*°D·J±JÐ!Ð?ˆØ�	‰	×Ñ˜Ÿ™Ô$Øˆ
rU   c                óú   • [         R                  X5      n[        [        [	        U5      5      [
        5      (       a  [        S [        U6  5       5      nO[        U5      S-   4nU " U[        U5      S9nX5l	        U$ )Nc              3   ó>   #   • U  H  n[        U5      S -   v •  M     g7f)r   N)Úmax)rC   rD   s     r<   rF   Ú%_dok_base.fromkeys.<locals>.<genexpr>Ì  s   é € Ð<²)¨3œ#˜c›( Qž,²)ùr    r   rµ   )
rH   Úfromkeysr%   ÚnextÚiterr&   rM   rl  rƒ   r)   )ÚclsÚiterablerR   Útmpr"   r9  s         r<   rn  Ú_dok_base.fromkeysÈ  sb   € ä�m‰m˜HÓ,ˆÜ”dœ4 ›9“o¤u×-Ñ-ÜÑ<´#°s±)Ó<Ó<‰Eä˜“X ‘\�OˆEÙ�U¤$ u£+Ñ.ˆØŒØˆrU   c                 ó
  ^^• U R                   mTS:X  a$  U R                  U R                  U R                  S9$ U R	                  [        U R                  5      S9m[        R                  " U R                  5       U R                  TS9nU R                  S:”  a  [        U R                  5       6 OU R                  5       4n[        UU4S jU 5       5      nU R                  X$4U R                  U R                  S9nSUl        U$ )	Nr   rµ   )Úmaxval©r#   Úcountr   c              3   óP   >#   • U  H  n[         R                  " UTTS 9v •  M     g7f)rw  N)r.   Úfromiter)rC   ÚixÚ	idx_dtypeÚnnzs     €€r<   rF   Ú"_dok_base.tocoo.<locals>.<genexpr>Ü  s   øé € ÐRÊTÀr”r—{’{ 2¨Y¸cÖBÊTùs   ƒ#&r!   T)r}  r5   r"   r#   Ú_get_index_dtyperl  r.   rz  rb   r2   rM   r—   r&   Úhas_canonical_format)r6   r    r  Úindsr  ÚAr|  r}  s         @@r<   r  Ú_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ˆØ×Ñ  °d·j±jÈÏ
É
ÐÐSˆØ!%ˆÔØˆrU   c                 ó4   • U(       a  U R                  5       $ U $ rf   r   ©r6   r    s     r<   r,   Ú_dok_base.todokã  s   € ÞØ—9‘9“;ÐØˆrU   c                 óp   • U R                   S:X  a  [        S5      eU R                  SS9R                  US9$ )Nr   z%tocsr() not valid for 1d sparse arrayFr   )r2   rW   r  Útocscr…  s     r<   rˆ  Ú_dok_base.tocscê  s8   € Ø�9‰9˜‹>Ü%Ð&MÓNÐNØ�z‰z˜uˆzÐ%×+Ñ+°Ð+Ð6Ð6rU   c                 óÎ  • [        XR                  S9n[        U5      [        U R                  5      :w  a  [        eU R
                  S:X  a<  US   n[        U R                  5       H  nX2:¼  d  M
  U R                  U	 M     Xl        g Uu  pBU R                  u  pVXE:  d  X&:  a<  [        U R                  5       5       H  u  p7X4:¼  d  Xr:¼  d  M  U R                  X74	 M!     Xl        g )Nr   r   éÿÿÿÿ)
r   r'   rJ   r"   rW   r2   r¯   r)   r(   r—   )r6   r"   ÚnewNr9   ÚnewMrž   rd  rÞ   s           r<   ÚresizeÚ_dok_base.resizeñ  s»   € Ü˜E¯N©NÑ;ˆÜˆu‹:œ˜TŸZ™Z›Ó(ä%Ð%à�9‰9˜‹>Ø˜‘9ˆDÜ˜$Ÿ*™*Ö%�Ø•9ØŸ
™
 1šñ &ð  ŒKØà‰
ˆØ�z‰z‰ˆØ‹8�t“xä˜TŸY™Y›[Ö)‘�Ø“9 ¥	ØŸ
™
 1 4Ò(ñ *ð �rU   c                 ól  • [         R                  " U5      nU R                  U:w  av  U R                  U R                  US9n[         R                  " [        U R                  R                  5       5      US9n[        [        U R                  U5      5      Ul        U$ U(       a  U R                  5       $ U $ rh  )r.   r#   r¹   r"   r¸   r¯   r)   rb   rH   rM   r    )r6   r#   Úcastingr    r9  r  s         r<   r-   Ú_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“;ÐØˆrU   )r)   r(   r#   )NNFrf   )g        )r   )NF)r   )F)ÚunsafeT)Br„   Ú
__module__Ú__qualname__Ú__firstlineno__Ú_formatr'   r$   rN   rZ   rc   r   Ú__doc__rh   rm   rp   rs   rv   rz   r~   rˆ   rŒ   r�   r’   rI   r—   rb   r¤   r©   r±   r®   rÅ   rÌ   rÏ   rÊ   râ   rç   rë   rï   rÒ   rû   rþ   r  r  r  r  r!  r)  r1  r:  rA  rH  rO  rT  rW  r[  re  r    Úclassmethodrn  r  r,   rˆ  rŽ  r-   Ú__static_attributes__Ú__classcell__)r\  s   @r<   r   r      sÜ  ø† Ø€GØ€Ið%KÈTö %KòN"ô<ô2ð —o‘o×-Ñ-€G„OØ#×1Ñ1×9Ñ9€MÔòò!ô3òò"ò%òFòIòIòIò$ò"ò!ò#ô,ò*7ò.òò*>ò?ò?òò.:òò0ò0ò	ò	ò ò"ò ò
$òò>òòòò,òò$òò%÷=ô
ð   ×)Ñ)×1Ñ1€IÔòð
 —<‘<×'Ñ'€D„Làóó ðôð —M‘M×)Ñ)€E„Môð
 —M‘M×)Ñ)€E„Mô7ð
 —M‘M×)Ñ)€E„Mòð. —^‘^×+Ñ+€F„N÷	ò 	rU   r   c                 ó"   • [        U [        5      $ )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   )r_   s    r<   r   r     s   € ô. �aœÓ$Ð$rU   c                   ó   • \ rS rSrSrSrg)r   i2  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

r^   N)r„   r”  r•  r–  r˜  rš  r^   rU   r<   r   r   2  s   † ô1rU   r   c                   óJ   • \ rS rSrSrS rS r\" \\S9rS r	S r
S rS	 rS
rg)r   ig  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                 óx   • U R                  USS9R                  U R                  5      nUR                  U l        g )NFr   )rå   Úasformatr+   Ú__dict__)r6   r"   Ú
new_matrixs      r<   Ú	set_shapeÚdok_matrix.set_shape›  s0   € Ø—\‘\ %¨e�\Ð4×=Ñ=¸d¿k¹kÓJˆ
Ø"×+Ñ+ˆ�rU   c                 ó   • U R                   $ )zGet shape of a sparse matrix.)r(   rg   s    r<   Ú	get_shapeÚdok_matrix.get_shapeŸ  s   € à�{‰{ÐrU   )ÚfgetÚfsetc                 ó6   • U R                   R                  5       $ rf   )r)   r~   rg   s    r<   r~   Údok_matrix.__reversed__¥  s   € Ø�z‰z×&Ñ&Ó(Ð(rU   c                 ó|   • [        U[        5      (       a  U R                  UR                  -  $ U R                  U-  $ rf   ©r%   r   r)   r   s     r<   rˆ   Údok_matrix.__or__¨  ó1   € Ü�eœY×'Ñ'Ø—:‘: §¡Ñ+Ð+Ø�z‰z˜EÑ!Ð!rU   c                 ó|   • [        U[        5      (       a  U R                  UR                  -  $ U R                  U-  $ rf   r­  r   s     r<   rŒ   Údok_matrix.__ror__­  r¯  rU   c                 óœ   • [        U[        5      (       a!  U =R                  UR                  -  sl        U $ U =R                  U-  sl        U $ rf   r­  r   s     r<   r�   Údok_matrix.__ior__²  s=   € Ü�eœY×'Ñ'Ø�JŠJ˜%Ÿ+™+Ñ%�Jð ˆð �JŠJ˜%Ñ�JØˆrU   )r¡  N)r„   r”  r•  r–  r˜  r£  r¦  Úpropertyr"   r~   rˆ   rŒ   r�   rš  r^   rU   r<   r   r   g  s4   † ñ1òf,òñ ˜)¨)Ñ4€Eò)ò"ò
"õ
rU   r   )r˜  Ú__docformat__Ú__all__rù   Únumpyr.   Ú_matrixr   Ú_baser   r	   r
   Ú_indexr   Ú_sputilsr   r   r   r   r   r   r   r   rH   r   r   r   r   r^   rU   r<   Ú<module>r¼     sj   ðÙ %à%€â
7€ã Û å ß -Ñ -Ý ÷;÷ ;ó ;ôC�˜ Tô CòL%ô62�	˜7ô 2ôjP�˜9õ PrU   