Ë
    çÿæi(G  ã                   ót   — 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
„ Zd„ Zy)z0Indexing mixin for sparse array/matrix classes.
é    Né   )Ú	isintlike)ÚsparrayÚissparsec                  óœ   — t        j                  | Ž }t        || «      D ]*  \  }}|j                  j                  |j                  _        Œ, |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ÚzipÚflagsÚ	writeable)Úarraysr	   ÚxÚas       úh/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/scipy/sparse/_index.pyÚ_broadcast_arraysr   
   sG   € ô ×*Ñ*¨FÐ3ÐÜÐ$ fÖ-‰ˆˆ1ØŸG™G×-Ñ-ˆ�‰Õð .àÐó    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y)Ú
IndexMixinzS
    This class provides common dispatching and validation logic for indexing.
    c                 ó
  — t        || j                  | j                  «      \  }}}}t        |«      dkD  rt	        d| j                  › d�«      ‚t        |«      dk(  �r%|d   }t        |t        j                  «      r|j                  dk(  r|j                  «       }t        |t        «      r| j                  |«      }n3t        |t        «      r| j                  |«      }n| j                  |«      }t        | t        «      s|S |j                  dk(  r`|dk7  r[t        |«      dk(  r| j                  |g|| j                   ¬«      S t        |«      dk(  r | j                  |gg|| j                   ¬«      S |j#                  |«      S |\  }}t        |t        «      r™t        |t        «      r| j%                  ||«      }�nat        |t        «      r| j'                  ||«      }�n=|j(                  dk(  r| j+                  ||«      }�n|j(                  dk(  r| j+                  ||«      }�n÷t	        d«      ‚t        |t        «      r›t        |t        «      r| j-                  ||«      }�n¸t        |t        «      r9|t        d «      k(  r||k(  r| j/                  «       }�nƒ| j1                  ||«      }�no|j(                  dk(  r| j3                  ||«      }�nLt	        d«      ‚t        |t        «      r| j5                  ||«      }�nt        |t        «      r| j7                  ||«      }nú|j(                  dk(  r\|j                  d   dk(  rJ|j(                  dk(  s|j                  d   dk(  r)| j9                  |d d …df   |j#                  d	«      «      }n�t;        ||«      \  }}|j                  |j                  k7  rt	        d
«      ‚|j<                  dk(  r;| j                  t        j>                  |«      j                  | j                   ¬«      }n| jA                  ||«      }t        | t        «      sY|dk(  st        |«      dk(  r|j(                  dk7  r|S t        |«      dk(  rd|z   }||j                  k(  r|S |j#                  |«      S |j                  |k7  rp| j                  dk(  rPt        |«      dk7  rB|j                  dk(  r| jC                  |g|¬«      S |jE                  «       j#                  |«      S |j#                  |«      S |S )Né   z/Indexing that leads to >2D is not supported by z% format. Try converting to COO formatr   r   © )ÚshapeÚdtypezindex results in >2 dimensionséÿÿÿÿú'number of row and column indices differ©r   )r   Úlil)r   )#Ú_validate_indicesr   ÚformatÚlenÚ
IndexErrorÚ
isinstancer   ÚndarrayÚitemÚ	INT_TYPESÚ_get_intÚsliceÚ
_get_sliceÚ
_get_arrayr   Ú	__class__r   ÚreshapeÚ_get_intXintÚ_get_intXsliceÚndimÚ_get_intXarrayÚ_get_sliceXintÚcopyÚ_get_sliceXsliceÚ_get_sliceXarrayÚ_get_arrayXintÚ_get_arrayXsliceÚ_get_columnXarrayr   ÚsizeÚ
atleast_2dÚ_get_arrayXarrayÚ_coo_containerÚtocoo)	ÚselfÚkeyÚindexÚ	new_shapeÚ_ÚidxÚresÚrowÚcols	            r   Ú__getitem__zIndexMixin.__getitem__   s:  € Ü!2°3¸¿
¹
ÀDÇKÁKÓ!PÑˆˆy˜!˜QÜˆy‹>˜AÒÜÐNØ $§¡˜}Ð,QðSó Tð Tô ˆu‹:˜‹?Ø˜‘(ˆCÜ˜#œrŸz™zÔ*Ø—9‘9 ’?ØŸ(™(›*�CÜ˜#œyÔ)Ø—m‘m CÓ(‘Ü˜C¤Ô'Ø—o‘o cÓ*‘à—o‘o cÓ*�ô ˜d¤GÔ,Ø�
à�y‰y˜BŠ 9°¢?Ü�y“> QÒ&ØŸ>™>¨3¨%°yÈÏ
É
˜>ÓSÐSÜ�y“> QÒ&ØŸ>™>¨C¨5¨'¸È$Ï*É*˜>ÓUÐUØ—;‘;˜yÓ)Ð)ð ‰ˆˆSô �cœ9Ô%Ü˜#œyÔ)Ø×'Ñ'¨¨SÓ1’Ü˜C¤Ô'Ø×)Ñ)¨#¨sÓ3’Ø—‘˜Q’Ø×)Ñ)¨#¨sÓ3’Ø—‘˜Q’Ø×)Ñ)¨#¨sÓ3’ä Ð!AÓBÐBÜ˜œUÔ#Ü˜#œyÔ)Ø×)Ñ)¨#¨sÓ3’Ü˜C¤Ô'Øœ% ›+Ò%¨#°ª*ØŸ)™)›+’Cà×/Ñ/°°SÓ9’CØ—‘˜Q’Ø×+Ñ+¨C°Ó5’ä Ð!AÓBÐBä˜#œyÔ)Ø×)Ñ)¨#¨sÓ3’Ü˜C¤Ô'Ø×+Ñ+¨C°Ó5‘à—(‘(˜a’- C§I¡I¨a¡L°AÒ$5Ø—x‘x 1’}¨¯	©	°!©¸Ò(9à×,Ñ,¨S²°A°©Y¸¿¹ÀB»ÓH‘ô -¨S°#Ó6‘��SØ—9‘9 §	¡	Ò)Ü$Ð%NÓOÐOØ—8‘8˜q’=ØŸ.™.¬¯©°sÓ);×)AÑ)AÈÏÉ˜.ÓT‘Cà×/Ñ/°°SÓ9�Cô ˜$¤Ô(Ø˜BŠ¤3 y£>°QÒ#6¸3¿8¹8Àqº=à�
Ü�9‹~ Ò"à  9Ñ,�	à# s§y¡yÒ0�3ÐL°c·k±kÀ)Ó6LÐLð �9‰9˜	Ò!à�{‰{˜eÒ#¬¨I«¸!Ò(;Ø—9‘9 ’?Ø×.Ñ.°¨u¸iÐ.ÓHÐHØ—y‘y“{×*Ñ*¨9Ó5Ð5Ø—;‘;˜yÓ)Ð)Øˆ
r   c                 óº
  — t        || j                  | j                  «      \  }}}}t        |«      dk(  �r¶|d   }t	        |«      r|j                  «       }n!t        j                  || j                  ¬«      }t        |t        «      r:|j                  dk7  rt        d«      ‚| j                  ||j                  d   «       y t        |t        «      r¡t!        |j#                  | j                  d   «      Ž }t        |«      }|dk(  r2|j                  dk(  r#| j                  |d   |j                  d   «       y t        j$                  |j#                  | j                  d   «      Ž }|j                  }	n|j'                  «       j                  }	|j'                  «       j                  |	k7  r t        j(                  ||j                  «      }|j                  dk7  r| j+                  ||«       y |\  }
}t        |
t        «      rˆt        |t        «      rxt	        |«      r|j                  «       }n!t        j                  || j                  ¬«      }|j                  dk7  rt        d«      ‚| j-                  |
||j                  d   «       y t        |
t        «      r6t        j$                  |
j#                  | j                  d   «      Ž d d …d f   }
nt        j.                  |
«      }
t        |t        «      rNt        j$                  |j#                  | j                  d   «      Ž d d d …f   }|
j0                  dk(  r|
d d …d f   }
nt        j.                  |«      }t3        |
|«      \  }}|j                  |j                  k7  rt5        d«      ‚t	        |«      �rd|j                  v ry |j0                  dk(  r
|d    }|d    }|j7                  d¬«      j9                  |j:                  d¬«      }|j                  d   dk(  xr |j                  d   dk7  }|j                  d   dk(  xr |j                  d   dk7  }|s|j                  d   |j                  d   k(  r!|s*|j                  d   |j                  d   k(  st        d	«      ‚|j=                  «        | j?                  |||«       y t        j                  || j                  ¬«      }|j'                  «       j                  |j'                  «       j                  k7  r t        j(                  ||j                  «      }|j                  dk(  ry |j9                  |j                  «      }| jA                  |||«       y )
Nr   r   r   z&Trying to assign a sequence to an itemr   F)r1   Tzshape mismatch in assignment)!r   r   r   r    r   Útoarrayr   Úasarrayr   r"   r%   r7   Ú
ValueErrorÚ_set_intÚflatr'   ÚrangeÚindicesÚ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>   r?   r@   rA   Ú	idx_rangeÚNÚ	idx_shaperC   rD   ÚiÚjÚbroadcast_rowÚbroadcast_cols                   r   Ú__setitem__zIndexMixin.__setitem__   s"  € Ü!2°3¸¿
¹
ÀDÇKÁKÓ!PÑˆˆy˜!˜Qô ˆu‹:˜‹?Ø˜‘(ˆCä˜Œ{Ø—I‘I“K‘ä—J‘J˜q¨¯
©
Ô3�ä˜#œyÔ)Ø—6‘6˜Q’;Ü$Ð%MÓNÐNØ—‘˜c 1§6¡6¨!¡9Ô-Øä˜#œuÔ%ô " 3§;¡;¨t¯z©z¸!©}Ó#=Ð>�	Ü˜	“N�Ø˜’6˜aŸf™f¨škØ—M‘M )¨A¡,°·±°q±	Ô:ØÜ—i‘i §¡¨T¯Z©Z¸©]Ó!;Ð<�ØŸI™I‘	àŸK™K›M×/Ñ/�	à�y‰y‹{× Ñ  IÒ-Ü—O‘O A s§y¡yÓ1�Ø�v‰v˜Š{Ø—‘  QÔ'Øð ‰ˆˆSä�cœ9Ô%¬*°S¼)Ô*DÜ˜Œ{Ø—I‘I“K‘ä—J‘J˜q¨¯
©
Ô3�Ø�v‰v˜Š{Ü Ð!IÓJÐJØ×Ñ˜c 3¨¯©¨q©	Ô2Øä�cœ5Ô!Ü—)‘)˜SŸ[™[¨¯©°A©Ó7Ð8º¸D¸ÑA‰Cä—-‘- Ó$ˆCä�cœ5Ô!Ü—)‘)˜SŸ[™[¨¯©°A©Ó7Ð8¸ºq¸ÑAˆCØ�x‰x˜1Š}Øš!˜T˜'‘l‘ä—-‘- Ó$ˆCä   cÓ*‰ˆˆ1Ø�7‰7�a—g‘gÒÜÐFÓGÐGä�A�;Ø�A—G‘G‰|ØØ�v‰v˜Š{à�d‘G�Ø�d‘G�Ø—‘˜U�Ó#×+Ñ+¨A¯N©NÀÐ+ÓFˆAØŸG™G A™J¨!™OÒ?°·±¸±
¸a±ˆMØŸG™G A™J¨!™OÒ?°·±¸±
¸a±ˆMÙ" a§g¡g¨a¡j°A·G±G¸A±JÒ&>Ù" a§g¡g¨a¡j°A·G±G¸A±JÒ&>Ü Ð!?Ó@Ð@Ø×ÑÔØ×(Ñ(¨¨A¨qÕ1ô —
‘
˜1 D§J¡JÔ/ˆAØ�y‰y‹{× Ñ  A§I¡I£K×$5Ñ$5Ò5Ü—O‘O A q§w¡wÓ/�Ø�v‰v˜Š{ØØ—	‘	˜!Ÿ'™'Ó"ˆAØ×!Ñ! ! Q¨Õ*r   c                 ó´   — | j                   \  }}t        |«      }|| k  s||k\  rt        d|› d�«      ‚|dk  r||z  }| j                  |t	        d«      «      S )zGReturn a copy of row i of the matrix, as a (1 x n) row vector.
        úindex (ú) out of ranger   N)r   Úintr!   r-   r'   ©r<   r[   ÚMrY   s       r   Ú_getrowzIndexMixin._getrowÚ   sd   € ð �z‰z‰ˆˆ1Ü�‹FˆØ�ˆrŠ6�Q˜!’VÜ˜w q c¨Ð8Ó9Ð9ØˆqŠ5Ø�‰FˆAØ×"Ñ" 1¤e¨D£kÓ2Ð2r   c                 ó´   — | j                   \  }}t        |«      }|| k  s||k\  rt        d|› d�«      ‚|dk  r||z  }| j                  t	        d«      |«      S )zMReturn a copy of column i of the matrix, as a (m x 1) column vector.
        ra   rb   r   N)r   rc   r!   r0   r'   rd   s       r   Ú_getcolzIndexMixin._getcolå   sd   € ð �z‰z‰ˆˆ1Ü�‹FˆØ�ˆrŠ6�Q˜!’VÜ˜w q c¨Ð8Ó9Ð9ØˆqŠ5Ø�‰FˆAØ×"Ñ"¤5¨£;°Ó2Ð2r   c                 ó   — t        «       ‚©N©ÚNotImplementedError©r<   rA   s     r   r&   zIndexMixin._get_intð   ó   € Ü!Ó#Ð#r   c                 ó   — t        «       ‚rj   rk   rm   s     r   r(   zIndexMixin._get_sliceó   rn   r   c                 ó   — t        «       ‚rj   rk   rm   s     r   r)   zIndexMixin._get_arrayö   rn   r   c                 ó   — t        «       ‚rj   rk   ©r<   rC   rD   s      r   r,   zIndexMixin._get_intXintù   rn   r   c                 ó   — t        «       ‚rj   rk   rr   s      r   r/   zIndexMixin._get_intXarrayü   rn   r   c                 ó   — t        «       ‚rj   rk   rr   s      r   r-   zIndexMixin._get_intXsliceÿ   rn   r   c                 ó   — t        «       ‚rj   rk   rr   s      r   r0   zIndexMixin._get_sliceXint  rn   r   c                 ó   — t        «       ‚rj   rk   rr   s      r   r2   zIndexMixin._get_sliceXslice  rn   r   c                 ó   — t        «       ‚rj   rk   rr   s      r   r3   zIndexMixin._get_sliceXarray  rn   r   c                 ó   — t        «       ‚rj   rk   rr   s      r   r4   zIndexMixin._get_arrayXint  rn   r   c                 ó   — t        «       ‚rj   rk   rr   s      r   r5   zIndexMixin._get_arrayXslice  rn   r   c                 ó   — t        «       ‚rj   rk   rr   s      r   r6   zIndexMixin._get_columnXarray  rn   r   c                 ó   — t        «       ‚rj   rk   rr   s      r   r9   zIndexMixin._get_arrayXarray  rn   r   c                 ó   — t        «       ‚rj   rk   ©r<   rA   r   s      r   rJ   zIndexMixin._set_int  rn   r   c                 ó   — t        «       ‚rj   rk   r}   s      r   rQ   zIndexMixin._set_array  rn   r   c                 ó   — t        «       ‚rj   rk   ©r<   rC   rD   r   s       r   rR   zIndexMixin._set_intXint  rn   r   c                 ó   — t        «       ‚rj   rk   r€   s       r   rW   zIndexMixin._set_arrayXarray   rn   r   c                 ó¦   — t        j                  |j                  «       | j                  ¬«      }t	        ||«      \  }}| j                  |||«       y )Nr   )r   rH   rG   r   r   rW   )r<   rC   rD   r   r@   s        r   rV   z"IndexMixin._set_arrayXarray_sparse#  s>   € ä�J‰J�q—y‘y“{¨$¯*©*Ô5ˆÜ   CÓ(‰ˆˆ1Ø×Ñ˜c 3¨Õ*r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rE   r_   rf   rh   r&   r(   r)   r,   r/   r-   r0   r2   r3   r4   r5   r6   r9   rJ   rQ   rR   rW   rV   r   r   r   r   r      sy   „ ñò`òDY+òv	3ò	3ò$ò$ò$ò$ò$ò$ò$ò$ò$ò$ò$ò$ò$ò$ò$ò$ò$ó+r   r   c           	      ó&	  — t        |«      }| t        u rt        d«      f|z  |g g fS t        | t        «      s| g} d}g }d}t        | «      D ]Ñ  \  }}|t        u r|�t        d«      ‚|}Œ|€|j                  |«       Œ2t        |t        «      st        |«      r|j                  |«       |dz  }Œdt        ||«      x}	�!|j                  |	«       ||	j                  z  }Œ“t        |«      rt        d«      ‚|j                  t        j                  |«      «       |dz  }ŒÓ ||kD  rt        d| › d|› d|› d	�«      ‚||z
  t        d«      gz  }
