U
    NvfM                     @   s   d dl Z d dlmZ d dlZe jeje jeje j	ej
e jeje jeje jeje jeje jejiZdd Zdd ZeddG d	d
 d
ZdS )    N)	dataclassc              
   C   sT   zt tj| ddjW S  tttfk
rN } zt| d|W 5 d}~X Y nX dS )z~
    >>> eval_expr('2*6')
    12
    >>> eval_expr('2**6')
    64
    >>> eval_expr('1 + 2*3**(4) / (6 + -7)')
    -161.0
    eval)modez3 is not a valid or supported arithmetic expression.N)eval_astparsebody	TypeErrorSyntaxErrorKeyError
ValueError)expre r   1/tmp/pip-unpacked-wheel-dylwa62s/joblib/_utils.py	eval_expr   s    	r   c                 C   sn   t | tjr| jS t | tjr>tt| j t| j	t| j
S t | tjrbtt| j t| jS t| d S )N)
isinstancer   ZNumnZBinOp	operatorstypeopr   leftrightZUnaryOpZoperandr	   )noder   r   r   r   %   s     r   T)frozenc                   @   s"   e Zd ZU dZeed< dd ZdS )	_Sentinelz4A sentinel to mark a parameter as not explicitly setdefault_valuec                 C   s   d| j dS )Nzdefault())r   )selfr   r   r   __repr__5   s    z_Sentinel.__repr__N)__name__
__module____qualname____doc__object__annotations__r   r   r   r   r   r   0   s   
r   )r   Zdataclassesr   operatorr   ZAddaddZSubsubZMultmulZDivtruedivZFloorDivfloordivZModmodZPowpowZUSubnegr   r   r   r   r   r   r   r   <module>   s.           