§
    2@Äj¬N  ã                   ó¼   — d dl Z d dlZd dlZd dlZd dlmZmZ d dlm	Z	 d dl
mZmZ  G d„ dee¦  «        Z G d„ dee¦  «        Zed	k    r ej        ¦   «          dS dS )
é    N)ÚjitÚnjit)ÚTypingError)ÚMemoryLeakMixinÚTestCasec                   óP  — 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d ej        g d¢g d¢g d	¢g¦  «         ed¦  «         ed¦  «        fed ej        g d¢¦  «        f ej        g d¢¦  «        def ej        g d¢g d¢g d	¢g¦  «        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j        g d¢g d¢g d	¢g¦  «        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ej	         
                    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 )ÚTestFancyIndexing©é   é   é   é   é	   é
   é   r   é   ©r   é   r   r   é   r   N©r   r   r   r   r   ©r   r   r   r   r   ©TFTFTFF©TFTFTFc                 ó8  — 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 }t          d¦  «        D ]Ž}| j                             ddd¬	¦  «        }| j         	                    |d
¬	¦  «         
                    ¦   «         }| j         	                    d
¦  «        }|||<   |                     t          |¦  «        ¦  «         Œ�t          d¦  «        D ]Ž}| j                             ddd¬	¦  «        }| j         	                    |d
¬	¦  «         
                    ¦   «         }| j         	                    d
¦  «        }|||<   |                     t          |¦  «        ¦  «         Œ�t          d¦  «        D ]§}| j                             ddd¬	¦  «        }| j         	                    |d
¬	¦  «         
                    ¦   «         }| j         	                    d
dd¬¦  «        }|||d         <   t          ||d         <   |                     t          |¦  «        ¦  «         Œ¨t          d¦  «        D ]Î}| j                             ddd¬	¦  «        }| j         	                    |d
¬	¦  «         
                    ¦   «         }| j         	                    d
¦  «        }| j        |         }	t	          j        | j         	                    d|	¬	¦  «        t          ¬¦  «        ||<   |                     t          |¦  «        ¦  «         ŒÏ|S ©Nr   r   r   éþÿÿÿéÿÿÿÿé   r   é   ©Úsizer   F)r!   Úreplace©Údtype©ÚminÚshapeÚsliceÚlistÚnpÚarangeÚrangeÚrngÚintegersÚchoiceÚtolistÚappendÚtupleÚEllipsisÚarrayÚbool)
ÚselfÚNÚslice_choicesÚinteger_choicesÚindicesÚiÚ	array_idxÚcurr_idxÚ
_array_idxÚbool_arr_shapes
             úPC:\Projects\Historical\venv\Lib\site-packages\numba/tests/test_fancy_indexing.pyÚgenerate_random_indicesz)TestFancyIndexing.generate_random_indices-   sN  € Ý�”
‰OŒOˆÝ˜t T¨4Ñ0Ô0Ý�!�Q˜‘U˜DÑ!Ô!Ý�!�T˜1ÑÔÝ�!�a‘%˜˜rÑ"Ô"Ý�1�"�q‘&˜"˜dÑ#Ô#Ý�"�q�b˜"ÑÔÝ�!�Q˜‘U˜DÑ!Ô!Ý�"�q�b˜"ÑÔð
ˆõ �rœy¨™|œ|Ñ,Ô,ˆàˆõ �r‘”ð 	,ð 	,ˆAØœ×)Ò)¨!¨Q°RÐ)Ñ8Ô8ˆIà”x—’ }¸1�Ñ=Ô=×DÒDÑFÔFˆHàœŸš¨Ñ+Ô+ˆJØ#,ˆH�ZÑ Ø�NŠN�5 ™?œ?Ñ+Ô+Ð+Ð+õ �r‘”ð 	,ð 	,ˆAØœ×)Ò)¨!¨Q°RÐ)Ñ8Ô8ˆIà”x—’ ¸Q�Ñ?Ô?×FÒFÑHÔHˆHàœŸš¨Ñ+Ô+ˆJØ#,ˆH�ZÑ Ø�NŠN�5 ™?œ?Ñ+Ô+Ð+Ð+õ �r‘”ð 		,ð 		,ˆAØœ×)Ò)¨!¨Q°RÐ)Ñ8Ô8ˆIà”x—’ }¸1�Ñ=Ô=×DÒDÑFÔFˆHð œŸš¨°¸E˜ÑBÔBˆJØ&/ˆH�Z ”]Ñ#Ý&.ˆH�Z ”]Ñ#Ø�NŠN�5 ™?œ?Ñ+Ô+Ð+Ð+õ �r‘”ð 	,ð 	,ˆAØœ×)Ò)¨!¨Q°RÐ)Ñ8Ô8ˆIà”x—’ }¸1�Ñ=Ô=×DÒDÑFÔFˆHàœŸš¨Ñ+Ô+ˆJØ!œZ¨
Ô3ˆNÝ#%¤8Ø”—’ ¨�Ñ7Ô7Ýð$ñ $ô $ˆH�ZÑ ð
 �NŠN�5 ™?œ?Ñ+Ô+Ð+Ð+àˆó    c                 ó  ‡— ˆfd„}t           j                             dd|¬¦  «        }t          |¦  «        }|                     ¦   «         }|j        p|} ||‰¦  «        } ||‰¦  «        }	|j        |usJ ‚|                      |	j        |j        ¦  «         |                      |	j        |j        ¦  «         t           j	         
                    |	|¦  «         |	                     d¦  «         t           j	         
                    ||¦  «         d S )Nc                 ó   •— | ‰         S ©N© )r4   ÚidxÚindexs     €r@   Úget_itemz9TestFancyIndexing.check_getitem_indices.<locals>.get_itemn   s   ø€ Ø˜”<ÐrB   r   r   r    é*   )r*   ÚrandomÚrandom_integersr   ÚcopyÚbaseÚassertEqualr'   r$   ÚtestingÚassert_equalÚfill)
