§
    2@ÄjÚ  ã                   óü   — 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           úKC:\Projects\Historical\venv\Lib\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Ñ/Ô/ˆØ×,Ò,¨T°4Ñ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Ô0€EØ
ˆ%��dÑ
Ô
€Cðð ð ð �ˆ<Ðr   c                 ó6   — t          | j        | j        ¦  «        S r
   )r3   r   r   r   s    r   ÚPyBytes_AsStringAndSizer5   1   s   € Ý*¨3¬9°c´kÑ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ˆØˆu�W‰~Œ~ˆåÔÔ0ˆÝ”Ð'ˆŒÝÔ%ˆŒ
Øˆb�‰hŒhˆð 	×Ò˜˜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Ò-CÀFÑ-KÔ-KÑLÔL�à—j’j ¨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   ø€ àˆG‰IŒIˆIˆIˆ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   s  øø€ ð	$ð 	$ð 	$õ 
ð	)ð 	)ð 	)ð 	)ñ 
Œð	)õ. 
ð	ð 	ð 	ð 	ñ 
Œð	õ ÑÔð 	 #ØˆC‰EŒEˆEð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à�FˆOˆØ"˜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ð 1�HÔ%ñ 1ô 1ð 1ð:%3ð %3ð %3ð %3ð %3˜Ô*ñ %3ô %3ð %3ðP ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   