o
    i                     @  s   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 eeee
edZ	d#d$ddZd%ddZd&d!d"ZdS )'    )annotations)Optional)HTTPPropagator)Context)Span   )METRIC_LATENCY_DECODE)METRIC_LATENCY_INFERENCE)METRIC_LATENCY_PREFILL)METRIC_LATENCY_QUEUE)METRIC_LATENCY_TTFT)OPERATION_ID)LatencyMetrics)time_to_first_tokentime_in_queuetime_in_model_prefilltime_in_model_decodetime_in_model_inferenceN
model_nameOptional[str]trace_headersOptional[dict[str, str]]arrival_timeOptional[float]c                 C  s:   d}|r	t |}| jtd||d}|rt|d |_|S )z:Create a vLLM span with parent context from trace headers.NT)operation_idsubmit_to_llmobsparent_contextr   g    eA)r   extracttracer   intstart_ns)integrationr   r   r   
parent_ctxspan r$   W/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/contrib/internal/vllm/utils.pycreate_span   s   
r&   r#   r   latency_metricsOptional[LatencyMetrics]returnNonec                 C  s>   |sdS t  D ]\}}t||d}|dur| || qdS )z0Set latency span tags from pre-computed metrics.N)_APM_LATENCY_METRIC_MAPitemsgetattr
set_metric)r#   r'   attrtag_namevaluer$   r$   r%   set_latency_metrics4   s   r2   dict[str, str]c                 C  sT   |rt |ni }| j }|r(t|trt|j| |S t|tr(t|| |S )z:Inject current trace context into headers for propagation.)	dictcontext_provideractive
isinstancer   r   injectcontextr   )tracerr   headersr6   r$   r$   r%   inject_trace_context?   s   


r<   )N)r   r   r   r   r   r   )r#   r   r'   r(   r)   r*   )r   r   r)   r3   )
__future__r   typingr   ddtrace.propagation.httpr   ddtrace.tracer   r   
_constantsr   r	   r
   r   r   r   
extractorsr   r+   r&   r2   r<   r$   r$   r$   r%   <module>   s,    