r6   Ú	arr_shaperH   rI   ÚarrÚget_item_numbaÚorigÚ	orig_baseÚexpectedÚgots
     `       r@   Úcheck_getitem_indicesz'TestFancyIndexing.check_getitem_indicesm   s  ø€ ð	 ð 	 ð 	 ð 	 ð 	 õ Œi×'Ò'¨¨2°IÐ'Ñ>Ô>ˆÝ˜h™œˆØ�xŠx‰zŒzˆØ”H�O ˆ	à�8˜C Ñ'Ô'ˆØˆn˜S %Ñ(Ô(ˆàŒ} IÐ-Ð-Ð-Ð-ð 	×Ò˜œ H¤NÑ3Ô3Ð3Ø×Ò˜œ H¤NÑ3Ô3Ð3Ý
Œ
×Ò  XÑ.Ô.Ð.ð 	�Š�‰ŒˆÝ
Œ
×Ò  TÑ*Ô*Ð*Ð*Ð*rB   c                 óÒ  — t           d„ ¦   «         }t          j                             dd|¬¦  «        }||         }t          j        |¦  «        }t          j        |¦  «        }|                     |||¦  «          ||||¦  «         |                      |j        |j        ¦  «         |                      |j        |j        ¦  «         t          j	         
                    ||¦  «         d S )Nc                 ó   — || |<   d S rE   rF   ©r4   rG   Úitems      r@   Úset_itemz9TestFancyIndexing.check_setitem_indices.<locals>.set_item†   ó   € àˆE�#‰JˆJˆJrB   r   r   r    )r   r*   rK   rL   Ú
zeros_likeÚpy_funcrO   r'   r$   rP   rQ   ©r6   rS   rH   r_   rT   ÚsrcrX   rY   s           r@   Úcheck_setitem_indicesz'TestFancyIndexing.check_setitem_indices…   sà   € Ý	ð	ð 	ñ 
Œð	õ Œi×'Ò'¨¨2°IÐ'Ñ>Ô>ˆØ�%ŒjˆÝ”= Ñ%Ô%ˆÝŒm˜CÑ Ô ˆà×Ò˜ 5¨#Ñ.Ô.Ð.Øˆ��e˜SÑ!Ô!Ð!ð 	×Ò˜œ H¤NÑ3Ô3Ð3Ø×Ò˜œ H¤NÑ3Ô3Ð3å
Œ
×Ò  XÑ.Ô.Ð.Ð.Ð.rB   c                 óÞ   — | j         }||                      ¦   «         z  }|D ]K}|                      |¬¦  «        5  |                      | j        |¦  «         d d d ¦  «         n# 1 swxY w Y   ŒLd S ©N)rG   )Úindexing_casesrA   ÚsubTestrZ   r'   ©r6   r:   rG   s      r@   Útest_getitemzTestFancyIndexing.test_getitem™   ó½   € àÔ%ˆð 	�4×/Ò/Ñ1Ô1Ñ1ˆàð 	<ð 	<ˆCØ—’ #�Ñ&Ô&ð <ð <Ø×*Ò*¨4¬:°sÑ;Ô;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <øð	<ð 	<ó   ¹A!Á!A%	Á(A%	c                 óÞ   — | j         }||                      ¦   «         z  }|D ]K}|                      |¬¦  «        5  |                      | j        |¦  «         d d d ¦  «         n# 1 swxY w Y   ŒLd S rg   )rh   rA   ri   re   r'   rj   s      r@   Útest_setitemzTestFancyIndexing.test_setitem¤   rl   rm   c                 óÔ  — t           d„ ¦   «         }|j        }|}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 ]I\  }}|                     ¦   «         } ||d|¦  «          ||d|¦  «         |  	                    ||¦  «         ŒJd S )Nc                 ó   — || |<   d S rE   rF   r]   s      r@   r_   z3TestFancyIndexing.test_setitem_0d.<locals>.set_item°   r`   rB   r   g…ëQ¸	@r   r#   r   r   z<U3Úabc)r   Úa)rr   ÚdefÚghiÚWXYZz<U4y       @      @r   )
r   rb   r*   Úzerosr4   Úint64Úfloat64ÚcomplexrM   ÚassertPreciseEqual)r6   r_   ÚpyfuncÚcfuncÚinpsÚx1ÚvÚx2s           r@   Útest_setitem_0dz!TestFancyIndexing.test_setitem_0d¯   sµ  € Ý	ð	ð 	ñ 
Œð	ð Ô!ˆØˆõ ŒX�a‰[Œ[�"œ( 4™.œ.Ð)ÝŒX�a‰[Œ[�"œ( 1™+œ+Ð&ÝŒX�a�rœxÐ(Ñ(Ô(­"¬(°1½B¼HÐ*EÑ*EÔ*EÐFÝŒX�a�rœzÐ*Ñ*Ô*­B¬H°Q½b¼hÐ,GÑ,GÔ,GÐHÝŒX�a˜uÐ%Ñ%Ô%¥r¤x°¡¤Ð7ÝŒX�d %Ð(Ñ(Ô(­"¬(°3©-¬-Ð8ÝŒXÐ)Ð)Ð)°Ð7Ñ7Ô7ÝŒX�f EÐ*Ñ*Ô*ð,åŒX�a�wÐ'Ñ'Ô'­¬°$½gÐ)FÑ)FÔ)FÐGð

ˆð ð 	,ð 	,‰EˆB�Ø—’‘”ˆBØˆF�2�q˜!ÑÔÐØˆE�"�a˜‰OŒOˆOØ×#Ò# B¨Ñ+Ô+Ð+Ð+ð		,ð 	,rB   c                 óª   — t           d„ ¦   «         }t          j        d¦  «        } ||d¦  «         |                      |d         |d         ¦  «         d S )Nc                 ó   — | d         | d<   d S )N).r   ).r   rF   )rT   r€   s     r@   Úfooz7TestFancyIndexing.test_ellipsis_getsetitem.<locals>.fooË   s   € à˜fœ+ˆC�‰KˆKˆKrB   r   r   r   )r   r*   r+   rO   )r6   r…   rT   s      r@   Útest_ellipsis_getsetitemz*TestFancyIndexing.test_ellipsis_getsetitemÉ   s]   € å	ð	&ð 	&ñ 
Œð	&õ Œi˜‰lŒlˆØˆˆC�‰ŒˆØ×Ò˜˜Qœ  Q¤Ñ(Ô(Ð(Ð(Ð(rB   c                 óJ  ‡ ‡‡— d„ }|Št          ‰¦  «        Šˆˆˆ fd„}g }|                     d¦  «         |                     t          j        g d¢¦  «        ¦  «         |                     t          j        dgdggdgdggg¦  «        ¦  «         |                     g d¢¦  «         |                     d¦  «         |                     d¦  «         t          j        t          j        fD ]<}t          j        d	|¬
¦  «                             d¦  «        }|D ]} |||¦  «         ŒŒ=g d¢}t          j        g d¢¦  «        } |||¦  «         |j        }	|	|	 dz
  t          j        |	¦  «        t          j        |	 dz
  ¦  «        |	g|	 dz
  gg}
