U
    |e                     @   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   O/var/www/website-v5/atlas_env/lib/python3.8/site-packages/numba/core/options.py<lambda>       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 ]6\}}||krF||| }t||j	| |
| qFt|| }	|	rd|	 d|  }
t|
d S )NzUnrecognized options: z. Known options are )typedirgetattr
isinstancer   setitemsr   setattrr   addkeysKeyError)r   r   r   Z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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target_backend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>   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>l   s      z+include_default_options.<locals>.<dictcomp>ZOptionMixinsr   )r   )argsZglbsr   r   r
   include_default_optionsd   s    rQ   )r,   rC   
numba.corer   r   numba.core.targetconfigr   r   r   r   rB   r.   rQ   r   r   r   r
   <module>   s   ;