Ë
    èÿæiM  ã                   óÖ   — d dl Z d dlZd dlZd dlZd dlmZmZmZ d dl	m
Z
 d dlmZ d dlmZmZ d„ Zd„ Zd„ Zd	„ Z G d
„ dee«      Z G d„ dee«      Zedk(  r ej.                  «        yy)é    N)ÚjitÚtypeofÚnjit)Útypes)ÚTypingError)ÚMemoryLeakMixinÚTestCasec                 ó   — | |   S ©N© )ÚaÚbs     út/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_fancy_indexing.pyÚgetitem_usecaser      s   € ØˆQ‰4€Kó    c                 ó   — || |<   y r   r   )r   Úidxr   s      r   Úsetitem_usecaser      s   € Ø€A€c‚Fr   c                 ó.   — t        j                  | |«      S r   ©ÚnpÚtake)ÚAÚindicess     r   Únp_taker      s   € Ü�7‰7�1�gÓÐr   c                 ó2   — t        j                  | ||¬«      S )N©Úaxisr   )r   r   r   s      r   Únp_take_kwsr      s   € Ü�7‰7�1�g DÔ)Ð)r   c                   ó€   — e Zd Zdd„Zdd„Zd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y)ÚTestFancyIndexingc                 ó¬   — t        j                  d|dz
  dg«      g}|r5|t        j                  dd|dz
  g«      t        j                  g d¢«      gz  }|S )Nr   é   éþÿÿÿ)r   r#   r#   r   )r   Úint16Úuint16Úbool_)ÚselfÚNÚmanyÚchoicess       r   Úgenerate_advanced_indicesz+TestFancyIndexing.generate_advanced_indices   sU   € Ü—8‘8˜Q  A¡ r˜NÓ+Ð,ˆÙØœŸ	™	 1 a¨¨Q© -Ó0ÜŸ™¢Ó.ð0ñ 0ˆGàˆr   c           
   #   ó^  K  — |rVt        ddd«      t        d|dz
  d«      t        ddd«      t        |dz
  dd«      t        | dz   dd«      t        d| d«      g}nt        d|dz
  d«      t        d| d«      g}t        |dz   «      D ]"  }t        j                  ||¬«      D ]  }|–— Œ Œ$ y­w)zG
        Generate basic index tuples with 0 to *maxdim* items.
        Nr#   r   é   r$   éÿÿÿÿ)Úrepeat)ÚsliceÚrangeÚ	itertoolsÚproduct)r(   r)   Úmaxdimr*   r+   ÚndimÚtups          r   Úgenerate_basic_index_tuplesz-TestFancyIndexing.generate_basic_index_tuples"   sÀ   è ø€ ñ Ü˜T 4¨Ó.Ü˜Q  A¡ tÓ,Ü˜Q  aÓ(Ü˜Q ™U D¨"Ó-Ü˜a˜R !™V R¨Ó.Ü˜R !  RÓ(ð‰Gô ˜Q  A¡ tÓ,Ü˜R !  RÓ(ð*ˆGä˜& 1™*Ö%ˆDÜ ×(Ñ(¨¸×>�Ø“	ñ ?ñ &ùs   ‚B+B-c              #   óÐ   K  — t        | j                  ||¬«      «      }t        |dz   «      D ]5  }| j                  ||dz
  |«      D ]  }|D ]  }|d| |fz   ||d z   –— Œ Œ Œ7 y­w)z‚
        Generate advanced index tuples by generating basic index tuples
        and adding a single advanced index item.
        ©r*   r#   N)Úlistr,   r2   r8   )r(   r)   r5   r*   r+   Úir7   Úadvs           r   Úgenerate_advanced_index_tuplesz0TestFancyIndexing.generate_advanced_index_tuples9   s{   è ø€ ô �t×5Ñ5°a¸dÐ5ÓCÓDˆÜ�v ‘zÖ"ˆAØ×7Ñ7¸¸6ÀA¹:ÀtÖL�Û"�CØ˜b˜q˜' S FÑ*¨S°°¨WÑ4Ó4ñ #ñ Mñ #ùs   ‚A$A&c              #   óž   K  — | j                  |||«      D ]3  }t        t        |«      dz   «      D ]  }|d| t        fz   ||d z   –— Œ Œ5 y­w)zr
        Same as generate_advanced_index_tuples(), but also insert an
        ellipsis at various points.
        r#   N)r>   r2   ÚlenÚEllipsis)r(   r)   r5   r*   r7   r<   s         r   Ú,generate_advanced_index_tuples_with_ellipsisz>TestFancyIndexing.generate_advanced_index_tuples_with_ellipsisF   sW   è ø€ ð
 ×6Ñ6°q¸&À$ÖGˆCÜœ3˜s›8 a™<Ö(�Ø˜"˜1�g¤ Ñ+¨c°!°"¨gÑ5Ó5ñ )ñ Hùs   ‚AAc                 ó  — t         } t        d¬«      |«      }|j                  «       }|j                  xs |}|D ]Î  } |||«      }|j                  |usJ ‚ |||«      }	| j	                  |	j
                  |j
                  «       | j	                  |	j                  |j                  «       t        j                  j                  |	|«       |	j                  sŒž|	j                  d«       t        j                  j                  ||«       ŒÐ y )NT©Únopythoné*   )r   r   ÚcopyÚbaseÚassertEqualÚshapeÚdtyper   ÚtestingÚassert_equalÚsizeÚfill)
