§
    µ³Ùgø?  ã                   óf   — d Z ddlZddlmZ ddlmZmZ eej	        fZ
d„ Z G d„ d¦  «        Zd	„ ZdS )
z0Indexing mixin for sparse array/matrix classes.
é    Né   )Ú	isintlike)ÚsparrayÚissparsec                 ó’   — t          j        | |¦  «        \  }}| j        j        |j        _        |j        j        |j        _        ||fS )a   
    Same as np.broadcast_arrays(a, b) but old writeability rules.

    NumPy >= 1.17.0 transitions broadcast_arrays to return
    read-only arrays. Set writeability explicitly to avoid warnings.
    Retain the old writeability rules, as our Cython code assumes
    the old behavior.
    )ÚnpÚbroadcast_arraysÚflagsÚ	writeable)ÚaÚbÚxÚys       úI/granary/edev/quantum/lib/python3.11/site-packages/scipy/sparse/_index.pyÚ_broadcast_arraysr   
   sA   € õ Ô˜q !Ñ$Ô$�D€A€qØœÔ)€A„GÔØœÔ)€A„GÔØˆaˆ4€Kó    c                   ó¢   — e 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„ Zd„ Zd„ Zd„ ZdS )Ú
IndexMixinzS
    This class provides common dispatching and validation logic for indexing.
    c                 ó¸
  — |                       |¦  «        \  }}t          |¦  «        dk    �rL|d         }t          |t          j        ¦  «        r|j        dk    r|                     ¦   «         }t          |t          ¦  «        r|                      |¦  «        }n@t          |t          ¦  «        r|  
                    |¦  «        }n|                      |¦  «        }t          | t          ¦  «        s|S |j        dk    ri|dk    rct          |¦  «        dk    r|                      |g|| j        ¬¦  «        S t          |¦  «        dk    r|                      |gg|| j        ¬¦  «        S |                     |¦  «        S |\  }}t          |t          ¦  «        r¯t          |t          ¦  «        r|                      ||¦  «        }�n�t          |t          ¦  «        r|                      ||¦  «        }�np|j        dk    r|                      ||¦  «        }�nM|j        dk    r|                      ||¦  «        }�n*t)          d¦  «        ‚t          |t          ¦  «        r»t          |t          ¦  «        r|                      ||¦  «        }�nÙt          |t          ¦  «        rG|t          d ¦  «        k    r||k    r|                      ¦   «         }�n•|                      ||¦  «        }�n}|j        dk    r|                      ||¦  «        }�nZt)          d¦  «        ‚t          |t          ¦  «        r|                      ||¦  «        }�nt          |t          ¦  «        r|                      ||¦  «        }nò|j        dk    r`|j        d         dk    rO|j        dk    s|j        d         dk    r3|                      |d d …df         |                     ¦   «         ¦  «        }n‡t;          ||¦  «        \  }}|j        |j        k    rt)          d¦  «        ‚|j        dk    r4|                      t          j        |¦  «        j        | j        ¬¦  «        }n|                       ||¦  «        }t          | t          ¦  «        s`|dk    st          |¦  «        dk    r|j        dk    r|S t          |¦  «        dk    rd	|z   }||j        k    r|n|                     |¦  «        S |j        |k    r}| j!        d
