§
    ƒÛg9F  ã                   óÜ   — 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        ¦   «          dS dS )é    N)ÚjitÚtypeofÚnjit)Útypes)ÚTypingError)ÚMemoryLeakMixinÚTestCasec                 ó   — | |         S ©N© )ÚaÚbs     úU/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_fancy_indexing.pyÚgetitem_usecaser      s   € ØˆQŒ4€Kó    c                 ó   — || |<   d S r   r   )r   Úidxr   s      r   Úsetitem_usecaser      s   € Ø€A€c�F€F€Fr   c                 ó,   — t          j        | |¦  «        S r   ©ÚnpÚtake)ÚAÚindicess     r   Únp_taker      s   € ÝŒ7�1�gÑÔÐr   c                 ó0   — t          j        | ||¬¦  «        S )N©Úaxisr   )r   r   r   s      r   Únp_take_kwsr      s   € ÝŒ7�1�g DÐ)Ñ)Ô)Ð)r   c                   óv   — 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S )ÚTestFancyIndexingTc                 ó¦   — t          j        d|dz
  dg¦  «        g}|r3|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   sa   € Ý”8˜Q  A¡ r˜NÑ+Ô+Ð,ˆØð 	0Ø�œ	 1 a¨¨Q© -Ñ0Ô0Ýœ   Ñ.Ô.ð0ñ 0ˆGàˆr   c           
   #   óš  K  — |rnt          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 ]}|V — ŒŒ dS )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ˆGõ ˜Q  A¡ tÑ,Ô,Ý˜R !  RÑ(Ô(ð*ˆGå˜& 1™*Ñ%Ô%ð 	ð 	ˆDÝ Ô(¨¸Ð>Ñ>Ô>ð ð �Ø�	�	�	�	ðð	ð 	r   c              #   óö   K  — t          |                      ||¬¦  «        ¦  «        }t          |dz   ¦  «        D ]?}|                      ||dz
  |¦  «        D ]"}|D ]}|d|…         |fz   ||d…         z   V — ŒŒ#Œ@dS )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_tuples8   s¶   è è € õ �t×5Ò5°a¸dÐ5ÑCÔCÑDÔDˆÝ�v ‘zÑ"Ô"ð 	5ð 	5ˆAØ×7Ò7¸¸6ÀA¹:ÀtÑLÔLð 5ð 5�Ø"ð 5ð 5�CØ˜b˜q˜bœ' S FÑ*¨S°°°¬WÑ4Ð4Ð4Ð4Ð4ð5ð5ð	5ð 	5r   c              #   óÂ   K  — |                       |||¦  «        D ]D}t          t          |¦  «        dz   ¦  «        D ]"}|d|…         t          fz   ||d…         z   V — Œ#ŒEdS )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_ellipsisE   s„   è è € ð
 ×6Ò6°q¸&À$ÑGÔGð 	6ð 	6ˆCÝ�3˜s™8œ8 a™<Ñ(Ô(ð 6ð 6�Ø˜"˜1˜"”g¥ Ñ+¨c°!°"°"¬gÑ5Ð5Ð5Ð5Ð5ð6ð	6ð 	6r   c                 ó  — t           } t          d¬¦  «        |¦  «        }|                     ¦   «         }|j        p|}|D ]Á} |||¦  «        }|j        |usJ ‚ |||¦  «        }	|                      |	j        |j        ¦  «         |                      |	j        |j        ¦  «         t          j         	                    |	|¦  «         |	j
        r5|	                     d¦  «         t          j         	                    ||¦  «         ŒÂd S )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_indicesN   s	  € Ý ˆØ"•˜TÐ"Ñ"Ô" 6Ñ*Ô*ˆØ�xŠx‰zŒzˆØ”H�O ˆ	àð 	3ð 	3ˆEØ�v˜c 5Ñ)Ô)ˆHð ”=¨	Ð1Ð1Ð1Ð1Ø�%˜˜UÑ#Ô#ˆCð ×Ò˜SœY¨¬Ñ7Ô7Ð7Ø×Ò˜SœY¨¬Ñ7Ô7Ð7ÝŒJ×#Ò# C¨Ñ2Ô2Ð2àŒxð 3Ø—’˜‘”�Ý”
