§
    ¡éUgß3  ã                  ó    — d Z ddlmZ ddlmZ ddlZddlmZ erddl	mZ
 eej        fZd„ Z G d„ d	¦  «        Zdd„Zd„ Zd„ Zdd„Zd„ Zd„ ZdS )z0Indexing mixin for sparse array/matrix classes.
é    )Úannotations)ÚTYPE_CHECKINGNé   )Ú	isintlikec                ó’   — 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       úR/var/www/surfInsights/venv3-11/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S )Ú
IndexMixinzS
    This class provides common dispatching and validation logic for indexing.
    c                óP   — ddl m} t          | |¦  «        rt          d¦  «        ‚dS )zçWe do not currently support 1D sparse arrays.

        This function is called each time that a 1D array would
        result, raising an error instead.

        Once 1D sparse arrays are implemented, it should be removed.
        r   )ÚsparrayzcWe have not yet implemented 1D sparse slices; please index using explicit indices, e.g. `x[:, [0]]`N)Úscipy.sparser   Ú
isinstanceÚNotImplementedError)Úselfr   s     r   Ú_raise_on_1d_array_slicez#IndexMixin._raise_on_1d_array_slice#   sJ   € ð 	)Ð(Ð(Ð(Ð(Ð(å�d˜GÑ$Ô$ð 	Ý%ðHñô ð ð	ð 	r   c                ó  — |                       |¦  «        \  }}t          |t          ¦  «        rÏt          |t          ¦  «        r|                      ||¦  «        S t          |t          ¦  «        r*|                      ¦   «          |                      ||¦  «        S |j        dk    r*|                      ¦   «          |                      ||¦  «        S |j        dk    r|                      ||¦  «        S t          d¦  «        ‚t          |t          ¦  «        rÇt          |t          ¦  «        r*|                      ¦   «          |  
                    ||¦  «        S t          |t          ¦  «        rC|t	          d ¦  «        k    r||k    r|                      ¦   «         S |                      ||¦  «        S |j        dk    r|                      ||¦  «        S t          d¦  «        ‚|j        dk    rkt          |t          ¦  «        r*|                      ¦   «          |                      ||¦  «        S t          |t          ¦  «        r|                      ||¦  «        S n®t          |t          ¦  «        r|                      ||¦  «        S t          |t          ¦  «        rt          d¦  «        ‚|j        d         dk    rN|j        dk    s|j        d         dk    r2|                      |d d …df         |                     ¦   «         ¦  «        S t'          ||¦  «        \  }}|j        |j        k    rt          d¦  «        ‚|j        dk    r3|                      t-          j        |¦  «        j        | j        ¬¦  «        S |                      ||¦  «        S )Nr   é   zindex results in >2 dimensionsr   ú'number of row and column indices differ©Údtype)Ú_validate_indicesr   Ú	INT_TYPESÚ_get_intXintÚslicer   Ú_get_intXsliceÚndimÚ_get_intXarrayÚ
