
    (phY                         S r Sr/ SQrSSKrSSKJ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)warn   )spmatrix)_spbasesparrayissparse)
IndexMixin)isdensegetdtypeisshape	isintlikeisscalarlikeupcastupcast_scalarcheck_shapec                   l  ^  \ 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SAS 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 r5SBU 4S4 jjr6SCS5 jr7\
Rn                  R                  \7l        S6 r8S7 r9\
Rr                  R                  \9l        \:SDS8 j5       r;SES9 jr<\
Rx                  R                  \<l        SES: jr=\
Rz                  R                  \=l        SES; jr>\
R|                  R                  \>l        S< r?\
R~                  R                  \?l        SFS= jr@S>rAU =rB$ )G	_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5      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
             D/var/www/html/venv/lib/python3.13/site-packages/scipy/sparse/_dok.pyr%   _dok_base.__init__   s   h7dE""wtnn'M%d^^DDKDJ!%7DJd^^{{dkk)&*tyy{zz| {{5u{5DJ%djj4>>JDK!$**-DJ@zz$' yy1} #@8!TUUyyA~$;;u-D/8Itq!q&dadI
%djj1
'''GMMOWW
%agg.
%djj4>>JDK  @ 78a?@ Js$   -I I#.I#
I II c                     [        S5      e)Nz2Direct update to DOK sparse format is not allowed.)NotImplementedError)r7   vals     r=   update_dok_base.update=   s    !"VWW    c                 H    Ub  [        S5      e[        U R                  5      $ )Nz7_getnnz over an axis is not implemented for DOK format.)r@   lenr*   r7   axiss     r=   _getnnz_dok_base._getnnzA   s(    %I  4::rD   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r   N ).0xs     r=   	<genexpr>*_dok_base.count_nonzero.<locals>.<genexpr>M   s     1=a6=s   )r@   sumvaluesrG   s     r=   count_nonzero_dok_base.count_nonzeroH   s1    %O  14;;=111rD   c                 ,    [        U R                  5      $ N)rF   r*   r7   s    r=   __len___dok_base.__len__R   s    4::rD   c                     XR                   ;   $ rX   r*   r7   keys     r=   __contains___dok_base.__contains__U   s    jj  rD   c                8    U R                   R                  X5      $ rX   )r*   
setdefault)r7   r_   r   s      r=   rc   _dok_base.setdefaultX   s    zz$$S22rD   c                    U R                   U	 g rX   r]   r^   s     r=   __delitem___dok_base.__delitem__[   s    JJsOrD   c                 6    U R                   R                  5       $ rX   )r*   clearrY   s    r=   ri   _dok_base.clear^       zz!!rD   c                4    U R                   R                  " U6 $ rX   )r*   pop)r7   argss     r=   rm   _dok_base.popa   s    zz~~t$$rD   c                     [        S5      e)Nz*reversed is not defined for dok_array type)r2   rY   s    r=   __reversed___dok_base.__reversed__d   s    DEErD   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__r2   r7   other
type_namess      r=   __or___dok_base.__or__g   ;    T
++,E$u+2F2F1GH
::,GHHrD   c                 x    [        U 5      R                   S[        U5      R                   3n[        SU 35      ert   ru   rx   s      r=   __ror___dok_base.__ror__k   r}   rD   c                 x    [        U 5      R                   S[        U5      R                   3n[        SU 35      ert   ru   rx   s      r=   __ior___dok_base.__ior__o   r}   rD   c                 6    U R                   R                  5       $ rX   )r*   popitemrY   s    r=   r   _dok_base.popitems   s    zz!!##rD   c                 6    U R                   R                  5       $ rX   )r*   itemsrY   s    r=   r   _dok_base.itemsv   rk   rD   c                 6    U R                   R                  5       $ rX   )r*   keysrY   s    r=   r   _dok_base.keysy   s    zz  rD   c                 6    U R                   R                  5       $ rX   )r*   rT   rY   s    r=   rT   _dok_base.values|   s    zz  ""rD   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   zIndex z! length needs to match self.shapez%Index must be or consist of integers.Nc              3   >   #    U  H  u  pUS :  a  X-   OUv   M     g7frM   rN   rO   r:   Ms      r=   rQ    _dok_base.get.<locals>.<genexpr>   s!     K6JdaQUAE)6J   c              3   F   #    U  H  u  pUS :  =(       d    X:  v   M     g7frM   rN   r   s      r=   rQ   r      s      @+?41q1u+?s   !zIndex out of bounds.r   )r*   r   r3   rF   
IndexErrorAssertionErrorr2   r4   r'   zipr#   anyget)r7   r_   r   r:   r9   s        r=   r   _dok_base.get   s   **::c?"S>>dii1n&C99C vcU*KLMM	M ||#|  Kc#zz6JKK@3sJJ+?@@@34499>a&Czz~~c++ 	:6 	MDE1L	Ms   +D D D6%D11D6c                 j    U R                   R                  XR                  R                  S5      5      $ Nr   r*   r   r$   rv   )r7   idxs     r=   _get_int_dok_base._get_int   s"    zz~~c::??1#566rD   c                 ~    [        UR                  U R                  S   5      6 nU R                  [	        U5      5      $ r   )rangeindicesr#   
_get_arraylist)r7   r   i_ranges      r=   
_get_slice_dok_base._get_slice   s0    TZZ]34tG}--rD   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/   r0   r3   r*   r   intr$   rv   array_dok_containerr#   ravelrF   r5   unravel_indexaranger   )r7   r   rA   new_dokr:   dok_valsr;   new_idxs           r=   r   _dok_base._get_array   sB   jjo88q=**..S4::??1+=>C88Czz22%%ciitzz%B25))+>+QJJNN1a(+>399~"%h/DAq+,a( 0  **299S]+CSYYO(+G(9'!*sG}$?DAq+,a( @  ?s   9%F3c                 n    U R                   R                  X4U R                  R                  S5      5      $ r   r   r7   rowcols      r=   _get_intXint_dok_base._get_intXint   s&    zz~~sj$**//!*<==rD   c                 >    U R                  [        XS-   5      U5      $ Nr   _get_sliceXsliceslicer   s      r=   _get_intXslice_dok_base._get_intXslice   s    $$U3a%8#>>rD   c                 >    U R                  U[        X"S-   5      5      $ r   r   r   s      r=   _get_sliceXint_dok_base._get_sliceXint   s    $$S%1W*=>>rD   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	                  X5      $ U R                  XR                  S9nU R                  5        H  n[        [        US   5      U-
  U5      u  pUS:w  d  US:  d  XS   :  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   rF   _get_columnXarrayr   r$   r   divmodr   r*   )r7   r   r   	row_startrow_stoprow_step	col_startcol_stopcol_step	row_range	col_ranger#   newdokr_   r:   rijrjs                     r=   r   _dok_base._get_sliceXslice   sD   (+DJJqM(B%	X(+DJJqM(B%	X)x8	)x8	YY0 t9E!HuQx//)))??$$U**$=99;C3s1v;2H=EAQw!a%1a=3s1v;2H=EArQw!a%1a=!%CFLLA  rD   c                 D    U R                  U/UR                  5       5      $ rX   )r   r   r   s      r=   _get_intXarray_dok_base._get_intXarray   s    %%seSYY[99rD   c                     U R                  UR                  5       U/5      nUR                  S:  a  UR                  UR                  5      $ U$ r   )r   r   r3   reshaper#   )r7   r   r   ress       r=   _get_arrayXint_dok_base._get_arrayXint   s?    $$SYY[3%888a<;;syy))
rD   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#++djjm456%%c//rD   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   rD   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+  XR                  XF4'   M<     MP     U$ )Nr   r   )r   rF   r$   r5   r*   r   )	r7   r   r   r   r:   rr   cr;   s	            r=   r   _dok_base._get_columnXarray   sx    $$c#hC%9$LcNDA!#JJNNA61-1)*LL& ' #
 rD   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   )r7   r   r   r:   r   r   r_   r;   s           r=   _get_arrayXarray_dok_base._get_arrayXarray   s    2==""5"5c"?@$$QWWDJJ$?$$U1771:%6aggaj8IJC

/3Aq$%S! K rD   c                 j    U(       a  X R                   U'   g XR                   ;   a  U R                   U	 g g rX   r]   )r7   r   rP   s      r=   _set_int_dok_base._set_int   s*    JJsOJJ

3 rD   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   rF   r/   fullr$   r4   r   r*   )r7   r   rP   idx_setx_setr:   r;   s          r=   
_set_array_dok_base._set_array   s    ))+	w<3u:%5zQGeAhdjjIKLL'DA !

1jjJJqM	 (rD   c                 p    X4nU(       a  X0R                   U'   g X@R                   ;   a  U R                   U	 g g rX   r]   )r7   r   r   rP   r_   s        r=   _set_intXint_dok_base._set_intXint  s1    jJJsOJJ

3 rD   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*   rB   r   r/   nonzero)r7   r   r   rP   r:   r_   s         r=   _set_arrayXarray_dok_base._set_arrayXarray  s    3sCIIK()3sCIIK()GGI

#c#mQ/0AF#A&A636"Czz#!#JJsO	 'rD   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rX   rN   )rO   kr;   news      r=   rQ   $_dok_base.__add__.<locals>.<genexpr>8  s      EWTQ!SVaZWs   )r   r   r$   r   r#   r   r   r   r*   r   r   r4   r   r!   r,   r   tocoor3   r   coordsdatar/   errstaterB   r   todenseNotImplemented)r7   ry   	res_dtyper<   r_   aijo_itemsr	  s          @r=   __add___dok_base.__add__   s   %djj%8I%%djj	%BC ((TZZ*HZ58Z*HIjjnnS!,u43"CH J0 
) e__{{djj( !CDDtzz5;;7I%%djj	%BC

)CI||u$++-99>!%,,q/5::>G!#u||"4ejjAG(+		   EW EE , 
	 U^^,,.5(C 
 "!/ +I$ ,+ 
s    H8&H==
Ic                 
    X-   $ rX   rN   r7   ry   s     r=   __radd___dok_base.__radd__?  s
    |rD   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rX   rN   )rO   r  r;   s      r=   rQ   $_dok_base.__neg__.<locals>.<genexpr>H  s     :\TQ!R\s   )r$   kindr@   r   r#   r*   rB   r   r7   r	  s     r=   __neg___dok_base.__neg__B  sd    ::??c!%D  !!$**DJJ!?		:TZZ\::
rD   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rX   rN   rO   r  r;   ry   s      r=   rQ   (_dok_base._mul_scalar.<locals>.<genexpr>O  s     B\TQ1%i.\   )r   r$   r   r#   r*   rB   r   r7   ry   r  r	  s    `  r=   _mul_scalar_dok_base._mul_scalarK  sO    !$**e4	!!$**I!>		BTZZ\BC
rD   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rX   r]   )rO   r  ry   r7   s     r=   rQ   +_dok_base._matmul_vector.<locals>.<genexpr>\  s&     $RTTZZ]U[[^%CTs   ,/c              3   8   >#    U  H  u  pTU   U-  v   M     g 7frX   rN   r$  s      r=   rQ   r,  ^  s     $KldaU1X\l   r   )r   r$   r3   r   r,   r   r  r  rS   r   r   r  r/   zerosr#   )r7   ry   r  r   resultr:   r   r;   s   ``      r=   _matmul_vector_dok_base._matmul_vectorR  s    4::u{{3	 99><<5(99;5D99;)=)=a)@@D $RT$R!RSS $Kdjjl$K!KLL%% $**Q-y9IFQAIU1X%I &rD   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rX   rN   )rO   r   r;   ry   s      r=   rQ   0_dok_base._matmul_multivector.<locals>.<genexpr>m  s     C0Bq58|0Br.  r   r   )	r   r$   r3   rS   r*   r   r#   r/   r/  )	r7   ry   result_dtyper   	new_shaper0  r:   r   r;   s	    `       r=   _matmul_multivector_dok_base._matmul_multivectorh  s    djj%++699>C

0@0@0BCCC JJqM!JJ!OQD!U[[^1D	)8IFQAIU1X%I &rD   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rX   rN   r$  s      r=   rQ   %_dok_base.__imul__.<locals>.<genexpr>y       Fqe)nr&  r   r*   rB   r   r  r  s    `r=   __imul___dok_base.__imul__w  7    JJFFFKrD   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rX   rN   r$  s      r=   rQ   (_dok_base.__truediv__.<locals>.<genexpr>  r=  r&  )	r   r   r$   r   r#   r*   rB   r   tocsrr'  s    `  r=   __truediv___dok_base.__truediv__}  sk    %djj%8I%%djj	%BCIIFFGJzz|e##rD   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rX   rN   r$  s      r=   rQ   )_dok_base.__itruediv__.<locals>.<genexpr>  r=  r&  r>  r  s    `r=   __itruediv___dok_base.__itruediv__  rA  rD   c                 ,    [         R                  U 5      $ rX   )dict
__reduce__rY   s    r=   rO  _dok_base.__reduce__  s     t$$rD   c                 X   > U R                   S:X  a  [        TU ]	  U5      $ [        S5      e)Nr   z diagonal requires two dimensions)r3   superdiagonalr4   )r7   r  	__class__s     r=   rS  _dok_base.diagonal  s*    99>7#A&&;<<rD   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rX   rN   )rO   leftrightrA   s       r=   rQ   &_dok_base.transpose.<locals>.<genexpr>  s     V3E=D#4=#.s   )	r3   r!   r4   r#   r   r$   r*   rB   r   )r7   axesr!   r   Nr	  s         r=   	transpose_dok_base.transpose  s    99>99;>  zz!!1&

!F		VVW
rD   c           	         Sn[        U[        SS9  U R                  S:X  a1  U R                  5       nUR                  R                  5       Ul        U$ U R                  u  p4U R                  XC4U R                  S9nU R                  5        VVVs0 s H   u  u  pVovU4[        R                  " U5      _M"     snnnUl        U$ s  snnnf )zDEPRECATED: 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   DeprecationWarningr3   r  r  	conjugater#   r   r$   r   r/   conjr*   )r7   msgr	  r   r\  rX  rY  rA   s           r=   
conjtransp_dok_base.conjtransp  s    .S$399>**,Cxx))+CHJzz!!1&

!;KO::<X<5G]dCT]BGGCL0<X	
 Ys   'Cc                     U R                  U R                  U R                  S9nUR                  R	                  U R                  5        U$ Nr   )r   r#   r$   r*   rB   r  s     r=   r!   _dok_base.copy  s:    !!$**DJJ!?		$
rD   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)rO   r   s     r=   rQ   %_dok_base.fromkeys.<locals>.<genexpr>  s     <)3#c(Q,)r   r   r   )
rN  fromkeysr&   nextiterr'   r   rl  rv   r*   )clsiterablevaluetmpr#   r0  s         r=   rn  _dok_base.fromkeys  sb    mmH,d49ou--<#s)<<EX\OEU$u+.rD   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)rx  N)r/   fromiter)rO   ix	idx_dtypennzs     r=   rQ   "_dok_base.tocoo.<locals>.<genexpr>  s     RTrr{{2YcBTs   #&r"   T)r~  r6   r#   r$   _get_index_dtyperl  r/   r{  rT   r3   r   r   r'   has_canonical_format)r7   r!   r  indsr  Ar}  r~  s         @@r=   r  _dok_base.tocoo  s    hh!8&&tzz&DD))TZZ)A	{{4;;=

#F$(IIMsDIIK 		~RTRRdjj

S!%rD   c                 4    U(       a  U R                  5       $ U $ rX   r    r7   r!   s     r=   r-   _dok_base.todok  s    99;rD   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    )r3   r@   r  tocscr  s     r=   r  _dok_base.tocsc  s8    99>%&MNNzzuz%+++66rD   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(   rF   r#   r@   r3   r   r*   r)   r   )r7   r#   newNr:   newMr   r\  r   s           r=   resize_dok_base.resize  s    ENN;u:TZZ(%%99>9D$**%9

1 &  K
zz8txTYY[)9	

14( * rD   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*   rT   rN  r   r!   )r7   r$   castingr!   r0  r  s         r=   r.   _dok_base.astype  s    ::((5(AF88D!2!2!45UCDDJJ 56FLM99;rD   )r*   r)   r$   )NNFrX   )g        )r   )NF)r   )F)unsafeT)Crw   
__module____qualname____firstlineno___formatr(   r%   rB   rI   rU   r	   __doc__rZ   r`   rc   rf   ri   rm   rq   r{   r   r   r   r   r   rT   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r(  r1  r8  r?  rF  rK  rO  rS  r]  re  r!   classmethodrn  r  r-   r  r  r.   __static_attributes____classcell__)rT  s   @r=   r   r      s   GI%KT %KNX2 oo--GO#1199M!3"%FIII$"!#,*7.*>??.:00		 " 
$>,$%=
   ))11I,
 <<''DL  MM))EM
 MM))EM7
 MM))EM. ^^++FN	 	rD   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   )rP   s    r=   r   r     s    . a$$rD   c                       \ rS rSrSrSrg)r   i/  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

rN   N)rw   r  r  r  r  r  rN   rD   r=   r   r   /  s    1rD   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   id  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__)r7   r#   
new_matrixs      r=   	set_shapedok_matrix.set_shape  s0    \\%e\4==dkkJ
"++rD   c                     U R                   $ )zGet shape of a sparse matrix.)r)   rY   s    r=   	get_shapedok_matrix.get_shape  s    {{rD   )fgetfsetc                 6    U R                   R                  5       $ rX   )r*   rq   rY   s    r=   rq   dok_matrix.__reversed__  s    zz&&((rD   c                 |    [        U[        5      (       a  U R                  UR                  -  $ U R                  U-  $ rX   r&   r   r*   r  s     r=   r{   dok_matrix.__or__  1    eY''::++zzE!!rD   c                 |    [        U[        5      (       a  U R                  UR                  -  $ U R                  U-  $ rX   r  r  s     r=   r   dok_matrix.__ror__  r  rD   c                     [        U[        5      (       a!  U =R                  UR                  -  sl        U $ U =R                  U-  sl        U $ rX   r  r  s     r=   r   dok_matrix.__ior__  s=    eY''JJ%++%J  JJ%JrD   )r  N)rw   r  r  r  r  r  r  propertyr#   rq   r{   r   r   r  rN   rD   r=   r   r   d  s4    1f, ))4E)"
"
rD   r   )r  __docformat____all__r   warningsr   numpyr/   _matrixr   _baser	   r
   r   _indexr   _sputilsr   r   r   r   r   r   r   r   rN  r   r   r   r   rN   rD   r=   <module>r     sm    %%
7     - - ; ; ;T D%62	7 2jP9 PrD   