Ë
    èÿæi!  ã                   óê   — 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<                  «        yy)é    )ÚpartialN)ÚchainÚproductÚstarmap)ÚjitÚ	literallyÚnjitÚtypeofÚTypingError)ÚutilsÚtypes)ÚTestCaseÚMemoryLeakMixin)Ú_header_leadc                 óH   — | j                   | j                  | j                  fS ©N)ÚstartÚstopÚstep)Úsls    úl/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_slices.pyÚslice_passingr      s   € Ø�8‰8�R—W‘W˜bŸg™gÐ%Ð%ó    c                  óX   — t        | Ž }|j                  |j                  |j                  fS r   )Úslicer   r   r   )Úargsr   s     r   Úslice_constructorr      s$   € Ü	�ˆ€BØ�8‰8�R—W‘W˜bŸg™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‰9�gÐÐr   c                   óH   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)Ú
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 ]  \  \  }}\  }	}
\  }} |||	|||
|«       Œ ‰ j                  t        «      5   ‰t        ddd«      «       ddd«       y# 1 sw Y   yxY w)zC
        Check passing a slice object to a Numba function.
        c                 óZ   •— t        | ||«      } ‰|«      }‰	j                  ||||f«       y r   )r   ÚassertPreciseEqual)
ÚaÚbÚcÚdÚeÚfr   ÚgotÚcfuncÚselfs
           €€r   Úcheckz,TestSlices.test_slice_passing.<locals>.check$   s/   ø€ Ü�q˜!˜Q“ˆBÙ˜“)ˆCØ×#Ñ# C¨!¨Q°¨Õ3r   é   T©Únopython))Nr   ©é*   r9   ©éÿÿÿÿr;   N)é	   r<   )éõÿÿÿr=   ©Nr5   )é   r?   r8   r:   )éôÿÿÿr@   g      ø?)	ÚsysÚmaxsizer   r   Ú	itertoolsr   ÚassertRaisesÚ	TypeErrorr   )r3   r4   Ú	maxposintÚ	maxnegintÚstart_casesÚ
