Ë
    èÿæiò  ã                   ón  — d Z ddlmZmZ ddlmZmZ ddlmZ ddlm	Z	 ddl
mZmZ ddlZ ed¬	«      d
„ «       Zd„ Z ed¬	«      dd„«       Zd„ Z ed¬	«      dd„«       Zd„ Zd„ Z ed¬	«      d„ «       Zd„ Zdd„Z e	e«      dd„«       Zd„ Zdefd„Z G d„ de«      Zedk(  r ej<                  «        yy)zd
Test problems in nested calls.
Usually due to invalid type conversion between function boundaries.
é    )Úint32Úint64)ÚjitÚnjit)Útypes)Úoverload)ÚTestCaseÚtagNT©Únopythonc                 ó   — | ||fS ©N© ©ÚaÚbÚcs      úr/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_nested_calls.pyÚf_innerr      ó   € àˆa�ˆ7€Nó    c                 ó   — t        | ||¬«      S )N)r   r   )r   ©ÚxÚyÚzs      r   Úfr      s   € Ü�1˜˜QÔÐr   c                 ó   — | ||fS r   r   r   s      r   Úg_innerr      r   r   c                 ó6   — t        | |¬«      t        || ¬«      fS )N)r   )r   r   )r   r   s      r   Úgr!      s   € Ü�1˜Œ?œG a¨1Ô-Ð-Ð-r   c                 ó
   — | |fS r   r   ©r   r   s     r   Ú
star_innerr$      s   € àˆaˆ4€Kr   c                 ó4   — t        | ¬«      t        | ||«      fS )N)r   ©r$   r   s      r   Ústarr'   !   s   € Ü˜Œ?œJ q¨!¨QÓ/Ð/Ð/r   c                 ó*   — t        | g|¢­Ž t        |Ž fS r   r&   r   s      r   Ú	star_callr)   $   s   € Ü�aÐ˜!Òœj¨!˜nÐ,Ð,r   c                 ó    — |rt        d«      } | S )Nr   )r   r#   s     r   Úargcast_innerr+   '   s   € áä�!‹HˆØ€Hr   c                 ó,   — t        t        | «      |«      S r   )r+   r   r#   s     r   Úargcastr-   .   s   € Üœ˜q› 1Ó%Ð%r   c                 ó   — J d«       ‚)NÚunreachabler   r   s      r   Úgenerated_innerr0   2   s   € ØˆmÓˆ1r   c                 óN   — t        | t        j                  «      rdd„}|S dd„}|S )Nc                 ó   — | |z   |fS r   r   r   s      r   Úimplz ol_generated_inner.<locals>.impl9   ó   € Ø�q‘5˜!�8ˆOr   c                 ó   — | |z
  |fS r   r   r   s      r   r3   z ol_generated_inner.<locals>.impl<   r4   r   ©é   é   )Ú
isinstancer   ÚComplex)r   r   r   r3   s       r   Úol_generated_innerr;   6   s&   € ä�!”U—]‘]Ô#ó	ð
 €Kó	à€Kr   c                 ó   — t        | |¬«      S )N)r   )r0   r#   s     r   Úcall_generatedr=   A   s   € Ü˜1 Ô"Ð"r   Úreturnc                  ó$   — dt         dt         fd„} y)NÚ	inner_argr>   c                 ó   — | S r   r   )r@   s    r   Úinnerznested_annotated.<locals>.innerF   s   € ØÐr   é   )Úint)rB   s    r   Únested_annotatedrE   E   s   € ðœð ¤ó àr   c                   ó\   — e Zd Zdd„Zd„ Zdd„Zd„ Zdd„Zd„ Zd„ Z	dd„Z
