Ë
    çÿæi[[  ã                   óÈ   — d Z dZg d¢ZddlZddlZddlmZ ddlm	Z	m
Z
mZ ddlmZ dd	lmZmZmZmZmZmZmZmZ  G d
„ de	ee«      Zd„ Z G d„ dee
«      Z G d„ dee«      Zy)zDictionary Of Keys based matrixzrestructuredtext en)Ú	dok_arrayÚ
dok_matrixÚisspmatrix_doké    Né   )Úspmatrix)Ú_spbaseÚsparrayÚissparse)Ú
IndexMixin)ÚisdenseÚgetdtypeÚisshapeÚ	isintlikeÚisscalarlikeÚupcastÚupcast_scalarÚcheck_shapec                   óB  ‡ — e Zd ZdZdZd<ddœd„Zd„ Zd=d„Zd=d„Ze	j                  j                  e_
        e	j                  j                  e_
        d	„ Zd
„ Zd=d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd>d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(d'„ Z)d(„ Z*d)„ Z+d*„ Z,d+„ Z-d,„ Z.d-„ Z/d.„ Z0d/„ Z1d0„ Z2d1„ Z3d2„ Z4d?ˆ fd3„	Z5d@d4„Z6e	jl                  j                  e6_
        d5„ Z7e	jn                  j                  e7_
        e8dAd6„«       Z9dBd7„Z:e	jt                  j                  e:_
        dBd8„Z;e	jv                  j                  e;_
        dBd9„Z<e	jx                  j                  e<_
        d:„ Z=e	jz                  j                  e=_
        dCd;„Z>ˆ xZ?S )DÚ	_dok_baseÚdok)r   é   N©Úmaxprintc                óÐ  — t        j                  | ||¬«       t        |t        «      rQt	        || j
                  ¬«      r:t        || j
                  ¬«      | _        i | _        t        |t        ¬«      | _        y t        |«      r¥|j                  | j                  k(  r|r|j                  «       n|}n|j                  «       }|�|j!                  |d¬«      }|j                  | _        t        |j"                  | j
                  ¬«      | _        t        |j                  «      | _        y 	 t%        j&                  |«      }|j,                  dkD  rt/        d|j,                  › d	�«      ‚|j,                  d
k(  rZ|�|j!                  |d¬«      }t1        |«      D ��ci c]  \  }}|dk7  sŒ||“Œ c}}| _        t        |j                  «      | _        nM| j3                  |||¬«      j                  «       }	|	j                  | _        t        |	j                  «      | _        t        |j"                  | j
                  ¬«      | _        y # t(        $ r}t+        d«      |‚d }~ww xY wc c}}w )Nr   ©Úallow_nd)ÚdefaultF©ÚcopyzInvalid input format.r   zDOK arrays don't yet support zD input.r   r   ©ÚshapeÚdtype)r   Ú__init__Ú
isinstanceÚtupler   Ú	_allow_ndr   Ú_shapeÚ_dictr   Úfloatr"   r
   Úformatr   ÚtodokÚastyper!   ÚnpÚasarrayÚ	ExceptionÚ	TypeErrorÚndimÚ
ValueErrorÚ	enumerateÚ_coo_container)
ÚselfÚarg1r!   r"   r   r   ÚeÚiÚvÚds
             úf/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/scipy/sparse/_dok.pyr#   z_dok_base.__init__   sÙ  € Ü×Ñ˜˜t¨hÕ7ä�dœEÔ"¤w¨t¸d¿n¹nÕ'MÜ% d°T·^±^ÔDˆDŒKØˆDŒJÜ! %´Ô7ˆD�JÜ�dŒ^Ø�{‰{˜dŸk™kÒ)Ù&*�t—y‘y”{°‘à—z‘z“|�àÐ Ø—{‘{ 5¨u�{Ó5�àŸ™ˆDŒJÜ% d§j¡j¸4¿>¹>ÔJˆDŒKÜ! $§*¡*Ó-ˆD�Jð@Ü—z‘z $Ó'�ð �y‰y˜1Š}Ü Ð#@ÀÇÁÀÈ8Ð!TÓUÐUà�y‰y˜AŠ~ØÐ$ØŸ;™; u°5˜;Ó9�DÜ/8¸¬ÔI©¡t q¨!À!ÀqÃ&˜a ™d¨ÒI�”