stop_casesÚ
step_casesr+   r.   r,   r/   r-   r0   r2   s   `            @r   Útest_slice_passingzTestSlices.test_slice_passing   s8  ù€ õ
	4ô
 —K‘Kˆ	Ø�J ‘Nˆ	Ø"”˜TÔ"¤=Ó1ˆò 6ˆØ˜YÐ'¨°Ð<ˆ
Ø Ð*ˆ
Ü&/×&7Ñ&7¸Ø8BØ8Bö'DÑ"‰FˆQ�‘F�Q˜™F˜Q ñ �!�Q˜˜1˜a Õ#ð'Dð ˜iÐ(¨(°HÐ=ˆØ˜YÐ'¨°Ð<ˆ
Ø 
Ð+ˆ
Ü&/×&7Ñ&7¸Ø8BØ8Bö'DÑ"‰FˆQ�‘F�Q˜™F˜Q ñ �!�Q˜˜1˜a Õ#ð'Dð ×ÑœyÕ)Ù”%˜˜Q Ó"Ô#÷ *×)Ñ)ús   ÃC4Ã4C=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 ]C  \  }} ||Ž }| j                  ||«       t        ||«      }	 |||«      }
| j                  |	|
«       ŒE y)zQ
        Test the 'happy path' for slice() constructor in nopython mode.
        r5   é
   Tr6   r   r   ))é   )r   rN   r5   )NN)r5   N))Né   )r   rO   r5   ))r5   rO   )r5   rO   r5   )NNé   rP   ))NrO   rP   )r   rO   rP   )r5   NrP   )©r5   rO   rP   rQ   )NNr;   r;   )rM   Nr;   )NrN   r;   rN   )©rM   rN   r;   rR   N)rA   rB   ÚnpÚaranger   r   r    r*   )r3   rF   rG   r+   r2   Ú	cfunc_user   Úexpectedr1   ÚusageÚcusages              r   Útest_slice_constructorz!TestSlices.test_slice_constructorC   s&  € ô —K‘Kˆ	Ø�J ‘Nˆ	Ü�I‰I�b‹MˆØ"”˜TÔ"Ô#4Ó5ˆØ&”C Ô&Ô'>Ó?ˆ	à�q˜) QÐ'Ð(ØØ˜A˜y¨!Ð,Ð-Ø˜˜I qÐ)Ð*Ø"ØØ˜q )¨QÐ/Ð0Ø%Ø˜A˜y¨!Ð,Ð-Ø"Ø 	¨9°bÐ9Ð:Ø˜b )¨RÐ0Ð1Ø˜Y¨¨2Ð.Ð/Ø&ó
‰NˆD�(ñ  ˜�,ˆCØ×#Ñ# C¨Ô2Ü+¨D°!Ó4ˆEÙ˜t QÓ'ˆFØ×#Ñ# E¨6Õ2ñ)
r   c                 óâ  ‡
— dŠ
t        j                  ˆ
fd„t        d«      D «       «      }t        j                  d«      } t        d¬«      t        «      }| j                  «        |D ](  }	 t        ||«      }| j                  | |||«      «       Œ* y# t        $ rØ}t        |«      }| j                  t        |«      dj                  |«      «       | j                  t        «      5 } |||«       ddd«       n# 1 sw Y   nxY w| j!                  t"        t        j$                  «      «       | j!                  d	j'                  d
„ |D «       «      t        |j$                  «      «       Y d}~�Œd}~wt(        $ rr}	| j                  t+        |	«      «      5 } |||«       ddd«       n# 1 sw Y   nxY w| j!                  t        |	«      t        j$                  «      «       Y d}	~	�Œ�d}	~	ww xY w)zW
        Test that slice constructor behaves same in python and compiled code.
        )Nr;   r   r5   c              3   ó8   •K  — | ]  }t        ‰|¬ «      –— Œ y­w))ÚrepeatN)r   )Ú.0ÚnÚoptionss     €r   Ú	<genexpr>z:TestSlices.test_slice_constructor_cases.<locals>.<genexpr>g   s   øè ø€ ð (
Ù08¨1ŒG�G A×&Ð&±ùs   ƒrN   rM   Tr6   z7slice expected at (most|least) (3|1) arguments?, got {}Nz, c              3   óD   K  — | ]  }t        t        |«      «      –— Œ y ­wr   )Ústrr
   )r]   Úargs     r   r`   z:TestSlices.test_slice_constructor_cases.<locals>.<genexpr>‚   s   è ø€ Ð?¹$°3œc¤&¨£+×.¹$ùs   ‚ )r   Úfrom_iterableÚrangerS   rT   r   r    Údisable_leak_checkr*   rE   ÚlenÚassertRegexrb   ÚformatrD   r   ÚassertInr   Ú	exceptionÚjoinÚ	ExceptionÚtype)r3   Ú	arg_casesÚarrayr2   r   rV   Ú	py_type_eÚn_argsÚnumba_eÚpy_er_   s             @r   Útest_slice_constructor_casesz'TestSlices.test_slice_constructor_casesb   sž  ø€ ð #ˆÜ×'Ñ'ó (
Ü05°a´ó(
ó 
ˆ	ô —	‘	˜"“ˆà"”˜TÔ"Ô#:Ó;ˆà×ÑÔ!ÛˆDðFÜ2°4¸Ó?�ð8 ×'Ñ'¨±%¸¸eÓ2DÕEñ= øô ò ô ˜T›�Ø× Ñ Ü˜	“NØNß‘V˜F“^ôð
 ×&Ñ&¤{Ô3°wÙ˜$ Ô&÷ 4×3Ñ3úà—‘Ü Ü˜×)Ñ)Ó*ôð —‘Ø—I‘IÑ?¹$Ó?Ó?Ü˜×)Ñ)Ó*÷ò ûô ò Ø×&Ñ&¤t¨D£zÔ2°gÙ˜$ Ô&÷ 3×2Ñ2úà—‘Ü˜“IÜ˜×)Ñ)Ó*÷ò ûðúsV   Á,BÂ	G.ÂA
