o
    ‘i!  ã                   @   sd   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r0e  ¡  dS 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r!d}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   úl/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/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    'ÿ