Ü% d§j¡jÓ1�•
à×'Ñ'¨°EÀÐ'ÓG×MÑMÓO�ØŸW™W�”
Ü% a§g¡gÓ.�”
Ü% d§j¡j¸4¿>¹>ÔJˆD�Køô ò @ÜÐ 7Ó8¸aÐ?ûð@üó Js$   Ä+I ÆI"Æ(I"É	IÉIÉIc                 ó   — t        |t        «      r|j                  «       }n|}|D ]Ë  \  }}t        |«      r|fn
t	        |«      }t        |«      | j                  k7  rt        d|› d�«      ‚t        d„ t        || j                  «      D «       «      rŒmt        || j                  «      D ]F  \  }}t        |«      st        d|› �«      ‚|dk  rt        d|› d�«      ‚||k\  sŒ9t        d|› d	�«      ‚ ŒÍ | j                  j                  |«       y
)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   ó\   K  — | ]$  \  }}t        |«      xr d |cxk  xr |k  nc –— Œ& y­w©r   N)r   )Ú.0ÚidxÚmax_idxs      r;   Ú	<genexpr>z#_dok_base.update.<locals>.<genexpr>K   s2   è ø€ ð á$:‘L�C˜ô ˜#“Ò5 1¨Ö#5¨gÔ#5Ó5Ù$:ùs   ‚*,z&integer keys required for update. Got r   znegative index z not allowed in updatezindex z is too large for self.shapeN)r$   ÚdictÚitemsr   r%   Úlenr1   Ú
IndexErrorÚallÚzipr!   r(   Úupdate)r5   ÚvalÚinputsÚkeyÚvalueÚindexrB   rC   s           r;   rK   z_dok_base.update<   s  € ô �cœ4Ô Ø—Y‘Y“[‰FàˆFã ‰JˆC�Ü'¨œn�S‘F´%¸³*ˆEÜ�5‹z˜TŸY™YÒ&Ü  6¨#¨Ð.OÐ!PÓQÐQÜñ ä$'¨¨t¯z©zÔ$:óõ ô
 %(¨¨t¯z©zÖ$:‘L�C˜Ü$ Sœ>Ü(Ð+QÐRUÐQVÐ)WÓXÐXØ˜Q’wÜ(¨?¸3¸%Ð?UÐ)VÓWÐWØ˜g“~Ü(¨6°#°Ð6RÐ)SÓTÐTñ %;ð !ð" 	�
‰
×Ñ˜&Õ!ó    c                 óF   — |�t        d«      ‚t        | j                  «      S )Nz7_getnnz over an axis is not implemented for DOK format.)ÚNotImplementedErrorrG   r(   ©r5   Úaxiss     r;   Ú_getnnzz_dok_base._getnnzZ   s(   € ØÐÜ%ØIóð ô �4—:‘:‹ÐrQ   c                 ó\   — |�t        d«      ‚t        d„ | j                  «       D «       «      S )Nz=count_nonzero over an axis is not implemented for DOK format.c              3   ó&   K  — | ]	  }|d k7  –— Œ y­wr@   © )rA   Úxs     r;   rD   z*_dok_base.count_nonzero.<locals>.<genexpr>f   s   è ø€ Ð1¡=˜a�1˜•6¡=ùs   ‚)rS   ÚsumÚvaluesrT   s     r;   Úcount_nonzeroz_dok_base.count_nonzeroa   s1   € ØÐÜ%ØOóð ô Ñ1 4§;¡;¤=Ó1Ó1Ð1rQ   c                 ó,   — t        | j                  «      S ©N)rG   r(   ©r5   s    r;   Ú__len__z_dok_base.__len__k   s   € Ü�4—:‘:‹ÐrQ   c                 ó   — || j                   v S r_   ©r(   ©r5   rN   s     r;   Ú__contains__z_dok_base.__contains__n   s   € Ø�d—j‘jÐ Ð rQ   c                ó:   — | j                   j                  ||«      S r_   )r(   Ú
setdefault)r5   rN   r   s      r;   rg   z_dok_base.setdefaultq   s   € Ø�z‰z×$Ñ$ S¨'Ó2Ð2rQ   c                ó   — | j                   |= y r_   rc   rd   s     r;   Ú__delitem__z_dok_base.__delitem__t   s   € Ø�J‰J�s‰OrQ   c                 ó6   — | j                   j                  «       S r_   )r(   Úclearr`   s    r;   rk   z_dok_base.clearw   ó   € Ø�z‰z×ÑÓ!Ð!rQ   c                ó4   —  | j                   j                  |Ž S r_   )r(   Úpop)r5   Úargss     r;   rn   z_dok_base.popz   s   € Øˆt�z‰z�~‰~˜tÐ$Ð$rQ   c                 ó   — t        d«      ‚)Nz*reversed is not defined for dok_array type)r0   r`   s    r;   Ú__reversed__z_dok_base.__reversed__}   s   € ÜÐDÓEÐErQ   c                 óx   — t        | «      j                  › dt        |«      j                  › �}t        d|› �«      ‚©Nz and z unsupported operand type for |: ©ÚtypeÚ__name__r0   ©r5   ÚotherÚ
type_namess      r;   Ú__or__z_dok_base.__or__€   ó;   € Ü˜T›
×+Ñ+Ð,¨E´$°u³+×2FÑ2FÐ1GÐHˆ
ÜÐ:¸:¸,ÐGÓHÐHrQ   c                 óx   — t        | «      j                  › dt        |«      j                  › �}t        d|› �«      ‚rs   rt   rw   s      r;   Ú__ror__z_dok_base.__ror__„   r{   rQ   c                 óx   — t        | «      j                  › dt        |«      j                  › �}t        d|› �«      ‚rs   rt   rw   s      r;   Ú__ior__z_dok_base.__ior__ˆ   r{   rQ   c                 ó6   — | j                   j                  «       S r_   )r(   Úpopitemr`   s    r;   r�   z_dok_base.popitemŒ   s   € Ø�z‰z×!Ñ!Ó#Ð#rQ   c                 ó6   — | j                   j                  «       S r_   )r(   rF   r`   s    r;   rF   z_dok_base.items�   rl   rQ   c                 ó6   — | j                   j                  «       S r_   )r(   Úkeysr`   s    r;   r„   z_dok_base.keys’   s   € Ø�z‰z�‰Ó Ð rQ   c                 ó6   — | j                   j                  «       S r_   )r(   r\   r`   s    r;   r\   z_dok_base.values•   s   € Ø�z‰z× Ñ Ó"Ð"rQ   c                 óN  — || j                   v r| j                   |   S t        |«      r| j                  dk(  r|f}| j                  t        |«      k7  rt	        d|› d�«      ‚	 |D ]  }t        |«      rŒJ ‚ 	 t        d„ t        || j                  «      D «       «      }t        d„ t        || j                  «      D «       «      rt	        d«      ‚| j                  dk(  r|d	   }| j                   j                  ||«      S # t
        t        t        f$ r}t	        d«      |‚d}~ww xY w)
