o
    S۷i                     @   s"  d dl Z d dlZd dlmZ d dlmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZ erHd dlmZmZmZmZmZ d dlmZ d d	lmZmZ zd d
lmZ W n ey[   edw zd dlmZ W n eyo   edw zd dlZW n ey   edw G dd deZdddZdS )    N)
serializer)IntegrationDidNotEnableadd_global_event_processor)walk_exception_chainiter_stacks)TYPE_CHECKING)OptionalDictAnyTupleList)	FrameType)EventHint)Sourcezexecuting is not installed)	Evaluatorzpure_eval is not installedzasttokens is not installedc                   @   s   e Zd ZdZedddZdS )PureEvalIntegration	pure_evalreturnNc                  C   s   t 						d	dd} d S )
Neventr   hintOptional[Hint]r   Optional[Event]c                 S   s   t  td u r| S |d u r| S |dd }|d u r| S | dd }|d u r)| S |dd }|d u r5| S tt|t|D ]:\}\}}}dd |di dg D }tt	|}	t
|t
|	krcq>t||	D ]\}
}t|jpt|
d |
d< qhq>| S )	Nexc_info	exceptionvaluesc                 S   s   g | ]	}| d r|qS )function)get).0frame r"   W/home/ubuntu/vllm_env/lib/python3.10/site-packages/sentry_sdk/integrations/pure_eval.py
<listcomp>C   s    zNPureEvalIntegration.setup_once.<locals>.add_executing_info.<locals>.<listcomp>
stacktraceframesvars)
sentry_sdk
get_clientget_integrationr   r   zipreversedr   listr   lenpure_eval_frametb_frame)r   r   r   r   r   	_exc_type
_exc_valueexc_tbsentry_framestbssentry_frametbr"   r"   r#   add_executing_info'   s6   z:PureEvalIntegration.setup_once.<locals>.add_executing_info)r   r   r   r   r   r   r   )r8   r"   r"   r#   
setup_once%   s   zPureEvalIntegration.setup_once)r   N)__name__
__module____qualname__
identifierstaticmethodr9   r"   r"   r"   r#   r   "   s    r   r!   r   r   Dict[str, Any]c                    s   t | }|js
i S || j}|si S t|d  }	 |j}t|tj	tj
tjfr,nqt| }||}dfdd}|  |j|dd	  fd
d|d tj D }tj|ddS )Nr   T
expressionTuple[List[Any], Any]r   Tuple[int, int]c                    sf   | \}}ddd  fdd|D }|r t  fd	d
|D S t fdd
|D \}}| | fS )Nnast.exprr   rB   c                 S   s   | j | jfS N)lineno
col_offset)rC   r"   r"   r#   starto   s   z1pure_eval_frame.<locals>.closeness.<locals>.startc                    s    g | ]} |j jk r|qS r"   )
last_tokenendr    node)rH   stmtr"   r#   r$   r   s
    z6pure_eval_frame.<locals>.closeness.<locals>.<listcomp>c                 3       | ]} |V  qd S rE   r"   rK   rH   r"   r#   	<genexpr>y       z5pure_eval_frame.<locals>.closeness.<locals>.<genexpr>c                 3   rN   rE   r"   rK   rO   r"   r#   rP   ~   rQ   )rC   rD   r   rB   )maxmin)r@   nodes_valuenodes_before_stmtrF   rG   )rM   rO   r#   	closenessh   s   
z"pure_eval_frame.<locals>.closeness)keyreversec                    s    i | ]\}}  |d  |qS )r   )get_text)r    rT   value)atokr"   r#   
<dictcomp>   s    z#pure_eval_frame.<locals>.<dictcomp>)is_vars)r@   rA   r   rB   )r   	for_frametreestatements_at_linef_linenor-   parent
isinstanceastFunctionDefClassDefModuler   
from_frameinteresting_expressions_grouped	asttokenssortr   MAX_DATABAG_BREADTH	serialize)r!   source
statementsscope	evaluatorexpressionsrW   r'   r"   )r\   rM   r#   r/   S   s*   



r/   )r!   r   r   r?   )re   r(   r   sentry_sdk.integrationsr   r   sentry_sdk.scoper   sentry_sdk.utilsr   r   typingr	   r
   r   r   r   r   typesr   sentry_sdk._typesr   r   	executingr   ImportErrorr   r   rk   r   r/   r"   r"   r"   r#   <module>   s8    1