|
D ]@}‰  	                    t          ¦  «        5   ‰||¦  «         d d d ¦  «         n# 1 swxY w Y   ŒA‰  	                    t          ¦  «        5   ‰|dg¦  «         d d d ¦  «         n# 1 swxY w Y   ‰                      ¦   «          d S )Nc                 ó,   — t          j        | |¦  «        S rE   ©r*   Útake)r4   r:   s     r@   Únp_takez/TestFancyIndexing.test_np_take.<locals>.np_takeÔ   s   € Ý”7˜5 'Ñ*Ô*Ð*rB   c                 óÎ   •—  ‰| |¦  «        } ‰| |¦  «        }‰                      ||¦  «         t          |d¦  «        r%‰                     |j        |j        k    ¦  «         d S d S )NÚorder)r{   ÚhasattrrO   r�   )rT   ÚindrX   rY   r}   r|   r6   s       €€€r@   Úcheckz-TestFancyIndexing.test_np_take.<locals>.checkÛ   sx   ø€ Ø�v˜c 3Ñ'Ô'ˆHØ�%˜˜S‘/”/ˆCØ×#Ò# H¨cÑ2Ô2Ð2Ý�x Ñ)Ô)ð >Ø× Ò  ¤°3´9Ò!<Ñ=Ô=Ð=Ð=Ð=ð>ð >rB   r   )r   r   r   é   r   r   r‘   ©r   r   r   )r’   )r‘   r   r   é   r#   )r   r   )r   r   r   )r   r   r   r   r   g333333û?)r   r1   r*   r4   rx   Ú
complex128r+   Úreshaper!   ÚassertRaisesÚ
IndexErrorr   Údisable_leak_check)r6   r‹   r�   Útest_indicesÚdtÚAr�   r:   rs   ÚszAÚillegal_indicesÚxr}   r|   s   `           @@r@   Útest_np_takezTestFancyIndexing.test_np_takeÓ   só  øøø€ ð	+ð 	+ð 	+ð ˆÝ�V‘”ˆð	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð ˆØ×Ò˜AÑÔÐØ×Ò�BœHÐ%5Ð%5Ð%5Ñ6Ô6Ñ7Ô7Ð7Ø×Ò�BœH¨ s¨Q¨C j°A°3¸¸°+Ð%>Ñ?Ô?Ñ@Ô@Ð@Ø×ÒÐ,Ð,Ð,Ñ-Ô-Ð-Ø×Ò˜IÑ&Ô&Ð&Ø×ÒÐ3Ñ4Ô4Ð4å”8�Rœ]Ð+ð 	ð 	ˆBÝ”	˜" BÐ'Ñ'Ô'×/Ò/°Ñ7Ô7ˆAØ#ð ð �Ø��a˜‘”��ðð �)�)ˆÝŒH�_�_�_Ñ%Ô%ˆØˆˆa�ÑÔÐð ŒfˆØ   q¡­"¬(°3©-¬-½¼À3À$ÈÁ(Ñ9KÔ9KØ˜5 C 4¨!¡8 *ð.ˆà ð 	ð 	ˆAØ×"Ò"¥:Ñ.Ô.ð ð Ø��a˜‘”�ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øð ×Ò�{Ñ+Ô+ð 	ð 	ØˆE�!�c�U‰OŒOˆOð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	×ÒÑ!Ô!Ð!Ð!Ð!s$   Æ+GÇG	ÇG	Ç*HÈHÈHc           	      óÂ  — d„ }|} 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 ]G}	|D ]B}
|D ]=}t          j        |	|
|¬¦  «        } ||	|
|¬¦  «        }|  	                    ||¦  «         Œ>ŒCŒHŒQd S )Nc                 ó0   — t          j        | ||¬¦  «        S ©N©Úaxisr‰   ©r›   r:   r¤   s      r@   Únp_take_kwsz8TestFancyIndexing.test_np_take_axis.<locals>.np_take_kws  ó   € Ý”7˜1˜g¨DÐ1Ñ1Ô1Ð1rB   T©ÚnopythonÚ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   )r   r   r   r   é{   )r   r   r‘   r   r“   r   é   )r   r   r   r£   )
r   ÚcollectionsÚ
namedtupler*   r4   r+   ÚasarrayÚonesrŠ   r{   )r6   r¦   r|   r}   ÚntÚtriplesr«   r:   r¤   r4   ÚindiceÚaxrX   rY   s                 r@   Útest_np_take_axisz#TestFancyIndexing.test_np_take_axis
  sø  € ð	2ð 	2ð 	2àˆØ"•˜TÐ"Ñ"Ô" 6Ñ*Ô*ˆåÔ# HÐ.KÐ.KÐ.KÑLÔLˆð ˆBå”H˜i˜i˜i¨¨¨°I°I°IÐ>Ñ?Ô?ðõ ”H˜Y˜Y˜YÑ'Ô'Ý”H˜_˜_˜_Ñ-Ô-Ý”H˜a˜S‘M”MØØØðð  ðñ ô ð ˆBå”I˜a‘L”LÝ”H˜c˜U‘O”Oðð
 ØÝ”J ˜s‘O”Oðð
 ðñ ô ð ˆBå”GÐ5Ñ6Ô6ððð ðñ ô ð7$
ˆðL &-ð 	?ð 	?Ñ!ˆF�G˜TØð ?ð ?�Ø%ð ?ð ?�FØ"ð ?ð ?˜Ý#%¤7¨5°&¸rÐ#BÑ#BÔ#B˜Ø#˜e E¨6¸Ð;Ñ;Ô;˜Ø×/Ò/°¸#Ñ>Ô>Ð>Ð>ð?ð?ð?ð	?ð 	?rB   c                 óh  — d„ } t          d¬¦  «        |¦  «        }t          j        d¦  «                             dd¦  «        }d}t          j        g d¢¦  «        }|                      t          |¦  «        5   |||d¬	¦  «         d d d ¦  «         n# 1 swxY w Y   |                      ¦   «          d S )
Nc                 ó0   — t          j        | ||¬¦  «        S r¢   r‰   r¥   s      r@   r¦   zBTestFancyIndexing.test_np_take_axis_exception.<locals>.np_take_kwsB  r§   rB   Tr¨   r   r   z0axis 2 is out of bounds for array of dimension 2)r   r   r   r   r£   )r   r*   r+   r•   r4   ÚassertRaisesRegexÚ
ValueErrorr˜   )r6   r¦   r}   rT   Úmsgr:   s         r@   Útest_np_take_axis_exceptionz-TestFancyIndexing.test_np_take_axis_exceptionA  sü   € ð	2ð 	2ð 	2à"•˜TÐ"Ñ"Ô" ;Ñ/Ô/ˆÝŒi˜‰lŒl×"Ò" 1 aÑ(Ô(ˆØ@ˆÝ”(˜9˜9˜9Ñ%Ô%ˆØ×#Ò#¥J°Ñ4Ô4ð 	(ð 	(ØˆE�#�w QÐ'Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	×ÒÑ!Ô!Ð!Ð!Ð!s   Á8BÂBÂBc                 óÂ  — t           d„ ¦   «         }t           d„ ¦   «         }t          j        d¦  «                             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	         
                    |
|¦  «         t          j        |¦  «        }||	         } ||                     ¦   «         |	|¦  «        }
 ||                     ¦   «         |	|¦  «        }t          j	         
                    |
|¦  «         Œµd S )Nc                 ó   — | |         S rE   rF   )rs   rG   s     r@   Únp_new_axis_getitemz;TestFancyIndexing.test_newaxis.<locals>.np_new_axis_getitemN  s   € à�S”6ˆMrB   c                 ó   — || |<   | S rE   rF   )rs   rG   r^   s      r@   Únp_new_axis_setitemz;TestFancyIndexing.test_newaxis.<locals>.np_new_axis_setitemR  s   € àˆAˆc‰FØˆHrB   iH  )r   r   r   r   r   )r   r   r   r   )r   r*   r+   r•   r(   Únewaxisr4   r3   rb   rP   rQ   ra   rM   )r6   r¿   rÁ   rs   Ú	idx_casesÚpyfunc_getitemÚcfunc_getitemÚpyfunc_setitemÚcfunc_setitemrG   rX   rY   Úa_emptyr^   s                 r@   Útest_newaxiszTestFancyIndexing.test_newaxisM  s°  € Ý	ð	ð 	ñ 
Œð	õ 
ð	ð 	ñ 
Œð	õ ŒI�mÑ$Ô$×,Ò,¨\Ñ:Ô:ˆå�4‰[Œ[�"œ*Ð%ÝŒZ�˜t™œÐ%Ý�1‰XŒX•r”z¥2¤8¨I¨I¨IÑ#6Ô#6Ð7ÝŒZ�œ ) ) )Ñ,Ô,­e°D©k¬kÐ:Ý�1‰XŒX•x¥¤­R¬X°i°i°iÑ-@Ô-@ÐAÝŒX�i�i�iÑ Ô ¥"¤*­hÐ7ÝŒZ�˜q™œ¥2¤:­r¬x¸	¸	¸	Ñ/BÔ/BÐCÝŒX�i�i�iÑ Ô ¥(¨Dµ"´*Ð=ÝŒZ�˜q™œ¥8­R¬Z½¼À)À)À)Ñ9LÔ9LÐMÝŒX�i�i�iÑ Ô ¥"¤*­b¬j½(ÐCÝŒZ�œ ) ) )Ñ,Ô,­b¬j½(ÐCÝ�1‰XŒX•r”x 	 	 	Ñ*Ô*­B¬J¸Ð=ÝŒZ�œ ) ) )Ñ,Ô,­h¸Ð=ð
ˆ	ð -Ô4ˆØ+ˆà,Ô4ˆØ+ˆàð 
	3ð 
	3ˆCØ%�~ a¨Ñ-Ô-ˆHØ�-  3Ñ'Ô'ˆCÝŒJ×#Ò# H¨cÑ2Ô2Ð2å”m AÑ&Ô&ˆGØ�S”6ˆDà%�~ g§l¢l¡n¤n°c¸4Ñ@Ô@ˆHØ�- §¢¡¤°°TÑ:Ô:ˆCÝŒJ×#Ò# H¨cÑ2Ô2Ð2Ð2ð
	3ð 
	3rB   )Ú__name__Ú
__module__Ú__qualname__r'   r(   r*   r4   r3   rh   rK   Údefault_rngr-   rA   rZ   re   rk   ro   r‚   r†   rŸ   r¶   r¼   rÉ   rF   rB   r@   r	   r	      sÀ  € € € € € ð  €Eð 
ˆˆq�!‰Œ�a˜˜œ + + +Ñ.Ô.°Ð2Ø	
ˆHˆBŒH�[�[�[Ñ!Ô! 5 5¨¡;¤;°°°a±´Ð9Ø	
ˆHˆBŒH�k�k�k ; ; ;°°°Ð<Ñ=Ô=Ø	ˆˆt‰Œ�e�e˜A‘h”hð	 ð 
�1�h�b”h˜{˜{˜{Ñ+Ô+Ð,Ø	ˆŒ�+�+�+Ñ	Ô	  8Ð,Ø	ˆŒ�;�;�;   ¨[¨[¨[Ð9Ñ	:Ô	:Ø	
ˆHð	ð 
�1�h�b”h˜{˜{˜{Ñ+Ô+¨Q°°°a¸±
´
Ð;Ø	ˆŒ�+�+�+Ñ	Ô	  8¨U¨U°1°Q©Z¬ZÐ8Ø	ˆŒ�;�;�;   ¨[¨[¨[Ð9Ñ	:Ô	:Ø	
ˆH�e�e˜A˜a‘j”jð	"ð 
ˆˆq�!‰Œ�aØ	ˆŒÐ@Ð@Ð@Ñ	AÔ	AØ	
ð	ð 
ˆHˆBŒHÐ<Ð<Ð<Ñ=Ô=Ø	ˆˆt‰Œ�e�e˜A‘h”hð	 ð/€Nð6 Œ)×
Ò
 Ñ
"Ô
"€Cð>ð >ð >ð@+ð +ð +ð0/ð /ð /ð(	<ð 	<ð 	<ð	<ð 	<ð 	<ð,ð ,ð ,ð4)ð )ð )ð5"ð 5"ð 5"ðn4?ð 4?ð 4?ðn
"ð 
"ð 
"ð*3ð *3ð *3ð *3ð *3rB   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d ej        g d¢g d
¢g d¢g¦  «         ej        g d¢g d
¢g d¢g¦  «         ed¦  «        fd ej        g d¢g d
¢g d¢g¦  «         ed¦  «         ej        g d¢g d
¢g d¢g¦  «        f ej        g d¢g d
¢g d¢g¦  «         ej        g d¢g d
¢g d¢g¦  «        def ej        g d¢g d
¢g d¢g¦  «        de ej        g d¢g d
¢g d¢g¦  «        fgZˆ fd„Z	d„ Z
d„ Zd„ Zd„ Zd„ Zˆ xZS )ÚTestFancyIndexingMultiDimr
   r   r   r   r   r   Nr   r   r   r   c                 ó�   •— t          ¦   «                              ¦   «          t          j                             d¦  «        | _        d S )Nr   )ÚsuperÚsetUpr*   rK   rÍ   r-   )r6   Ú	__class__s    €r@   rÒ   zTestFancyIndexingMultiDim.setUp™  s/   ø€ Ý‰Œ�Š‰ŒˆÝ”9×(Ò(¨Ñ+Ô+ˆŒˆˆrB   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                             ddd¬	¦  «        }| j         	                    |d
¬	¦  «         
                    ¦   «         }| j         	                    d
¦  «        }	|||	<   |                     t          |¦  «        ¦  «         Œ�t          |¦  «        D ]Ž}| j                             ddd¬	¦  «        }| j         	                    |d
¬	¦  «         
                    ¦   «         }| j         	                    d
¦  «        }	|||	<   |                     t          |¦  «        ¦  «         Œ�t          |¦  «        D ]§}| j                             ddd¬	¦  «        }| j         	                    |d
¬	¦  «         
                    ¦   «         }| j         	                    d
dd¬¦  «        }	|||	d         <   t          ||	d         <   |                     t          |¦  «        ¦  «         Œ¨t          |¦  «        D ]Î}| j                             ddd¬	¦  «        }| j         	                    |d
¬	¦  «         
                    ¦   «         }| j         	                    d
¦  «        }	| j        |	         }
t	          j        | j         	                    d|
¬	¦  «        t          ¬¦  «        ||	<   |                     t          |¦  «        ¦  «         ŒÏ|S r   r%   )r6   r7   r8   r9   r:   ÚKÚ_r<   r=   r>   r?   s              r@   rA   z1TestFancyIndexingMultiDim.generate_random_indices�  sQ  € Ý�”
‰OŒOˆÝ˜t T¨4Ñ0Ô0Ý�!�Q˜‘U˜DÑ!Ô!Ý�!�T˜1ÑÔÝ�!�a‘%˜˜rÑ"Ô"Ý�1�"�q‘&˜"˜dÑ#Ô#Ý�"�q�b˜"ÑÔÝ�!�Q˜‘U˜DÑ!Ô!Ý�"�q�b˜"ÑÔð
ˆõ �rœy¨™|œ|Ñ,Ô,ˆàˆð ˆÝ�q‘”ð 	,ð 	,ˆAØœ×)Ò)¨!¨Q°RÐ)Ñ8Ô8ˆIà”x—’ }¸1�Ñ=Ô=×DÒDÑFÔFˆHàœŸš¨Ñ+Ô+ˆJØ#,ˆH�ZÑ Ø�NŠN�5 ™?œ?Ñ+Ô+Ð+Ð+å�q‘”ð 	,ð 	,ˆAØœ×)Ò)¨!¨Q°RÐ)Ñ8Ô8ˆIà”x—’ ¸Q�Ñ?Ô?×FÒFÑHÔHˆHàœŸš¨Ñ+Ô+ˆJØ#,ˆH�ZÑ Ø�NŠN�5 ™?œ?Ñ+Ô+Ð+Ð+õ �q‘”ð 		,ð 		,ˆAØœ×)Ò)¨!¨Q°RÐ)Ñ8Ô8ˆIà”x—’ }¸1�Ñ=Ô=×DÒDÑFÔFˆHð œŸš¨°¸E˜ÑBÔBˆJØ&/ˆH�Z ”]Ñ#Ý&.ˆH�Z ”]Ñ#Ø�NŠN�5 ™?œ?Ñ+Ô+Ð+Ð+õ �q‘”ð 	,ð 	,ˆAØœ×)Ò)¨!¨Q°RÐ)Ñ8Ô8ˆIà”x—’ }¸1�Ñ=Ô=×DÒDÑFÔFˆHàœŸš¨Ñ+Ô+ˆJØ!œZ¨
Ô3ˆNÝ#%¤8Ø”—’ ¨�Ñ7Ô7Ýð$ñ $ô $ˆH�ZÑ ð �NŠN�5 ™?œ?Ñ+Ô+Ð+Ð+àˆrB   c                 ó   — t           d„ ¦   «         }t          j                             dd|¬¦  «        }|j        }|j        p|} |||¦  «        } |||¦  «        }|                      |j        |¦  «         |                      |j        |j        ¦  «         |                      |j	        |j	        ¦  «         t          j
                             ||¦  «         |                      t          j        ||¦  «        ¦  «         d S )Nc                 ó   — | |         S rE   rF   )r4   rG   s     r@   Únumba_get_itemzGTestFancyIndexingMultiDim.check_getitem_indices.<locals>.numba_get_itemÞ  s   € à˜”:ÐrB   r   r‘   r    )r   r*   rK   Úrandintrb   rN   ÚassertIsNotrO   r'   r$   rP   rQ   ÚassertFalseÚmay_share_memory)	r6   rS   rH   rÙ   rT   rI   rW   rX   rY   s	            r@   rZ   z/TestFancyIndexingMultiDim.check_getitem_indicesÝ  sý   € Ý	ð	ð 	ñ 
Œð	õ Œi×Ò  2¨IÐÑ6Ô6ˆØ!Ô)ˆØ”H�O ˆ	à�8˜C Ñ'Ô'ˆØˆn˜S %Ñ(Ô(ˆà×Ò˜œ¨	Ñ2Ô2Ð2ð 	×Ò˜œ H¤NÑ3Ô3Ð3Ø×Ò˜œ H¤NÑ3Ô3Ð3Ý
Œ
×Ò  XÑ.Ô.Ð.ð 	×Ò�Ô,¨S°(Ñ;Ô;Ñ<Ô<Ð<Ð<Ð<rB   c                 óÒ  — t           d„ ¦   «         }t          j                             dd|¬¦  «        }||         }t          j        |¦  «        }t          j        |¦  «        }|                     |||¦  «          ||||¦  «         |                      |j        |j        ¦  «         |                      |j        |j        ¦  «         t          j	         
                    ||¦  «         d S )Nc                 ó   — || |<   d S rE   rF   r]   s      r@   r_   zATestFancyIndexingMultiDim.check_setitem_indices.<locals>.set_itemõ  r`   rB   r   r‘   r    )r   r*   rK   rÚ   ra   rb   rO   r'   r$   rP   rQ   rc   s           r@   re   z/TestFancyIndexingMultiDim.check_setitem_indicesô  sà   € Ý	ð	ð 	ñ 