IndexErrorÚ_get_sliceXintÚcopyÚ_get_sliceXsliceÚ_get_sliceXarrayÚ_get_arrayXintÚ_get_arrayXsliceÚshapeÚ_get_columnXarrayÚravelr   ÚsizeÚ	__class__r   Ú
atleast_2dr    Ú_get_arrayXarray)r   ÚkeyÚrowÚcols       r   Ú__getitem__zIndexMixin.__getitem__3   sL  € Ø×)Ò)¨#Ñ.Ô.‰ˆˆSõ �c�9Ñ%Ô%ð $	EÝ˜#�yÑ)Ô)ð 	5Ø×(Ò(¨¨cÑ2Ô2Ð2Ý˜C¥Ñ'Ô'ð 5Ø×-Ò-Ñ/Ô/Ð/Ø×*Ò*¨3°Ñ4Ô4Ð4Ø”˜Q’�Ø×-Ò-Ñ/Ô/Ð/Ø×*Ò*¨3°Ñ4Ô4Ð4Ø”˜Q’�Ø×*Ò*¨3°Ñ4Ô4Ð4ÝÐ=Ñ>Ô>Ð>Ý˜�UÑ#Ô#ð 	EÝ˜#�yÑ)Ô)ð 7Ø×-Ò-Ñ/Ô/Ð/Ø×*Ò*¨3°Ñ4Ô4Ð4Ý˜C¥Ñ'Ô'ð 7Ø�% ™+œ+Ò%Ð%¨#°ª*¨*ØŸ9š9™;œ;Ð&Ø×,Ò,¨S°#Ñ6Ô6Ð6Ø”˜Q’�Ø×,Ò,¨S°#Ñ6Ô6Ð6ÝÐ=Ñ>Ô>Ð>ØŒX˜Š]ˆ]Ý˜#�yÑ)Ô)ð 7Ø×-Ò-Ñ/Ô/Ð/Ø×*Ò*¨3°Ñ4Ô4Ð4Ý˜C¥Ñ'Ô'ð 7Ø×,Ò,¨S°#Ñ6Ô6Ð6ð7õ ˜#�yÑ)Ô)ð EØ×*Ò*¨3°Ñ4Ô4Ð4Ý˜C¥Ñ'Ô'ð EÝ Ð!AÑBÔBÐBØ”˜1” Ò"Ð"¨¬°Aª¨¸¼À1¼ÈÒ9JÐ9Jà×-Ò-¨c°!°!°!°A°#¬h¸¿	º	¹¼ÑDÔDÐDõ % S¨#Ñ.Ô.‰ˆˆSØŒ9˜œ	Ò!Ð!ÝÐFÑGÔGÐGØŒ8�qŠ=ˆ=Ø—>’>¥"¤-°Ñ"4Ô"4Ô":À$Ä*�>ÑMÔMÐMØ×$Ò$ S¨#Ñ.Ô.Ð.r   c                óâ  — |                       |¦  «        \  }}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        |¦  «        }t!          ||¦  «        \  }}|j        |j        k    rt#          d¦  «        ‚ddlm}  ||¦  «        �r|j        dk    r|d          }|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¦  «        ‚|j        d         dk    s|j        d         dk    rd S |                     d¬	¦  «        }|                     ¦   «          |                      |||¦  «         d S t          j        || j        ¬¦  «        }|                     ¦   «         j        |                     ¦   «         j        k    rt          j        ||j        ¦  «        }|j        dk    rd S |                     |j        ¦  «        }|                      |||¦  «         d S )
Nr   r   z&Trying to assign a sequence to an itemr   r   ©Úissparsezshape mismatch in assignmentT)r*   )r!   r   r"   r   Úasarrayr    r2   Ú
ValueErrorÚ_set_intXintÚflatr$   ÚarangeÚindicesr/   Ú
atleast_1dr&   r   r(   Ú_baser<   ÚtocooÚsum_duplicatesÚ_set_arrayXarray_sparseÚsqueezeÚbroadcast_toÚreshapeÚ_set_arrayXarray)
r   r6   r   r7   r8   ÚiÚjr<   Úbroadcast_rowÚbroadcast_cols
             r   Ú__setitem__zIndexMixin.__setitem__e   s1  € Ø×)Ò)¨#Ñ.Ô.‰ˆˆ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à#Ð#Ð#Ð#Ð#Ð#Øˆ8�A‰;Œ;ñ 	+ØŒv˜Š{ˆ{à�d”G�Ø�d”G�Øœ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Ò&>Ð&>Ý Ð!?Ñ@Ô@Ð@ØŒw�qŒz˜QŠˆ !¤'¨!¤*°¢/ /Ø�Ø—’˜T�Ñ"Ô"ˆAØ×ÒÑÔÐØ×(Ò(¨¨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                ó~  — ddl m} t          ||t          j        f¦  «        rR|j        dk    rG|j        j        dk    r7|j        | j        k    rt          d¦  «        ‚| 
                    ¦   «         \  }}nt          |¦  «        \  }}| j        \  }}dd„}t          |¦  «        r:t          |¦  «        }|| k     s||k    rt          d|z  ¦  «        ‚|dk     r||z  }nJt          |¦  «        x}� |||d¦  «        }n+t          |t          ¦  «        s|                      ||¦  «        }t          |¦  «        r:t          |¦  «        }|| k     s||k    rt          d|z  ¦  «        ‚|dk     r||z  }nJt          |¦  «        x}	� ||	|d¦  «        }n+t          |t          ¦  «        s|                      ||¦  «        }||fS )Nr   )Ú_spbaser   r   z.boolean index shape does not match array shapeÚidxúnpt.NDArray[np.bool_]Ú	axis_sizeÚintÚ	axis_nameÚstrÚreturnúnpt.NDArray[np.int_]c                ó�   — t          | ¦  «        |k    r%t          d|› dt          | ¦  «        › d|› �¦  «        ‚t          | ¦  «        S )Nzboolean z index has incorrect length: z instead of )Úlenr(   Ú_boolean_index_to_array)rS   rU   rW   s      r   Ú_validate_bool_idxz8IndexMixin._validate_indices.<locals>._validate_bool_idx¥   sg   € õ
 �3‰xŒx˜9Ò$Ð$Ý ð.˜yð .ð .ÅsÈ3ÁxÄxð .ð .Ø"+ð.ð .ñô ð õ +¨3Ñ/Ô/Ð/r   zrow index (%d) out of ranger   r7   zcolumn index (%d) out of rangeÚcolumn)rS   rT   rU   rV   rW   rX   rY   rZ   )rD   rR   r   r   Úndarrayr&   r    Úkindr/   r(   ÚnonzeroÚ_unpack_indexr   rV   Ú_compatible_boolean_indexr$   Ú
