o
    i                      @   s  U d dl mZ d dl mZ d dlmZ d dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d d	l
mZ d d
l
mZ d dl
mZ d dl
mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dl m!Z! d dl m"Z" d dl m#Z# d dl$m%Z% d dl&m'Z' d dl(m)Z) d d l(m*Z* d d!l(m+Z+ d d"l,m-Z- d d#l.m/Z/ d d$l.m0Z0 d d%l1m2Z2 d d&l3m4Z4 d'Z5e6 Z7e	e8efZ9e7efd(ed)e0d*ed+ed,e:e;ef f
d-d.Z<d/e=e d0ee;ef d,e:e;ef fd1d2Z>i i i dd3Z?e:e;ef e@d4< eG d5d6 d6e'ZAe+jBd7ed(ed8ed9ed:e2jCd,eAfd;d<ZDe+jBd7ed(ed8ed9ed:e2jCd,eAfd=d<ZDdS )>    )	dataclass)field)chainN)	FrameType)FunctionType)
ModuleType)Any)ClassVar)Mapping)Optional)cast)DDExpressionEvaluationError)DEFAULT_CAPTURE_LIMITS)CaptureExpression)CaptureLimits)FunctionLocationMixin)LineLocationMixin)LiteralTemplateSegment)LogFunctionProbe)LogLineProbe)LogProbeMixin)TemplateSegment)REDACTED_PLACEHOLDER)DDRedactedExpressionError)get_args)get_globals)
get_locals)utils)	LogSignal)EvaluationError)SignalTrack)probe_to_signal)	serialize)NO_EXCEPTION)ExcInfoType)Metrics)	HourGlassg?frame	throwableretvallimitsreturnc           
         s  t td| dtdtf fdd}t| }t| }dd t| D }|\}}	}|	d ur4t|d|	fg}n|tur@t|d	|fg}|rPt	
||j|j|j|j|ni |rat	
||j|j|j|j|ni |rrt	
||j|j|j|j|ni t	|d
W  d    S 1 sw   Y  d S )Nduration_r+   c                    
       S N	tricklingr.   hg V/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/debugging/_signal/snapshot.pytimeout;      
z!_capture_context.<locals>.timeoutc                 s   s&    | ]\}}t |ts||fV  qd S r0   )
isinstanceEXCLUDE_GLOBAL_TYPES).0nvr6   r6   r7   	<genexpr>@   s   $ z#_capture_context.<locals>.<genexpr>z
@exceptionz@return	argumentslocalsstaticFieldsr(   )r&   CAPTURE_TIME_BUDGETr   boolr   r   r   r   _NOTSETr   capture_pairs	max_levelmax_lenmax_size
max_fieldscapture_exc_info)
r'   r(   r)   r*   r8   rA   _locals_globalsr.   excr6   r4   r7   _capture_context3   s8   
$rP   exprsscopec                    s\   t td dtdtf fdddfdd| D iW  d    S 1 s'w   Y  d S )	Nr,   r.   r+   c                    r/   r0   r1   r3   r4   r6   r7   r8   b   r9   z%_capture_expressions.<locals>.timeoutcaptureExpressionsc                    s<   i | ]}|j t|j |jj|jj|jj|jj	qS r6   )
namer   capture_valueexprevalr*   rH   rI   rJ   rK   )r<   e)rR   r8   r6   r7   
<dictcomp>f   s    	
z(_capture_expressions.<locals>.<dictcomp>)r&   rD   r   rE   )rQ   rR   r6   )r5   rR   r8   r7   _capture_expressions\   s   	$rZ   r@   _EMPTY_CAPTURED_CONTEXTc                   @   s  e Zd ZU dZejZee ed< e	ddZ
ee ed< e	ddZee ed< e	ddZee ed< e	ddZee ed< e	ddZee ed	< e	ddZee ed
< dedeeef defddZdeeef ddfddZdededeeef deeeef  fddZdeeef ddfddZdeded
edeeef ddf
ddZdeeef ddfddZedee fddZ de!fdd Z"edeeef fd!d"Z#dS )#Snapshotz^Raw snapshot.

    Used to collect the minimum amount of information from a firing probe.
    	__track__N)defaultentry_capturereturn_captureline_capture_stack_messager-   segmentrM   r+   c              
   C   s   t t| j}|j}zt|tr||W S t|||j|j	|j
