o
    Zh                     @   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   X/var/www/html/lang_env/lib/python3.10/site-packages/sentry_sdk/integrations/pure_eval.py
<listcomp>D   s    zNPureEvalIntegration.setup_once.<locals>.add_executing_info.<locals>.<listcomp>Z
stacktraceframesvars)r   currentZget_integrationr   r   zipreversedr
   listr   lenpure_eval_frametb_frame)eventhintr   r   r   Z	_exc_typeZ
_exc_valueexc_tbZsentry_framesZtbsZsentry_frametbr   r   r   add_executing_info)   s6   z:PureEvalIntegration.setup_once.<locals>.add_executing_infor   )r-   r   r   r   
setup_once%   s   zPureEvalIntegration.setup_onceN)__name__
__module____qualname__
identifierstaticmethodr.   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   )Z
last_tokenendr   node)r8   stmtr   r   r   v   s    z6pure_eval_frame.<locals>.closeness.<locals>.<listcomp>c                 3       | ]} |V  qd S r4   r   r:   r8   r   r   	<genexpr>{       z5pure_eval_frame.<locals>.closeness.<locals>.<genexpr>c                 3   r=   r4   r   r:   r>   r   r   r?      r@   )maxmin)
expressionnodes_valueZnodes_before_stmtr5   r6   )r<   r>   r   	closenessj   s   z"pure_eval_frame.<locals>.closeness)keyreversec                    s    i | ]\}}  |d  |qS )r   )Zget_text)r   rD   value)atokr   r   
<dictcomp>   s    z#pure_eval_frame.<locals>.<dictcomp>)	executingZSourceZ	for_frametreeZstatements_at_linef_linenor%   parent
isinstanceastFunctionDefClassDefModuler   Z	EvaluatorZ
from_frameZinteresting_expressions_grouped	asttokenssortr   ZMAX_DATABAG_BREADTH)r   sourceZ
statementsscopeZ	evaluatorZexpressionsrF   r   )rJ   r<   r   r'   T   s(   

r'   ) 
__future__r   rQ   Z
sentry_sdkr   r   Zsentry_sdk._typesr   Zsentry_sdk.integrationsr   r   Zsentry_sdk.scoper	   Zsentry_sdk.utilsr
   r   typingr   r   r   r   r   typesr   r   r   rL   ImportErrorr   rU   r   r'   r   r   r   r   <module>   s8    2