U
    Ã9%e!  ã                   @   s`   d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ G dd„ deƒZ	e
dkr\e  ¡  dS )é    N)Újit)Úutils)ÚTestCasec                   @   s$   e Zd ZdZdZdd„ Zdd„ ZdS )ÚTestExtendedArgz3
    Test support for the EXTENDED_ARG opcode.
    éÿ   c                 C   s”   dd„ }t |jjƒ}|jj}d}|d| j  d }tjdkrBd}nd}t |t	j
d	¡}|d
|… | ||d
…  |d
d
…< |jjt|ƒ|d|_|S )zW
        Get a function with a EXTENDED_ARG opcode before a LOAD_CONST opcode.
        c                  S   s   d} | S )Né   © )Úxr   r   ú\/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/numba/tests/test_extended_arg.pyÚf   s    z6TestExtendedArg.get_extended_arg_load_const.<locals>.fz<BB)N)é*   )é   é   é   r   é   N)Úco_codeÚ	co_consts)Ú	bytearrayÚ__code__r   r   Úbytecode_lenr   Z	PYVERSIONÚstructÚpackÚdisÚEXTENDED_ARGÚreplaceÚbytes)Úselfr   ÚbZconstsZbytecode_formatÚoffsetZpacked_extend_argr   r   r
   Úget_extended_arg_load_const   s    
$z+TestExtendedArg.get_extended_arg_load_constc                 C   sL   |   ¡ }|  t|jjƒ| j¡ |  |ƒ d¡ tdd|ƒ}|  |ƒ d¡ d S )Nr   T)Znopython)r   ZassertGreaterÚlenr   r   r   ZassertPreciseEqualr   )r   ZpyfuncZcfuncr   r   r
   Útest_extended_arg_load_const)   s
    z,TestExtendedArg.test_extended_arg_load_constN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r!   r   r   r   r
   r      s   r   Ú__main__)Zunittestr   r   Znumbar   Z
numba.corer   Znumba.tests.supportr   r   r"   Úmainr   r   r   r
   Ú<module>   s   '