r(   Úarrr   ÚpyfuncÚcfuncÚorigÚ	orig_baseÚindexÚexpectedÚgots
             r   Úcheck_getitem_indicesz'TestFancyIndexing.check_getitem_indicesO   sÒ   € Ü ˆØ"”˜TÔ" 6Ó*ˆØ�x‰x‹zˆØ—H‘H’O ˆ	ãˆEÙ˜c 5Ó)ˆHð —=‘=¨	Ñ1Ð1Ð1Ù˜˜UÓ#ˆCð ×Ñ˜SŸY™Y¨¯©Ô7Ø×Ñ˜SŸY™Y¨¯©Ô7Ü�J‰J×#Ñ# C¨Ô2à�x‹xØ—‘˜”Ü—
‘
×'Ñ'¨¨TÕ2ñ r   c                 óä   — d}d}t        j                  ||z  «      j                  |f|z  «      j                  t         j                  «      }| j                  ||«      }| j                  ||«       y ©Né   é   )r   ÚarangeÚreshapeÚastypeÚint32r>   rX   ©r(   r)   r6   rP   r   s        r   Útest_getitem_tuplez$TestFancyIndexing.test_getitem_tuplee   s`   € àˆØˆÜ�i‰i˜˜T™	Ó"×*Ñ*¨A¨4°$©;Ó7×>Ñ>¼r¿x¹xÓHˆØ×5Ñ5°a¸Ó>ˆà×"Ñ" 3¨Õ0r   c                 óè   — d}d}t        j                  ||z  «      j                  |f|z  «      j                  t         j                  «      }| j                  ||d¬«      }| j                  ||«       y ©Nr[   r\   Fr:   )r   r]   r^   r_   r`   rB   rX   ra   s        r   Útest_getitem_tuple_and_ellipsisz1TestFancyIndexing.test_getitem_tuple_and_ellipsisn   ón   € àˆØˆÜ�i‰i˜˜T™	Ó"×*Ñ*¨A¨4°$©;Ó7×>Ñ>¼r¿x¹xÓHˆØ×CÑCÀAÀtØINð Dó Pˆð 	×"Ñ" 3¨Õ0r   c                 ó”   — t        d¬«      d„ «       }t        j                  d«      } ||d«       | j                  |d   |d   «       y )NTrD   c                 ó   — | d   | d<   y )N).r#   ).r   r   )rP   Úvs     r   Úfooz7TestFancyIndexing.test_ellipsis_getsetitem.<locals>.fooz   s   € à˜f™+ˆC�ŠKr   r.   r#   r   )r   r   r]   rI   )r(   rj   rP   s      r   Útest_ellipsis_getsetitemz*TestFancyIndexing.test_ellipsis_getsetitemx   sI   € ä	�dÔ	ñ	&ó 
ð	&ô �i‰i˜‹lˆÙˆC�ŒØ×Ñ˜˜Q™  Q¡Õ(r   c                 óâ   — d}d}t        j                  ||z  «      j                  |f|z  «      j                  t         j                  «      }| j                  |«      }| j                  ||«       y rZ   )r   r]   r^   r_   r`   r,   rX   ra   s        r   Útest_getitem_arrayz$TestFancyIndexing.test_getitem_array‚   s^   € àˆØˆÜ�i‰i˜˜T™	Ó"×*Ñ*¨A¨4°$©;Ó7×>Ñ>¼r¿x¹xÓHˆØ×0Ñ0°Ó3ˆØ×"Ñ" 3¨Õ0r   c                 ó   — t         } t        d¬«      |«      }|D ]±  }||   }t        j                  |«      }t        j                  |«      } ||||«        ||||«       | j	                  |j
                  |j
                  «       | j	                  |j                  |j                  «       t        j                  j                  ||«       Œ³ y )NTrD   )	r   r   r   Ú
zeros_likerI   rJ   rK   rL   rM   )	r(   rP   r   rQ   rR   rU   ÚsrcrV   rW   s	            r   Úcheck_setitem_indicesz'TestFancyIndexing.check_setitem_indicesŠ   s¥   € Ü ˆØ"”˜TÔ" 6Ó*ˆãˆEØ�e‘*ˆCÜ—}‘} SÓ)ˆHÜ—-‘- Ó$ˆCÙ�8˜U CÔ(Ù�#�u˜cÔ"ð ×Ñ˜SŸY™Y¨¯©Ô7Ø×Ñ˜SŸY™Y¨¯©Ô7Ü�J‰J×#Ñ# C¨Õ2ñ r   c                 óä   — d}d}t        j                  ||z  «      j                  |f|z  «      j                  t         j                  «      }| j                  ||«      }| j                  ||«       y rZ   )r   r]   r^   r_   r`   r>   rq   ra   s        r   Útest_setitem_tuplez$TestFancyIndexing.test_setitem_tupleš   s`   € àˆØˆÜ�i‰i˜˜T™	Ó"×*Ñ*¨A¨4°$©;Ó7×>Ñ>¼r¿x¹xÓHˆØ×5Ñ5°a¸Ó>ˆØ×"Ñ" 3¨Õ0r   c                 óè   — d}d}t        j                  ||z  «      j                  |f|z  «      j                  t         j                  «      }| j                  ||d¬«      }| j                  ||«       y rd   )r   r]   r^   r_   r`   rB   rq   ra   s        r   Útest_setitem_tuple_and_ellipsisz1TestFancyIndexing.test_setitem_tuple_and_ellipsis¢   rf   r   c                 óè   — d}d}t        j                  ||z  «      j                  |f|z  «      j                  t         j                  «      dz   }| j                  |«      }| j                  ||«       y )Nr[   r\   é
   )r   r]   r^   r_   r`   r,   rq   ra   s        r   Útest_setitem_arrayz$TestFancyIndexing.test_setitem_array¬   sc   € àˆØˆÜ�i‰i˜˜T™	Ó"×*Ñ*¨A¨4°$©;Ó7×>Ñ>¼r¿x¹xÓHÈ2ÑMˆØ×0Ñ0°Ó3ˆØ×"Ñ" 3¨Õ0r   c                 óô  — t         } t        d¬«      |«      }t        j                  d«      t        j                  d«      ft        j                  d«      t        j                  d«      ft        j                  dt        j
                  ¬«      t        j                  dt        j
                  ¬«      ft        j                  dt        j                  ¬«      t        j                  dt        j
                  ¬«      ft        j                  dd	¬«      t        j                  d
«      ft        j                  dd	¬«      t        j                  d«      ft        j                  g d¢d	¬«      t        j                  dd¬«      ft        j                  dt        ¬«      t        j                  dt        ¬«      fg}|D ];  \  }}|j                  «       } ||d|«        ||d|«       | j                  ||«       Œ= y )NTrD   r\   g…ëQ¸	@r.   ©rK   r#   é   z<U3Úabc)r\   r   )r|   ÚdefÚghiÚWXYZz<U4y       @      @r   )
r   r   r   ÚzerosÚarrayÚint64Úfloat64ÚcomplexrG   ÚassertPreciseEqual)r(   rQ   rR   ÚinpsÚx1ri   Úx2s          r   Útest_setitem_0dz!TestFancyIndexing.test_setitem_0d´   sU  € ä ˆØ"”˜TÔ" 6Ó*ˆô �X‰X�a‹[œ"Ÿ(™( 4›.Ð)Ü�X‰X�a‹[œ"Ÿ(™( 1›+Ð&Ü�X‰X�aœrŸx™xÔ(¬"¯(©(°1¼B¿H¹HÔ*EÐFÜ�X‰X�aœrŸz™zÔ*¬B¯H©H°Q¼b¿h¹hÔ,GÐHÜ�X‰X�a˜uÔ%¤r§x¡x°£Ð7Ü�X‰X�d %Ô(¬"¯(©(°3«-Ð8Ü�X‰XÒ)°Ô7Ü�X‰X�f EÔ*ð,ä�X‰X�aœwÔ'¬¯©°$¼gÔ)FÐGð

ˆó ‰EˆB�Ø—‘“ˆBÙ�2�q˜!ÔÙ�"�a˜ŒOØ×#Ñ# B¨Õ+ñ	 r   c                 ó
  ‡ ‡‡— t         Š t        d¬«      ‰«      Šˆˆˆ fd„}g }|j                  d«       |j                  t        j                  g d¢«      «       |j                  t        j                  dgdggdgdggg«      «       |j                  g d¢«       |j                  d«       |j                  d	«       t        j
                  t        j                  fD ]8  }t        j                  d
|¬«      j                  d«      }|D ]  } |||«       Œ Œ: g d¢}t        j                  g d¢«      } |||«       j                  }|| dz
  t        j                  |«      t        j                  | dz
  «      |g| dz
  gg}	|	D ])  }
‰ j                  t        «      5   ‰||
«       d d d «       Œ+ ‰ j                  t        «      5   ‰|dg«       d d d «       ‰ j                  «        y # 1 sw Y   ŒnxY w# 1 sw Y   Œ&xY w)NTrD   c                 ó¸   •—  ‰| |«      } ‰| |«      }‰j                  ||«       t        |d«      r)‰j                  |j                  |j                  k(  «       y y )NÚorder)r…   ÚhasattrrI   rŒ   )rP   ÚindrV   rW   rR   rQ   r(   s       €€€r   Úcheckz-TestFancyIndexing.test_np_take.<locals>.checkÐ   sT   ø€ Ù˜c 3Ó'ˆHÙ˜˜S“/ˆCØ×#Ñ# H¨cÔ2Ü�x Ô)Ø× Ñ  §¡°3·9±9Ñ!<Õ=ð *r   r#   )r#   r{   r#   é   r\   r{   r�   ©r#   r{   r#   )r‘   )r�   r\   r.   é   rz   )r[   r\   )r#   r.   r[   )r#   r.   r\   r[   r{   g333333û?)r   r   Úappendr   r�   r‚   Ú
complex128r]   r^   rN   ÚassertRaisesÚ
IndexErrorr   Údisable_leak_check)r(   r�   Útest_indicesÚdtr   rŽ   r   r   ÚszAÚillegal_indicesÚxrR   rQ   s   `          @@r   Útest_np_takezTestFancyIndexing.test_np_takeË   s·  ú€ äˆØ"”˜TÔ" 6Ó*ˆö	>ð ˆØ×Ñ˜AÔØ×ÑœBŸH™HÒ%5Ó6Ô7Ø×ÑœBŸH™H¨ s¨Q¨C j°A°3¸¸°+Ð%>Ó?Ô@Ø×ÑÒ,Ô-Ø×Ñ˜IÔ&Ø×ÑÐ3Ô4ä—8‘8œRŸ]™]Ó+ˆBÜ—	‘	˜" BÔ'×/Ñ/°Ó7ˆAÛ#�Ù�a˜•ñ $ð ,ò ˆÜ�H‰H’_Ó%ˆÙˆa�Ôð �f‰fˆØ   q¡¬"¯(©(°3«-¼¿¹À3À$ÈÁ(Ó9KØ˜5 C 4¨!¡8 *ð.ˆã ˆAØ×"Ñ"¤:Õ.Ù�a˜”÷ /Ð.ð !ð
 ×Ñœ{Õ+Ù�!�c�UŒO÷ ,ð 	×ÑÕ!÷ /Ð.ú÷ ,Ð+ús   Æ 
G-Ç	G9Ç-G6	Ç9Hc           	      ó¸  — t         } t        d¬«      |«      }t        j                  dg d¢«      } |t	        j
                  g d¢g d¢g d¢g«      ft	        j
                  g d¢«      t	        j
                  g d	¢«      t	        j
                  d
g«      dddfd¬«       |t	        j                  d«      t	        j
                  dg«      fd
dt	        j                  d
g«      fd¬«       |t	        j                  d«      fdd¬«      f}|D ]P  \  }}}|D ]E  }|D ]>  }	|D ]7  }
t	        j                  ||	|
¬«      } |||	|
¬«      }| j                  ||«       Œ9 Œ@ ŒG ŒR y )NTrD   Úinputs)Úarraysr   r   )r#   r.   r\   )r[   r{   é   )é   é   é	   )r   r.   r#   )r#   r.   r#   r.   r#   r   r#   )r   )r   r#   )r   r#   r/   r{   é{   )rw   r#   r�   r#   r’   r#   é   )r#   r\   r{   r   )r   r   ÚcollectionsÚ
namedtupler   r�   r]   ÚasarrayÚonesr   r…   )r(   rQ   rR   ÚntÚtriplesr    r   r   r�   ÚindiceÚaxrV   rW   s                r   Útest_np_take_axisz#TestFancyIndexing.test_np_take_axisÿ   s\  € ÜˆØ"”˜TÔ" 6Ó*ˆä×#Ñ# HÒ.KÓLˆñ ä—H‘Hšiª²IÐ>Ó?ðô —H‘HšYÓ'Ü—H‘Hš_Ó-Ü—H‘H˜a˜S“MØØØðð  ôñ ä—I‘I˜a“LÜ—H‘H˜c˜U“Oðð
 ØÜ—J‘J ˜s“Oðð
 ôñ ä—G‘GÐ5Ó6ððð ôð7$
ˆóL &-Ñ!ˆF�G˜TÛ�Û%�FÛ"˜Ü#%§7¡7¨5°&¸rÔ#B˜Ù# E¨6¸Ô;˜Ø×/Ñ/°¸#Õ>ñ #ñ &ñ  ñ &-r   c                 ó8  —  t        d¬«      t        «      }t        j                  d«      j	                  dd«      }d}t        j
                  g d¢«      }| j                  t        |«      5   |||d¬«       d d d «       | j                  «        y # 1 sw Y   ŒxY w)	NTrD   r¤   r\   z0axis 2 is out of bounds for array of dimension 2)r   r#   r.   r.   r   )	r   r   r   r]   r^   r�   ÚassertRaisesRegexÚ