_asindices)
r   r6   rR   r7   r8   ÚMÚNr^   Úbool_rowÚbool_cols
             r   r!   zIndexMixin._validate_indices™   sô  € à"Ð"Ð"Ð"Ð"Ð"Ý�s˜W¥b¤jÐ1Ñ2Ô2ð 	*Ø”˜A’� #¤)¤.°CÒ"7Ð"7ØŒy˜DœJÒ&Ð&Ý Ð!QÑRÔRÐRØ—{’{‘}”}‰HˆC��å$ SÑ)Ô)‰HˆC�ØŒz‰ˆˆ1ð
	0ð 
	0ð 
	0ð 
	0õ �S‰>Œ>ð 		*Ý�c‘(”(ˆCØ�a�RŠxˆx˜3 !š8˜8Ý Ð!>ÀÑ!DÑEÔEÐEØ�QŠwˆwØ�q‘�øÝ3°CÑ8Ô8Ð8ˆhÐEØ$Ð$ X¨q°%Ñ8Ô8ˆCˆCÝ˜C¥Ñ'Ô'ð 	*Ø—/’/ # qÑ)Ô)ˆCå�S‰>Œ>ð 		*Ý�c‘(”(ˆCØ�a�RŠxˆx˜3 !š8˜8Ý Ð!AÀCÑ!GÑHÔHÐHØ�QŠwˆwØ�q‘�øÝ3°CÑ8Ô8Ð8ˆhÐEØ$Ð$ X¨q°(Ñ;Ô;ˆCˆCÝ˜C¥Ñ'Ô'ð 	*Ø—/’/ # qÑ)Ô)ˆCà�Cˆxˆ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   r=   r>   Ú	TypeErrorÚMemoryErrorr(   r&   r2   ÚmaxÚminr
   Úowndatar*   )r   rS   Úlengthr   ÚeÚmax_indxÚmin_indxs          r   re   zIndexMixin._asindicesÉ   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.
        rk   r   N)r/   rV   r(   r%   r$   ©r   rL   rf   rg   s       r   Ú_getrowzIndexMixin._getrowç   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.
        rk   r   N)r/   rV   r(   r)   r$   rv   s       r   Ú_getcolzIndexMixin._getcolò   so   € ð Œz‰ˆˆ1Ý�‰FŒFˆØ�ˆrŠ6ˆ6�Q˜!’V�VÝÐ6¸Ñ:Ñ;Ô;Ð;ØˆqŠ5ˆ5Ø�‰FˆAØ×"Ò"¥5¨¡;¤;°Ñ2Ô2Ð2r   c                ó   — t          ¦   «         ‚©N©r   ©r   r7   r8   s      r   r#   zIndexMixin._get_intXintý   ó   € Ý!Ñ#Ô#Ð#r   c                ó   — t          ¦   «         ‚r{   r|   r}   s      r   r'   zIndexMixin._get_intXarray   r~   r   c                ó   — t          ¦   «         ‚r{   r|   r}   s      r   r%   zIndexMixin._get_intXslice  r~   r   c                ó   — t          ¦   «         ‚r{   r|   r}   s      r   r)   zIndexMixin._get_sliceXint  r~   r   c                ó   — t          ¦   «         ‚r{   r|   r}   s      r   r+   zIndexMixin._get_sliceXslice	  r~   r   c                ó   — t          ¦   «         ‚r{   r|   r}   s      r   r,   zIndexMixin._get_sliceXarray  r~   r   c                ó   — t          ¦   «         ‚r{   r|   r}   s      r   r-   zIndexMixin._get_arrayXint  r~   r   c                ó   — t          ¦   «         ‚r{   r|   r}   s      r   r.   zIndexMixin._get_arrayXslice  r~   r   c                ó   — t          ¦   «         ‚r{   r|   r}   s      r   r0   zIndexMixin._get_columnXarray  r~   r   c                ó   — t          ¦   «         ‚r{   r|   r}   s      r   r5   zIndexMixin._get_arrayXarray  r~   r   c                ó   — t          ¦   «         ‚r{   r|   ©r   r7   r8   r   s       r   r?   zIndexMixin._set_intXint  r~   r   c                ó   — t          ¦   «         ‚r{   r|   r‰   s       r   rK   zIndexMixin._set_arrayXarray  r~   r   c                ó´   — t          j        |                     ¦   «         | j        ¬¦  «        }t	          ||¦  «        \  }}|                      |||¦  «         d S )Nr   )r   r=   Útoarrayr    r   rK   )r   r7   r8   r   Ú_s        r   rG   z"IndexMixin._set_arrayXarray_sparse!  sQ   € åŒJ�q—y’y‘{”{¨$¬*Ð5Ñ5Ô5ˆÝ   CÑ(Ô(‰ˆˆ1Ø×Ò˜c 3¨Ñ*Ô*Ð*Ð*Ð*r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r9   rP   r!   re   rw   ry   r#   r'   r%   r)   r+   r,   r-   r.   r0   r5   r?   rK   rG   © r   r   r   r      sM  € € € € € ðð ðð ð ð 0/ð 0/ð 0/ðd2+ð 2+ð 2+ðh.ð .ð .ð`ð ð ð<	3ð 	3ð 	3ð	3ð 	3ð 	3ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð+ð +ð +ð +ð +r   r   rY   úctuple[int | slice | npt.NDArray[np.bool_ | np.int_], int | slice | npt.NDArray[np.bool_ | np.int_]]c                ó
  — t          | ¦  «        } t          | t          ¦  «        rSt          | ¦  «        dk    r| \  }}n˜t          | ¦  «        dk    r| d         t	          d¦  «        }}nmt          d¦  «        ‚t          | ¦  «        }|€| t	          d¦  «        }}n;|j        dk     r|t	          d¦  «        fS |j        dk    r|                     ¦   «         S ddl	m
}  ||¦  «        s ||¦  «        rt          d¦  «        ‚||fS )z“ Parse index. Always return a tuple of the form (row, col).
    Valid type for row/col is integer, slice, array of bool, or array of integers.
    r   r   r   Nzinvalid number of indicesr;   zoIndexing with sparse matrices is not supported except boolean indexing where matrix and index are equal shapes.)Ú_check_ellipsisr   Útupler\   r$   r(   rd   r&   rb   rD   r<   )Úindexr7   r8   rS   r<   s        r   rc   rc   (  s  € õ ˜EÑ"Ô"€Eõ �%�ÑÔð !Ýˆu‰:Œ:˜Š?ˆ?Ø‰HˆC��Ý�‰ZŒZ˜1Š_ˆ_Ø˜Q”x¥ t¡¤�ˆCˆCåÐ8Ñ9Ô9Ð9å'¨Ñ.Ô.ˆØˆ;Ø�e D™kœk�ˆCˆCØŒX˜Š\ˆ\Ø�˜d™œÐ#Ð#ØŒX˜Š]ˆ]Ø—;’;‘=”=Ð àÐÐÐÐÐØ€x��}„}ð !˜˜ ™œð !õ ð ñ!ô !ð 	!ð �ˆ8€Or   c                óœ  — | t           u rt          d¦  «        t          d¦  «        fS t          | t          ¦  «        s| S d„ t	          | ¦  «        D ¦   «         }|s| S t          |¦  «        dk    rt          d¦  «        ‚|\  }t          ddt          | ¦  «        z
  ¦  «        }| d|…         t          d¦  «        f|z  z   | |dz   d…         z   S )z6Process indices with Ellipsis. Returns modified index.Nc                ó*   — g | ]\  }}|t           u ¯|‘ŒS r’   )ÚEllipsis)Ú.0rL   Úvs      r   ú
