
    j                         d dl Z d dlZd dlmZmZmZmZmZ d dlm	c m
Z
 d dlmZ d dlmZ d dlmZmZmZmZmZ ddlmZ ddlmZ e j2                   G d de             Zy)	    N)AnyDictListOptionalUnion)DistributedTraceHeadersDictErrorInfoDictFeedbackScoreDictLLMProviderSpanType   )helpers)ObservationDatac            !          e Zd ZU dZeed<    ej                  ej                        Z
eed<   dZee   ed<   dZeed<   dZeeeeef   ej(                  f      ed	<   dZee   ed
<   dZeeeef      ed<   dZee   ed<   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddee   dedeej4                     deej4                     deeeef      deeeef      deeeef      deee      d	eeeeef   ej(                  f      deee      d
ee   deeeef      dee   dee   deeej>                        dd f dZ e!deeef   fd       Z"e!deeef   fd       Z#de$fdZ%y)SpanDataz
    The SpanData object is returned when calling :func:`opik.opik_context.get_current_span_data` from a tracked function.
    trace_id)default_factoryidNparent_span_idgeneraltypeusagemodelprovider
total_costname
start_timeend_timemetadatainputoutputtagsfeedback_scores
error_infoattachmentsreturnc                     ||nt        j                         }t        di d| j                  d| j                  d| j
                  d|d|d|d|d|d	|d
|d|d|	d|
d|d|d|d|d|S )Nr   r   project_namer   r   r   r   r   r    r!   r"   r   r#   r   r   r$   r   r%    )datetime_helperslocal_timestampr   r   r   r(   )selfr   r   r   r   r   r    r!   r"   r   r#   r   r   r$   r   r%   s                   x/Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/opik/api_objects/span/span_data.pycreate_child_span_datazSpanData.create_child_span_data"   s    & %0J6F6V6V6X 	  
]]
77
 **
 	

 
 "
 
 
 
 
 
 
 ,
 
 
  "!
" "#
$ $%
 	
    c                 r   | j                   | j                  | j                  | j                  d}| j                  | j                  |d<   | j
                  | j
                  |d<   | j                  | j                  |d<   | j                  | j                  |d<   | j                  | j                  |d<   |S )zRReturns parameters of this span to be sent to the server when starting a new span.)r   r   r(   r   r   r   r    r   r"   )	r   r   r(   r   r   r   r    r   r"   )r,   start_parameterss     r-   as_start_parameterszSpanData.as_start_parametersL   s     ''// --	,
 *151D1D-.99 '+yyV$::!(,

W%==$+/==Z(99 '+yyV$r/   c                    i d| j                   d| j                  d| j                  d| j                  d| j                  d| j
                  d| j                  d| j                  d	| j                  d
| j                  d| j                  d| j                  d| j                  d| j                  d| j                  d| j                  d| j                   | j"                  | j$                  dS )z=Returns all parameters of this span to be sent to the server.r   r   r   r   r   r   r   r   r    r!   r"   r   r#   r(   r   r   r$   )r   r%   )r   r   r   r   r   r   r   r   r    r!   r"   r   r#   r(   r   r   r$   r   r%   r,   s    r-   as_parameterszSpanData.as_parametersc   s5   

$''
 d11
 DII	

 DII
 $//
 
 
 TZZ
 dkk
 DII
 TZZ
 t33
 D--
 TZZ
  !
" $//#
$ //++'
 	
r/   c                 D    t        | j                  | j                        S )N)opik_trace_idopik_parent_span_id)r   r   r   r4   s    r-   get_distributed_trace_headersz&SpanData.get_distributed_trace_headers|   s    *-- $
 	
r/   )Nr   NNNNNNNNNNNNN)&__name__
__module____qualname____doc__str__annotations__dataclassesfieldr   generate_idr   r   r   r   r   r   r   r   r   	llm_usage	OpikUsager   r   r   r   floatdatetimer   r
   r	   
attachment
Attachmentr.   propertyr2   r5   r   r9   r)   r/   r-   r   r      sc    Mk0C0CDBD$(NHSM(D(BFE8E$sCx.)*=*==>?FE8C=26HhuS+-./6"&J& #"2604-1*.+/$(FJ=A#6:.2&*=A!(
sm(
 (
 X../	(

 8,,-(
 4S>*(
 S#X'(
 c3h((
 tCy!(
 d38ni.A.AABC(
 "$'8"9:(
 }(
 5k!123(
 ]+(
 UO(
  d:#8#89:!(
" 
#(
T  T#s(^    , 
tCH~ 
 
0
/J 
r/   r   )r@   rF   typingr   r   r   r   r   opik.api_objects.attachmentapi_objectsrG   opik.datetime_helpersr*   opik.llm_usagerC   
opik.typesr   r	   r
   r   r    r   observation_datar   	dataclassr   r)   r/   r-   <module>rS      sS      3 3 0 0 0 "   . l
 l
 l
r/   