ValueErrorr—   )r(   rR   rP   Úmsgr   s        r   Útest_np_take_axis_exceptionz-TestFancyIndexing.test_np_take_axis_exception4  sx   € Ø"”˜TÔ"¤;Ó/ˆÜ�i‰i˜‹l×"Ñ" 1 aÓ(ˆØ@ˆÜ—(‘(š9Ó%ˆØ×#Ñ#¤J°Õ4Ù�#�w QÕ'÷ 5ð 	×ÑÕ!÷ 5Ð4ús   Á+BÂBc                 óæ  — t         d„ «       }t         d„ «       }t        j                  d«      j                  d«      }t	        d «      t        j
                  ft        j
                  t	        d «      ft	        d«      t        j
                  t        j                  g d¢«      ft        j
                  t        j                  g d¢«      t	        d «      ft	        d«      t        t        j
                  t        j                  g d¢«      ft        j                  g d¢«      t        j
                  t        ft        j
                  t	        d«      t        j
                  t        j                  g d¢«      ft        j                  g d¢«      t        d t        j
                  ft        j
                  t	        d«      t        t        j
                  t        j                  g d¢«      ft        j                  g d¢«      t        j
                  t        j
                  t        ft        j
                  t        j                  g d¢«      t        j
                  t        ft	        d«      t        j                  g d¢«      t        j
                  d ft        j
                  t        j                  g d¢«      t        d fg}|j                  }|}|j                  }|}|D ]ž  }	 |||	«      }
 |||	«      }t        j                  j                  |