z>This provides dict.get method functionality with type checkingr   r=   r>   z%Index must be or consist of integers.Nc              3   ó:   K  — | ]  \  }}|d k  r||z   n|–— Œ y­wr@   rY   ©rA   r8   ÚMs      r;   rD   z _dok_base.get.<locals>.<genexpr>¥   s&   è ø€ ÐKÑ6J©d¨a°˜Q šU�A˜’E¨Ó)Ñ6Jùó   ‚c              3   ó:   K  — | ]  \  }}|d k  xs ||k\  –— Œ y­wr@   rY   rˆ   s      r;   rD   z _dok_base.get.<locals>.<genexpr>¦   s%   è ø€ Ð@Ñ+?¡4 1 aˆq�1‰uŠ˜˜Q™‹Ñ+?ùrŠ   zIndex out of bounds.r   )r(   r   r1   rG   rH   ÚAssertionErrorr0   r2   r%   rJ   r!   ÚanyÚget)r5   rN   r   r8   r7   s        r;   rŽ   z_dok_base.get˜   s	  € à�$—*‘*ÑØ—:‘:˜c‘?Ð"Ü�SŒ>˜dŸi™i¨1šnØ�&ˆCØ�9‰9œ˜C›Ò Ü˜v c UÐ*KÐLÓMÐMð	MÛ�Ü  •|Ð#�|ñ ô ÑK´c¸#¸t¿z¹zÔ6JÓKÓKˆÜÑ@¬3¨s°D·J±JÔ+?Ó@Ô@ÜÐ3Ó4Ð4Ø�9‰9˜Š>Ø�a‘&ˆCØ�z‰z�~‰~˜c 7Ó+Ð+øô ¤	¬:Ð6ò 	MÜÐDÓEÈ1ÐLûð	Mús   Á#C? Á4C? Ã?D$ÄDÄD$c                 ól   — | j                   j                  || j                  j                  d«      «      S ©Nr   ©r(   rŽ   r"   ru   )r5   rB   s     r;   Ú_get_intz_dok_base._get_int­   s$   € Ø�z‰z�~‰~˜c 4§:¡:§?¡?°1Ó#5Ó6Ð6rQ   c                 ó~   — t        |j                  | j                  d   «      Ž }| j                  t	        |«      «      S r�   )ÚrangeÚindicesr!   Ú
_get_arrayÚlist)r5   rB   Úi_ranges      r;   Ú
_get_slicez_dok_base._get_slice°   s0   € Ü˜Ÿ™ T§Z¡Z°¡]Ó3Ð4ˆØ�‰œt G›}Ó-Ð-rQ   c                 óR  — t        j                  |«      }|j                  dk(  r_| j                  j	                  t        |«      | j                  j                  d«      «      }t        j                  || j                  ¬«      S | j                  |j                  | j                  ¬«      }|j                  «       D �cg c]  }| j                  j	                  |d«      ‘Œ  }}|r¾t        |j                  «      dk(  r't        |«      D ]  \  }}|sŒ	||j                  |<   Œ |S t        j                  t        j                  t        |«      «      |j                  «      }t        |«      dk(  r|d   nt!        |Ž }t!        ||d¬«      D ]  \  }}|sŒ	||j                  |<   Œ |S c c}w )Nr   )Ústype©r"   r   T)Ústrict)r-   r.   r1   r(   rŽ   Úintr"   ru   ÚarrayÚ_dok_containerr!   ÚravelrG   r3   Úunravel_indexÚarangerJ   )r5   rB   rL   Únew_dokr8   Údok_valsr9   Únew_idxs           r;   r–   z_dok_base._get_array´   sL  € Ü�j‰j˜‹oˆØ�8‰8�qŠ=Ø—*‘*—.‘.¤ S£¨4¯:©:¯?©?¸1Ó+=Ó>ˆCÜ—8‘8˜C t§z¡zÔ2Ð2Ø×%Ñ% c§i¡i°t·z±zÐ%ÓBˆØ25·)±)´+Ó>±+¨Q�D—J‘J—N‘N 1 aÕ(°+ˆÐ>ÙÜ�3—9‘9‹~ Ò"Ü% hÖ/‘D�A�qÚØ+,˜Ÿ™ aÒ(ð 0ð ˆô ×*Ñ*¬2¯9©9´S¸³]Ó+CÀSÇYÁYÓO�Ü(+¨G«¸Ò(9˜' !š*¼sÀG¸}�Ü ¨¸$×?‘D�A�qÚØ+,˜Ÿ™ aÒ(ð @ð ˆùò ?s   Â=#F$c                 óp   — | j                   j                  ||f| j                  j                  d«      «      S r�   r‘   ©r5   ÚrowÚcols      r;   Ú_get_intXintz_dok_base._get_intXintÉ   s(   € Ø�z‰z�~‰~˜s C˜j¨$¯*©*¯/©/¸!Ó*<Ó=Ð=rQ   c                 ó@   — | j                  t        ||dz   «      |«      S ©Nr   ©Ú_get_sliceXsliceÚslicer¨   s      r;   Ú_get_intXslicez_dok_base._get_intXsliceÌ   s    € Ø×$Ñ$¤U¨3°°a±Ó%8¸#Ó>Ð>rQ   c                 ó@   — | j                  |t        ||dz   «      «      S r­   r®   r¨   s      r;   Ú_get_sliceXintz_dok_base._get_sliceXintÏ   s    € Ø×$Ñ$ S¬%°°S¸1±WÓ*=Ó>Ð>rQ   c                 óª  — |j                  | j                  d   «      \  }}}|j                  | j                  d   «      \  }}}t        |||«      }	t        |||«      }
t        |	«      t        |
«      f}t        | «      d|d   z  |d   z  k\  r| j	                  |	|
«      S | j                  || j                  ¬«      }| j                  «       D ]‚  }t        t        |d   «      |z
  |«      \  }}|dk7  s|dk  s||d   k\  rŒ4t        t        |d   «      |z
  |«      \  }}|dk7  s|dk  s||d   k\  rŒe| j                  |   |j                  ||f<   Œ„ |S )Nr   r   r   rœ   )r•   r!   r”   rG   Ú_get_columnXarrayr    r"   r„   Údivmodrž   r(   )r5   r©   rª   Ú	row_startÚrow_stopÚrow_stepÚ	col_startÚcol_stopÚcol_stepÚ	row_rangeÚ	col_ranger!   ÚnewdokrN   r8   ÚriÚjÚrjs                     r;   r¯   z_dok_base._get_sliceXsliceÒ   sT  € Ø(+¯©°D·J±J¸q±MÓ(BÑ%ˆ	�8˜XØ(+¯©°D·J±J¸q±MÓ(BÑ%ˆ	�8˜XÜ˜) X¨xÓ8ˆ	Ü˜) X¨xÓ8ˆ	Ü�Y“¤ Y£Ð0ˆô ˆt‹9˜˜E !™H™ u¨Q¡xÑ/Ò/à×)Ñ)¨)°YÓ?Ð?à×$Ñ$ U°$·*±*Ð$Ó=ˆØ—9‘9–;ˆCÜœ3˜s 1™v›;¨Ñ2°HÓ=‰EˆAˆrØ�QŠw˜!˜aš% 1¨¨a©¢=ØÜœ3˜s 1™v›;¨Ñ2°HÓ=‰EˆAˆrØ�QŠw˜!˜aš% 1¨¨a©¢=ØØ!%§¡¨C¡ˆF�L‰L˜˜A˜Òð ð ˆrQ   c                 óD   — | j                  |g|j                  «       «      S r_   )rµ   r¡   r¨   s      r;   Ú_get_intXarrayz_dok_base._get_intXarrayé   s   € Ø×%Ñ% s e¨S¯Y©Y«[Ó9Ð9rQ   c                 óœ   — | j                  |j                  «       |g«      }|j                  dkD  r|j                  |j                  «      S |S r­   )rµ   r¡   r1   Úreshaper!   )r5   r©   rª   Úress       r;   Ú_get_arrayXintz_dok_base._get_arrayXintì   s?   € Ø×$Ñ$ S§Y¡Y£[°3°%Ó8ˆØ�8‰8�aŠ<Ø—;‘;˜sŸy™yÓ)Ð)Øˆ
