o
    i                     @   s   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 eeeeef  eeeef  eegef ZeeZedZG dd deZdS )    N)Any)Callable)BufferedEncoder)metrics)	LogSignal)Signal)SignalState)SignalTrack)
BufferFull)ExcInfoType)
get_loggerzsignal.collectorc                   @   sN   e Zd ZdZdeeef ddfddZdeddfdd	Z	d
e
ddfddZdS )SignalCollectoraF  Debugger signal collector.

    This is used to collect and encode signals emitted by probes as soon as
    requested. The ``push`` method is intended to be called after a line-level
    signal is fully emitted, and information is available and ready to be
    encoded, or the signal status indicate it should be skipped.
    tracksreturnNc                 C   s
   || _ d S )N)_tracks)selfr    r   W/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/debugging/_signal/collector.py__init__   s   
zSignalCollector.__init__
log_signalc                 C   s|   zt dt t |j | j|j | W d S  ty-   t d t	
d Y d S  ty=   t d|j Y d S w )Nz6[%s][P: %s] SignalCollector enqueue signal on track %szEncoder buffer fullzencoder.buffer.fullzNo encoder for signal track %s)logdebugosgetpidgetppid	__track__r   putr
   meter	incrementKeyErrorerror)r   r   r   r   r   _enqueue"   s   
zSignalCollector._enqueuesignalc                 C   s  |j tju rtjdd|jjdd nM|j tjtjhv r)tjdd|jjdd n7|j tj	u r<tjdd|jjdd n$|j tj
u rOtjdd|jjdd n|j tju r`tjdd	|jjid t|tr|j tjtjhv r| rtd
| | | d S td|t|to|  d S )Nskipcond)causeprobe_id)tags
cond_errorratebudgetr"   r&   zEnqueueing signal %sz$Skipping signal %s (has message: %s))stater   	SKIP_CONDr   r   prober&   SKIP_COND_ERROR
COND_ERROR	SKIP_RATESKIP_BUDGETDONE
isinstancer   has_messager   r   r!   )r   r"   r   r   r   push1   s(   zSignalCollector.push)__name__
__module____qualname____doc__dictr	   r   r   r   r!   r   r5   r   r   r   r   r      s
    r   )r   typingr   r   ddtrace.debugging._encodingr   ddtrace.debugging._metricsr   ddtrace.debugging._signal.logr   ddtrace.debugging._signal.modelr   r   r	   ddtrace.internal._encodingr
   ddtrace.internal.compatr   ddtrace.internal.loggerr   listtuplestrint
CaptorTyper6   r   	get_meterr   objectr   r   r   r   r   <module>   s     ,