|«       t        j                  |«      }||	   } ||j                  «       |	|«      }
 ||j                  «       |	|«      }t        j                  j                  |
|«       Œ  y )Nc                 ó   — | |   S r   r   )r   r   s     r   Únp_new_axis_getitemz;TestFancyIndexing.test_newaxis.<locals>.np_new_axis_getitem?  s   € à�S‘6ˆMr   c                 ó   — || |<   | S r   r   )r   r   Úitems      r   Únp_new_axis_setitemz;TestFancyIndexing.test_newaxis.<locals>.np_new_axis_setitemC  s   € àˆAˆc‰FØˆHr   iH  )r[   r{   r¡   r¢   r#   )r#   r.   r#   r\   )r   r   r]   r^   r1   Únewaxisr�   rA   Úpy_funcrL   rM   ro   rG   )r(   r·   rº   r   Ú	idx_casesÚpyfunc_getitemÚcfunc_getitemÚpyfunc_setitemÚcfunc_setitemr   rV   rW   Úa_emptyr¹   s                 r   Útest_newaxiszTestFancyIndexing.test_newaxis>  sL  € Ü	ñ	ó 
ð	ô 
ñ	ó 
ð	ô �I‰I�mÓ$×,Ñ,¨\Ó:ˆä�4‹[œ"Ÿ*™*Ð%Ü�Z‰Zœ˜t›Ð%Ü�1‹X”r—z‘z¤2§8¡8ªIÓ#6Ð7Ü�Z‰ZœŸ™¢)Ó,¬e°D«kÐ:Ü�1‹X”x¤§¡¬R¯X©X²iÓ-@ÐAÜ�X‰X’iÓ ¤"§*¡*¬hÐ7Ü�Z‰Zœ˜q›¤2§:¡:¬r¯x©xº	Ó/BÐCÜ�X‰X’iÓ ¤(¨D´"·*±*Ð=Ü�Z‰Zœ˜q›¤8¬R¯Z©Z¼¿¹Â)Ó9LÐMÜ�X‰X’iÓ ¤"§*¡*¬b¯j©j¼(ÐCÜ�Z‰ZœŸ™¢)Ó,¬b¯j©j¼(ÐCÜ�1‹X”r—x‘x¢	Ó*¬B¯J©J¸Ð=Ü�Z‰ZœŸ™¢)Ó,¬h¸Ð=ð
ˆ	ð -×4Ñ4ˆØ+ˆà,×4Ñ4ˆØ+ˆãˆCÙ% a¨Ó-ˆHÙ  3Ó'ˆCÜ�J‰J×#Ñ# H¨cÔ2ä—m‘m AÓ&ˆGØ�S‘6ˆDá% g§l¡l£n°c¸4Ó@ˆHÙ §¡£°°TÓ:ˆCÜ�J‰J×#Ñ# H¨cÕ2ñ r   N)T)Ú__name__Ú
__module__Ú__qualname__r,   r8   r>   rB   rX   rb   re   rk   rm   rq   rs   ru   rx   r‰   r�   r¯   r´   rÃ   r   r   r   r!   r!      s^   „ óóó.5ó6ò3ò,1ò1ò)ò1ò3ò 1ò1ò1ò,ò.2"òh2?òj"ó*3r   r!   c                   ó   ‡ — e Zd ZdZ edd«      d ej                  g d¢«      dfd ej                  g d¢«       ed«       ed«      fed ej                  g d¢«      f ej                  g d¢«      defed ej                  g d¢«      d edd«      f ej                  g d¢«      de edd«      f edd«      d ej                  g d¢«      dfd ej                  g d	¢«       ed«       ed«      fgZˆ fd
„Z	d„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚTestFancyIndexingMultiDim)r{   r¡   r¢   r£   r¤   rw   r[   r{   r\   )r   r#   r\   r[   r.   r#   N)TFTFTFF)TFTFTFc                 ój   •— t         ‰| �  «        t        j                  j	                  d«      | _        y )Nr#   )ÚsuperÚsetUpr   ÚrandomÚdefault_rngÚrng)r(   Ú	__class__s    €r   rË   zTestFancyIndexingMultiDim.setUp„  s"   ø€ Ü‰‰ŒÜ—9‘9×(Ñ(¨Ó+ˆ�r   c                 ó˜  — t        | j                  «      }t        d d d «      t        d|dz
  d «      t        dd d«      t        |dz
  d d«      t        | dz   dd «      t        d| d«      t        d|dz
  d «      t        d| d«      g}t        t	        j
                  |«      «      }g }d}t        |«      D ]…  }| j                  j                  ddd¬	«      }| j                  j                  |d