rQ   c                 ó€   — t        t        |j                  | j                  d   «      Ž «      }| j	                  ||«      S r�   ©r—   r”   r•   r!   rµ   r¨   s      r;   Ú_get_sliceXarrayz_dok_base._get_sliceXarrayò   ó5   € Ü”5˜#Ÿ+™+ d§j¡j°¡mÓ4Ð5Ó6ˆØ×%Ñ% c¨3Ó/Ð/rQ   c                 ó€   — t        t        |j                  | j                  d   «      Ž «      }| j	                  ||«      S r­   rÊ   r¨   s      r;   Ú_get_arrayXslicez_dok_base._get_arrayXsliceö   rÌ   rQ   c                 ó  — | j                  t        |«      t        |«      f| j                  ¬«      }t        |«      D ]J  \  }}t        |«      D ]7  \  }}| j                  j                  ||fd«      }|sŒ'||j                  ||f<   Œ9 ŒL |S )Nrœ   r   )r    rG   r"   r3   r(   rŽ   )	r5   r©   rª   r¿   r8   ÚrrÁ   Úcr9   s	            r;   rµ   z_dok_base._get_columnXarrayú   s€   € à×$Ñ$¤c¨#£h´°C³Ð%9ÀÇÁÐ$ÓLˆä˜c–N‰DˆAˆqÜ! #ž‘��1Ø—J‘J—N‘N A q 6¨1Ó-�ÚØ)*�F—L‘L  A Ò&ñ 'ð #ð
 ˆrQ   c                 ó°  — t        t        j                  t        j                  ||«      «      \  }}| j	                  |j
                  | j                  ¬«      }t        j                  t        |j
                  d   «      t        |j
                  d   «      «      D ]8  }| j                  j                  ||   ||   fd«      }|sŒ*||j                  |<   Œ: |S )Nrœ   r   r   )Úmapr-   Ú