Œð	õ Œi×Ò  2¨IÐÑ6Ô6ˆØ�%ŒjˆÝ”= Ñ%Ô%ˆÝŒm˜CÑ Ô ˆà×Ò˜ 5¨#Ñ.Ô.Ð.Øˆ��e˜SÑ!Ô!Ð!ð 	×Ò˜œ H¤NÑ3Ô3Ð3Ø×Ò˜œ H¤NÑ3Ô3Ð3å
Œ
×Ò  XÑ.Ô.Ð.Ð.Ð.rB   c                 ó  — | j                              ¦   «         }||                      ¦   «         z  }|D ]K}|                      |¬¦  «        5  |                      | j        |¦  «         d d d ¦  «         n# 1 swxY w Y   ŒLd S rg   )rh   rM   rA   ri   rZ   r'   rj   s      r@   rk   z&TestFancyIndexingMultiDim.test_getitem  óÉ   € àÔ%×*Ò*Ñ,Ô,ˆð 	�4×/Ò/Ñ1Ô1Ñ1ˆàð 	<ð 	<ˆCØ—’ #�Ñ&Ô&ð <ð <Ø×*Ò*¨4¬:°sÑ;Ô;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <øð	<ð 	<ó   ÁA3Á3A7	Á:A7	c                 ó  — | j                              ¦   «         }||                      ¦   «         z  }|D ]K}|                      |¬¦  «        5  |                      | j        |¦  «         d d d ¦  «         n# 1 swxY w Y   ŒLd S rg   )rh   rM   rA   ri   re   r'   rj   s      r@   ro   z&TestFancyIndexingMultiDim.test_setitem  rá   râ   )rÊ   rË   rÌ   r'   r(   r*   r4   r3   rh   rÒ   rA   rZ   re   rk   ro   Ú__classcell__)rÓ   s   @r@   rÏ   rÏ   z  s.  ø€ € € € € ð  €Eð 
ˆˆq�!‰Œ�a˜˜œ / / /Ñ2Ô2°AÐ6Ø	
ˆHˆBŒH�[�[�[Ñ!Ô! 5 5¨¡;¤;°°°a±´Ð9ð 
�1�h�b”h˜{˜{˜{Ñ+Ô+Ð,Ø	ˆŒ�+�+�+Ñ	Ô	  8Ð,ð 
�1�h�b”h˜{˜{˜{Ñ+Ô+¨Q°°°a¸±
´
Ð;Ø	ˆŒ�+�+�+Ñ	Ô	  8¨U¨U°1°Q©Z¬ZÐ8ð 
ˆˆq�!‰Œ�aØ	ˆŒÐ@Ð@Ð@Ñ	AÔ	AØ	
ð	ð 
ˆHˆBŒHÐ<Ð<Ð<Ñ=Ô=Ø	ˆˆt‰Œ�e�e˜A‘h”hð	 ð 
ˆHˆBŒH�k�k�k ; ; ;°°°Ð<Ñ=Ô=¸x¸r¼xÈÈÈÐVaÐVaÐVaÐcnÐcnÐcnÐHoÑ?pÔ?pÐrwÐrwÐx|Ñr}Ôr}Ð~Ø	
ˆHˆBŒH�k�k�k ; ; ;°°°Ð<Ñ=Ô=¸u¸uÀT¹{¼{ÈHÈBÌHÐVaÐVaÐVaÐcnÐcnÐcnÐp{Ðp{Ðp{ÐU|ÑL}ÔL}Ð~Ø	ˆŒ�;�;�;   ¨[¨[¨[Ð9Ñ	:Ô	:¸H¸B¼HÀkÀkÀkÐS^ÐS^ÐS^Ð`kÐ`kÐ`kÐElÑ<mÔ<mÐopÐrzÐ{Ø	ˆŒ�;�;�;   ¨[¨[¨[Ð9Ñ	:Ô	:¸A¸xÈÈÌÐS^ÐS^ÐS^Ð`kÐ`kÐ`kÐmxÐmxÐmxÐRyÑIzÔIzÐ{ð1€Nð6,ð ,ð ,ð ,ð ,ð>ð >ð >ð@=ð =ð =ð./ð /ð /ð(	<ð 	<ð 	<ð	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<rB   rÏ   Ú__main__)r®   Ú	itertoolsÚnumpyr*   ÚunittestÚnumbar   r   Únumba.core.errorsr   Únumba.tests.supportr   r   r	   rÏ   rÊ   ÚmainrF   rB   r@   ú<module>rí      s  ðØ Ð Ð Ð Ø Ð Ð Ð à Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9ðk3ð k3ð k3ð k3ð k3˜¨ñ k3ô k3ð k3ð\b<ð b<ð b<ð b<ð b< °ñ b<ô b<ð b<ðH ˆzÒÐØ€H„M�O„O€O€O€Oð ÐrB   