<listcomp>z#_check_ellipsis.<locals>.<listcomp>W  s!   € ÐHÐHÐH™d˜a ¸!½x¸-¸-˜¸-¸-¸-r   r   z0an index can only have a single ellipsis ('...')r   é   )rš   r$   r   r–   Ú	enumerater\   r(   rn   )r—   Úellipsis_indicesrL   Ú
num_slicess       r   r•   r•   N  sÝ   € à•ÐÐÝ�d‘”�U 4™[œ[Ð)Ð)å�e�UÑ#Ô#ð Øˆð IÐH¥i°Ñ&6Ô&6ÐHÑHÔHÐØð ØˆÝ
ÐÑÔ˜qÒ Ð ÝÐKÑLÔLÐLð 
�B€AÝ�Q˜�C ™JœJ™Ñ'Ô'€JØ��!�Œ9�˜d™œ�~¨
Ñ2Ñ2°U¸1¸q¹5¸6¸6´]ÑBÐBr   c                óR   — t          j        | ¦  «        } | j        j        dk    r| S dS )z8Returns a compatible array if elements are boolean.
    r   N)r   Ú
asanyarrayr    ra   ©rS   s    r   Ú_maybe_bool_ndarrayr¥   c  s,   € õ Œ-˜Ñ
Ô
€CØ
„y„~˜ÒÐØˆ
Øˆ4r   r   c                óÆ   — |dk     rdS 	 t          t          | ¦  «        d¦  «        }n# t          $ r Y dS w xY wt          |t          ¦  «        rdS t          ||dz
  ¦  «        S )zQReturns True if first element of the incompatible
    array type is boolean.
    r   NT)ÚnextÚiterrl   r   ÚboolÚ_first_element_bool)rS   Úmax_dimÚfirsts      r   rª   rª   l  s{   € ð �‚{€{ØˆtðÝ•T˜#‘Y”Y Ñ%Ô%ˆˆøÝð ð ð Øˆtˆtðøøøå�%�ÑÔð ØˆtÝ˜u g¨a¡iÑ0Ô0Ð0s   Š( ¨
6µ6c                ób   — t          | d¦  «        st          | ¦  «        rt          | ¦  «        S dS )ztReturns a boolean index array that can be converted to
    integer array. Returns None if no such array exists.
    r&   N)Úhasattrrª   r¥   r¤   s    r   rd   rd   {  s9   € õ
 ˆs�FÑÔð (Õ2°3Ñ7Ô7ð (Ý" 3Ñ'Ô'Ð'Øˆ4r   c                ój   — | j         dk    rt          d¦  «        ‚t          j        | ¦  «        d         S )Nr   zinvalid index shaper   )r&   r(   r   Úwherer¤   s    r   r]   r]   …  s/   € Ø
„x�!‚|€|ÝÐ.Ñ/Ô/Ð/ÝŒ8�C‰=Œ=˜ÔÐr   )rY   r“   )r   )r‘   Ú
__future__r   Útypingr   Únumpyr   Ú_sputilsr   Únumpy.typingÚnptrV   Úintegerr"   r   r   rc   r•   r¥   rª   rd   r]   r’   r   r   ú<module>r¸      s)  ððð à "Ð "Ð "Ð "Ð "Ð "à  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð Ø Ð Ð Ð Ð Ð àð ØÐÐÐÐÐà�"”*Ð€	ðð ð ðF+ð F+ð F+ð F+ð F+ñ F+ô F+ð F+ðR#ð #ð #ð #ðLCð Cð Cð*ð ð ð1ð 1ð 1ð 1ðð ð ðð ð ð ð r   