ó
    „ñ:iú  ã                   ó    • S SK r S SKrS SKJr  S SKJrJr  S SKJr  S SK	r	 " S S\5      r
 " S S\5      r\S	:X  a  \	R                  " 5         gg)
é    N)Újit)ÚTypingErrorÚNumbaWarning)ÚTestCasec                   óJ   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)ÚTestSelfRecursioné
   c                 ó4   • U R                  U" S5      S5        g )Nr	   é7   )ÚassertPreciseEqual)ÚselfÚcfuncs     Ú]/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/numba/tests/test_recursion.pyÚ	check_fibÚTestSelfRecursion.check_fib   s   € Ø×Ñ¡ b£	¨2Õ.ó    c                 ó2   • SSK Jn  U R                  U5        g )Nr   )Úfib1)Únumba.tests.recursion_usecasesr   r   )r   r   s     r   Útest_global_explicit_sigÚ*TestSelfRecursion.test_global_explicit_sig   ó   € Ý7Ø�‰�tÕr   c                 ó2   • SSK Jn  U R                  U5        g )Nr   )Úfib2)r   r   r   )r   r   s     r   Útest_inner_explicit_sigÚ)TestSelfRecursion.test_inner_explicit_sig   r   r   c                 ó2   • SSK Jn  U R                  U5        g )Nr   )Úfib3)r   r   r   )r   r   s     r   Útest_global_implicit_sigÚ*TestSelfRecursion.test_global_implicit_sig   r   r   c                 óÈ   • SSK Jn  U R                  [        5       nU" S5        S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nr   )Úrunaway_selfé{   ú#cannot type infer runaway recursion)r   r"   ÚassertRaisesr   ÚassertInÚstrÚ	exception)r   r"   Úraisess      r   Útest_runawayÚTestSelfRecursion.test_runaway   sH   € Ý?Ø×Ñœ{Ô+¨vÙ˜Ô÷ ,à�‰Ð;Ü˜&×*Ñ*Ó+õ	-÷ ,Õ+úó   œ	AÁ
A!c                 óp   • SSK Jn  U" 5       nU" [        SS95      nSnU R                  U" U6 U" U6 5        g )Nr   )Úmake_type_change_selfT©Únopython©é   g      À?)r   r.   r   r   )r   r.   Úpfuncr   Úargss        r   Útest_type_changeÚ"TestSelfRecursion.test_type_change"   s9   € ÝHÙ%Ó'ˆÙ%¤c°4Ñ&8Ó9ˆØˆØ×Ñ¡ t ©e°T¨lÕ;r   c                 óÈ   • SSK Jn  U R                  [        5       nU" S5        S S S 5        U R	                  [        WR                  5      S5        g ! , (       d  f       N4= f)Nr   )Ú
raise_selfé   r8   )r   r8   r%   Ú
ValueErrorÚassertEqualr'   r(   )r   r8   r)   s      r   Ú
test_raiseÚTestSelfRecursion.test_raise)   sG   € Ý=Ø×ÑœzÔ*¨fÙ�qŒM÷ +ð 	×Ñœ˜V×-Ñ-Ó.°Õ=÷ +Õ*úr,   c                 óŠ   • SSK Jn  U" 5       nU" [        SS95      nS H!  nU R                  U" U5      U" U5      5        M#     g )Nr   )Úmake_optional_return_caseTr/   )r   é   r	   é   )r   r?   r   r;   )r   r?   r3   r   Úargs        r   Útest_optional_returnÚ&TestSelfRecursion.test_optional_return0   s>   € ÝLÙ)Ó+ˆÙ)¬#°tÑ*<Ó=ˆÛ!ˆCØ×Ñ™U 3›Z©¨s«Ö4ò "r   c                 óæ   • SSK Jn  U" [        SS95      nU R                  [        5       nU" S5        S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nr   )Úmake_growing_tuple_caseTr/   éd   z3Return type of recursive function does not converge)r   rF   r   r%   r   r&   r'   r(   )r   rF   r   r)   s       r   Útest_growing_return_tupleÚ+TestSelfRecursion.test_growing_return_tuple7   sV   € ÝJÙ'¬°TÑ(:Ó;ˆØ×Ñœ{Ô+¨vÙ�#ŒJ÷ ,à�‰ØAÜ�× Ñ Ó!õ	
÷ ,Õ+ús   «	A"Á"
A0© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r   r   r*   r5   r<   rC   rH   Ú__static_attributes__rJ   r   r   r   r   
   s/   † ò/òòòò-ò<ò>ò5õ
r   r   c                   ó>   • \ rS rSrS rS rS rS rS rS r	S r
S	rg
)ÚTestMutualRecursionéB   c                 ól   • SSK Jn  [        R                  " S5      nU R	                  U" S5      U5        g )Nr   )Ú	outer_facr	   )r   rT   ÚmathÚ	factorialr   )r   rT   Úexpects      r   Útest_mutual_1Ú!TestMutualRecursion.test_mutual_1D   s'   € Ý<Ü—’ Ó#ˆØ×Ñ¡	¨"£¨vÕ6r   c           	      óÂ   • SSK Jn  U" 5       u  p#U" [        SS95      u  pES H9  nU R                  U" US9U" US95        U R                  U" USS9U" USS95        M;     g )	Nr   )Úmake_mutual2Tr/   )éÿÿÿÿr   é   r9   )Úxr]   )ÚyÚz)r   r[   r   r   )r   r[   ÚpfooÚpbarÚcfooÚcbarr^   s          r   Útest_mutual_2Ú!TestMutualRecursion.test_mutual_2I   s]   € Ý?Ù!“^‰
ˆÙ!¤#¨tÑ"4Ó5‰
ˆÛˆAØ×#Ñ#¡D¨1¡I©t°a©yÔ9Ø×#Ñ#¡D¨1°¡N±D¸1À±NÖCò r   c                 óÈ   • SSK Jn  U R                  [        5       nU" S5        S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nr   )Úrunaway_mutualr#   r$   )r   rh   r%   r   r&   r'   r(   )r   rh   r)   s      r   r*   Ú TestMutualRecursion.test_runawayQ   sH   € ÝAØ×Ñœ{Ô+¨vÙ˜3Ô÷ ,à�‰Ð;Ü˜&×*Ñ*Ó+õ	-÷ ,Õ+úr,   c                 óp   • SSK Jn  U" 5       nU" [        SS95      nSnU R                  U" U6 U" U6 5        g )Nr   )Úmake_type_change_mutualTr/   r1   )r   rk   r   r   )r   rk   r3   r   r4   s        r   r5   Ú$TestMutualRecursion.test_type_changeX   s9   € ÝJÙ'Ó)ˆÙ'¬°TÑ(:Ó;ˆØˆØ×Ñ¡ t ©e°T¨lÕ;r   c                 ó|   • SSK Jn  U" 5       nU" [        SS95      nSnU R                  U" U5      U" U5      5        g )Nr   )Úmake_four_levelTr/   é   )r   rn   r   r   )r   rn   r3   r   rB   s        r   Útest_four_levelÚ#TestMutualRecursion.test_four_level_   s9   € ÝBÙÓ!ˆÙ¤¨TÑ 2Ó3ˆØˆØ×Ñ¡ c£
©E°#«JÕ7r   c                 óæ  • SSK Jn  U" [        SS95      nU R                  [        5       nU" S5        S S S 5        SnU R                  U[        WR                  5      5        U" [        SS95      nU" 5       n[        R                  " 5          [        R                  " S[        S	9  U" S
5      nS S S 5        U R                  WU" S
5      5        g ! , (       d  f       N£= f! , (       d  f       N8= f)Nr   )Úmake_inner_errorTr/   é   zUnknown attribute 'ndim')ÚforceobjÚignore)Úcategoryé   )r   rs   r   r%   r   r&   r'   r(   ÚwarningsÚcatch_warningsÚfilterwarningsr   r;   )r   rs   r   r)   Úerrmsgr3   Úgots          r   Útest_inner_errorÚ$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Ã"
C0c                 óÖ   • SSK Jn  U" 5       nU R                  [        5       nU" S5        S S S 5        U R	                  [        WR                  5      S5        g ! , (       d  f       N4= f)Nr   )Úmake_raise_mutualrt   Úraise_mutual)r   r�   r%   r:   r;   r'   r(   )r   r�   r   r)   s       r   r<   ÚTestMutualRecursion.test_raisew   sO   € ÝDÙ!Ó#ˆØ×ÑœzÔ*¨fÙ�!ŒH÷ +ð 	×Ñœ˜V×-Ñ-Ó.°Õ?÷ +Õ*ús   £	AÁ
A(rJ   N)rK   rL   rM   rN   rX   re   r*   r5   rp   r~   r<   rO   rJ   r   r   rQ   rQ   B   s'   † ò7ò
Dò-ò<ò8ò(õ"@r   rQ   Ú__main__)rU   ry   Únumbar   Únumba.core.errorsr   r   Únumba.tests.supportr   Úunittestr   rQ   rK   ÚmainrJ   r   r   Ú<module>rŠ      sK   ðÛ Û å ß 7Ý (Û ô5
˜ô 5
ôp;@˜(ô ;@ð| ˆzÓØ‡M‚M…Oð r   