
    tKg-X                         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
             U/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/sparse/_dok.pyr!   z_dok_base.__init__   s   t$dG,dE"wth'G%dX>DKDJ!%7DJd^{{dkk)&*tyy{zz| {{5u{5DJ%djj8DDKDJ@zz$' yy1} JKKyyA~$;;u-D/8Itq!!q&adI
!ZZ
''E':@@BWW
WW
%djj8DDK  @ 78a?@ 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=a16=s   )sumvaluesr2   s    r9   count_nonzeroz_dok_base.count_nonzeroH   s    14;;=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    djj  r>   c                :    | j                   j                  ||      S rO   )r%   
setdefault)r2   rT   r   s      r9   rW   z_dok_base.setdefaultT   s    zz$$S'22r>   c                    | j                   |= y rO   rR   rS   s     r9   __delitem__z_dok_base.__delitem__W   s    JJsOr>   c                 6    | j                   j                         S rO   )r%   clearrL   s    r9   r[   z_dok_base.clearZ       zz!!r>   c                4     | j                   j                  | S rO   )r%   pop)r2   argss     r9   r^   z_dok_base.pop]   s    tzz~~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+2F2F1G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    zz!!##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    zz  r>   c                 6    | j                   j                         S rO   )r%   rK   rL   s    r9   rK   z_dok_base.valuesx   s    zz  ""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&     K6JdaQUAE)6J   c              3   :   K   | ]  \  }}|d k  xs ||k\    ywrE   rF   ry   s      r9   rI   z _dok_base.get.<locals>.<genexpr>   s%     @+?41aq1u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>dii1n&C99C vcU*KLMM	M |#|  Kc#tzz6JKK@3sDJJ+?@@34499>a&Czz~~c7++ 	:6 	MDE1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    99>7&s++c5!c#h!ma&C"**%	c9%Qwtzz"~%Qw#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$    zz~~c4::??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(    zz~~sCj$**//!*<==r>   c                 @    | j                  t        ||dz         |      S Nr   _get_sliceXsliceslicer   s      r9   _get_intXslicez_dok_base._get_intXslice   s     $$U3a%8#>>r>   c                 @    | j                  |t        ||dz               S r   r   r   s      r9   _get_sliceXintz_dok_base._get_sliceXint   s     $$S%S1W*=>>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   sT   (+DJJqM(B%	8X(+DJJqM(B%	8X)Xx8	)Xx8	YY0 t9E!HuQx//)))Y??$$U$**$=99;C3s1v;2H=EArQw!a%1a=3s1v;2H=EArQw!a%1a=!%CFLLA  r>   c                 H    |j                         }| j                  |g|      S rO   squeezer   r   s      r9   _get_intXarrayz_dok_base._get_intXarray   s"    kkm%%seS11r>   c                 H    |j                         }| j                  ||g      S rO   r   r   s      r9   _get_arrayXintz_dok_base._get_arrayXint   s"    kkm%%cC5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#++djjm456%%c3//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cNDAq!#1JJNNAq61-)*FLL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"5c3"?@1$$QWWDJJ$?$$U1771:%6aggaj8IJC

##/3A$%S! K 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    99>7&sE22c5!c#h!ma&C"**%	c9%Qwtzz"~%Qw#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.    DJJsODJJ

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    CjDJJsODJJ

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    3sCIIK()3sCIIK()GGI

#c#smQ/0AF#A&Aq63q6"Czz#!#JJsO	 'r>   c                 f   t        |      rt        | 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"      EWTQ!SVaZWs   )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   %djj%8I%%djj	%BC ((TZZ*HZ58Z*HIjjnnS!,u4"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   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     :\TQ!aR\s   )r    kindr;   r   r*   r%   r=   rs   r2   r   s     r9   __neg__z_dok_base.__neg__9  sd    ::??c!%D  !!$**DJJ!?		:TZZ\::
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\TQ1a%i.\   )r   r    r   r*   r%   r=   rs   r2   rh   r   r   s    `  r9   _mul_scalarz_dok_base._mul_scalarB  sO    !$**e4	!!$**I!>		BTZZ\BC
r>   c                     t         j                  j                        } j                  dk(  rt              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'     $RTTZZ]U[[^%CTs   ),c              3   4   K   | ]  \  }}|   |z    y wrO   rF   r   s      r9   rI   z+_dok_base._matmul_vector.<locals>.<genexpr>U  s     $KldaU1X\l   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	 99><<5(99;5D99;)=)=a)@@D $RT$R!RSS $Kdjjl$K!KLL%% $**Q-y9IFQA1IU1X%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      C0B1q58|0Br   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    djj%++699>C

0@0@0BCCC JJqM!JJ!OQD!U[[^1D	)<8IFQA1IU1X%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Aq!e)nr   r   r%   r=   rs   r   r   s    `r9   __imul__z_dok_base.__imul__n  4    JJ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    %djj%8I%%djj	%BCIIFFGJzz|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*    99>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%#E4=#.s   )	r/   r   r   r*   r   r    r%   r=   rs   )r2   axesr   rz   Nr   s         r9   	transposez_dok_base.transpose  s    99>99;>  zz1!!1a&

!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 )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   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99>**,Cxx))+CHJzz1!!1a&

!;KO::<X<5G]dECeT]BGGCL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:    !!$**DJJ!?		$
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    mmHe,d49ou-<#s)<<EX\OE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"     RTrr{{2YcBBTs   "%)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    hh!8&&tzz&DD))TZZ)A	{{4;;=

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

S!%r>   c                 *    |r| j                         S | S rO   r   r2   r   s     r9   r(   z_dok_base.todok  s    99;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    99>%&MNNzzuz%+++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    dG,EH5u:TZZ(%%99>9D$**%9

1 &  DK
dzz1!8taxTYY[)19T	

1a4( * 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(AF88D!2!2!45UCDDJJ 56FLM99;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 oo--GO#1199M!3"%FIII$"!#,*U"7>??.2200		N"  
$>,$%=
   ))11I,
 <<''DL  MM))EM
 MM))EM7
 MM))EM0 ^^++FN	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==dkk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    zz&&((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__  .    eY'::++zzE!!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:    eY'JJ%++%J  JJ%Jr>   N)rf   rA  rB  rD  rO  rQ  propertyr*   ra   rj   rm   ro   rF   r>   r9   r   r   \  s4    1f, ))4E)"
"
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>   