|
r"|€|j                  |
«       n|d| |
z   ||d z   }g }d}g }g }g }g }t        |«      D �]ø  \  }}|€,|j                  t        |«      «       |j                  d«       Œ5t        |t        «      rM|j                  |«       ||   }t        t        |j!                  |«      Ž «      }|j                  |«       |dz  }Œ’t        |«      r_||   }| |cxk  r|k  sn t        d
|› d�«      ‚t#        |dk  r||z   n|«      }|j                  |«       |j                  |«       |dz  }Œü|j$                  j&                  dk(  rš||j                  z   }||| }|j(                  |k7  rt        d|› d|› d|j(                  › �«      ‚|j                  |j+                  «       «       |j                  t        ||«      «       |j                  t        ||«      «       |}�Œ¯||   }t-        |||«      }|j                  |«       |j                  |«       |j                  |«       |dz  }�Œû t        |«      dkD  ru|D �cg c]  }||   j(                  ‘Œ }}	 t        j.                  |Ž }t        |«      |d   |d   z
  dz   k7  rt5        |«      |z   }nY|d   }|d| t5        |«      z   ||d z   }n<t        |«      dk(  r.||d      j(                  }|d   }|d| t5        |«      z   ||d z   }t	        |«      t	        |«      ||fS c c}w # t0        $ r) dj3                  d„ |D «       «      }d|› �}t        |«      ‚w xY w)aµ  Returns four sequences: (index, requested shape, arrays, nones)

    index : tuple of validated idx objects. bool arrays->nonzero(),
            arrays broadcast, ints and slices as they are, Nones removed
    requested shape : the shape of the indexed space, including Nones
    arr_pos : position within index of all arrays or ints (for array fancy indexing)
    none_pos : insert positions to put newaxis coords in indexed space.
    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<Too many indices for array or tuple index out of range. Key z needs zD. Array is ÚDra   rb   Úbzbool index z has shape z instead of Ú c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrj   )Ústr)Ú.0Úshps     r   Ú	<genexpr>z$_validate_indices.<locals>.<genexpr>¡  s   è ø€ Ð=±*¨3œc #Ÿh±*ùs   ‚zLshape mismatch: indexing arrays could not be broadcast together with shapes r   )r    ÚEllipsisr'   r"   ÚtupleÚ	enumerater!   Úappendr   Ú_compatible_boolean_indexr.   r   r   rH   ÚextendrL   rM   rc   r   Úkindr   ÚnonzeroÚ