×'Ò'¨¨TÑ2Ô2Ð2øð	3ð 	3r   c                 óü   — d}d}t          j        ||z  ¦  «                             |f|z  ¦  «                             t           j        ¦  «        }|                      ||¦  «        }|                      ||¦  «         d S ©Né   é   )r   ÚarangeÚreshapeÚastypeÚint32r>   rX   ©r(   r)   r6   rP   r   s        r   Útest_getitem_tuplez$TestFancyIndexing.test_getitem_tupled   st   € àˆØˆÝŒi˜˜T™	Ñ"Ô"×*Ò*¨A¨4°$©;Ñ7Ô7×>Ò>½r¼xÑHÔHˆØ×5Ò5°a¸Ñ>Ô>ˆà×"Ò" 3¨Ñ0Ô0Ð0Ð0Ð0r   c                 ó   — d}d}t          j        ||z  ¦  «                             |f|z  ¦  «                             t           j        ¦  «        }|                      ||d¬¦  «        }|                      ||¦  «         d S ©Nr[   r\   Fr:   )r   r]   r^   r_   r`   rB   rX   ra   s        r   Útest_getitem_tuple_and_ellipsisz1TestFancyIndexing.test_getitem_tuple_and_ellipsism   ó…   € àˆØˆÝŒi˜˜T™	Ñ"Ô"×*Ò*¨A¨4°$©;Ñ7Ô7×>Ò>½r¼xÑHÔHˆØ×CÒCÀAÀtØINð Dñ Pô Pˆð 	×"Ò" 3¨Ñ0Ô0Ð0Ð0Ð0r   c                 ó¼   — t          d¬¦  «        d„ ¦   «         }t          j        d¦  «        } ||d¦  «         |                      |d         |d         ¦  «         d S )NTrD   c                 ó   — | d         | d<   d S )N).r#   ).r   r   )rP   Úvs     r   Úfooz7TestFancyIndexing.test_ellipsis_getsetitem.<locals>.fooy   s   € à˜fœ+ˆC�‰KˆKˆKr   r.   r#   r   )r   r   r]   rI   )r(   rj   rP   s      r   Útest_ellipsis_getsetitemz*TestFancyIndexing.test_ellipsis_getsetitemw   si   € å	�dÐ	Ñ	Ô	ð	&ð 	&ñ 
Ô	ð	&õ Œi˜‰lŒlˆØˆˆC�‰ŒˆØ×Ò˜˜Qœ  Q¤Ñ(Ô(Ð(Ð(Ð(r   c                 óú   — d}d}t          j        ||z  ¦  «                             |f|z  ¦  «                             t           j        ¦  «        }|                      |¦  «        }|                      ||¦  «         d S rZ   )r   r]   r^   r_   r`   r,   rX   ra   s        r   Útest_getitem_arrayz$TestFancyIndexing.test_getitem_array�   sr   € àˆØˆÝŒi˜˜T™	Ñ"Ô"×*Ò*¨A¨4°$©;Ñ7Ô7×>Ò>½r¼xÑHÔHˆØ×0Ò0°Ñ3Ô3ˆØ×"Ò" 3¨Ñ0Ô0Ð0Ð0Ð0r   c                 ó¤  — t           } t          d¬¦  «        |¦  «        }|D ]¬}||         }t          j        |¦  «        }t          j        |¦  «        } ||||¦  «          ||||¦  «         |                      |j        |j        ¦  «         |                      |j        |j        ¦  «         t          j                             ||¦  «         Œ­d S )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Ñ*Ô*ˆàð 
	3ð 
	3ˆEØ�e”*ˆCÝ”} SÑ)Ô)ˆHÝ”- Ñ$Ô$ˆCØˆF�8˜U CÑ(Ô(Ð(ØˆE�#�u˜cÑ"Ô"Ð"ð ×Ò˜SœY¨¬Ñ7Ô7Ð7Ø×Ò˜SœY¨¬Ñ7Ô7Ð7ÝŒJ×#Ò# C¨Ñ2Ô2Ð2Ð2ð
	3ð 
	3r   c                 óü   — d}d}t          j        ||z  ¦  «                             |f|z  ¦  «                             t           j        ¦  «        }|                      ||¦  «        }|                      ||¦  «         d S rZ   )r   r]   r^   r_   r`   r>   rq   ra   s        r   Útest_setitem_tuplez$TestFancyIndexing.test_setitem_tuple™   st   € àˆØˆÝŒi˜˜T™	Ñ"Ô"×*Ò*¨A¨4°$©;Ñ7Ô7×>Ò>½r¼xÑHÔHˆØ×5Ò5°a¸Ñ>Ô>ˆØ×"Ò" 3¨Ñ0Ô0Ð0Ð0Ð0r   c                 ó   — d}d}t          j        ||z  ¦  «                             |f|z  ¦  «                             t           j        ¦  «        }|                      ||d¬¦  «        }|                      ||¦  «         d S 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  ¦  «                             |f|z  ¦  «                             t           j        ¦  «        dz   }|                      |¦  «        }|                      ||¦  «         d S )Nr[   r\   é
   )r   r]   r^   r_   r`   r,   rq   ra   s        r   Útest_setitem_arrayz$TestFancyIndexing.test_setitem_array«   sw   € àˆØˆÝŒi˜˜T™	Ñ"Ô"×*Ò*¨A¨4°$©;Ñ7Ô7×>Ò>½r¼xÑHÔHÈ2ÑMˆØ×0Ò0°Ñ3Ô3ˆØ×"Ò" 3¨Ñ0Ô0Ð0Ð0Ð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 ]I\  }}|                     ¦   «         } ||d|¦  «          ||d|¦  «         |  	                    ||¦  «         ŒJd S )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³   s¬  € å ˆØ"•˜TÐ"Ñ"Ô" 6Ñ*Ô*ˆõ Œ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¨Ñ+Ô+Ð+Ð+ð		,ð 	,r   c                 óŒ  ‡ ‡
