a
    xd                     @   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rd 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Y n0 zd dlZW n ey   e
dY n0 zd dlZW n ey   e
dY n0 G dd de	Zdd ZdS )    )absolute_importN)Hub
serializer)MYPY)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 r8| S | dd }|d u rP| S |dd }|d u rh| S tt|t|D ]t\}\}}}dd |di dg D }tt	|}	t
|t
|	krqzt||	D ]\}
}t|jp|
d |
d< qqz| S )	Nexc_info	exceptionvaluesc                 S   s   g | ]}| d r|qS )function)get).0frame r   Y/var/www/html/Ranjet/env/lib/python3.9/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)   s4    
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:qZq:tj| }||}fdd}|  |j|dd  fdd|d tj D S )Nr   c                    sh   | \}}dd   fdd|D }|r>t  fdd|D S t fdd|D \}}| | fS d 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   s   | ]} |V  qd S r4   r   r:   r8   r   r   	<genexpr>{       z5pure_eval_frame.<locals>.closeness.<locals>.<genexpr>c                 3   s   | ]} |V  qd S r4   r   r:   r=   r   r   r>      r?   )maxmin)Z
expressionnodes_valueZnodes_before_stmtr5   r6   )r<   r=   r   	closenessj   s    z"pure_eval_frame.<locals>.closenessT)keyreversec                    s    i | ]\}}  |d  |qS )r   )Zget_text)r   rB   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
statementsZscopeZ	evaluatorZexpressionsrD   r   )rH   r<   r   r'   T   s$    

r'   ) 
__future__r   rO   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   rJ   ImportErrorr   rS   r   r'   r   r   r   r   <module>   s0   2