Ë
    èÿæi_  ã                   óö   — d dl Z d dlZd dlmZ d dlmZ d dlmZmZ d dl	m
Z
 ed„ «       Zd„ Zed„ «       Zd	„ Z G d
„ dej                  «      Z G d„ dej                  «      Zedk(  r ej&                  «        yy)é    N)Útypes)Ú	intrinsic)ÚjitÚnjit)Úcaptured_stdoutc                 ó<   — t        j                  ||«      }d„ }||fS )Nc                 ót   — |\  }}| j                  |«      }|j                  ||«      }|j                  |«      S ©N)Úget_python_apiÚbytes_from_string_and_sizeÚbytes_as_string)ÚcontextÚbuilderÚsigÚargsÚcsrcÚsizeÚapiÚbs           úo/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_pythonapi.pyÚcodegenz'_pyapi_bytes_as_string.<locals>.codegen   s>   € Ø‰ˆˆtØ×$Ñ$ WÓ-ˆØ×*Ñ*¨4°Ó6ˆØ×"Ñ" 1Ó%Ð%ó    )r   Úvoidptr)Ú	typingctxr   r   r   r   s        r   Ú_pyapi_bytes_as_stringr   	   s#   € ä
�-‰-˜˜dÓ
#€Cò&ð
 �ˆ<Ðr   c                 óB   — t        | j                  | j                  «      S r
   )r   Ú_dataÚ_length©Úunis    r   ÚPyBytes_AsStringr!      s   € ô " #§)¡)¨S¯[©[Ó9Ð9r   c                 ód   — t         j                  j                  ||f«      } |||«      }d„ }||fS )Nc                 ój  — |\  }}| j                  |«      }|j                  ||«      }|j                  |j                  «      }|j                  |j                  «      }	|j                  |||	«       |j                  |«      }
|j                  |	«      }| j                  ||j                  |
|f«      }|S r
   )	r   r   ÚallocaÚcstringÚ
py_ssize_tÚbytes_as_string_and_sizeÚloadÚ
make_tupleÚreturn_type)r   r   r   r   r   r   Úpyapir   Úp_cstrÚp_sizeÚcstrÚtups               r   r   z0_pyapi_bytes_as_string_and_size.<locals>.codegen"   s¢   € Ø‰ˆˆtØ×&Ñ& wÓ/ˆØ×,Ñ,¨T°4Ó8ˆØ—‘ §¡Ó.ˆØ—‘ × 0Ñ 0Ó1ˆØ×&Ñ& q¨&°&Ô9à�|‰|˜FÓ#ˆØ�|‰|˜FÓ#ˆØ× Ñ  ¨#¯/©/¸DÀ$¸<ÓHˆØˆ
r   )r   ÚTupleÚ
from_types)r   r   r   Úrettyr   r   s         r   Ú_pyapi_bytes_as_string_and_sizer3      s9   € ô �K‰K×"Ñ" D¨$ <Ó0€EÙ
��dÓ
€Còð �ˆ<Ðr   c                 óB   — t        | j                  | j                  «      S r
   )r3   r   r   r   s    r   ÚPyBytes_AsStringAndSizer5   1   s   € Ü*¨3¯9©9°c·k±kÓBÐBr   c                   ó   — e Zd Zd„ Zd„ Zy)ÚTestPythonAPIc                 óþ   —  t        d¬«      t        «      } |d«      }t        j                  j                  }t        j
                  g|_        t        j                  |_         ||«      }| j                  |d«       y )NT©ÚnopythonÚhellos   hello)
r   r!   ÚctypesÚ	pythonapiÚPyBytes_FromStringÚc_void_pÚargtypesÚ	py_objectÚrestypeÚassertEqual)ÚselfÚcfuncr.   ÚfnÚobjs        r   Útest_PyBytes_AsStringz#TestPythonAPI.test_PyBytes_AsString7   sd   € Ø"”˜TÔ"Ô#3Ó4ˆÙ�W‹~ˆä×Ñ×0Ñ0ˆÜ—‘Ð'ˆŒÜ×%Ñ%ˆŒ
Ù�‹hˆð 	×Ñ˜˜hÕ'r   c                 ó*  —  t        d¬«      t        «      } |d«      }t        j                  j                  }t        j
                  t        j                  g|_        t        j                  |_	         ||d   |d   «      }| j                  |d«       y )NTr9   zhello worldr   é   s   hello world)r   r5   r<   r=   ÚPyBytes_FromStringAndSizer?   Úc_size_tr@   rA   rB   rC   )rD   rE   r/   rF   rG   s        r   Útest_PyBytes_AsStringAndSizez*TestPythonAPI.test_PyBytes_AsStringAndSizeD   sx   € Ø"”˜TÔ"Ô#:Ó;ˆÙÐ$Ó%ˆä×Ñ×7Ñ7ˆÜ—‘¬¯©Ð8ˆŒÜ×%Ñ%ˆŒ
