§
    2@ÄjV%  ã                   óò   — d dl mZ d dlZd dlmZmZmZ d dlZd dlZd dl	m
Z
mZmZmZmZ d dlmZmZ d dlmZmZ d dlmZ d dlZd„ Zd	„ Zd
„ Zd„ Z G d„ dee¦  «        Zedk    r ej        ¦   «          dS dS )é    )ÚpartialN)ÚchainÚproductÚstarmap)ÚjitÚ	literallyÚnjitÚtypeofÚTypingError)ÚutilsÚtypes)ÚTestCaseÚMemoryLeakMixin)Ú_header_leadc                 ó*   — | j         | j        | j        fS ©N)ÚstartÚstopÚstep)Úsls    úHC:\Projects\Historical\venv\Lib\site-packages\numba/tests/test_slices.pyÚslice_passingr      s   € ØŒ8�R”W˜bœgÐ%Ð%ó    c                  ó<   — t          | Ž }|j        |j        |j        fS r   )Úslicer   r   r   )Úargsr   s     r   Úslice_constructorr      s   € Ý	�ˆ€BØŒ8�R”W˜bœgÐ%Ð%r   c                 ó$   — t          | Ž }||         S r   ©r   )r   Úlr   s      r   Úslice_construct_and_user!      s   € Ý	�ˆ€BØˆRŒ5€Lr   c                 ó   —  | j         |Ž S r   )Úindices)ÚsÚindargss     r   Úslice_indicesr&      s   € Øˆ1Œ9�gÐÐr   c                   óP   — 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S )Ú
TestSlicesc           	      ó*  ‡ ‡— ˆˆ fd„}t           j        }| dz
  } t          d¬¦  «        t          ¦  «        Šg d¢}d|fddg}d	d
g}t	          j        |||¦  «        D ]\  \  }}\  }	}
\  }} |||	|||
|¦  «         Œ d|fddg}d|fddg}ddg}t	          j        |||¦  «        D ]\  \  }}\  }	}
\  }} |||	|||
|¦  «         Œ ‰                      t          ¦  «        5   ‰t          ddd¦  «        ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zC
        Check passing a slice object to a Numba function.
        c                 ór   •— t          | ||¦  «        } ‰|¦  «        }‰	                     ||||f¦  «         d S r   )r   ÚassertPreciseEqual)
ÚaÚbÚcÚdÚeÚfr   ÚgotÚcfuncÚselfs
           €€r   Úcheckz,TestSlices.test_slice_passing.<locals>.check$   sA   ø€ Ý�q˜!˜Q‘”ˆBØ�%˜‘)”)ˆCØ×#Ò# C¨!¨Q°¨Ñ3Ô3Ð3Ð3Ð3r   é   T©Únopython))Nr   ©é*   r:   ©éÿÿÿÿr<   N)é	   r=   )éõÿÿÿr>   ©Nr6   )é   r@   r9   r;   )éôÿÿÿrA   g      ø?)	ÚsysÚmaxsizer   r   Ú	itertoolsr   ÚassertRaisesÚ	TypeErrorr   )r4   r5   Ú	maxposintÚ	maxnegintÚstart_casesÚ
