
    xKg_                         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           ^/home/alanp/www/video.onchill/myenv/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/,,T4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     KK""D$<0E
d
C <r   c                 B    t        | j                  | j                        S r
   )r3   r   r   r   s    r   PyBytes_AsStringAndSizer5   1   s    *399ckk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-CF-KLjj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 FOQCr?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1H%% 1:%3** %3P zHMMO r   