o
    `^h                     @   s   d dl Z d dlmZ d dlZddlmZ edurddlm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G dd dZdd ZdS )    N)	dataclass   )mp)_ExceptionWithTracebackc              
   C   sF   zt tj| ddjW S  tttfy" } zt| d|d}~ww )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   K/home/air/shanriGPT/back/venv/lib/python3.10/site-packages/joblib/_utils.py	eval_expr   s   	r   c                 C   sj   t | tjr	| jS t | tjrtt| j t| j	t| j
S t | tjr1tt| j t| jS t| N)
isinstancer	   ConstantvalueBinOp	operatorstypeopr   leftrightUnaryOp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__<   s   z_Sentinel.__repr__N)__name__
__module____qualname____doc__object__annotations__r'   r   r   r   r   r#   7   s   
 r#   c                   @   s    e Zd ZdZdd Zdd ZdS )_TracebackCapturingWrapperz6Protect function call and return error with traceback.c                 C   s
   || _ d S r   )func)r&   r/   r   r   r   __init__C   s   
z#_TracebackCapturingWrapper.__init__c              
   K   s@   z	| j di |W S  ty } z
t|W  Y d }~S d }~ww )Nr   )r/   BaseExceptionr   )r&   kwargsr   r   r   r   __call__F   s   z#_TracebackCapturingWrapper.__call__N)r(   r)   r*   r+   r0   r3   r   r   r   r   r.   @   s    r.   c                 C   s0   t | tr|  \}}|| } t | tr| | S r   )r   r   
__reduce__r1   )outrebuildargsr   r   r   *_retrieve_traceback_capturing_wrapped_callM   s   

r8   )r	   dataclassesr   operatorr   _multiprocessing_helpersr   externals.loky.process_executorr   AddaddSubsubMultmulDivtruedivFloorDivfloordivModmodPowpowUSubnegr   r   r   r#   r.   r8   r   r   r   r   <module>   s*   