stop_casesÚ
step_casesr,   r/   r-   r0   r.   r1   r3   s   `            @r   Útest_slice_passingzTestSlices.test_slice_passing   sì  øø€ ð
	4ð 	4ð 	4ð 	4ð 	4ð 	4õ
 ”Kˆ	Ø�J ‘Nˆ	Ø"•˜TÐ"Ñ"Ô"¥=Ñ1Ô1ˆð 6Ð5Ð5ˆØ˜YÐ'¨°Ð<ˆ
Ø Ð*ˆ
Ý&/Ô&7¸Ø8BØ8Bñ'Dô 'Dð 	$ð 	$Ñ"‰FˆQ�‘F�Q˜™F˜Q ð ˆE�!�Q˜˜1˜a Ñ#Ô#Ð#Ð#ð ˜iÐ(¨(°HÐ=ˆØ˜YÐ'¨°Ð<ˆ
Ø 
Ð+ˆ
Ý&/Ô&7¸Ø8BØ8Bñ'Dô 'Dð 	$ð 	$Ñ"‰FˆQ�‘F�Q˜™F˜Q ð ˆE�!�Q˜˜1˜a Ñ#Ô#Ð#Ð#ð ×Ò�yÑ)Ô)ð 	$ð 	$ØˆE•%˜˜Q Ñ"Ô"Ñ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð 	$ð 	$s   Ã DÄDÄDc                 óà  — t           j        }| dz
  }t          j        d¦  «        } t	          d¬¦  «        t
          ¦  «        } t	          d¬¦  «        t          ¦  «        }dd|dffddd|dffd	d|dffd
ddd|dffddd|dffdd||dffdd|dffd|ddffdfD ]R\  }} ||Ž }|                      ||¦  «         t          ||¦  «        }	 |||¦  «        }
|                      |	|
¦  «         ŒSdS )zQ
        Test the 'happy path' for slice() constructor in nopython mode.
        r6   é
   Tr7   r   r   ))é   )r   rO   r6   )NN)r6   N))Né   )r   rP   r6   ))r6   rP   )r6   rP   r6   )NNé   rQ   ))NrP   rQ   )r   rP   rQ   )r6   NrQ   )©r6   rP   rQ   rR   )NNr<   r<   )rN   Nr<   )NrO   r<   rO   )©rN   rO   r<   rS   N)rB   rC   ÚnpÚaranger   r   r!   r+   )r4   rG   rH   r,   r3   Ú	cfunc_user   Úexpectedr2   ÚusageÚcusages              r   Útest_slice_constructorz!TestSlices.test_slice_constructorC   s^  € õ ”Kˆ	Ø�J ‘Nˆ	ÝŒI�b‰MŒMˆØ"•˜TÐ"Ñ"Ô"Õ#4Ñ5Ô5ˆØ&•C Ð&Ñ&Ô&Õ'>Ñ?Ô?ˆ	à�q˜) QÐ'Ð(ØØ˜A˜y¨!Ð,Ð-Ø˜˜I qÐ)Ð*Ø"ØØ˜q )¨QÐ/Ð0Ø%Ø˜A˜y¨!Ð,Ð-Ø"Ø 	¨9°bÐ9Ð:Ø˜b )¨RÐ0Ð1Ø˜Y¨¨2Ð.Ð/Ø&ð
ð 	3ð 	3‰NˆD�(ð  �%˜�,ˆCØ×#Ò# C¨Ñ2Ô2Ð2Ý+¨D°!Ñ4Ô4ˆEØ�Y˜t QÑ'Ô'ˆFØ×#Ò# E¨6Ñ2Ô2Ð2Ð2ð)	3ð 	3r   c                 ó˜  ‡
— dŠ
t          j        ˆ
fd„t          d¦  «        D ¦   «         ¦  «        }t          j        d¦  «        } t          d¬¦  «        t          ¦  «        }|                      ¦   «          |D �]Ï}	 t          ||¦  «        }|                      | |||¦  «        ¦  «         Œ5# t          $ �r }t          |¦  «        }|                      t          |¦  «        d                     |¦  «        ¦  «         |                      t          ¦  «        5 } |||¦  «         ddd¦  «         n# 1 swxY w Y   |                      t"          t          |j        ¦  «        ¦  «         |                      d	                     d
„ |D ¦   «         ¦  «        t          |j        ¦  «        ¦  «         Y d}~�Œ;d}~wt(          $ r†}	|                      t+          |	¦  «        ¦  «        5 } |||¦  «         ddd¦  «         n# 1 swxY w Y   |                      t          |	¦  «        t          |j        ¦  «        ¦  «         Y d}	~	�ŒÉd}	~	ww xY wdS )zW
        Test that slice constructor behaves same in python and compiled code.
        )Nr<   r   r6   c              3   ó:   •K  — | ]}t          ‰|¬ ¦  «        V — ŒdS ))ÚrepeatN)r   )Ú.0ÚnÚoptionss     €r   ú	<genexpr>z:TestSlices.test_slice_constructor_cases.<locals>.<genexpr>g   sA   øè è € ð (
ð (
Ø+,�G�G AÐ&Ñ&Ô&ð(
ð (
ð (
ð (
ð (
ð (
r   rO   rN   Tr7   z7slice expected at (most|least) (3|1) arguments?, got {}Nz, c              3   óN   K  — | ] }t          t          |¦  «        ¦  «        V — Œ!d S r   )Ústrr
   )r^   Úargs     r   ra   z:TestSlices.test_slice_constructor_cases.<locals>.<genexpr>‚   s0   è è € Ð?Ð?°3�c¥&¨¡+¤+Ñ.Ô.Ð?Ð?Ð?Ð?Ð?Ð?r   )r   Úfrom_iterableÚrangerT   rU   r   r!   Údisable_leak_checkr+   rF   ÚlenÚassertRegexrc   ÚformatrE   r   ÚassertInr   Ú	exceptionÚjoinÚ	ExceptionÚtype)r4   Ú	arg_casesÚarrayr3   r   rW   Ú	py_type_eÚn_argsÚnumba_eÚpy_er`   s             @r   Útest_slice_constructor_casesz'TestSlices.test_slice_constructor_casesb   s  ø€ ð #ˆÝÔ'ð (
ð (
ð (
ð (
Ý05°a±´ð(
ñ (
ô (
ñ 
ô 
ˆ	õ ”	˜"‘”ˆà"•˜TÐ"Ñ"Ô"Õ#:Ñ;Ô;ˆà×ÒÑ!Ô!Ð!Øð 	Fñ 	FˆDðFÝ2°4¸Ñ?Ô?�ð8 ×'Ò'¨°%°%¸¸eÑ2DÔ2DÑEÔEÐEÐEøõ7 ð ñ ð õ ˜T™œ�Ø× Ò Ý˜	‘N”NØNß’V˜F‘^”^ñô ð ð
 ×&Ò&¥{Ñ3Ô3ð '°wØ�E˜$ Ñ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'à—’Ý Ý˜Ô)Ñ*Ô*ñô ð ð —’Ø—I’IÐ?Ð?¸$Ð?Ñ?Ô?Ñ?Ô?Ý˜Ô)Ñ*Ô*ñô ð ð ð ð ð ñ øøøøõ ð ð ð Ø×&Ò&¥t¨D¡z¤zÑ2Ô2ð '°gØ�E˜$ Ñ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'à—’Ý˜‘I”IÝ˜Ô)Ñ*Ô*ñô ð ð ð ð ð ñ øøøøðøøøð-	Fð 	Fsn   Á=B.Â.IÂ9AF4ÄD1Ä%F4Ä1D5Ä5F4Ä8D5Ä9A5F4Æ4IÇ"IÇ#G<Ç0IÇ<H È IÈH È8IÉIc                 ó>  — d„ }d„ }d„ }t          j        d¦  «        }||ddfdf||ddfdf||dddfd	ffD ]f\  }}} t          d
¬¦  «        |¦  «        }|                       ||Ž  ||Ž ¦  «         |                      |j        d         j        j        |¦  «         ŒgdS )zW
        Test that a None step keeps an array contiguous, like an omitted one.
        c                 ó.   — | t          ||¦  «                 S r   r   ©r,   ÚiÚjs      r   Úomitted_stepz>TestSlices.test_slice_constructor_layout.<locals>.omitted_step“   s   € Ø•U˜1˜a‘[”[”>Ð!r   c                 ó0   — | t          ||d ¦  «                 S r   r   ry   s      r   Ú	none_stepz;TestSlices.test_slice_constructor_layout.<locals>.none_step–   s   € Ø•U˜1˜a Ñ&Ô&Ô'Ð'r   c                 ó0   — | t          |||¦  «                 S r   r   )r,   rz   r{   Úks       r   Úint_stepz:TestSlices.test_slice_constructor_layout.<locals>.int_step™   s   € Ø•U˜1˜a ‘^”^Ô$Ð$r   rN   r6   rO   ÚCrP   ÚATr7   r   N)rT   rU   r   r+   ÚassertEqualÚnopython_signaturesÚreturn_typeÚlayout)	r4   r|   r~   r�   ÚarrÚpyfuncr   r‡   r3   s	            r   Útest_slice_constructor_layoutz(TestSlices.test_slice_constructor_layout�   s  € ð	"ð 	"ð 	"ð	(ð 	(ð 	(ð	%ð 	%ð 	%õ Œi˜‰mŒmˆØ&2°S¸!¸Q°KÀÐ%EØ&/°#°q¸!°¸cÐ%BØ&.°°a¸¸A°ÀÐ%Dð%Fð 	%ð 	%Ñ ˆF�D˜&ð '•C Ð&Ñ&Ô& vÑ.Ô.ˆEØ×#Ò# E E¨4 L°&°&¸$°-Ñ@Ô@Ð@Ø×Ò˜UÔ6°qÔ9ÔEÔLØ#ñ%ô %ð %ð %ð	%ð 	%r   c                 ó  — t          t          t          t          t	          dd¦  «        d¦  «        t          t	          dd¦  «        d¦  «        t          t	          dd¦  «        d¦  «        ¦  «        ¦  «        }t	          dd¦  «        } t          d¬¦  «        t          ¦  «        }t          ||¦  «        D ]È\  }}	 t          ||¦  «        }|                      | |||¦  «        ¦  «         Œ7# t          $ r…}|  	                    t          |¦  «        ¦  «        5 } |||¦  «         ddd¦  «         n# 1 swxY w Y   |                      t          |¦  «        t          |j        ¦  «        ¦  «         Y d}~ŒÁd}~ww xY wdS )	zITest that a numba slice returns same result for .indices as a python one.éûÿÿÿrO   r   éþÿÿÿrQ   Tr7   N)r   r   r   r   rf   r   r&   r+   rn   rE   ro   rk   rc   rl   )	r4   ÚslicesÚlengthsr3   r$   r    rW   ru   rt   s	            r   Útest_slice_indiceszTestSlices.test_slice_indices¥   sË  € åÝÝÝ•e˜B ‘l”l GÑ,Ô,Ý•e˜B ‘l”l GÑ,Ô,Ý•e˜B ‘l”l GÑ,Ô,ñô ñ
ô 
ˆõ ˜˜A‘,”,ˆà"•˜TÐ"Ñ"Ô"¥=Ñ1Ô1ˆå˜F GÑ,Ô,ð 	?ð 	?‰DˆAˆqð
?Ý(¨¨AÑ.Ô.�ð ×'Ò'¨°%°%¸¸1±+´+Ñ>Ô>Ð>Ð>øõ ð ð ð Ø×&Ò&¥t¨D¡z¤zÑ2Ô2ð  °gØ�E˜!˜Q‘K”K�Kð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  à—’Ý˜‘I”IÝ˜Ô)Ñ*Ô*ñô ð ð ð ð ð ð øøøøðøøøð	?ð 	?s<   Â=C.Ã.
E=Ã8"E8ÄD3Ä'E8Ä3D7Ä7E8Ä:D7Ä;8E8Å8E=c                 ó6  —  t          d¬¦  «        t          ¦  «        }|                      t          ¦  «        5 } |t	          d¦  «        ddd¦  «         ddd¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         |                      t          ¦  «        5 } |t	          ddd¦  «        d	¦  «         ddd¦  «         n# 1 swxY w Y   |                      d
t          d	¦  «        z  t          |j        ¦  «        ¦  «         dS )zTests for specific error cases.Tr7   Nr6   rP   rQ   z.indices() takes exactly one argument (3 given)r   g333333ó?z/'%s' object cannot be interpreted as an integer)	r   r&   rE   r   r   rk   rc   rl   r
   )r4   Úcslice_indicesr0   s      r   Útest_slice_indices_examplesz&TestSlices.test_slice_indices_examplesÀ   s…  € à+� dÐ+Ñ+Ô+­MÑ:Ô:ˆà×Ò�{Ñ+Ô+ð 	1¨qØˆN�5 ™;œ;¨¨1¨aÑ0Ô0Ð0ð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1à�ŠØ=Ý�”ÑÔñ	
ô 	
ð 	
ð
 ×Ò�{Ñ+Ô+ð 	6¨qØˆN�5  t¨QÑ/Ô/°Ñ5Ô5Ð5ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6à�ŠØ=ÅÀsÁÄÑKÝ�”ÑÔñ	
ô 	
ð 	
ð 	
ð 	
s#   ¹A!Á!A%Á(A%Â.CÃCÃCc                 óö   ‡‡— dŠt          j        g d¢g d¢g d¢¦  «        D ]WŠt          ‰Ž Št          d¬¦  «        ˆˆfd„¦   «         }|                       |¦   «         |                     ¦   «         ¦  «         ŒXd S )N)r6   rP   rQ   é   )Nr6   rP   rQ   )Nr6   rP   r<   r�   Tr7   c                  ó   •— ‰ ‰         S r   © )Ú
test_tupleÚtss   €€r   Útest_fnz4TestSlices.test_slice_from_constant.<locals>.test_fnÚ   s   ø€ à! "”~Ð%r   )rD   r   r   r   r„   Úpy_func)r4   rš   r˜   r™   s     @@r   Útest_slice_from_constantz#TestSlices.test_slice_from_constantÒ   s¯   øø€ Ø!ˆ
åÔ#ØˆOˆO˜_˜_˜_Ð.BÐ.BÐ.Bñ
ô 
ð 		;ð 		;ˆBõ ˜�ˆBå˜$ÐÑÔð&ð &ð &ð &ð &ñ  Ôð&ð ×Ò˜W˜W™YœY¨¯ªÑ(9Ô(9Ñ:Ô:Ð:Ð:ð		;ð 		;r   c                 ór  — t           j                             t          dd d ¦  «        ¦  «        }t           j                             t          d d d ¦  «        ¦  «        }t           j                             t          dd d ¦  «        ¦  «        }|                      ||¦  «         |                      ||¦  «         d S r?   )r   ÚmiscÚSliceLiteralr   ÚassertNotEqualr„   )r4   Úsl1Úsl2Úsl3s       r   Útest_literal_slice_distinctz&TestSlices.test_literal_slice_distinctà   s—   € ÝŒj×%Ò%¥e¨A¨t°TÑ&:Ô&:Ñ;Ô;ˆÝŒj×%Ò%¥e¨D°$¸Ñ&=Ô&=Ñ>Ô>ˆÝŒj×%Ò%¥e¨A¨t°TÑ&:Ô&:Ñ;Ô;ˆà×Ò˜C Ñ%Ô%Ð%Ø×Ò˜˜cÑ"Ô"Ð"Ð"Ð"r   c                 óh  — t           d„ ¦   «         }t          ddd¦  «        t          dd¦  «        t          d¦  «        t          d dd¦  «        t          dd d¦  «        t          d d d¦  «        t          d ¦  «        t          d d d ¦  «        f}|D ]!}|                      | ||¦  «        ¦  «         Œ"d S )Nc                 ó    — t          | ¦  «        S r   ©r   )Úxs    r   r1   z/TestSlices.test_literal_slice_boxing.<locals>.fë   ó   € å˜Q‘<”<Ðr   r6   r•   rP   )r	   r   r„   )r4   r1   rŽ   r   s       r   Útest_literal_slice_boxingz$TestSlices.test_literal_slice_boxingè   sÈ   € õ 
ð	 ð 	 ñ 
Œð	 õ �!�Q˜‰NŒNÝ�!�Q‰KŒKÝ�!‰HŒHÝ�$˜˜1ÑÔÝ�!�T˜1ÑÔÝ�$˜˜aÑ Ô Ý�$‰KŒKÝ�$˜˜dÑ#Ô#ð	
ˆð ð 	(ð 	(ˆBØ×Ò˜R   2¡¤Ñ'Ô'Ð'Ð'ð	(ð 	(r   c                 óŠ   ‡— t          ddd¦  «        Št          ˆfd„¦   «         }|                      ‰ |¦   «         ¦  «         d S )Nr6   rP   rQ   c                  ó   •— ‰ S r   r—   ©Úzs   €r   Úfooz2TestSlices.test_literal_slice_freevar.<locals>.foo  s   ø€ àˆHr   )r   r	   r„   )r4   r¯   r®   s     @r   Útest_literal_slice_freevarz%TestSlices.test_literal_slice_freevarý   s[   ø€ õ �!�Q˜‰NŒNˆÝ	ð	ð 	ð 	ð 	ñ 
Œð	ð 	×Ò˜˜C˜C™EœEÑ"Ô"Ð"Ð"Ð"r   c           	      óB  — t          ¦   «         d„ ¦   «         }t          d¦  «        }|                      t          ¦  «        5 } |t	          d d | dz
  ¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )Nc                 ó    — t          | ¦  «        S r   r§   r­   s    r   r¯   z1TestSlices.test_literal_slice_maxint.<locals>.foo  r©   r   l            r6   zInt value is too large)r	   ÚintrE   Ú