¬	«      j                  «       }| j                  j                  d
«      }	|||	<   |j                  t        |«      «       Œ‡ t        |«      D ]…  }| j                  j                  ddd¬	«      }| j                  j                  |d
¬	«      j                  «       }| j                  j                  d
«      }	|||	<   |j                  t        |«      «       Œ‡ t        |«      D ]—  }| j                  j                  ddd¬	«      }| j                  j                  |d
¬	«      j                  «       }| j                  j                  d
dd¬«      }	|||	d   <   t        ||	d   <   |j                  t        |«      «       Œ™ t        |«      D ]È  }| j                  j                  ddd¬	«      }| j                  j                  |d
¬	«      j                  «       }| j                  j                  d
«      }	| j                  |	   }
t	        j                  | j                  j                  d|
¬	«      t        ¬«      ||	<   |j                  t        |«      «       ŒÊ |S )Nr#   r   r.   r$   r/   é   r{   é   ©rN   r[   F)rN   Úreplacerz   )ÚminrJ   r1   r;   r   r]   r2   rÎ   ÚintegersÚchoiceÚtolistr“   ÚtuplerA   r�   Úbool)r(   r)   Úslice_choicesÚinteger_choicesr   ÚKÚ_Ú	array_idxÚcurr_idxÚ
_array_idxÚbool_arr_shapes              r   Úgenerate_random_indicesz1TestFancyIndexingMultiDim.generate_random_indicesˆ  sÓ  € Ü�—
‘
‹OˆÜ˜t T¨4Ó0Ü�!�Q˜‘U˜DÓ!Ü�!�T˜1ÓÜ�!�a‘%˜˜rÓ"Ü�1�"�q‘&˜"˜dÓ#Ü�"�q�b˜"ÓÜ�!�Q˜‘U˜DÓ!Ü�"�q�b˜"Óð
ˆô œrŸy™y¨›|Ó,ˆàˆð ˆÜ�q–ˆAØŸ™×)Ñ)¨!¨Q°RÐ)Ó8ˆIà—x‘x—‘ }¸1�Ó=×DÑDÓFˆHàŸ™Ÿ™¨Ó+ˆJØ#,ˆH�ZÑ Ø�N‰Nœ5 ›?Õ+ð ô �q–ˆAØŸ™×)Ñ)¨!¨Q°RÐ)Ó8ˆIà—x‘x—‘ ¸Q�Ó?×FÑFÓHˆHàŸ™Ÿ™¨Ó+ˆJØ#,ˆH�ZÑ Ø�N‰Nœ5 ›?Õ+ð ô �q–ˆAØŸ™×)Ñ)¨!¨Q°RÐ)Ó8ˆIà—x‘x—‘ }¸1�Ó=×DÑDÓFˆHð Ÿ™Ÿ™¨°¸E˜ÓBˆJØ&/ˆH�Z ‘]Ñ#Ü&.ˆH�Z ‘]Ñ#Ø�N‰Nœ5 ›?Õ+ð ô �q–ˆAØŸ™×)Ñ)¨!¨Q°RÐ)Ó8ˆIà—x‘x—‘ }¸1�Ó=×DÑDÓFˆHàŸ™Ÿ™¨Ó+ˆJØ!ŸZ™Z¨
Ñ3ˆNÜ#%§8¡8Ø—‘—‘ ¨�Ó7Üô$ˆH�ZÑ ð �N‰Nœ5 ›?Õ+ð ð ˆr   c                 ó  — t         d„ «       }t        j                  j                  dd|¬«      }|j                  }|j
                  xs |} |||«      } |||«      }| j                  |j
                  |«       | j                  |j                  |j                  «       | j                  |j                  |j                  «       t        j                  j                  ||«       | j                  t        j                  ||«      «       y )Nc                 ó   — | |   S r   r   )r�   r   s     r   Únumba_get_itemzGTestFancyIndexingMultiDim.check_getitem_indices.<locals>.numba_get_itemÉ  s   € à˜‘:Ðr   r   r�   rÓ   )r   r   rÌ   Úrandintr¼   rH   ÚassertIsNotrI   rJ   rK   rL   rM   ÚassertFalseÚmay_share_memory)	r(   Ú	arr_shaperU   ræ   rP   Úget_itemrT   rV   rW   s	            r   rX   z/TestFancyIndexingMultiDim.check_getitem_indicesÈ  sØ   € Ü	ñ	ó 
ð	ô �i‰i×Ñ  2¨IÐÓ6ˆØ!×)Ñ)ˆØ—H‘H’O ˆ	á˜C Ó'ˆÙ˜S %Ó(ˆà×Ñ˜Ÿ™¨	Ô2ð 	×Ñ˜Ÿ™ H§N¡NÔ3Ø×Ñ˜Ÿ™ H§N¡NÔ3Ü
�
‰
×Ñ  XÔ.ð 	×Ñœ×,Ñ,¨S°(Ó;Õ<r   c                 óÐ  — t         d„ «       }t        j                  j                  dd|¬«      }||   }t        j                  |«      }t        j                  |«      }|j                  |||«        ||||«       | j                  |j                  |j                  «       | j                  |j                  |j                  «       t        j                  j                  ||«       y )Nc                 ó   — || |<   y r   r   )r�   r   r¹   s      r   Úset_itemzATestFancyIndexingMultiDim.check_setitem_indices.<locals>.set_itemà  s   € àˆE�#ŠJr   r   r�   rÓ   )r   r   rÌ   rç   ro   r¼   rI   rJ   rK   rL   rM   )r(   rë   rU   rï   rP   rp   rV   rW   s           r   rq   z/TestFancyIndexingMultiDim.check_setitem_indicesß  sº   € Ü	ñ	ó 
ð	ô �i‰i×Ñ  2¨IÐÓ6ˆØ�%‰jˆÜ—=‘= Ó%ˆÜ�m‰m˜CÓ ˆà×Ñ˜ 5¨#Ô.Ù��e˜SÔ!ð 	×Ñ˜Ÿ™ H§N¡NÔ3Ø×Ñ˜Ÿ™ H§N¡NÔ3ä
�
‰
×Ñ  XÕ.r   c                 óò   — | j                   j                  «       }|| j                  «       z  }|D ]9  }| j                  |¬«      5  | j	                  | j
                  |«       d d d «       Œ; y # 1 sw Y   ŒFxY w©N)r   )Úindexing_casesrG   rã   ÚsubTestrX   rJ   ©r(   r   r   s      r   Útest_getitemz&TestFancyIndexingMultiDim.test_getitemó  óf   € à×%Ñ%×*Ñ*Ó,ˆð 	�4×/Ñ/Ó1Ñ1ˆãˆCØ—‘ #�Õ&Ø×*Ñ*¨4¯:©:°sÔ;÷ 'Ð&ñ ß&Ð&úó   ÁA-Á-A6	c                 óò   — | j                   j                  «       }|| j                  «       z  }|D ]9  }| j                  |¬«      5  | j	                  | j
                  |«       d d d «       Œ; y # 1 sw Y   ŒFxY wrñ   )rò   rG   rã   ró   rq   rJ   rô   s      r   Útest_setitemz&TestFancyIndexingMultiDim.test_setitemþ  rö   r÷   c           	      óÞ  — dddt        j                  ddgddgg«      ffdddt        j                  ddg«      t        j                  ddg«      ffddt        j                  ddg«      t        d «      ddffg}|D ]d  \  }}| j                  t        «      5 }| j                  | j                  |«       d d d «       | j                  |t        j                  «      «       Œf y # 1 sw Y   Œ1xY w)	Nz,Multi-dimensional indices are not supported.r   r\   r#   r.   z:Using more than one non-scalar array index is unsupported.z›Using more than one indexing subspace is unsupported. An indexing subspace is a group of one or more consecutive indices comprising integer or array types.r[   )
