o
    Y۷i                     @   sZ   d Z ddlZddlmZmZ ddlmZmZ G dd dZej	Z
G dd dZd	d
 ZdS )z
Target Options
    N)configutils)TargetConfigOptionc                   @   s:   e Zd ZdZG dd dZdd Zedd Zdd	 Zd
S )TargetOptionszTarget options maps user options from decorators to the
    ``numba.core.compiler.Flags`` used by lowering and target context.
    c                   @   s   e Zd Zdd fddZdS )zTargetOptions.Mappingc                 C   s   | S N )xr   r   H/home/ubuntu/vllm_env/lib/python3.10/site-packages/numba/core/options.py<lambda>   s    zTargetOptions.Mapping.<lambda>c                 C   s   || _ || _d S r   )	flag_nameapply)selfr   r   r   r   r
   __init__   s   
zTargetOptions.Mapping.__init__N)__name__
__module____qualname__r   r   r   r   r
   Mapping   s    r   c                 C   s   dS )zSubclasses can override this method to make target specific
        customizations of default flags.

        Parameters
        ----------
        flags : Flags
        options : dict
        Nr   )r   flagsoptionsr   r   r
   finalize   s   	zTargetOptions.finalizec                 C   s"   |  }| || ||| |S )zParse target options defined in ``options`` and set ``flags``
        accordingly.

        Parameters
        ----------
        flags : Flags
        options : dict
        )_applyr   )clsr   r   optr   r   r
   parse_as_flags   s   
zTargetOptions.parse_as_flagsc                 C   s   i }t | }t|D ]}t||}t||jr|||< q
t }| D ]\}}||v r>||| }t||j	| |
| q#t|| }	|	rUd|	 d|  }
t|
d S )NzUnrecognized options: z. Known options are )typedirgetattr
isinstancer   setitemsr   setattrr   addkeysKeyError)r   r   r   mappingsr   kvusedmappingunusedmr   r   r
   r   -   s*   

zTargetOptions._applyN)	r   r   r   __doc__r   r   classmethodr   r   r   r   r   r
   r   
   s    
r   c                   @   s   e Zd ZdZedejZedZedZ	edZ
edZedZedZed	Zed
ZedZedZedZedZedZedZedZedZedZdS )DefaultOptionszJDefines how user-level target options are mapped to the target flags.
    enable_pyobjectforce_pyobjectenable_loopliftnrt	debuginfoboundscheckrelease_gilwritable_argsno_rewritesno_cpython_wrapperno_cfunc_wrapperauto_parallelfastmatherror_modelinlineforceinlinedbg_extend_lifetimesdbg_optnoneN)r   r   r   r,   _mappingoperatornot_nopythonforceobjlooplift_nrtdebugr4   nogilr6   r7   r8   r9   parallelr;   r<   r=   r>   _dbg_extend_lifetimes_dbg_optnoner   r   r   r
   r.   H   s(    r.   c                  G   s   dd | D }t dd|S )zReturns a mixin class with a subset of the options

    Parameters
    ----------
    *args : str
        Option names to include.
    c                 S   s   i | ]}|t t|qS r   )r   r.   ).0r&   r   r   r
   
<dictcomp>j   s    z+include_default_options.<locals>.<dictcomp>OptionMixinsr   )r   )argsglbsr   r   r
   include_default_optionsb   s   rR   )r,   rB   
numba.corer   r   numba.core.targetconfigr   r   r   r   rA   r.   rR   r   r   r   r
   <module>   s    ;