ValueErrorr   rk   rc   rl   )r4   r¯   Úmaxvalr0   s       r   Útest_literal_slice_maxintz$TestSlices.test_literal_slice_maxint  sæ   € õ 
‰Œð	 ð 	 ñ 
Œð	 õ �U‘”ˆØ×Ò�zÑ*Ô*ð 	.¨aØˆC•�d˜D 6 '¨!¡)Ñ,Ô,Ñ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.à�ŠØ$Ý�”ÑÔñ	
ô 	
ð 	
ð 	
ð 	
s   ÁA,Á,A0Á3A0N)Ú__name__Ú
__module__Ú__qualname__rL   rZ   rv   rŠ   r�   r“   rœ   r¤   rª   r°   r¶   r—   r   r   r(   r(      s¾   € € € € € ð"$ð "$ð "$ðH3ð 3ð 3ð>+Fð +Fð +FðZ%ð %ð %ð,?ð ?ð ?ð6
ð 
ð 
ð$;ð ;ð ;ð#ð #ð #ð(ð (ð (ð*#ð #ð #ð
ð 
ð 
ð 
ð 
r   r(   Ú__main__)Ú	functoolsr   rD   r   r   r   rB   ÚnumpyrT   Únumbar   r   r	   r
   r   Ú
numba.corer   r   Únumba.tests.supportr   r   Únumba.core.types.functionsr   Úunittestr   r   r!   r&   r(   r·   Úmainr—   r   r   ú<module>rÃ      sb  ðØ Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø 
€
€
€
à Ð Ð Ð à ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø €€€ð&ð &ð &ð&ð &ð &ðð ð ðð ð ðx
ð x
ð x
ð x
ð x
� (ñ x
ô x
ð x
ðv ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   