r   r�   r1   r•   r   rX   rJ   ÚassertInÚstrÚ	exception)r(   Úerr_idx_casesÚerrr   Úraisess        r   Ú%test_unsupported_condition_exceptionsz?TestFancyIndexingMultiDim.test_unsupported_condition_exceptions	  sì   € ð <Ø�”B—H‘H˜q !˜f q¨! fÐ-Ó.Ð/ð1ð JØ�”B—H‘H˜a ˜VÓ$¤b§h¡h°°1¨vÓ&6Ð7ð9ð;ð ”—‘˜1˜a˜&Ó!¤5¨£;°°1Ð5ð7ð
ˆó &‰HˆC�Ø×"Ñ"¤;Ô/°6Ø×*Ñ*¨4¯:©:°sÔ;÷ 0à�M‰MØÜ�F×$Ñ$Ó%õñ &ß/Ð/ús   ÂC#Ã#C,	)rÄ   rÅ   rÆ   rJ   r1   r   r�   rA   rò   rË   rã   rX   rq   rõ   rù   r  Ú__classcell__)rÏ   s   @r   rÈ   rÈ   k  s&  ø„ ð  €Eñ 
ˆq�!‹�a˜˜Ÿ™¢/Ó2°AÐ6Ø	
ˆHˆB�H‰H’[Ó!¡5¨£;±°a³Ð9ð 
�1�h�b—h‘hš{Ó+Ð,Ø	ˆ�‰’+Ó	  8Ð,ð 
�1�h�b—h‘hš{Ó+¨Q±°a¸³
Ð;Ø	ˆ�‰’+Ó	  8©U°1°Q«ZÐ8ñ 
ˆq�!‹�aØ	ˆ�‰Ò@Ó	AØ	
ð	ð 
ˆHˆB�H‰HÒ<Ó=Ù	ˆt‹‘e˜A“hð	 ð#€Nô*,ò>ò@=ò./ò(	<ò	<ör   rÈ   Ú__main__)r§   r3   Únumpyr   ÚunittestÚnumbar   r   r   Ú
numba.corer   Únumba.core.errorsr   Únumba.tests.supportr   r	   r   r   r   r   r!   rÈ   rÄ   Úmainr   r   r   Ú<module>r     sp   ðÛ Û ã ã ß #Ñ #Ý Ý )ß 9òòòò*ôO3˜¨ô O3ôd
t °ô tðn ˆzÒØ€H‡M�M…Oð r   