Ë
    èÿæiú  ã                   óž   — d dl Z d dlZd dlmZ d dlmZmZ d dlmZ d dl	Z	 G d„ de«      Z
 G d„ de«      Zed	k(  r e	j                  «        yy)
é    N)Újit)ÚTypingErrorÚNumbaWarning)ÚTestCasec                   óB   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zy
)ÚTestSelfRecursionc                 ó4   — | j                   |d«      d«       y )Né
   é7   )ÚassertPreciseEqual)ÚselfÚcfuncs     úo/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_recursion.pyÚ	check_fibzTestSelfRecursion.check_fib   s   € Ø×Ñ¡ b£	¨2Õ.ó    c                 ó2   — ddl m} | j                  |«       y )Nr   )Úfib1)Únumba.tests.recursion_usecasesr   r   )r   r   s     r   Útest_global_explicit_sigz*TestSelfRecursion.test_global_explicit_sig   ó   € Ý7Ø�‰�tÕr   c                 ó2   — ddl m} | j                  |«       y )Nr   )Úfib2)r   r   r   )r   r   s     r   Útest_inner_explicit_sigz)TestSelfRecursion.test_inner_explicit_sig   r   r   c                 ó2   — ddl m} | j                  |«       y )Nr   )Úfib3)r   r   r   )r   r   s     r   Útest_global_implicit_sigz*TestSelfRecursion.test_global_implicit_sig   r   r   c                 ó¾   — ddl m} | j                  t        «      5 } |d«       d d d «       | j	                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)Nr   )Úrunaway_selfé{   ú#cannot type infer runaway recursion)r   r   ÚassertRaisesr   ÚassertInÚstrÚ	exception)r   r   Úraisess      r   Útest_runawayzTestSelfRecursion.test_runaway   sH   € Ý?Ø×Ñœ{Ô+¨vÙ˜Ô÷ ,à�‰Ð;Ü˜&×*Ñ*Ó+õ	-÷ ,Ð+úó   œ	AÁAc                 óv   — ddl m}  |«       } |t        d¬«      «      }d}| j                   ||Ž  ||Ž «       y )Nr   )Úmake_type_change_selfT©Únopython©é   g      À?)r   r)   r   r   )r   r)   Úpfuncr   Úargss        r   Útest_type_changez"TestSelfRecursion.test_type_change"   s9   € ÝHÙ%Ó'ˆÙ%¤c°4Ô&8Ó9ˆØˆØ×Ñ¡ t ©e°T¨lÕ;r   c                 ó¾   — ddl m} | j                  t        «      5 } |d«       d d d «       | j	                  t        j                  «      d«       y # 1 sw Y   Œ/xY w)Nr   )Ú
raise_selfé   r2   )r   r2   r!   Ú
ValueErrorÚassertEqualr#   r$   )r   r2   r%   s      r   Ú
test_raisezTestSelfRecursion.test_raise)   sG   € Ý=Ø×ÑœzÔ*¨fÙ�qŒM÷ +ð 	×Ñœ˜V×-Ñ-Ó.°Õ=÷ +Ð*úr'   c                 óŒ   — ddl m}  |«       } |t        d¬«      «      }dD ]   }| j                   ||«       ||«      «       Œ" y )Nr   )Úmake_optional_return_caseTr*   )r   é   r
   é   )r   r8   r   r5   )r   r8   r.   r   Úargs        r   Útest_optional_returnz&TestSelfRecursion.test_optional_return0   s>   € ÝLÙ)Ó+ˆÙ)¬#°tÔ*<Ó=ˆÛ!ˆCØ×Ñ™U 3›Z©¨s«Õ4ñ "r   c                 óâ   — ddl m}  |t        d¬«      «      }| j                  t        «      5 } |d«       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)Nr   )Úmake_growing_tuple_caseTr*   éd   z3Return type of recursive function does not converge)r   r>   r   r!   r   r"   r#   r$   )r   r>   r   r%   s       r   Útest_growing_return_tuplez+TestSelfRecursion.test_growing_return_tuple7   sV   € ÝJÙ'¬°TÔ(:Ó;ˆØ×Ñœ{Ô+¨vÙ�#ŒJ÷ ,à�‰ØAÜ�× Ñ Ó!õ	
÷ ,Ð+ús   ®	A%Á%A.N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r&   r0   r6   r<   r@   © r   r   r   r   
   s/   „ ò/òòòò-ò<ò>ò5ó