k    r]t          |¦  «        dk    rJ|j        dk    r|  "                    |g|¬¦  «        S | #                    ¦   «                              |¦  «        S |                     |¦  «        S |S )Nr   r   © )ÚshapeÚdtypeé   zindex results in >2 dimensionsú'number of row and column indices differ©r   )r   Úlil©r   )$Ú_validate_indicesÚlenÚ
isinstancer   Úndarrayr   ÚitemÚ	INT_TYPESÚ_get_intÚsliceÚ
_get_sliceÚ
_get_arrayr   Ú	__class__r   ÚreshapeÚ_get_intXintÚ_get_intXsliceÚndimÚ_get_intXarrayÚ
IndexErrorÚ_get_sliceXintÚcopyÚ_get_sliceXsliceÚ_get_sliceXarrayÚ_get_arrayXintÚ_get_arrayXsliceÚ_get_columnXarrayÚravelr   ÚsizeÚ
atleast_2dÚ_get_arrayXarrayÚformatÚ_coo_containerÚtocoo)ÚselfÚkeyÚindexÚ	new_shapeÚidxÚresÚrowÚcols           r   Ú__getitem__zIndexMixin.__getitem__   s  € Ø×1Ò1°#Ñ6Ô6Ñˆˆyõ ˆu‰:Œ:˜Š?‰?Ø˜”(ˆCÝ˜#�rœzÑ*Ô*ð %Ø”9 ’?�?ØŸ(š(™*œ*�CÝ˜#�yÑ)Ô)ð +Ø—m’m CÑ(Ô(��Ý˜C¥Ñ'Ô'ð +Ø—o’o cÑ*Ô*��à—o’o cÑ*Ô*�õ ˜d¥GÑ,Ô,ð Ø�
àŒy˜BŠˆ 9°¢? ?Ý�y‘>”> QÒ&Ð&ØŸ>š>¨3¨%°yÈÌ
˜>ÑSÔSÐSÝ�y‘>”> QÒ&Ð&ØŸ>š>¨C¨5¨'¸È$Ì*˜>ÑUÔUÐUØ—;’;˜yÑ)Ô)Ð)ð ‰ˆˆSõ �c�9Ñ%Ô%ð )	:Ý˜#�yÑ)Ô)ð 	CØ×'Ò'¨¨SÑ1Ô1�‘Ý˜C¥Ñ'Ô'ð CØ×)Ò)¨#¨sÑ3Ô3�‘Ø”˜Q’�Ø×)Ò)¨#¨sÑ3Ô3�‘Ø”˜Q’�Ø×)Ò)¨#¨sÑ3Ô3�‘å Ð!AÑBÔBÐBÝ˜�UÑ#Ô#ð 	:Ý˜#�yÑ)Ô)ð 
CØ×)Ò)¨#¨sÑ3Ô3�‘Ý˜C¥Ñ'Ô'ð CØ�% ™+œ+Ò%Ð%¨#°ª*¨*ØŸ)š)™+œ+�C‘Cà×/Ò/°°SÑ9Ô9�C‘CØ”˜Q’�Ø×+Ò+¨C°Ñ5Ô5�‘å Ð!AÑBÔBÐBå˜#�yÑ)Ô)ð :Ø×)Ò)¨#¨sÑ3Ô3�‘Ý˜C¥Ñ'Ô'ð :Ø×+Ò+¨C°Ñ5Ô5��à”(˜a’-�- C¤I¨a¤L°AÒ$5Ð$5Ø”X ’]�] c¤i°¤l°aÒ&7Ð&7à×,Ò,¨S°°°°A°¬Y¸¿	º	¹¼ÑDÔD��õ -¨S°#Ñ6Ô6‘��SØ”9 ¤	Ò)Ð)Ý$Ð%NÑOÔOÐOØ”8˜q’=�=ØŸ.š.­¬°sÑ);Ô);Ô)AÈÌ˜.ÑTÔT�C�Cà×/Ò/°°SÑ9Ô9�Cõ ˜$¥Ñ(Ô(ð 	MØ˜BŠˆ¥3 y¡>¤>°QÒ#6Ð#6¸3¼8Àqº=¸=à�
Ý�9‰~Œ~ Ò"Ð"à  9Ñ,�	à# s¤yÒ0Ð0�3�3°c·k²kÀ)Ñ6LÔ6LÐLð Œ9˜	Ò!Ð!àŒ{˜eÒ#Ð#­¨I©¬¸!Ò(;Ð(;Ø”9 ’?�?Ø×.Ò.°¨u¸iÐ.ÑHÔHÐHØ—y’y‘{”{×*Ò*¨9Ñ5Ô5Ð5Ø—;’;˜yÑ)Ô)Ð)Øˆ
r   c                 óœ
  — |                       |¦  «        \  }}t          |¦  «        dk    �rÅ|d         }t          |¦  «        r|                     ¦   «         }nt	          j        || j        ¬¦  «        }t          |t          ¦  «        r=|j	        dk    rt          d¦  «        ‚|                      ||j        d         ¦  «         d S t          |t          ¦  «        r¤t          |                     | j        d         ¦  «        Ž }t          |¦  «        }|dk    r4|j	        dk    r)|                      |d         |j        d         ¦  «         d S t	          j        |                     | j        d         ¦  «        Ž }|j        }n|                     ¦   «         j        }|                     ¦   «         j        |k    rt	          j        ||j        ¦  «        }|j	        dk    r|                      ||¦  «         d S |\  }	}