d	„ Zd
„ Zd„ Zd„ Zy)ÚTestNestedCallc                 ót   ‡ ‡‡— ˆˆˆ fd„}|rt        d¬«      nt        d¬«      } t        di |¤Ž‰«      Š‰|fS )Nc                  óJ   •—  ‰| i |¤Ž} ‰| i |¤Ž}‰j                  ||«       y r   )ÚassertPreciseEqual)ÚargsÚkwargsÚexpectedÚresultr   ÚpyfuncÚselfs       €€€r   Úcheckz*TestNestedCall.compile_func.<locals>.checkN   s1   ø€ Ù˜tÐ. vÑ.ˆHÙ˜Ð' Ñ'ˆFØ×#Ñ# F¨HÕ5r   T)Úforceobjr   r   )Údictr   )rP   rO   ÚobjmoderQ   Úflagsr   s   ``   @r   Úcompile_funczTestNestedCall.compile_funcM   s8   ú€ ö	6ñ (/”˜dÕ#´DÀ$Ô4GˆØŒC‰L�%‰L˜Ó ˆØ�%ˆxˆr   c                 ó®   ‡— t        d¬«      d„ «       Št        d¬«      ˆfd„«       }| j                   |d«      «       | j                   |d«      «       y )NTr   c                 ó   — |  S r   r   )r   s    r   rB   z1TestNestedCall.test_boolean_return.<locals>.innerW   s	   € à�5ˆLr   c                 ó   •—  ‰| «      ryy)NTFr   )r   rB   s    €r   Úouterz1TestNestedCall.test_boolean_return.<locals>.outer[   s   ø€ á�QŒxØàr   F)r   ÚassertFalseÚ
assertTrue)rP   rZ   rB   s     @r   Útest_boolean_returnz"TestNestedCall.test_boolean_returnV   sW   ø€ Ü	�dÔ	ñ	ó 
ð	ô 
�dÔ	ó	ó 
ð	ð 	×Ñ™˜t›Ô%Ø�‰™˜e›Õ%r   c                 ó`   — | j                  t        |«      \  }} |ddd«        |ddd¬«       y)zM
        Test a nested function call with named (keyword) arguments.
        rC   é   é   ©r   r   N)rV   r   ©rP   rT   ÚcfuncrQ   s       r   Útest_named_argszTestNestedCall.test_named_argse   ó1   € ð ×(Ñ(¬¨GÓ4‰ˆˆuÙˆa��AŒÙˆa�1˜Ör   c                 ó(   — | j                  d¬«       y ©NT)rT   )rd   ©rP   s    r   Útest_named_args_objmodez&TestNestedCall.test_named_args_objmodem   s   € Ø×Ñ TÐÕ*r   c                 ó`   — | j                  t        |«      \  }} |ddd«        |ddd¬«       y)zL
        Test a nested function call using default argument values.
        rC   r_   r`   ra   N)rV   r!   rb   s       r   Útest_default_argsz TestNestedCall.test_default_argsp   re   r   c                 ó(   — | j                  d¬«       y rg   )rk   rh   s    r   Útest_default_args_objmodez(TestNestedCall.test_default_args_objmodex   s   € Ø×Ñ tÐÕ,r   c                 óH   — | j                  t        «      \  }} |ddd«       y)zX
        Test a nested function call to a function with *args in its signature.
        rC   r_   r`   N)rV   r'   ©rP   rc   rQ   s      r   Útest_star_argszTestNestedCall.test_star_args{   s#   € ð ×(Ñ(¬Ó.‰ˆˆuÙˆa��A�r   c                 óJ   — | j                  t        |«      \  }} |ddd«       y)z4
        Test a function call with a *args.
        rC   )r_   )r`   N)rV   r)   rb   s       r   Útest_star_callzTestNestedCall.test_star_call‚   s&   € ð ×(Ñ(¬°GÓ<‰ˆˆuÙˆa��tÕr   c                 ó(   — | j                  d¬«       y rg   )rr   rh   s    r   Útest_star_call_objmodez%TestNestedCall.test_star_call_objmode‰   s   € Ø×Ñ DÐÕ)r   c                 óX   — | j                  t        «      \  }} |dd«        |dd«       y)zm
        Issue #1488: implicitly casting an argument variable should not
        break nested calls.
        rC   r   N)rV   r-   ro   s      r   Útest_argcastzTestNestedCall.test_argcastŒ   s*   € ð
 ×(Ñ(¬Ó1‰ˆˆuÙˆa�ŒÙˆa��r   c                 ó”   —  t        d¬«      t        «      }| j                   |dd«      d«       | j                   |dd«      d«       y)	zJ
        Test a nested function call to a generated jit function.
        Tr   rC   r_   )éüÿÿÿr_   y              ð?)y      @      ð?r_   N)r   r=   rJ   ©rP   rc   s     r   Útest_call_generatedz"TestNestedCall.test_call_generated•   sA   € ð #”˜TÔ"¤>Ó2ˆØ×Ñ¡ a¨£¨WÔ5Ø×Ñ¡ b¨!£¨kÕ:r   c                 ó:   —  t        «       t        «      } |«        y)z<
        Tested a nested function with annotations.
        N)r   rE   ry   s     r   Útest_nested_annotatedz$TestNestedCall.test_nested_annotated�   s   € ð ”“Ô'Ó(ˆá�r   N)F)Ú__name__Ú
__module__Ú__qualname__rV   r]   rd   ri   rk   rm   rp   rr   rt   rv   rz   r|   r   r   r   rG   rG   K   s>   „ óò&óò+óò-òóò*òò;ór   rG   Ú__main__)r_   r`   )r7   r6   )Ú__doc__Únumbar   r   r   r   Ú
numba.corer   Únumba.extendingr   Únumba.tests.supportr	   r
   Úunittestr   r   r   r!   r$   r'   r)   r+   r-   r0   r;   r=   rD   rE   rG   r}   Úmainr   r   r   Ú<module>rˆ      só   ðñ÷ ß Ý Ý $ß -Û ñ ˆdÔñó ðò ñ ˆdÔòó ðò.ñ ˆdÔòó ðò0ò-ñ ˆdÔñó ðò&óñ 
ˆ/Óòó ðò#ð˜#ó ôX�Xô Xðv ˆzÒØ€H‡M�M…Oð r   