‡— t           Š t          d¬¦  «        ‰¦  «        Š
ˆ
ˆˆ 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 ]} |||¦  «         ŒŒ=|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   ‰  
                    t          ¦  «        5   t          d¬¦  «        t          ¦  «        }	 |	|dd¦  «         d d d ¦  «         n# 1 swxY w Y   ‰  
                    t          ¦  «        5   t          d¬¦  «        t          ¦  «        }	 |	|dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   ‰                      ¦   «          d S )NTrD   c                 óÎ   •—  ‰| |¦  «        } ‰| |¦  «        }‰                      ||¦  «         t          |d¦  «        r%‰                     |j        |j        k    ¦  «         d S d S )NÚorder)r…   ÚhasattrrI   rŒ   )rP   ÚindrV   rW   rR   rQ   r(   s       €€€r   Úcheckz-TestFancyIndexing.test_np_take.<locals>.checkÏ   sx   ø€ Ø�v˜c 3Ñ'Ô'ˆHØ�%˜˜S‘/”/ˆCØ×#Ò# H¨cÑ2Ô2Ð2Ý�x Ñ)Ô)ð >Ø× Ò  ¤°3´9Ò!<Ñ=Ô=Ð=Ð=Ð=ð>ð >r   r#   )r#   r{   r#   é   r\   r{   r�   ©r#   r{   r#   )r‘   )r�   r\   r.   é   rz   )r[   r\   g333333û?r   )r   r   Úappendr   r�   r‚   Ú
complex128r]   r^   rN   ÚassertRaisesÚ
IndexErrorr   r   Údisable_leak_check)r(   r�   Útest_indicesÚdtr   rŽ   ÚszAÚillegal_indicesÚxÚtake_kwsrR   rQ   s   `         @@r   Útest_np_takezTestFancyIndexing.test_np_takeÊ   sö  øøø€ åˆØ"•˜TÐ"Ñ"Ô" 6Ñ*Ô*ˆð	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð ˆØ×Ò˜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˜‘”��ðð ŒfˆØ   q¡­"¬(°3©-¬-½¼À3À$ÈÁ(Ñ9KÔ9KØ˜5 C 4¨!¡8 *ð.ˆà ð 	ð 	ˆAØ×"Ò"¥:Ñ.Ô.ð ð Ø��a˜‘”�ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øð ×Ò�{Ñ+Ô+ð 	ð 	ØˆE�!�c�U‰OŒOˆOð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ×Ò�{Ñ+Ô+ð 	ð 	Ø)•s DÐ)Ñ)Ô)­+Ñ6Ô6ˆHØˆH�Q˜˜1ÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð
 ×Ò�{Ñ+Ô+ð 	#ð 	#Ø)•s DÐ)Ñ)Ô)­+Ñ6Ô6ˆHØˆH�Q˜ Ð"Ñ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð
 	×ÒÑ!Ô!Ð!Ð!Ð!sH   ÆF*Æ*F.	Æ1F.	ÇG*Ç*G.Ç1G.È,IÉIÉIÉ,-J%Ê%J)Ê,J)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 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_setitem  s   € àˆAˆc‰FØˆHr   iH  )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  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ð 
	3r   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!      s  € € € € € ðð ð ð ðð ð ð ð.5ð 5ð 5ð 5ð6ð 6ð 6ð 6ð3ð 3ð 3ð,1ð 1ð 1ð1ð 1ð 1ð)ð )ð )ð1ð 1ð 1ð3ð 3ð 3ð 1ð 1ð 1ð1ð 1ð 1ð1ð 1ð 1ð,ð ,ð ,ð.7"ð 7"ð 7"ðr*3ð *3ð *3ð *3ð *3r   r!   c                   ó0  ‡ — 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¦   é   é	   rw   r[   r{   r\   )r   r#   r\   r[   r.   r#   N)TFTFTFF)TFTFTFc                 ó�   •— t          ¦   «                              ¦   «          t          j                             d¦  «        | _        d S )Nr#   )ÚsuperÚsetUpr   ÚrandomÚdefault_rngÚrng)r(   Ú	__class__s    €r   r¹   zTestFancyIndexingMultiDim.setUpI  s/   ø€ Ý‰Œ�Š‰ŒˆÝ”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                             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 )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_indicesM  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 ™?œ?Ñ+Ô+Ð+Ð+àˆr   c                 ó   — t           d„ ¦   «         }t          j                             dd|¬¦  «        }|j        }|j        p|} |||¦  «        } |||¦  «        }|                      |j        |¦  «         |                      |j        |j        ¦  «         |                      |j	        |j	        ¦  «         t          j
                             ||¦  «         |                      t          j        ||¦  «        ¦  «         d S )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×Ò  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°(Ñ;Ô;Ñ<Ô<Ð<Ð<Ð<r   c                 óÒ  — t           d„ ¦   «         }t          j                             dd|¬¦  «        }||         }t          j        |¦  «        }t          j        |¦  «        }|                     |||¦  «          ||||¦  «         |                      |j        |j        ¦  «         |                      |j        |j        ¦  «         t          j	         
                    ||¦  «         d S )Nc                 ó   — || |<   d S r   r   )r�   r   r£   s      r   Úset_itemzATestFancyIndexingMultiDim.check_setitem_indices.<locals>.set_item¥  s   € àˆE�#‰JˆJˆ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×Ò  2¨IÐÑ6Ô6ˆØ�%ŒjˆÝ”= Ñ%Ô%ˆÝŒm˜CÑ Ô ˆà×Ò˜ 5¨#Ñ.Ô.Ð.Øˆ��e˜SÑ!Ô!Ð!ð 	×Ò˜œ H¤NÑ3Ô3Ð3Ø×Ò˜œ H¤NÑ3Ô3Ð3å
Œ
×Ò  XÑ.Ô.Ð.Ð.Ð.r   c                 ó  — | j                              ¦   «         }||                      ¦   «         z  }|D ]K}|                      |¬¦  «        5  |                      | j        |¦  «         d d d ¦  «         n# 1 swxY w Y   ŒLd S ©N)r   )Úindexing_casesrG   rÑ   ÚsubTestrX   rJ   ©r(   r   r   s      r   Útest_getitemz&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 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 ]z\  }}|                      t          ¦  «        5 }|                      | j        |¦  «         d d d ¦  «         n# 1 swxY w Y   |                      |t          |j	        ¦  «        ¦  «         Œ{d S )	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˜q !˜f q¨! fÐ-Ñ.Ô.Ð/ð1ð JØ�•B”H˜a ˜VÑ$Ô$¥b¤h°°1¨vÑ&6Ô&6Ð7ð9ð;ð •”˜1˜a˜&Ñ!Ô!¥5¨¡;¤;°°1Ð5ð7ð
ˆð &ð 	ð 	‰HˆC�Ø×"Ò"¥;Ñ/Ô/ð <°6Ø×*Ò*¨4¬:°sÑ;Ô;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <à�MŠMØÝ�FÔ$Ñ%Ô%ñô ð ð ð	ð 	s   ÂCÃC	Ã	C	)r°   r±   r²   rJ   r1   r   r�   rA   rà   r¹   rÑ   rX   rq   rã   rç   rï   Ú__classcell__)r½   s   @r   r´   r´   0  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ð	 ð#€Nð*,ð ,ð ,ð ,ð ,ð>ð >ð >ð@=ð =ð =ð./ð /ð /ð(	<ð 	<ð 	<ð	<ð 	<ð 	<ðð ð ð ð ð ð r   r´   Ú__main__)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ù      sL  ðØ Ð Ð Ð à Ð Ð Ð à €€€Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ðð ð ðð ð ð*ð *ð *ðU3ð U3ð U3ð U3ð U3˜¨ñ U3ô U3ð U3ðptð tð tð tð t °ñ tô tð tðn ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   