t          |	t          ¦  «        rnt          |
t          ¦  «        rYt	          j        || j        ¬¦  «        }|j	        dk    rt          d¦  «        ‚|                      |	|
|j        d         ¦  «         d S t          |	t          ¦  «        r7t	          j        |	                     | j        d         ¦  «        Ž d d …d f         }	nt	          j        |	¦  «        }	t          |
t          ¦  «        rNt	          j        |
                     | j        d         ¦  «        Ž d d d …f         }
|	j        dk    r|	d d …d f         }	nt	          j        |
¦  «        }
t1          |	|
¦  «        \  }}|j        |j        k    rt3          d¦  «        ‚t          |¦  «        �rd|j        v rd S |j        dk    r|d          }|d          }|                     d¬¦  «                             |j        d¬¦  «        }|j        d         dk    o|j        d         dk    }|j        d         dk    o|j        d         dk    }|s|j        d         |j        d         k    r|s+|j        d         |j        d         k    st          d	¦  «        ‚|                     ¦   «          |                      |||¦  «         d S t	          j        || j        ¬¦  «        }|                     ¦   «         j        |                     ¦   «         j        k    rt	          j        ||j        ¦  «        }|j	        dk    rd S |                     |j        ¦  «        }|                      |||¦  «         d S )
Nr   r   r   z&Trying to assign a sequence to an itemr   F)r0   Tzshape mismatch in assignment) r   r   r   Útoarrayr   Úasarrayr   r    r#   r7   Ú
ValueErrorÚ_set_intÚflatr%   ÚrangeÚindicesr   ÚarangeÚsqueezeÚbroadcast_toÚ
_set_arrayÚ_set_intXintÚ
atleast_1dr,   r   r.   r<   r)   Ú_shape_as_2dÚsum_duplicatesÚ_set_arrayXarray_sparseÚ_set_arrayXarray)r=   r>   r   r?   Ú_rA   Ú	idx_rangeÚNÚ	idx_shaperC   rD   ÚiÚjÚbroadcast_rowÚbroadcast_cols                  r   Ú__setitem__zIndexMixin.__setitem__|   s¸  € Ø×)Ò)¨#Ñ.Ô.‰ˆˆqõ ˆu‰:Œ:˜Š?‰?Ø˜”(ˆCå˜‰{Œ{ð 4Ø—I’I‘K”K��å”J˜q¨¬
Ð3Ñ3Ô3�å˜#�yÑ)Ô)ð Ø”6˜Q’;�;Ý$Ð%MÑNÔNÐNØ—’˜c 1¤6¨!¤9Ñ-Ô-Ð-Ø�å˜#�uÑ%Ô%ð 0õ " 3§;¢;¨t¬z¸!¬}Ñ#=Ô#=Ð>�	Ý˜	‘N”N�Ø˜’6�6˜aœf¨šk˜kØ—M’M )¨A¤,°´°q´	Ñ:Ô:Ð:Ø�FÝ”i §¢¨T¬Z¸¬]Ñ!;Ô!;Ð<�ØœI�	�	àŸKšK™MœMÔ/�	à�yŠy‰{Œ{Ô  IÒ-Ð-Ý”O A s¤yÑ1Ô1�ØŒv˜Š{ˆ{Ø—’  QÑ'Ô'Ð'ØˆFð ‰ˆˆSå�c�9Ñ%Ô%ð 	­*°S½)Ñ*DÔ*Dð 	Ý”
˜1 D¤JÐ/Ñ/Ô/ˆAØŒv˜Š{ˆ{Ý Ð!IÑJÔJÐJØ×Ò˜c 3¨¬¨q¬	Ñ2Ô2Ð2ØˆFå�c�5Ñ!Ô!ð 	%Ý”)˜SŸ[š[¨¬°A¬Ñ7Ô7Ð8¸¸¸¸D¸ÔAˆCˆCå”- Ñ$Ô$ˆCå�c�5Ñ!Ô!ð 	%Ý”)˜SŸ[š[¨¬°A¬Ñ7Ô7Ð8¸¸q¸q¸q¸ÔAˆCØŒx˜1Š}ˆ}Ø˜!˜!˜!˜T˜'”l�øå”- Ñ$Ô$ˆCå   cÑ*Ô*‰ˆˆ1ØŒ7�a”gÒÐÝÐFÑGÔGÐGå�A‰;Œ;ñ 	+Ø�A”Gˆ|ˆ|Ø�ØŒv˜Š{ˆ{à�d”G�Ø�d”G�Ø—’˜U�Ñ#Ô#×+Ò+¨A¬NÀÐ+ÑFÔFˆAØœG AœJ¨!šOÐ?°´¸´
¸a²ˆMØœG AœJ¨!šOÐ?°´¸´
¸a²ˆMØ"ð A a¤g¨a¤j°A´G¸A´JÒ&>Ð&>Ø"ð '?Ø&'¤g¨a¤j°A´G¸A´JÒ&>Ð&>Ý Ð!?Ñ@Ô@Ð@Ø×ÒÑÔÐØ×(Ò(¨¨A¨qÑ1Ô1Ð1Ð1Ð1õ ”
˜1 D¤JÐ/Ñ/Ô/ˆAØ�yŠy‰{Œ{Ô  A§I¢I¡K¤KÔ$5Ò5Ð5Ý”O A q¤wÑ/Ô/�ØŒv˜Š{ˆ{Ø�Ø—	’	˜!œ'Ñ"Ô"ˆAØ×!Ò! ! Q¨Ñ*Ô*Ð*Ð*Ð*r   c           	      ó
  ‡‡— |t           u rt          d¦  «        f| j        z  | j        fS t	          |t
          ¦  «        s|g}d}g }d}t          |¦  «        D ]ú\  }}|t           u r|�t          d¦  «        ‚|}Œ"|€|                     |¦  «         Œ:t	          |t          ¦  «        st          |¦  «        r|                     |¦  «         |dz  }Œyt          || j        ¦  «        x}� |                     |¦  «         ||j        z  }Œ°t          |¦  «        rt          d¦  «        ‚|                     t          j        |¦  «        ¦  «         |dz  }Œû| j        |z
  t          d¦  «        gz  }|r0|€|                     |¦  «         n|d|…         |z   ||d…         z   }g }	d}
