o
    h                     @   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ZW n eyY   ed
w zd dlZW n eyk   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 )    N)
serializer)IntegrationDidNotEnableadd_global_event_processor)walk_exception_chainiter_stacks)TYPE_CHECKING)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  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   c/var/www/html/pro-man-master/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)
sentry_sdk
get_client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   )r3   r   r   r   
setup_once%   s   zPureEvalIntegration.setup_onceN)__name__
__module____qualname__
identifierstaticmethodr4   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 }tj|d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   rA   r>   r   r   	<genexpr>{       z5pure_eval_frame.<locals>.closeness.<locals>.<genexpr>c                 3   rD   r:   r   rA   rE   r   r   rF      rG   )maxmin)
expressionnodes_valuenodes_before_stmtr;   r<   )rC   rE   r   	closenessj   s   z"pure_eval_frame.<locals>.closeness)keyreversec                    s    i | ]\}}  |d  |qS )r   )get_text)r   rK   value)atokr   r   
<dictcomp>   s    z#pure_eval_frame.<locals>.<dictcomp>)is_vars)	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	serialize)r   source
statementsscope	evaluatorexpressionsrN   r    r   )rS   rC   r   r(   T   s*   

r(   )r^   r!   r   sentry_sdk.integrationsr   r   sentry_sdk.scoper   sentry_sdk.utilsr   r   typingr	   r
   r   r   r   r   typesr   sentry_sdk._typesr   r   rV   ImportErrorr   re   r   r(   r   r   r   r   <module>   s8    2