o
    0 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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   m/home/app/PaddleOCR-VL-test/.venv_paddleocr/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)
sentry_sdkZ
get_clientZ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 }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   )Z
last_tokenendr   node)r6   stmtr   r   r   v   s
    z6pure_eval_frame.<locals>.closeness.<locals>.<listcomp>c                 3       | ]} |V  qd S r2   r   r8   r6   r   r   	<genexpr>}       z5pure_eval_frame.<locals>.closeness.<locals>.<genexpr>c                 3   r;   r2   r   r8   r<   r   r   r=      r>   )maxmin)Z
expressionnodes_valueZnodes_before_stmtr3   r4   )r:   r<   r   	closenessj   s   z"pure_eval_frame.<locals>.closeness)keyreversec                    s    i | ]\}}  |d  |qS )r   )Zget_text)r   rA   value)atokr   r   
<dictcomp>   s    z#pure_eval_frame.<locals>.<dictcomp>)Zis_vars)	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	serialize)r   sourceZ
statementsscopeZ	evaluatorZexpressionsrC   r   r   )rG   r:   r   r%   T   s*   

r%   )rN   r    r   Zsentry_sdk.integrationsr   r   Zsentry_sdk.scoper   Zsentry_sdk.utilsr   r   typingr	   r
   r   r   r   r   typesr   Zsentry_sdk._typesr   r   rI   ImportErrorr   rR   r   r%   r   r   r   r   <module>   s8    2