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 )ÚTargetOptionszƒTarget 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 )zÁSubclasses 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 )z¯Parse 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|ƒ| }	|	rªd|	› 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 )z‡Returns 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   ;