E0Ã'
C:Ã1	E0Ã:DÃ?A+E0Å0G.Å<G)Æ
F)Æ 	G)Æ)F2Æ.5G)Ç)G.c                 ód  — 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        ||«      }| j                  | |||«      «       Œ- y# t        $ rq}| j                  t        |«      «      5 } |||«       ddd«       n# 1 sw Y   nxY w| j                  t        |«      t        j                  «      «       Y d}~Œ¤d}~ww xY w)	zITest that a numba slice returns same result for .indices as a python one.éûÿÿÿrN   r   éþÿÿÿrP   Tr6   N)r   r   r   r   re   r   r%   r*   rm   rD   rn   rj   rb   rk   )	r3   ÚslicesÚlengthsr2   r#   r   rV   rt   rs   s	            r   Útest_slice_indiceszTestSlices.test_slice_indices�   s  € äÜÜÜ”e˜B “l GÓ,Ü”e˜B “l GÓ,Ü”e˜B “l GÓ,óó
ˆô ˜˜A“,ˆà"”˜TÔ"¤=Ó1ˆä˜F GÖ,‰DˆAˆqð
?Ü(¨¨AÓ.�ð ×'Ñ'¨±%¸¸1³+Õ>ñ -øô ò Ø×&Ñ&¤t¨D£zÔ2°gÙ˜!˜Q”K÷ 3×2Ñ2úà—‘Ü˜“IÜ˜×)Ñ)Ó*÷ñ ûðús0   ÂB5Â5	D/Â>D*Ã
C+Ã"	D*Ã+C4Ã05D*Ä*D/c                 óÔ  —  t        d¬«      t        «      }| j                  t        «      5 } |t	        d«      ddd«       ddd«       | j                  dt        j                  «      «       | j                  t        «      5 } |t	        ddd«      d	«       ddd«       | j                  d
t        d	«      z  t        |j                  «      «       y# 1 sw Y   Œ’xY w# 1 sw Y   ŒGxY w)zTests for specific error cases.Tr6   Nr5   rO   rP   z.indices() takes exactly one argument (3 given)r   g333333ó?z/'%s' object cannot be interpreted as an integer)	r   r%   rD   r   r   rj   rb   rk   r
   )r3   Úcslice_indicesr/   s      r   Útest_slice_indices_examplesz&TestSlices.test_slice_indices_examplesª   sµ   € à+œ dÔ+¬MÓ:ˆà×Ñœ{Ô+¨qÙœ5 ›;¨¨1¨aÔ0÷ ,à�‰Ø=Ü�—‘Óô	
ð
 ×Ñœ{Ô+¨qÙœ5  t¨QÓ/°Ô5÷ ,à�‰Ø=ÄÀsÃÑKÜ�—‘Óõ	
÷ ,Ð+ú÷ ,Ð+ús   ¬CÂCÃCÃC'c                 óÔ   ‡‡— dŠt        j                  g d¢g d¢g d¢«      D ]D  Št        ‰Ž Št        d¬«      ˆˆfd„«       }| j	                   |«       |j                  «       «       ŒF y )N)r5   rO   rP   é   )Nr5   rO   rP   )Nr5   rO   r;   rx   Tr6   c                  ó   •— ‰ ‰   S r   © )Ú
test_tupleÚtss   €€r   Útest_fnz4TestSlices.test_slice_from_constant.<locals>.test_fnÄ   s   ø€ à! "‘~Ð%r   )rC   r   r   r   ÚassertEqualÚpy_func)r3   r…   rƒ   r„   s     @@r   Útest_slice_from_constantz#TestSlices.test_slice_from_constant¼   sb   ù€ Ø!ˆ
ä×#Ñ#Úš_Ò.Bö
ˆBô ˜�ˆBä˜$Ôô&ó  ð&ð ×Ñ™W›Y¨¯©Ó(9Õ:ñ
r   c                 óH  — t         j                  j                  t        dd d «      «      }t         j                  j                  t        d d d «      «      }t         j                  j                  t        dd d «      «      }| j	                  ||«       | j                  ||«       y r>   )r   ÚmiscÚSliceLiteralr   ÚassertNotEqualr†   )r3   Úsl1Úsl2Úsl3s       r   Útest_literal_slice_distinctz&TestSlices.test_literal_slice_distinctÊ   sy   € Ü�j‰j×%Ñ%¤e¨A¨t°TÓ&:Ó;ˆÜ�j‰j×%Ñ%¤e¨D°$¸Ó&=Ó>ˆÜ�j‰j×%Ñ%¤e¨A¨t°TÓ&:Ó;ˆà×Ñ˜C Ô%Ø×Ñ˜˜cÕ"r   c                 ó  — 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 ]  }| j                  | ||«      «       Œ y )Nc                 ó   — t        | «      S r   ©r   )Úxs    r   r0   z/TestSlices.test_literal_slice_boxing.<locals>.fÕ   ó   € ä˜Q“<Ðr   r5   r€   rO   )r	   r   r†   )r3   r0   ry   r   s       r   Útest_literal_slice_boxingz$TestSlices.test_literal_slice_boxingÒ   s‘   € ô 
ñ	 ó 
ð	 ô �!�Q˜‹NÜ�!�Q‹KÜ�!‹HÜ�$˜˜1ÓÜ�!�T˜1ÓÜ�$˜˜aÓ Ü�$‹KÜ�$˜˜dÓ#ð	
ˆó ˆBØ×Ñ˜R¡ 2£Õ'ñ r   c                 ój   ‡— t        ddd«      Št        ˆfd„«       }| j                  ‰ |«       «       y )Nr5   rO   rP   c                  ó   •— ‰ S r   r‚   ©Úzs   €r   Úfooz2TestSlices.test_literal_slice_freevar.<locals>.fooë   s   ø€ àˆHr   )r   r	   r†   )r3   r›   rš   s     @r   Útest_literal_slice_freevarz%TestSlices.test_literal_slice_freevarç   s8   ø€ ô �!�Q˜‹NˆÜ	ó	ó 
ð	ð 	×Ñ˜™C›EÕ"r   c           	      ó  — t        «       d„ «       }t        d«      }| j                  t        «      5 } |t	        d d | dz
  «      «       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)Nc                 ó   — t        | «      S r   r“   r™   s    r   r›   z1TestSlices.test_literal_slice_maxint.<locals>.fooõ   r•   r   l            r5   zInt value is too large)r	   ÚintrD   Ú
ValueErrorr   rj   rb   rk   )r3   r›   Úmaxvalr/   s       r   Útest_literal_slice_maxintz$TestSlices.test_literal_slice_maxintñ   ss   € ô 
‹ñ	 ó 
ð	 ô �U“ˆØ×ÑœzÔ*¨aÙ”�d˜D 6 '¨!¡)Ó,Ô-÷ +à�‰Ø$Ü�—‘Óõ	
÷ +Ð*ús   ±A7Á7B N)Ú__name__Ú
__module__Ú__qualname__rK   rY   ru   r{   r~   rˆ   r�   r–   rœ   r¢   r‚   r   r   r'   r'      s7   „ ò"$òH3ò>+FòZ?ò6
ò$;ò#ò(ò*#ó
r   r'   Ú__main__)Ú	functoolsr   rC   r   r   r   rA   ÚnumpyrS   Ú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¯      sh   ðÝ Û ß -Ñ -Û 
ã ç ;Õ ;ß #ß 9Ý 3Û ò&ò&òòôb
� (ô b
ðJ ˆzÒØ€H‡M�M…Oð r   