Ù��Q‘˜˜Q™Ó ˆð 	×Ñ˜Ð/Õ0r   N)Ú__name__Ú
__module__Ú__qualname__rH   rM   © r   r   r7   r7   5   s   „ ò(ó1r   r7   c                   ó   — e Zd Zd„ Zy)ÚPythonAPIEmptyArgsc                 óæ   ‡‡— d„ Št         ˆfd„«       Št        ˆfd„«       }t        «       5 } |«        d d d «       ddi}d|› d�}| j                  j	                  «       |«       y # 1 sw Y   Œ4xY w)Nc                  ó   — t        d| «       y )NÚcallme)Úprint)Úkwargss    r   rV   z2PythonAPIEmptyArgs.test_empty_args.<locals>.callmeT   s   € Ü�(˜FÕ#r   c                 ó:   •— ˆfd„}t        j                  «       |fS )Nc                 óú  •— | j                  |«      }|j                  «       }|j                  | j                  t        j
                  d«      «      }|j                  d|ij                  «       «      }|j                  |j                  ‰
«      «      }|j                  |d |«      }	|j                  |	«       |j                  |«       |j                  |«       |j                  |«       |j                  |«       |	S )NéþÊ  Úkey)r   Ú
gil_ensureÚlong_from_longlongÚget_constantr   ÚintpÚ	dict_packÚitemsÚunserializeÚserialize_objectÚcallÚdecrefÚgil_release)r   r   r   r   r+   ÚgilÚnumÚkwdsÚfn_printÚresrV   s             €r   r   zDPythonAPIEmptyArgs.test_empty_args.<locals>.py_call.<locals>.codegenY   sÒ   ø€ Ø×.Ñ.¨wÓ7�Ø×&Ñ&Ó(�à×.Ñ.Ø×(Ñ(¬¯©°VÓ<ó�ð —‘¨¨s |×'9Ñ'9Ó';Ó<�Ø ×,Ñ,¨U×-CÑ-CÀFÓ-KÓL�à—j‘j ¨4°Ó6�à—‘˜SÔ!Ø—‘˜XÔ&Ø—‘˜TÔ"Ø—‘˜SÔ!à×!Ñ! #Ô&Ø�
r   )r   Únone)Útyctxr   rV   s     €r   Úpy_callz3PythonAPIEmptyArgs.test_empty_args.<locals>.py_callW   s   ø€ ôô( —:‘:“< Ð(Ð(r   c                  ó   •—  ‰ «        y r
   rQ   )ro   s   €r   Úfooz/PythonAPIEmptyArgs.test_empty_args.<locals>.fooo   s   ø€ á�Ir   r\   r[   zcallme Ú
)r   r   r   rC   Úgetvalue)rD   rq   ÚoutÚdÚexpectedrV   ro   s        @@r   Útest_empty_argsz"PythonAPIEmptyArgs.test_empty_argsS   sy   ù€ ò	$ô 
ó	)ó 
ð	)ô. 
ó	ó 
ð	ô Ô #ÙŒE÷ à�FˆOˆØ˜Q˜C˜r�?ˆØ×Ñ˜Ÿ™›¨Õ2÷	 Ðús   ¬A'Á'A0N)rN   rO   rP   rw   rQ   r   r   rS   rS   R   s   „ ó$3r   rS   Ú__main__)r<   ÚunittestÚ
numba.corer   Únumba.core.extendingr   Únumbar   r   Únumba.tests.supportr   r   r!   r3   r5   ÚTestCaser7   rS   rN   ÚmainrQ   r   r   Ú<module>r€      s‰   ðÛ Û Ý Ý *ß Ý /ð ñó ðò:ð ñó ðò(Cô1�H×%Ñ%ô 1ô:%3˜×*Ñ*ô %3ðP ˆzÒØ€H‡M�M…Oð r   