g Šg }t          |¦  «        D �]\  }}|€|	                     d¦  «         Œt	          |t          ¦  «        rf‰                     |¦  «         | j        |
         }t!          t#          |                     |¦  «        Ž ¦  «        }|	                     |¦  «         |
dz  }
Œ™t          |¦  «        rf| j        |
         }| |cxk    r|k     sn t          d|› d�¦  «        ‚t'          |dk     r||z   n|¦  «        }‰                     |¦  «         |
dz  }
�Œ|j        j        dk    r‘|}|
|j        z   }| j        |
|…         }|j        |k    rt          d	|› d
|› d|j        › �¦  «        ‚‰                     |                     ¦   «         ¦  «         |                     t#          |
|¦  «        ¦  «         |}
�Œ¯| j        |
         }|                      ||¦  «        }‰                     |¦  «         |                     |
¦  «         |
dz  }
�Œ|
| j        k    rt          d| j        › d|
› d�¦  «        ‚t!          |¦  «        dk    r‰t1          ˆfd„|D ¦   «         Ž Št3          ˆfd„‰dd…         D ¦   «         ¦  «        r3d                     d„ ‰D ¦   «         ¦  «        }d|› �}t          |¦  «        ‚t7          ‰d         j        ¦  «        |	z   }	nMt!          |¦  «        dk    r:|d         }t7          ‰|         j        ¦  «        }|	d|…         |z   |	|d…         z   }	t!          |	¦  «        x}dk    rt          d|› d�¦  «        ‚t          ‰¦  «        t          |	¦  «        fS )z8Returns two tuples: (index tuple, requested shape tuple)Nr   z(an index can only have a single ellipsisr   zoIndexing with sparse matrices is not supported except boolean indexing where matrix and index are equal shapes.zindex (z) out of ranger   zbool index z has shape z instead of zinvalid index ndim. Array is zD. Index needs ÚDc              3   ó(   •K  — | ]}‰|         V — Œd S ©Nr   )Ú.0r\   r?   s     €r   ú	<genexpr>z/IndexMixin._validate_indices.<locals>.<genexpr>)  s'   øè è € Ð,MÐ,M¸!¨U°1¬XÐ,MÐ,MÐ,MÐ,MÐ,MÐ,Mr   c              3   óD   •K  — | ]}‰d          j         |j         k    V — ŒdS )r   Nr   )re   ÚixÚ
idx_arrayss     €r   rf   z/IndexMixin._validate_indices.<locals>.<genexpr>*  s1   øè è € ÐLÐL°r�:˜a”=Ô&¨"¬(Ò2ÐLÐLÐLÐLÐLÐLr   ú c              3   ó>   K  — | ]}t          |j        ¦  «        V — Œd S rd   )Ústrr   )re   rh   s     r   rf   z/IndexMixin._validate_indices.<locals>.<genexpr>+  s*   è è € Ð!EÐ!E°B¥# b¤h¡-¤-Ð!EÐ!EÐ!EÐ!EÐ!EÐ!Er   zLshape mismatch: indexing arrays could not be broadcast together with shapes r   z*Only 1D or 2D arrays allowed. Index makes )ÚEllipsisr%   r,   r   r    ÚtupleÚ	enumerater.   Úappendr   Ú_compatible_boolean_indexr   r   rH   ÚextendÚ_shaper   rL   rM   Úintr   ÚkindÚnonzeroÚ
_asindicesr   ÚanyÚjoinÚlist)r=   r>   Ú	ellps_posÚ	index_1stÚprelim_ndimr\   rA   rh   Úellip_slicesr[   Ú
index_ndimÚarray_indicesÚMsÚ	len_slicerZ   Útmp_ndimÚ	mid_shapeÚshapesÚmsgÚ	arr_indexÚ	arr_shaper,   ri   r?   s                         @@r   r   zIndexMixin._validate_indicesÔ   s   øø€ ð •(ˆ?ˆ?Ý˜$‘K”K�> D¤IÑ-¨t¬zÐ9Ð9å˜#�uÑ%Ô%ð 	Ø�%ˆCàˆ	Øˆ	ØˆÝ ‘n”nð 	!ð 	!‰FˆAˆsØ•hˆˆØÐ(Ý$Ð%OÑPÔPÐPØ�	�	Ø�Ø× Ò  Ñ%Ô%Ð%Ð%Ý˜C¥Ñ'Ô'ð !­9°S©>¬>ð !Ø× Ò  Ñ%Ô%Ð%Ø˜qÑ ��Ý1°#°t´yÑAÔAÐA�"ÐNØ× Ò  Ñ$Ô$Ð$Ø˜rœwÑ&��Ý˜#‘”ð !å ð(ñ)ô )ð )ð
 × Ò ¥¤¨C¡¤Ñ1Ô1Ð1Ø˜qÑ ��Øœ	 KÑ/µE¸$±K´K°=Ñ@ˆØð 	YØÐ Ø× Ò  Ñ.Ô.Ð.Ð.à% j y jÔ1°LÑ@À9ÈYÈZÈZÔCXÑX�	ð ˆ	Øˆ
ØˆØˆÝ 	Ñ*Ô*ð !	 ñ !	 ‰FˆAˆsØˆ{Ø× Ò  Ñ#Ô#Ð#Ð#Ý˜C¥Ñ'Ô'ð  Ø—’˜SÑ!Ô!Ð!Ø”[ Ô,�Ý¥ s§{¢{°2¡¤Ð 7Ñ8Ô8�	Ø× Ò  Ñ+Ô+Ð+Ø˜a‘�
�
Ý˜3‘”ð  Ø”K 
Ô+�Ø˜˜c˜˜š˜ Aš˜˜˜Ý$Ð%B¨sÐ%BÐ%BÐ%BÑCÔCÐCÝ S¨1¢W W˜# ™'˜'°#Ñ6Ô6�Ø—’˜SÑ!Ô!Ð!Ø˜a‘�
‘
à”” 3Ò&Ð&Ø�Ø%¨¬Ñ/�Ø œK¨
°8Ð(;Ô<�	Ø”8˜yÒ(Ð(Ý$ØU aÐUÐU°IÐUÐUÈ2Ì8ÐUÐUñô ð ð —’˜RŸZšZ™\œ\Ñ*Ô*Ð*Ø×$Ò$¥U¨:°xÑ%@Ô%@ÑAÔAÐAØ%�
‘
à”K 
Ô+�Ø—o’o c¨1Ñ-Ô-�Ø—’˜SÑ!Ô!Ð!Ø×$Ò$ ZÑ0Ô0Ð0Ø˜a‘�
‘
Ø˜œ	Ò!Ð!ÝØW°´	ÐWÐWÈ*ÐWÐWÐWñô ð õ ˆ}ÑÔ Ò!Ð!Ý*Ð,MÐ,MÐ,MÐ,M¸}Ð,MÑ,MÔ,MÐNˆJÝÐLÐLÐLÐL¸ZÈÈÈ¼^ÐLÑLÔLÑLÔLð &ØŸšÐ!EÐ!E¸*Ð!EÑ!EÔ!EÑEÔE�ð8Ø/5ð8ð 8�å  ‘o”oÐ%å˜Z¨œ]Ô0Ñ1Ô1°IÑ=ˆIˆIÝ�ÑÔ 1Ò$Ð$Ø% aÔ(ˆIÝ˜U 9Ô-Ô3Ñ4Ô4ˆIØ! * 9 *Ô-°	Ñ9¸IÀiÀjÀjÔ<QÑQˆIÝ˜	‘N”NÐ"ˆD aÒ'Ð'ÝÐQÈ$ÐQÐQÐQÑRÔRÐRÝ�U‰|Œ|�U 9Ñ-Ô-Ð-Ð-r   c                 ó  — 	 t          j        |¦  «        }n/# t          t          t          f$ r}t          d¦  «        |‚d}~ww xY w|j        dvrt          d¦  «        ‚|j        dk    r|S |                     ¦   «         }||k    rt          d|z  ¦  «        ‚| 	                    ¦   «         }|dk     rQ|| k     rt          d|z  ¦  «        ‚||u s|j
        j        s|                     ¦   «         }||dk     xx         |z  cc<   |S )z“Convert `idx` to a valid index for an axis with a given length.

        Subclasses that need special validation can override this method.
        zinvalid indexN)r   r   zIndex dimension must be 1 or 2r   úindex (%d) out of range)r   rH   rI   Ú	TypeErrorÚMemoryErrorr.   r,   r7   ÚmaxÚminr
   Úowndatar0   )r=   rA   Úlengthr   ÚeÚmax_indxÚmin_indxs          r   rw   zIndexMixin._asindices9  s  € ð
	5Ý”