|jdW S  tyM } z| jt|j|jd t|jtrAtndW  Y d }~S d }~ww )N)levelmaxsizemaxlen	maxfields)rV   messageERROR)r   r   prober*   r:   r   rW   r"   rH   rJ   rI   rK   r   errorsappendr   dslerror	__cause__r   r   )selfrd   rM   rk   capturerX   r6   r6   r7   _eval_segment   s"   
 zSnapshot._eval_segmentc                    s.   t tj}d fdd|jD _d S )N c                    s   g | ]} | qS r6   )rs   )r<   srM   rq   r6   r7   
<listcomp>   s    z*Snapshot._eval_message.<locals>.<listcomp>)r   r   rk   joinsegmentsrc   )rq   rM   rk   r6   rv   r7   _eval_message   s   "zSnapshot._eval_messager)   exc_inforR   c                 C   sX   t t| j}| j}| | t| j| _|jr!t	||||j
dS |jr*t|j|S d S )N)r)   r*   )r   r   rk   r'   rz   r   capture_stackrb   take_snapshotrP   r*   capture_expressionsrZ   )rq   r)   r{   rR   rk   r'   r6   r6   r7   _do   s   
zSnapshot._doc                 C   s   |  tt|| _d S r0   )r   rF   r#   r_   rq   rR   r6   r6   r7   enter      zSnapshot.enterc                 C   sn   || _ | |||| _| jd usJ |d }|d ur5|j}|| jkr,|j| jd d< d S |j}|d usd S d S )N   r   
lineNumber)r-   r   r`   rb   tb_framer'   	tb_linenotb_next)rq   r)   r{   r-   rR   tbr'   r6   r6   r7   exit   s   
zSnapshot.exitc                 C   s   |  tt || _d S r0   )r   rF   sysr{   ra   r   r6   r6   r7   line   s   zSnapshot.linec                 C   s   | j S r0   )rc   rq   r6   r6   r7   ri      s   zSnapshot.messagec                 C   s   | j d up	t| jS r0   )rc   rE   rl   r   r6   r6   r7   has_message   r   zSnapshot.has_messagec                 C   st   | j }i }t|tr2|js|jr2t|tr"dt|j| jpt	ii}nt|t
r2| jp+t	| jp/t	d}| j|| jdS )Nlines)entryr+   )stackcapturesr-   )rk   r:   r   r}   r~   r   strr   ra   r[   r   r_   r`   rb   r-   )rq   rk   r   r6   r6   r7   data   s   

zSnapshot.data)$__name__
__module____qualname____doc__r    SNAPSHOTr]   r	   __annotations__r   r_   r   dictr`   ra   rb   listrc   r   r-   intr   r
   r   rs   rz   r$   r   r   r   r   propertyri   rE   r   r   r6   r6   r6   r7   r\   w   s(   
 .&r\   rk   threadtrace_contextmeterc                 C      t | |||dS N)rk   r'   r   r   r\   rk   r'   r   r   r   r6   r6   r7   r.         r.   c                 C   r   r   r   r   r6   r6   r7   r.      r   )Edataclassesr   r   	itertoolsr   r   typesr   r   r   typingr   r	   r
   r   r   ddtrace.debugging._expressionsr   ddtrace.debugging._probe.modelr   r   r   r   r   r   r   r   r   r   ddtrace.debugging._redactionr   r   ddtrace.debugging._safetyr   r   r   ddtrace.debugging._signalr   ddtrace.debugging._signal.logr   ddtrace.debugging._signal.modelr   r    r!   ddtrace.debugging._signal.utilsr"   ddtrace.internal.compatr#   r$   ddtrace.internal.metricsr%   ddtrace.internal.utils.timer&   rD   objectrF   typer;   r   r   rP   r   rZ   r[   r   r\   registerMeterr.   r6   r6   r6   r7   <module>   s    


)


e&*