
    J/Ph_                         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                     dS dS )    N)types)	intrinsic)jitnjit)captured_stdoutc                 :    t          j        ||          }d }||fS )Nc                     |\  }}|                      |          }|                    ||          }|                    |          S N)get_python_apibytes_from_string_and_sizebytes_as_string)contextbuildersigargscsrcsizeapibs           Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_pythonapi.pycodegenz'_pyapi_bytes_as_string.<locals>.codegen   sG    t$$W--**466""1%%%    )r   voidptr)	typingctxr   r   r   r   s        r   _pyapi_bytes_as_stringr   	   s.    
-d
#
#C& & &
 <r   c                 6    t          | j        | j                  S r
   )r   _data_lengthunis    r   PyBytes_AsStringr!      s     "#)S[999r   c                 j    t           j                            ||f          } |||          }d }||fS )Nc                    |\  }}|                      |          }|                    ||          }|                    |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8.. 011&&q&&999||F##||F##  #/D$<HH
r   )r   Tuple
from_types)r   r   r   rettyr   r   s         r   _pyapi_bytes_as_string_and_sizer3      sI     K""D$<00E
%d

C   <r   c                 6    t          | j        | j                  S r
   )r3   r   r   r   s    r   PyBytes_AsStringAndSizer5   1   s    *39ckBBBr   c                       e Zd Zd Zd ZdS )TestPythonAPIc                     t          d          t                    } |d          }t          j        j        }t          j        g|_        t          j        |_         ||          }| 	                    |d           d S )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   sv    "T"""#344uW~~0'%
bhh 	h'''''r   c                 2    t          d          t                    } |d          }t          j        j        }t          j        t          j        g|_        t          j        |_	         ||d         |d                   }| 
                    |d           d S )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   s    "T"""#:;;e$%%78%
bQQ   	/00000r   N)__name__
__module____qualname__rH   rM    r   r   r7   r7   5   s2        ( ( (1 1 1 1 1r   r7   c                       e Zd Zd ZdS )PythonAPIEmptyArgsc                    d t           fd            t          fd            }t                      5 } |             d d d            n# 1 swxY w Y   ddi}d| d}|                     |                                |           d S )Nc                  &    t          d|            d S )Ncallme)print)kwargss    r   rV   z2PythonAPIEmptyArgs.test_empty_args.<locals>.callmeT   s    (F#####r   c                 8    fd}t          j                    |fS )Nc                 b   |                      |          }|                                }|                    |                     t          j        d                    }|                    d|i                                          }|                    |	                    
                    }|
                    |d |          }	|                    |	           |                    |           |                    |           |                    |           |                    |           |	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7&&((..((V<<  s|'9'9';';<< ,,U-C-CF-K-KLLjj466S!!!X&&&T"""S!!!!!#&&&
r   )r   none)tyctxr   rV   s     r   py_callz3PythonAPIEmptyArgs.test_empty_args.<locals>.py_callW   s/        ( :<<((r   c                                     d S r
   rQ   )ro   s   r   fooz/PythonAPIEmptyArgs.test_empty_args.<locals>.fooo   s    GIIIIIr   r\   r[   zcallme 
)r   r   r   rC   getvalue)rD   rq   outdexpectedrV   ro   s        @@r   test_empty_argsz"PythonAPIEmptyArgs.test_empty_argsS   s   	$ 	$ 	$ 
	) 	) 	) 	) 
	). 
	 	 	 	 
	  	#CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	FO"Q???22222s   AAAN)rN   rO   rP   rw   rQ   r   r   rS   rS   R   s#        $3 $3 $3 $3 $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 C C1 1 1 1 1H% 1 1 1:%3 %3 %3 %3 %3* %3 %3 %3P zHMOOOOO r   