atleast_2dÚbroadcast_arraysr    r!   r"   Ú	itertoolsÚproductr”   r(   rŽ   )r5   r©   rª   r8   rÁ   r¿   rN   r9   s           r;   Ú_get_arrayXarrayz_dok_base._get_arrayXarray  s«   € ä”2—=‘=¤"×"5Ñ"5°c¸3Ó"?Ó@‰ˆˆ1Ø×$Ñ$ Q§W¡W°D·J±JÐ$Ó?ˆä×$Ñ$¤U¨1¯7©7°1©:Ó%6¼¸a¿g¹gÀa¹jÓ8IÖJˆCØ—
‘
—‘  #¡¨¨#©Ð/°Ó3ˆAÚØ$%�—‘˜SÒ!ð Kð ˆrQ   c                 ó`   — |r|| j                   |<   y || j                   v r| j                   |= y y r_   rc   )r5   rB   rZ   s      r;   Ú_set_intz_dok_base._set_int  s.   € ÙØˆD�J‰J�sŠOØ�D—J‘JÑØ—
‘
˜3‘ð rQ   c                 ó†  — |j                  «       }|j                  «       }t        |«      t        |«      k7  rHt        |«      dk(  r/t        j                  t        |«      |d   | j                  ¬«      }nt        d«      ‚t        ||«      D ]3  \  }}|r|| j                  |<   Œ|| j                  v sŒ'| j                  |= Œ5 y )Nr   r   rœ   z*Need len(index)==len(data) or len(data)==1)r¡   rG   r-   Úfullr"   r2   rJ   r(   )r5   rB   rZ   Úidx_setÚx_setr8   r9   s          r;   Ú
_set_arrayz_dok_base._set_array  s˜   € Ø—)‘)“+ˆØ—‘“	ˆÜˆw‹<œ3˜u›:Ò%Ü�5‹z˜QŠÜŸ™¤ G£¨e°A©h¸d¿j¹jÔI‘äÐKÓLÐLÜ˜ Ö'‰DˆAˆqÙØ !�—
‘
˜1’Ø�d—j‘j’Ø—J‘J˜q‘Mñ	 (rQ   c                 óh   — ||f}|r|| j                   |<   y || j                   v r| j                   |= y y r_   rc   )r5   r©   rª   rZ   rN   s        r;   Ú_set_intXintz_dok_base._set_intXint&  s7   € Ø�CˆjˆÙØˆD�J‰J�sŠOØ�D—J‘JÑØ—
‘
˜3‘ð rQ   c                 ó²  — t        t        t        |j                  «       «      «      }t        t        t        |j                  «       «      «      }|j                  «       }| j                  j                  t        t        ||«      |«      «       t        j                  |dk(  «      d   D ],  }||   ||   f}| j                  |   dk(  sŒ | j                  |= Œ. y r�   )	r—   rÓ   rž   r¡   r(   rK   rJ   r-   Únonzero)r5   r©   rª   rZ   r8   rN   s         r;   Ú_set_arrayXarrayz_dok_base._set_arrayXarray-  s£   € Ü”3”s˜CŸI™I›KÓ(Ó)ˆÜ”3”s˜CŸI™I›KÓ(Ó)ˆØ�G‰G‹IˆØ�
‰
×Ñœ#œc # s›m¨QÓ/Ô0ä—‘˜A ™FÓ# AÔ&ˆAØ�q‘6˜3˜q™6Ð"ˆCØ�z‰z˜#‰ !Ó#à—J‘J˜s‘Oñ	 'rQ   c                 óf  ‡— t        |«      r”t        | j                  |«      }| j                  | j                  |¬«      Št        j                  | j                  D �cg c]  }t        |«      ‘Œ c}Ž D ])  }| j                  j                  |d«      |z   }|sŒ%|‰|<   Œ+ ‰S t        |«      �rN|j                  | j                  k7  rt        d«      ‚t        | j                  |j                  «      }| j                  | j                  |¬«      Š| j                  j                  «       ‰_        |j                  dk(  r|j                  «       }ni|j!                  «       }| j"                  dk(  r$t%        |j&                  d   |j(                  «      }n&t%        t%        |j&                  Ž |j(                  «      }t+        j,                  d¬«      5  ‰j                  j/                  ˆfd„|D «       «       d d d «       ‰S t1        |«      r| j3                  «       |z   Š‰S t4        S c c}w # 1 sw Y   ‰S xY w)	Nrœ   r   z Matrix dimensions are not equal.r   r   Úignore)Úoverc              3   ó8   •K  — | ]  \  }}|‰|   |z   f–— Œ y ­wr_   rY   )rA   Úkr9   Únews      €r;   rD   z$_dok_base.__add__.<locals>.<genexpr>Q  s"   øè ø€ Ð E¹W±T°Q¸ ! S¨¡V¨a¡Z¤¹Wùs   ƒ)r   r   r"   r    r!   rÖ   r×   r”   r(   rŽ   r
   r2   r   r   r*   rF   Útocoor1   rJ   ÚcoordsÚdatar-   ÚerrstaterK   r   ÚtodenseÚNotImplemented)r5   rx   Ú	res_dtyper:   rN   ÚaijÚo_itemsrê   s          @r;   Ú__add__z_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�ÚØ"�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   ÁH!Ç%H&È&H0c                 ó   — | |z   S r_   rY   ©r5   rx   s     r;   Ú__radd__z_dok_base.__radd__X  s   € Ø�e‰|ÐrQ   c                 óü   — | j                   j                  dk(  rt        d«      ‚| j                  | j                  | j                   ¬«      }|j
                  j                  d„ | j                  «       D «       «       |S )NÚbz2Negating a sparse boolean matrix is not supported.rœ   c              3   ó,   K  — | ]  \  }}|| f–— Œ y ­wr_   rY   )rA   ré   r9   s      r;   rD   z$_dok_base.__neg__.<locals>.<genexpr>a  s   è ø€ Ð:©\¡T Q¨˜!˜a˜Rœ©\ùs   ‚)r"   ÚkindrS   r    r!   r(   rK   rF   ©r5   rê   s     r;   Ú__neg__z_dok_base.__neg__[  sd   € Ø�:‰:�?‰?˜cÒ!Ü%ØDóð ð ×!Ñ! $§*¡*°D·J±JÐ!Ó?ˆØ�	‰	×ÑÑ:¨T¯Z©Z¬\Ó:Ô:Øˆ
