o
    h                     @   s   d dl mZ d dl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 d dlmZmZ erLd 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ZW n ey]   e
dw zd dl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 ZdS )    )absolute_importN)Hub
serializer)TYPE_CHECKING)IntegrationDidNotEnableadd_global_event_processor)walk_exception_chainiter_stacks)OptionalDictAnyTupleList)	FrameType)EventHintzexecuting is not installedzpure_eval is not installedzasttokens is not installedc                   @   s   e Zd ZdZedd ZdS )PureEvalIntegration	pure_evalc                  C   s   t dd } d S )Nc                 S   s   t j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 r4| S tt|t|D ]:\}\}}}dd |di dg D }tt	|}	t
|t
|	krbq=t||	D ]\}
}t|jps|
d |
d< qgq=| S )	Nexc_info	exceptionvaluesc                 S   s   g | ]	}| d r|qS )function)get).0frame r   d/var/www/html/aiguide_backend/venv/lib/python3.10/site-packages/sentry_sdk/integrations/pure_eval.py
<listcomp>D   s    zNPureEvalIntegration.setup_once.<locals>.add_executing_info.<locals>.<listcomp>
stacktraceframesvars)r   currentget_integrationr   r   zipreversedr
   listr   lenpure_eval_frametb_frame)eventhintr   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_infor   )r4   r   r   r   
setup_once%   s   zPureEvalIntegration.setup_onceN)__name__
__module____qualname__
identifierstaticmethodr5   r   r   r   r   r   "   s    r   c                    s   t j| }|jsi S || j}|si S t|d  }	 |j}t|t	j
t	jt	jfr-nqtj| }||}fdd}|  |j|dd  fdd|d tj D S )Nr   Tc                    sd   | \}}dd   fdd|D }|rt  fdd|D S t fdd|D \}}| | fS )Nc                 S   s   | j | jfS N)lineno
col_offset)nr   r   r   startr   s   z1pure_eval_frame.<locals>.closeness.<locals>.startc                    s    g | ]} |j jk r|qS r   )
last_tokenendr   node)r?   stmtr   r   r   v   s    z6pure_eval_frame.<locals>.closeness.<locals>.<listcomp>c                 3       | ]} |V  qd S r;   r   rB   r?   r   r   	<genexpr>{       z5pure_eval_frame.<locals>.closeness.<locals>.<genexpr>c                 3   rE   r;   r   rB   rF   r   r   rG      rH   )maxmin)
expressionnodes_valuenodes_before_stmtr<   r=   )rD   rF   r   	closenessj   s   z"pure_eval_frame.<locals>.closeness)keyreversec                    s    i | ]\}}  |d  |qS )r   )get_text)r   rL   value)atokr   r   
<dictcomp>   s    z#pure_eval_frame.<locals>.<dictcomp>)	executingSource	for_frametreestatements_at_linef_linenor'   parent
isinstanceastFunctionDefClassDefModuler   	Evaluator
from_frameinteresting_expressions_grouped	asttokenssortr   MAX_DATABAG_BREADTH)r   source
statementsscope	evaluatorexpressionsrO   r   )rT   rD   r   r)   T   s(   

r)   ) 
__future__r   r^   
sentry_sdkr   r   sentry_sdk._typesr   sentry_sdk.integrationsr   r   sentry_sdk.scoper	   sentry_sdk.utilsr
   r   typingr   r   r   r   r   typesr   r   r   rV   ImportErrorr   re   r   r)   r   r   r   r   <module>   s8    2