B
      ›\  ã               @   s8   d Z ddlmZmZmZ ddlmZ G dd„ deƒZdS )z
Target Options
é    )Úprint_functionÚdivisionÚabsolute_importé   )Úconfigc               @   s4   e Zd Zi Zdd„ Zdd„ Zedd„ ƒZdd„ Zd	S )
ÚTargetOptionsc             C   s
   i | _ d S )N)Úvalues)Úself© r
   ú4lib/python3.7/site-packages/numba/targets/options.pyÚ__init__   s    zTargetOptions.__init__c          	   C   sb   x\|  ¡ D ]P\}}y| j| }W n* tk
rJ   d}t|| j|f ƒ‚Y q
X ||ƒ| j|< q
W d S )Nz %r does not support option: '%s')ÚitemsÚOPTIONSÚKeyErrorÚ	__class__r   )r	   ZdicÚkÚvZctorZfmtr
   r
   r   Ú	from_dict   s    zTargetOptions.from_dictc             C   s   | ƒ }|  |¡ | |¡ |S )N)r   Ú	set_flags)ÚclsÚflagsZoptionsZoptr
   r
   r   Úparse_as_flags   s    

zTargetOptions.parse_as_flagsc             C   sR  | j  ¡ }| dd¡dkr$| d¡ | dd¡r:| d¡ | dd¡rP| d¡ | d	d¡rf| d	¡ | d
d¡r|| d¡ | dtj¡rž| d¡ | d	¡ | dd¡r´| d¡ | dd¡rÊ| d¡ | dd¡rà| d¡ d|krú| d| d¡¡ | dd¡r| d¡ d|kr.| d| d¡¡ | d¡ |rNtd| ¡  ƒ‚dS )zU
        Provide default flags setting logic.
        Subclass can override.
        ZnopythonFZenable_pyobjectZforceobjZforce_pyobjectZloopliftTZenable_loopliftZ
boundcheckZ_nrtZnrtÚdebugZ	debuginfoZnogilZrelease_gilZno_rewritesZno_cpython_wrapperZparallelZauto_parallelZfastmathZerror_modelZenable_pyobject_loopliftzUnrecognized options: %sN)r   ÚcopyÚpopÚsetr   ZDEBUGINFO_DEFAULTÚ	NameErrorÚkeys)r	   r   Zkwsr
   r
   r   r      s:    













zTargetOptions.set_flagsN)	Ú__name__Ú
__module__Ú__qualname__r   r   r   Úclassmethodr   r   r
   r
   r
   r   r      s
   
r   N)	Ú__doc__Z
__future__r   r   r   Ú r   Úobjectr   r
   r
   r
   r   Ú<module>   s   