
    sh_                         S SK r S SKrS SKJr  S SKJr  S SKJrJr  S SK	J
r
  \S 5       rS r\S 5       rS	 r " S
 S\R                  5      r " S S\R                  5      r\S:X  a  \R&                  " 5         gg)    N)types)	intrinsic)jitnjit)captured_stdoutc                 :    [         R                  " X5      nS nX44$ )Nc                 p    Uu  pEU R                  U5      nUR                  XE5      nUR                  U5      $ N)get_python_apibytes_from_string_and_sizebytes_as_string)contextbuildersigargscsrcsizeapibs           n/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_pythonapi.pycodegen'_pyapi_bytes_as_string.<locals>.codegen   s:    $$W-**46""1%%    )r   voidptr)	typingctxr   r   r   r   s        r   _pyapi_bytes_as_stringr   	   s    
--
#C&
 <r   c                 B    [        U R                  U R                  5      $ r
   )r   _data_lengthunis    r   PyBytes_AsStringr"      s     "#))S[[99r   c                 ^    [         R                  R                  X45      nU" X5      nS nXE4$ )Nc                 `   Uu  pEU R                  U5      nUR                  XE5      nUR                  UR                  5      nUR                  UR                  5      n	UR                  XxU	5        UR                  U5      n
UR                  U	5      nU R                  XR                  X45      nU$ 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   0_pyapi_bytes_as_string_and_size.<locals>.codegen"   s    &&w/,,T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_sizer5      s3     KK""D<0E

C <r   c                 B    [        U R                  U R                  5      $ r
   )r5   r   r   r    s    r   PyBytes_AsStringAndSizer7   1   s    *399ckkBBr   c                        \ rS rSrS rS rSrg)TestPythonAPI5   c                     [        SS9" [        5      nU" S5      n[        R                  R                  n[        R
                  /Ul        [        R                  Ul        U" U5      nU R                  US5        g )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_AsString#TestPythonAPI.test_PyBytes_AsString7   sb    T"#34W~00'%%
h 	h'r   c                 $   [        SS9" [        5      nU" S5      n[        R                  R                  n[        R
                  [        R                  /Ul        [        R                  Ul	        U" US   US   5      nU R                  US5        g )NTr<   zhello worldr      s   hello world)r   r7   r?   r@   PyBytes_FromStringAndSizerB   c_size_trC   rD   rE   rF   )rG   rH   r0   rI   rJ   s        r   test_PyBytes_AsStringAndSize*TestPythonAPI.test_PyBytes_AsStringAndSizeD   sv    T"#:;$%778%%
QQ  	/0r    N)__name__
__module____qualname____firstlineno__rK   rQ   __static_attributes__rS   r   r   r9   r9   5   s    (1r   r9   c                       \ rS rSrS rSrg)PythonAPIEmptyArgsR   c                    ^^ S m[         U4S j5       m[        U4S j5       n[        5        nU" 5         S S S 5        SS0nSU S3nU R                  WR	                  5       U5        g ! , (       d  f       N9= f)Nc                      [        SU 5        g )Ncallme)print)kwargss    r   r^   2PythonAPIEmptyArgs.test_empty_args.<locals>.callmeT   s    (F#r   c                 >   > U4S jn[         R                  " 5       U4$ )Nc                   > U R                  U5      nUR                  5       nUR                  U R                  [        R
                  S5      5      nUR                  SU0R                  5       5      nUR                  UR                  T
5      5      nUR                  US U5      n	UR                  U	5        UR                  U5        UR                  U5        UR                  U5        UR                  U5        U	$ )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resr^   s             r   r   DPythonAPIEmptyArgs.test_empty_args.<locals>.py_call.<locals>.codegenY   s    ..w7&&(..((V< s|'9'9';< ,,U-C-CF-KLjj46S!X&T"S!!!#&
r   )r   none)tyctxr   r^   s     r   py_call3PythonAPIEmptyArgs.test_empty_args.<locals>.py_callW   s    ( ::<((r   c                     > T " 5         g r
   rS   )ry   s   r   foo/PythonAPIEmptyArgs.test_empty_args.<locals>.fooo   s    Ir   re   rd   zcallme 
)r   r   r   rF   getvalue)rG   r|   outdexpectedr^   ry   s        @@r   test_empty_args"PythonAPIEmptyArgs.test_empty_argsS   sy    	$ 
	) 
	). 
	 
	 #E FOQCr?2	 s   A))
A7rS   N)rT   rU   rV   rW   r   rX   rS   r   r   rZ   rZ   R   s    $3r   rZ   __main__)r?   unittest
numba.corer   numba.core.extendingr   numbar   r   numba.tests.supportr   r   r"   r5   r7   TestCaser9   rZ   rT   mainrS   r   r   <module>r      s       *  /  :  (C1H%% 1:%3** %3P zMMO r   