˜3‘”ˆAˆAøÝ�I¥{Ð3ð 	5ð 	5ð 	5Ý˜_Ñ-Ô-°1Ð4øøøøð	5øøøð Œ6˜ÐÐÝÐ=Ñ>Ô>Ð>àŒ6�QŠ;ˆ;ØˆHð —5’5‘7”7ˆØ�vÒÐÝÐ6¸ÑAÑBÔBÐBà—5’5‘7”7ˆØ�aŠ<ˆ<Ø˜6˜'Ò!Ð!Ý Ð!:¸XÑ!EÑFÔFÐFØ�Cˆxˆx˜qœwœˆxØ—F’F‘H”H�Øˆa�!ŠeˆHˆHŒH˜ÑˆHˆH‰HØˆs   ‚ —A®>¾Ac                 óÎ   — | j         \  }}t          |¦  «        }|| k     s||k    rt          d|z  ¦  «        ‚|dk     r||z  }|                      |t	          d¦  «        ¦  «        S )zGReturn a copy of row i of the matrix, as a (1 x n) row vector.
        rŠ   r   N)r   rt   r.   r+   r%   ©r=   r\   ÚMrZ   s       r   Ú_getrowzIndexMixin._getrowW  so   € ð Œz‰ˆˆ1Ý�‰FŒFˆØ�ˆrŠ6ˆ6�Q˜!’V�VÝÐ6¸Ñ:Ñ;Ô;Ð;ØˆqŠ5ˆ5Ø�‰FˆAØ×"Ò" 1¥e¨D¡k¤kÑ2Ô2Ð2r   c                 óÎ   — | j         \  }}t          |¦  «        }|| k     s||k    rt          d|z  ¦  «        ‚|dk     r||z  }|                      t	          d¦  «        |¦  «        S )zMReturn a copy of column i of the matrix, as a (m x 1) column vector.
        rŠ   r   N)r   rt   r.   r/   r%   r•   s       r   Ú_getcolzIndexMixin._getcolb  so   € ð Œz‰ˆˆ1Ý�‰FŒFˆØ�ˆrŠ6ˆ6�Q˜!’V�VÝÐ6¸Ñ:Ñ;Ô;Ð;ØˆqŠ5ˆ5Ø�‰FˆAØ×"Ò"¥5¨¡;¤;°Ñ2Ô2Ð2r   c                 ó   — t          ¦   «         ‚rd   ©ÚNotImplementedError©r=   rA   s     r   r$   zIndexMixin._get_intm  ó   € Ý!Ñ#Ô#Ð#r   c                 ó   — t          ¦   «         ‚rd   r›   r�   s     r   r&   zIndexMixin._get_slicep  rž   r   c                 ó   — t          ¦   «         ‚rd   r›   r�   s     r   r'   zIndexMixin._get_arrays  rž   r   c                 ó   — t          ¦   «         ‚rd   r›   ©r=   rC   rD   s      r   r*   zIndexMixin._get_intXintv  rž   r   c                 ó   — t          ¦   «         ‚rd   r›   r¢   s      r   r-   zIndexMixin._get_intXarrayy  rž   r   c                 ó   — t          ¦   «         ‚rd   r›   r¢   s      r   r+   zIndexMixin._get_intXslice|  rž   r   c                 ó   — t          ¦   «         ‚rd   r›   r¢   s      r   r/   zIndexMixin._get_sliceXint  rž   r   c                 ó   — t          ¦   «         ‚rd   r›   r¢   s      r   r1   zIndexMixin._get_sliceXslice‚  rž   r   c                 ó   — t          ¦   «         ‚rd   r›   r¢   s      r   r2   zIndexMixin._get_sliceXarray…  rž   r   c                 ó   — t          ¦   «         ‚rd   r›   r¢   s      r   r3   zIndexMixin._get_arrayXintˆ  rž   r   c                 ó   — t          ¦   «         ‚rd   r›   r¢   s      r   r4   zIndexMixin._get_arrayXslice‹  rž   r   c                 ó   — t          ¦   «         ‚rd   r›   r¢   s      r   r5   zIndexMixin._get_columnXarrayŽ  rž   r   c                 ó   — t          ¦   «         ‚rd   r›   r¢   s      r   r9   zIndexMixin._get_arrayXarray‘  rž   r   c                 ó   — t          ¦   «         ‚rd   r›   ©r=   rA   r   s      r   rJ   zIndexMixin._set_int”  rž   r   c                 ó   — t          ¦   «         ‚rd   r›   r­   s      r   rQ   zIndexMixin._set_array—  rž   r   c                 ó   — t          ¦   «         ‚rd   r›   ©r=   rC   rD   r   s       r   rR   zIndexMixin._set_intXintš  rž   r   c                 ó   — t          ¦   «         ‚rd   r›   r°   s       r   rW   zIndexMixin._set_arrayXarray�  rž   r   c                 ó´   — t          j        |                     ¦   «         | j        ¬¦  «        }t	          ||¦  «        \  }}|                      |||¦  «         d S )Nr   )r   rH   rG   r   r   rW   )r=   rC   rD   r   rX   s        r   rV   z"IndexMixin._set_arrayXarray_sparse   sQ   € åŒJ�q—y’y‘{”{¨$¬*Ð5Ñ5Ô5ˆÝ   CÑ(Ô(‰ˆˆ1Ø×Ò˜c 3¨Ñ*Ô*Ð*Ð*Ð*r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rE   r`   r   rw   r—   r™   r$   r&   r'   r*   r-   r+   r/   r1   r2   r3   r4   r5   r9   rJ   rQ   rR   rW   rV   r   r   r   r   r      s’  € € € € € ðð ð]ð ]ð ]ð~V+ð V+ð V+ðpc.ð c.ð c.ðJð ð ð<	3ð 	3ð 	3ð	3ð 	3ð 	3ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð+ð +ð +ð +ð +r   r   c                 ób  — t          | d¦  «        sŒ	 t          t          | ¦  «        d¦  «        }t          |¦  «        D ]6}t	          |t
          ¦  «        r n t          t          |¦  «        d¦  «        }Œ7dS n# t          $ r Y dS w xY wt          j        | ¦  «        } | j	        j
        dk    r| S dS )zICheck for boolean array or array-like. peek before asarray for array-liker,   Nr   )ÚhasattrÚnextÚiterrL   r    Úboolr‹   r   Ú
asanyarrayr   ru   )rA   Údesired_ndimrh   rX   s       r   rq   rq   §  sÍ   € õ �3˜ÑÔð !ð		Ý•d˜3‘i”i Ñ&Ô&ˆBÝ˜<Ñ(Ô(ð ð �Ý˜b¥$Ñ'Ô'ð Ø�EÝ�$˜r™(œ( DÑ)Ô)��à�tð øõ ð 	ð 	ð 	Ø�4�4ð	øøøõ Œm˜CÑ Ô ˆà
„y„~˜ÒÐØˆ
Øˆ4s   ’A#A8 Á8
BÂB)r¶   Únumpyr   Ú_sputilsr   Ú_baser   r   rt   Úintegerr#   r   r   rq   r   r   r   ú<module>rÂ      sª   ððð à Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $à�"”*Ð€	ðð ð ðK+ð K+ð K+ð K+ð K+ñ K+ô K+ð K+ð\ð ð ð ð r   