_asindicesÚbroadcast_shapesrI   ÚjoinÚlist)r=   Ú
self_shapeÚself_formatÚ	self_ndimÚ	ellps_posÚ	index_1stÚprelim_ndimr[   rA   ÚixÚellip_slicesrZ   Ú
index_ndimr>   Úarray_indicesÚnone_positionsÚarr_int_posÚMsÚ	len_slicerY   Útmp_ndimÚ	mid_shapeÚ
arr_shapesÚ	arr_shapeÚshapesÚmsgÚarr_poss                              r   r   r   *  sâ  € ô �J“€Ià
Œh�Ü�d“ˆ~ 	Ñ)¨:°r¸2Ð=Ð=ä�cœ5Ô!Øˆeˆð €IØ€IØ€KÜ˜C–.‰ˆˆ3Ø”(‰?ØÐ$Ü Ð!KÓLÐLØ‰IØˆ[Ø×Ñ˜SÕ!Ü˜œUÔ#¤y°¤~Ø×Ñ˜SÔ!Ø˜1Ñ‰KÜ-¨c°9Ó=Ð=ˆbÐJà×Ñ˜RÔ Ø˜2Ÿ7™7Ñ"‰KÜ�cŒ]äð$ó%ð %ð
 ×ÑœRŸZ™Z¨›_Ô-Ø˜1Ñ‰Kð- !ð. �YÒÜðØ�%�w˜{˜m¨<¸	°{À!ðEó
ð 	
ð  Ñ+´°d³¨}Ñ<€LÙØÐØ×Ñ˜\Õ*à! * 9Ð-°Ñ<¸yÈÈÐ?TÑTˆIð €IØ€JØ€EØ€MØ€NØ€Kä˜I×&‰ˆˆ3Øˆ;Ø×!Ñ!¤# i£.Ô1Ø×Ñ˜QÕÜ˜œUÔ#Ø�L‰L˜ÔØ˜JÑ'ˆBÜœE 3§;¡;¨r£?Ð3Ó4ˆIØ×Ñ˜YÔ'Ø˜!‰O‰JÜ�sŒ^Ø˜:Ñ&ˆAØ�B˜#”M ”MÜ  7¨3¨%¨~Ð!>Ó?Ð?Ü  q¢�c˜A’g¨cÓ2ˆCØ�L‰L˜ÔØ×Ñ˜zÔ*Ø˜!‰O‰Jà�Y‰Y�^‰^˜sÒ"Ø! C§H¡HÑ,ˆHØ" :¨hÐ7ˆIØ�y‰y˜IÒ%Ü Ø! !  K°	¨{¸,ÀsÇyÁyÀkÐRóð ð �L‰L˜Ÿ™›Ô'Ø× Ñ ¤ z°8Ó!<Ô=Ø×Ñœu Z°Ó:Ô;Ø!ŠJà˜:Ñ&ˆAÜ˜S ! [Ó1ˆCØ�L‰L˜ÔØ×Ñ˜zÔ*Ø× Ñ  Ô,Ø˜!‰OŠJðI 'ôJ ˆ=Ó˜AÒÙ.;Ó<©m¨�e˜A‘h—n“n¨mˆ
Ð<ð	"Ü×+Ñ+¨ZÐ8ˆIô ˆ{Ó ¨B¡°+¸a±.Ñ @À1Ñ DÒEÜ˜Y›¨)Ñ3‰Ià! !‘nˆGØ! ( 7Ð+¬d°9«oÑ=À	È'È(Ð@SÑS‰IÜ	ˆ]Ó	˜qÒ	 Ø˜-¨Ñ*Ñ+×1Ñ1ˆ	Ø˜a‘.ˆØ˜h˜wÐ'¬$¨y«/Ñ9¸IÀgÀhÐ<OÑOˆ	Ü�‹<œ˜yÓ)¨;¸ÐFÐFùò' =øô ò 	"Ø—X‘XÑ=±*Ó=Ó=ˆFð+Ø+1¨(ð4ˆCä˜S“/Ð!ð		"ús   ÎQÎ-Q Ñ2Rc                 ó@  — 	 t        j                  | «      }|dk7  r|j                  dvs|dk(  r'|j                  dk(  rt        d|j                  › �«      ‚|dk(  r|S |j                  dk(  r|S |j                  «       }||k\  rt        d|› d	�«      ‚|j                  «       }|dk  rO|| k  rt        d|› d	�«      ‚|| u s|j                  j                  s|j                  «       }||dk  xx   |z  cc<   |S # t        t        t        f$ r}t        d«      |‚d}~ww xY w)
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Úcoo)r   r   r   z$Index dimension must be 1 or 2. Got r   ra   rb   )r   rH   rI   Ú	TypeErrorÚMemoryErrorr!   r.   r7   ÚmaxÚminr   Úowndatar1   )rA   Úlengthr   r¢   ÚeÚmax_indxÚmin_indxs          r   r˜   r˜   ³  s"  € ð
1Ü�Z‰Z˜‹_ˆð �‚˜2Ÿ7™7¨&Ñ0°F¸e²OÈÏÉÐSTÊÜÐ?ÀÇÁ¸yÐIÓJÐJð �‚Øˆ	à	‡w�w�!‚|Øˆ	ð �v‰v‹x€HØ�6ÒÜ˜7 8 *¨NÐ;Ó<Ð<à�v‰v‹x€HØ�!‚|Ø�v�gÒÜ˜w x j°Ð?Ó@Ð@Ø�‰9˜BŸH™H×,Ò,Ø—‘“ˆBØ
ˆ2�‰6‹
�fÑ‹
Ø€Iøô3 œ	¤;Ð/ò 1Ü˜Ó)¨qÐ0ûð1ús   ‚C8 Ã8DÄDÄDc                 ó8  — t        | d«      sd	 t        t        | «      d«      }t        |«      D ])  }t	        |t
        «      r nt        t        |«      d«      }Œ+ y	 t        j                  | «      } | j                  j                  dk(  r| S y# t        $ r Y yw xY w)zICheck for boolean array or array-like. peek before asarray for array-liker.   Nr‰   )ÚhasattrÚnextÚiterrL   r"   Úboolr³   r   Ú
asanyarrayr   r–   )rA   Údesired_ndimr¢   r@   s       r   r”   r”   Ö  s•   € ô �3˜Ôð		Ü”d˜3“i Ó&ˆBÜ˜<Ö(�Ü˜b¤$Ô'ÙÜœ$˜r›( DÓ)‘ð )ð
 ð ô �m‰m˜CÓ ˆà
‡y�y‡~�~˜ÒØˆ
Øøô ò 	Ùð	ús   ŽAB Â	BÂB)r†   Únumpyr   Ú_sputilsr   Ú_baser   r   rc   Úintegerr%   r   r   r   r˜   r”   r   r   r   Ú<module>rÇ      sF   ðñã Ý ß $à�"—*‘*Ð€	ò÷N+ñ N+òbFGòR óFr   