rQ   c                 óÒ   ‡— t        | j                  ‰«      }| j                  | j                  |¬«      }|j                  j                  ˆfd„| j                  «       D «       «       |S )Nrœ   c              3   ó2   •K  — | ]  \  }}||‰z  f–— Œ y ­wr_   rY   ©rA   ré   r9   rx   s      €r;   rD   z(_dok_base._mul_scalar.<locals>.<genexpr>h  s   øè ø€ ÐB±\©T¨Q°˜1˜a %™iœ.±\ùó   ƒ)r   r"   r    r!   r(   rK   rF   ©r5   rx   rñ   rê   s    `  r;   Ú_mul_scalarz_dok_base._mul_scalard  sO   ø€ Ü! $§*¡*¨eÓ4ˆ	à×!Ñ! $§*¡*°IÐ!Ó>ˆØ�	‰	×ÑÓB°T·Z±Z´\ÓBÔCØˆ
rQ   c                 óˆ  ‡ ‡— t        ‰ j                  ‰j                  «      }‰ j                  dk(  r¾t        ‰«      rz‰j                  dk(  r"‰ j                  «       ‰j                  «       z  }n.‰ j                  «       ‰j                  «       j                  d   z  } |t        ˆˆ fd„|D «       «      «      S t        ‰«      r( |t        ˆfd„‰ j                  «       D «       «      «      S t        S t        j                  ‰ j                  d   |¬«      }‰ j                  «       D ]  \  \  }}}||xx   |‰|   z  z  cc<   Œ |S )Nr   r   r   c              3   ó\   •K  — | ]#  }‰j                   |   ‰j                   |   z  –— Œ% y ­wr_   rc   )rA   ré   rx   r5   s     €€r;   rD   z+_dok_base._matmul_vector.<locals>.<genexpr>u  s'   øè ø€ Ð$RÉTÈ T§Z¡Z°¡]°U·[±[À±^Õ%CÉTùs   ƒ),c              3   ó4   •K  — | ]  \  }}‰|   |z  –— Œ y ­wr_   rY   r   s      €r;   rD   z+_dok_base._matmul_vector.<locals>.<genexpr>w  s   øè ø€ Ð$K¹l±d°a¸ U¨1¡X°¥\¹lùó   ƒrœ   )r   r"   r1   r
   r*   r„   rë   rì   r[   r   rF   rð   r-   Úzerosr!   )r5   rx   rñ   r„   Úresultr8   rÁ   r9   s   ``      r;   Ú_matmul_vectorz_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Ø�1‹I˜˜U 1™X™Ñ%ŒIð &àˆrQ   c                 ó¬  ‡— t        | j                  ‰j                  «      }| j                  dk(  r,t        ˆfd„| j                  j                  «       D «       «      S | j                  d   }‰j                  dk(  r|fn|‰j                  d   f}t        j                  ||¬«      }| j                  «       D ]  \  \  }}}||xx   |‰|   z  z  cc<   Œ |S )Nr   c              3   ó4   •K  — | ]  \  }}|‰|   z  –— Œ y ­wr_   rY   )rA   rÁ   r9   rx   s      €r;   rD   z0_dok_base._matmul_multivector.<locals>.<genexpr>†  s    øè ø€ ÐCÑ0B©¨¨1�q˜5 ™8•|Ñ0Bùr  r   rœ   )	r   r"   r1   r[   r(   rF   r!   r-   r  )	r5   rx   Úresult_dtyper‰   Ú	new_shaper	  r8   rÁ   r9   s	    `       r;   Ú_matmul_multivectorz_dok_base._matmul_multivector�  s²   ø€ Ü˜dŸj™j¨%¯+©+Ó6ˆà�9‰9˜Š>äÓC°·