r   r   c                   ó6   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTestMutualRecursionc                 ój   — ddl m} t        j                  d«      }| j	                   |d«      |«       y )Nr   )Ú	outer_facr
   )r   rH   ÚmathÚ	factorialr   )r   rH   Úexpects      r   Útest_mutual_1z!TestMutualRecursion.test_mutual_1D   s'   € Ý<Ü—‘ Ó#ˆØ×Ñ¡	¨"£¨vÕ6r   c                 óà   — ddl m}  |«       \  }} |t        d¬«      «      \  }}dD ]D  }| j                   ||¬«       ||¬«      «       | j                   ||d¬«       ||d¬«      «       ŒF y )	Nr   )Úmake_mutual2Tr*   )éÿÿÿÿr   é   r3   )ÚxrP   )ÚyÚz)r   rN   r   r   )r   rN   ÚpfooÚpbarÚcfooÚcbarrQ   s          r   Útest_mutual_2z!TestMutualRecursion.test_mutual_2I   sa   € Ý?Ù!“^‰
ˆˆdÙ!¤#¨tÔ"4Ó5‰
ˆˆdÛˆAØ×#Ñ#¡D¨1¤I©t°a¬yÔ9Ø×#Ñ#¡D¨1°¤N±D¸1À´NÕCñ r   c                 ó¾   — ddl m} | j                  t        «      5 } |d«       d d d «       | j	                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)Nr   )Úrunaway_mutualr   r    )r   rZ   r!   r   r"   r#   r$   )r   rZ   r%   s      r   r&   z TestMutualRecursion.test_runawayQ   sH   € ÝAØ×Ñœ{Ô+¨vÙ˜3Ô÷ ,à�‰Ð;Ü˜&×*Ñ*Ó+õ	-÷ ,Ð+úr'   c                 óv   — ddl m}  |«       } |t        d¬«      «      }d}| j                   ||Ž  ||Ž «       y )Nr   )Úmake_type_change_mutualTr*   r,   )r   r\   r   r   )r   r\   r.   r   r/   s        r   r0   z$TestMutualRecursion.test_type_changeX   s9   € ÝJÙ'Ó)ˆÙ'¬°TÔ(:Ó;ˆØˆØ×Ñ¡ t ©e°T¨lÕ;r   c                 ó‚   — ddl m}  |«       } |t        d¬«      «      }d}| j                   ||«       ||«      «       y )Nr   )Úmake_four_levelTr*   é   )r   r^   r   r   )r   r^   r.   r   r;   s        r   Útest_four_levelz#TestMutualRecursion.test_four_level_   s9   € ÝBÙÓ!ˆÙ¤¨TÔ 2Ó3ˆØˆØ×Ñ¡ c£
©E°#«JÕ7r   c                 óà  — ddl m}  |t        d¬«      «      }| j                  t        «      5 } |d«       d d d «       d}| j                  |t        j                  «      «        |t        d¬«      «      } |«       }t        j                  «       5  t        j                  dt        ¬	«        |d
«      }d d d «       | j                   |d
«      «       y # 1 sw Y   Œ¢xY w# 1 sw Y   Œ.xY w)Nr   )Úmake_inner_errorTr*   é   zUnknown attribute 'ndim')ÚforceobjÚignore)Úcategoryé   )r   rb   r   r!   r   r"   r#   r$   ÚwarningsÚcatch_warningsÚfilterwarningsr   r5   )r   rb   r   r%   Úerrmsgr.   Úgots          r   Útest_inner_errorz$TestMutualRecursion.test_inner_errorf   s¹   € ÝCá ¤¨dÔ!3Ó4ˆØ×Ñœ{Ô+¨vÙ�!ŒH÷ ,à-ˆØ�‰�fœc &×"2Ñ"2Ó3Ô4ñ !¤¨dÔ!3Ó4ˆÙ Ó"ˆÜ×$Ñ$Õ&Ü×#Ñ# H´|ÕDÙ˜“(ˆC÷ 'ð 	×Ñ˜™e A›hÕ'÷ ,Ð+ú÷ 'Ð&ús   ®	CÂ$C$ÃC!Ã$C-c                 óÌ   — ddl m}  |«       }| j                  t        «      5 } |d«       d d d «       | j	                  t        j                  «      d«       y # 1 sw Y   Œ/xY w)Nr   )Úmake_raise_mutualrc   Úraise_mutual)r   ro   r!   r4   r5   r#   r$   )r   ro   r   r%   s       r   r6   zTestMutualRecursion.test_raisew   sO   € ÝDÙ!Ó#ˆØ×ÑœzÔ*¨fÙ�!ŒH÷ +ð 	×Ñœ˜V×-Ñ-Ó.°Õ?÷ +Ð*ús   £	AÁA#N)
rA   rB   rC   rL   rX   r&   r0   r`   rm   r6   rD   r   r   rF   rF   B   s'   „ ò7ò
Dò-ò<ò8ò(ó"@r   rF   Ú__main__)rI   rh   Únumbar   Únumba.core.errorsr   r   Únumba.tests.supportr   Úunittestr   rF   rA   ÚmainrD   r   r   Ú<module>rw      sM   ðÛ Û å ß 7Ý (Û ô5
˜ô 5
ôp;@˜(ô ;@ð| ˆzÒØ€H‡M�M…Oð r   