±
×0@Ñ0@Ô0BÓCÓCÐCð �J‰J�q‰MˆØ!ŸJ™J¨!šO�Q‘D°!°U·[±[À±^Ð1Dˆ	Ü—‘˜)¨<Ô8ˆØŸ™ž‰I‰FˆQ��AØ�1‹I˜˜U 1™X™Ñ%ŒIð &àˆrQ   c                 óŽ   ‡— t        ‰«      r4| j                  j                  ˆfd„| j                  «       D «       «       | S t        S )Nc              3   ó2   •K  — | ]  \  }}||‰z  f–— Œ y ­wr_   rY   r   s      €r;   rD   z%_dok_base.__imul__.<locals>.<genexpr>’  ó   øè ø€ ÐF¹±°°A˜q ! e¡)œn¹ùr  ©r   r(   rK   rF   rð   rö   s    `r;   Ú__imul__z_dok_base.__imul__�  ó4   ø€ Ü˜ÔØ�J‰J×ÑÓF¸¿¹¼ÓFÔFØˆKÜÐrQ   c                 ó  ‡— t        ‰«      rgt        | j                  ‰«      }| j                  | j                  |¬«      }|j
                  j                  ˆfd„| j                  «       D «       «       |S | j                  «       ‰z  S )Nrœ   c              3   ó2   •K  — | ]  \  }}||‰z  f–— Œ y ­wr_   rY   r   s      €r;   rD   z(_dok_base.__truediv__.<locals>.<genexpr>š  r  r  )	r   r   r"   r    r!   r(   rK   rF   Útocsrr  s    `  r;   Ú__truediv__z_dok_base.__truediv__–  sh   ø€ Ü˜ÔÜ% d§j¡j°%Ó8ˆIØ×%Ñ% d§j¡j¸	Ð%ÓBˆCØ�I‰I×ÑÓF¸¿¹¼ÓFÔGØˆJØ�z‰z‹|˜eÑ#Ð#rQ   c                 óŽ   ‡— t        ‰«      r4| j                  j                  ˆfd„| j                  «       D «       «       | S t        S )Nc              3   ó2   •K  — | ]  \  }}||‰z  f–— Œ y ­wr_   rY   r   s      €r;   rD   z)_dok_base.__itruediv__.<locals>.<genexpr>   r  r  r  rö   s    `r;   Ú__itruediv__z_dok_base.__itruediv__ž  r  rQ   c                 ó,   — t         j                  | «      S r_   )rE   Ú
__reduce__r`   s    r;   r  z_dok_base.__reduce__¤  s   € ô �‰˜tÓ$Ð$rQ   c                 óV   •— | j                   dk(  rt        ‰| �	  |«      S t        d«      ‚)Nr   z diagonal requires two dimensions)r1   ÚsuperÚdiagonalr2   )r5   ré   Ú	__class__s     €r;   r!  z_dok_base.diagonalª  s*   ø€ Ø�9‰9˜Š>Ü‘7Ñ# AÓ&Ð&ÜÐ;Ó<Ð<rQ   c                 ó&  — | j                   dk(  r| j                  «       S |�|dk7  rt        d«      ‚| j                  \  }}| j	                  ||f| j
                  |¬«      }|j                  j                  d„ | j                  «       D «       «       |S )Nr   )r   r   zvSparse arrays/matrices do not support an 'axes' parameter because swapping dimensions is the only logical permutation.)r"   r   c              3   ó4   K  — | ]  \  \  }}}||f|f–— Œ y ­wr_   rY   )rA   ÚleftÚrightrL   s       r;   rD   z&_dok_base.transpose.<locals>.<genexpr>¼  s#   è ø€ ÐVÉÑ3E±=°D¸%À#˜E 4˜=¨#Ô.Éùs   ‚)	r1   r   r2   r!   r    r"   r(   rK   rF   )r5   Úaxesr   r‰   ÚNrê   s         r;   Ú	transposez_dok_base.transpose¯  sˆ   € Ø�9‰9˜Š>Ø—9‘9“;ÐàÐ ¨¢Üð>óð ð �z‰z‰ˆˆ1Ø×!Ñ! 1 a &°·
±
ÀÐ!ÓFˆØ�	‰	×ÑÑVÈÏÉÌÓVÔWØˆ
rQ   c                 óž   — | j                  | j                  | j                  ¬«      }|j                  j	                  | j                  «       |S ©Nrœ   )r    r!   r"   r(   rK   rü   s     r;   r   z_dok_base.copyÁ  s:   € Ø×!Ñ! $§*¡*°D·J±JÐ!Ó?ˆØ�	‰	×Ñ˜Ÿ™Ô$Øˆ
rQ   c                óú   — t         j                  ||«      }t        t        t	        |«      «      t
        «      rt        d„ t        |Ž D «       «      }nt        |«      dz   f} | |t        |«      ¬«      }||_	        |S )Nc              3   ó8   K  — | ]  }t        |«      d z   –— Œ y­w)r   N)Úmax)rA   rB   s     r;   rD   z%_dok_base.fromkeys.<locals>.<genexpr>Ì  s   è ø€ Ð<±)¨3œ#˜c›( Q�,±)ùs   ‚r   rœ   )
rE   Úfromkeysr$   ÚnextÚiterr%   rJ   r.  ru   r(   )ÚclsÚiterablerO   Útmpr!   r	  s         r;   r/  z_dok_base.fromkeysÈ  sc   € ä�m‰m˜H eÓ,ˆÜ”dœ4 ›9“o¤uÔ-ÜÑ<´#°s±)Ó<Ó<‰Eä˜“X ‘\�OˆEÙ�U¤$ u£+Ô.ˆØˆŒØˆrQ   c                 ó  ‡‡— | j                   Š‰dk(  r'| j                  | j                  | j                  ¬«      S | j	                  t        | j                  «      ¬«      Št        j                  | j                  «       | j                  ‰¬«      }| j                  dkD  rt        | j                  «       Ž n| j                  «       f}t        ˆˆfd„|D «       «      }| j                  ||f| j                  | j                  ¬«      }d|_        |S )	Nr   rœ   )Úmaxval©r"   Úcountr   c              3   óN   •K  — | ]  }t        j                  |‰‰¬ «      –— Œ y­w)r7  N)r-   Úfromiter)rA   ÚixÚ	idx_dtypeÚnnzs     €€r;   rD   z"_dok_base.tocoo.<locals>.<genexpr>Ü  s"   øè ø€ ÐRÉTÀr”r—{‘{ 2¨Y¸c×BÐBÉTùs   ƒ"%r    T)r=  r4   r!   r"   Ú_get_index_dtyper.  r-   r:  r\   r1   rJ   r„   r%   Úhas_canonical_format)r5   r   rí   Úindsrì   ÚAr<  r=  s         @@r;   rë   z_dok_base.tocooÓ  sÌ   ù€ Ø�h‰hˆØ�!Š8Ø×&Ñ& t§z¡z¸¿¹Ð&ÓDÐDà×)Ñ)´°T·Z±Z³Ð)ÓAˆ	Ü�{‰{˜4Ÿ;™;›=°·
±
À#ÔFˆà$(§I¡I°¢MŒs�D—I‘I“KÑ ¸¿	¹	»°~ˆÜÔRÉTÓRÓRˆØ×Ñ  v °d·j±jÈÏ
É
ÐÓSˆØ!%ˆÔØˆrQ   c                 ó*   — |r| j                  «       S | S r_   r   ©r5   r   s     r;   r+   z_dok_base.todokã  s   € ÙØ—9‘9“;ÐØˆrQ   c                 óz   — | j                   dk(  rt        d«      ‚| j                  d¬«      j                  |¬«      S )Nr   z%tocsr() not valid for 1d sparse arrayFr   )r1   rS   rë   ÚtocscrC  s     r;   rE  z_dok_base.tocscê  s8   € Ø�9‰9˜Š>Ü%Ð&MÓNÐNØ�z‰z˜uˆzÓ%×+Ñ+°Ð+Ó6Ð6rQ   c                 óÒ  — t        || j                  ¬«      }t        |«      t        | j                  «      k7  rt        ‚| j
                  dk(  r:|d   }t        | j                  «      D ]  }||k\  sŒ	| j                  |= Œ || _        y |\  }}| j                  \  }}||k  s||k  r;t        | j                  «       «      D ]  \  }}||k\  s||k\  sŒ| j                  ||f= Œ! || _        y )Nr   r   éÿÿÿÿ)
r   r&   rG   r!   rS   r1   r—   r(   r'   r„   )r5   r!   ÚnewNr8   ÚnewMr‰   r(  rÁ   s           r;   Úresizez_dok_base.resizeñ  sÓ   € Ü˜E¨D¯N©NÔ;ˆÜˆu‹:œ˜TŸZ™Z›Ò(ä%Ð%à�9‰9˜Š>Ø˜‘9ˆDÜ˜$Ÿ*™*Ö%�Ø˜“9ØŸ
™
 1™ð &ð  ˆDŒKØà‰
ˆˆdØ�z‰z‰ˆˆ1Ø�!Š8�t˜a’xä˜TŸY™Y›[Ö)‘��1Ø˜’9  T£	ØŸ
™
 1 a 4Ñ(ð *ð ˆ�rQ   c                 óh  — t        j                  |«      }| j                  |k7  r{| j                  | j                  |¬«      }t        j                  t        | j                  j                  «       «      |¬«      }t        t        | j                  |«      «      |_        |S |r| j                  «       S | S r+  )r-   r"   r    r!   rŸ   r—   r(   r\   rE   rJ   r   )r5   r"   Úcastingr   r	  rí   s         r;   r,   z_dok_base.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“;ÐØˆrQ   )NNFr_   )g        )r   )NF)r   )F)ÚunsafeT)@rv   Ú
__module__Ú__qualname__Ú_formatr&   r#   rK   rV   r]   r   Ú__doc__ra   re   rg   ri   rk   rn   rq   rz   r}   r   r�   rF   r„   r\   rŽ   r’   r™   r–   r«   r±   r³   r¯   rÄ   rÈ   rË   rÎ   rµ   rØ   rÚ   rß   rá   rä   rô   r÷   rý   r  r
  r  r  r  r  r  r!  r)  r   Úclassmethodr/  rë   r+   rE  rJ  r,   Ú__classcell__)r"  s   @r;   r   r      s×  ø„ Ø€GØ€Ið%KÈTô %KòN"ó<ó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÷	rQ   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   )rZ   s    r;   r   r     s   € ô. �aœÓ$Ð$rQ   c                   ó   — e Zd ZdZy)r   a!  
    Dictionary Of Keys based sparse array.

    This is an efficient structure for constructing sparse
    arrays incrementally.

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

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

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

    Attributes
    ----------
    dtype : dtype
        Data type of the array
    shape : 2-tuple
        Shape of the array
    ndim : int
        Number of dimensions (this is always 2)
    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)rv   rN  rO  rQ  rY   rQ   r;   r   r   2  s   „ ò1rQ   r   c                   óH   — e Zd ZdZd„ Zd„ Z eee¬«      Zd„ Zd„ Z	d„ Z
d„ Zy	)
r   a/  
    Dictionary Of Keys based sparse matrix.

    This is an efficient structure for constructing sparse
    matrices incrementally.

    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   )rÆ   Úasformatr*   Ú__dict__)r5   r!   Ú
new_matrixs      r;   Ú	set_shapezdok_matrix.set_shape›  s0   € Ø—\‘\ %¨e�\Ó4×=Ñ=¸d¿k¹kÓJˆ
Ø"×+Ñ+ˆ�rQ   c                 ó   — | j                   S )zGet shape of a sparse matrix.)r'   r`   s    r;   Ú	get_shapezdok_matrix.get_shapeŸ  s   € à�{‰{ÐrQ   )ÚfgetÚfsetc                 ó6   — | j                   j                  «       S r_   )r(   rq   r`   s    r;   rq   zdok_matrix.__reversed__¥  s   € Ø�z‰z×&Ñ&Ó(Ð(rQ   c                 ór   — t        |t        «      r| j                  |j                  z  S | j                  |z  S r_   ©r$   r   r(   rö   s     r;   rz   zdok_matrix.__or__¨  ó.   € Ü�eœYÔ'Ø—:‘: §¡Ñ+Ð+Ø�z‰z˜EÑ!Ð!rQ   c                 ór   — t        |t        «      r| j                  |j                  z  S | j                  |z  S r_   rb  rö   s     r;   r}   zdok_matrix.__ror__­  rc  rQ   c                 ó’   — t        |t        «      r!| xj                  |j                  z  c_        | S | xj                  |z  c_        | S r_   rb  rö   s     r;   r   zdok_matrix.__ior__²  s:   € Ü�eœYÔ'Ø�JŠJ˜%Ÿ+™+Ñ%�Jð ˆð �JŠJ˜%Ñ�JØˆrQ   N)rv   rN  rO  rQ  r[  r]  Úpropertyr!   rq   rz   r}   r   rY   rQ   r;   r   r   g  s4   „ ñ1òf,òñ ˜)¨)Ô4€Eò)ò"ò
"ó
rQ   r   )rQ  Ú__docformat__Ú__all__rÖ   Únumpyr-   Ú_matrixr   Ú_baser   r	   r
   Ú_indexr   Ú_sputilsr   r   r   r   r   r   r   r   rE   r   r   r   r   rY   rQ   r;   Ú<module>rn     sj   ðÙ %à%€â
7€ã Û å ß -Ñ -Ý ÷;÷ ;ó ;ôC�˜ Tô CòL%ô62�	˜7ô 2ôjP�˜9õ PrQ   