
    jX                       d dl Z d dlZd dlZd dl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 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l0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z= ddl>m?Z? dd l@mAZA d!d"lBmCZC d!d#lDmEZE d!d$lFmGZG d!d%lHmIZI  ej                  ej                  d&      ZL G d' d(      ZM G d) d*      ZNy)+    N)JSONDecodeError   )ApiError)AsyncClientWrapperSyncClientWrapper)serialize_datetime)AsyncHttpResponseHttpResponse)jsonable_encoder)parse_obj_as)RequestOptions)'convert_and_respect_annotation_metadata)BadRequestError)ConflictError)NotFoundError)NotImplementedError)Comment)	ErrorInfo)ErrorInfoWrite)FeedbackScoreBatchItem)FeedbackScoreNamesPublic)FeedbackScoreSource)JsonListString)JsonListStringWrite)ProjectStatsPublic)SpanFilterPublic)SpanPagePublic)
SpanPublic)
SpanUpdate)SpanUpdateType)	SpanWrite)SpanWriteType)
ValueEntry   )"FindFeedbackScoreNames1RequestType)GetSpanStatsRequestType)GetSpansByProjectRequestType)!SpanSearchStreamRequestPublicType.c            .       <   e Zd ZdefdZeeeeedddededej                  e   dej                  e	j                     d	ej                  e	j                     d
ej                  e   dej                  e   dej                  e   ded   fdZeeeeeeedddededededej                  e   dej                  e   dej                  e	j                     d	ej                  e	j                     d
ej                  e   dej                  e   dej                  ej                   eef      dej                  e   ded   fdZdddej&                  e   dej                  e   ded   fdZedddej&                  e   dedej                  e   dej                  e   ded   f
dZddddddddddddddddd ej                  e   d!ej                  e   d"ej                  e   d#ej                  e   d$ej                  e   d%ej                  e   d&ej                  e   d'ej                  e   d(ej                  e   d)ej                  e   d*ej                  e   d+ej                  e   d,ej                  e	j                     d-ej                  e	j                     dej                  e   dee   f d.Zeeeeeeeeeeeeeeeeeeedd/d0e	j                  dej                  e   d"ej                  e   d$ej                  e   d1ej                  e   dej                  e   d%ej                  e   d2ej                  e	j                     d3ej                  e   d4ej                  e   d5ej                  e   d6ej                  e   d7ej                  e   d8ej                  ej&                  e      d9ej                  ej                   eef      d:ej                  e   d	ej                  e	j                     d;ej                  e   d<ej                  e   d=ej                  e   dej                  e   ded   f,d>Z ddd?ded(ej                  e   dej                  e   dee!   fd@Z"dddedej                  e   ded   fdAZ#eeeeeeeeeeeeeeeeeeddBded$ed"ej                  e   d#ej                  e   d1ej                  e   dej                  e   d%ej                  e$   d2ej                  e	j                     d3ej                  e%   d4ej                  e%   d5ej                  e%   d6ej                  e   d7ej                  e   d8ej                  ej&                  e      dCej                  ej&                  e      dDej                  ej&                  e      d9ej                  ej                   eef      d;ej                  e   d:ej                  e&   d=ej                  e   dej                  e   ded   f,dEZ'dddej&                  e   dej                  e   ded   fdFZ(eddGdededHej                  e   dej                  e   ded   f
dIZ)ddddJd#ej                  e   d%ej                  e*   dej                  e   dee+   fdKZ,dddLedMedej                  e   dee-   fdNZ.ddddddddddO	d#ej                  e   d"ej                  e   d$ej                  e   d%ej                  e/   d&ej                  e   d+ej                  e   d,ej                  e	j                     d-ej                  e	j                     dej                  e   dee0   fdPZ1dddQej&                  e2   dej                  e   ded   fdRZ3e4jj                  eeeeeeeeeeddSd$ej                  e   d"ej                  e   d#ej                  e   d%ej                  e6   d&ej                  ej&                  e7      dTej                  e   dUej                  e   d'ej                  e   d,ej                  e	j                     d-ej                  e	j                     dej                  e   dejp                  eejp                  e9         fdV       Z:eeeeedddMededej                  e   dej                  e	j                     d	ej                  e	j                     d
ej                  e   dej                  e   dej                  e   ded   fdWZ;y)XRawSpansClientclient_wrapperc                    || _         y N_client_wrapperselfr+   s     w/Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/opik/rest_api/spans/raw_client.py__init__zRawSpansClient.__init__/   
    -    Nid
created_atlast_updated_at
created_bylast_updated_byrequest_optionsid_textr7   r8   r9   r:   r;   r<   returnc                   | j                   j                  j                  dt        |       dd||||||dddi|t              }		 d|	j
                  cxk  rd	k  rn nt        |	d
      S |	j                         }
t        |	j
                  t        |	j                        |
      # t        $ r6 t        |	j
                  t        |	j                        |	j                        w xY w)a  
        Add span comment

        Parameters
        ----------
        id_ : str

        text : str

        id : typing.Optional[str]

        created_at : typing.Optional[dt.datetime]

        last_updated_at : typing.Optional[dt.datetime]

        created_by : typing.Optional[str]

        last_updated_by : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[None]
        v1/private/spans/	/commentsPOSTr7   r>   r8   r9   r:   r;   content-typeapplication/jsonmethodjsonheadersr<   omit   ,  Nresponsedatastatus_coderJ   bodyr/   httpx_clientrequestr   OMITrR   r
   rI   r   r   dictrJ   r>   r1   r=   r>   r7   r8   r9   r:   r;   r<   	_response_response_jsons              r2   add_span_commentzRawSpansClient.add_span_comment2   s    L ((55== 0 56i@(#2(#2  2 , > 
	"	ti++1c1#YTBB&^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   $B' ,B' '?C&category_namereasonr8   r9   r:   r;   value_by_authorr<   namevaluesourcer^   r_   r`   c                (   | j                   j                  j                  dt        |       dd||||||||	|
t	        |t
        j                  t        t        f   d      d
ddi|t        	      }	 d
|j                  cxk  rdk  rn nt        |d      S |j                         }t        |j                  t        |j                         |      # t        $ r6 t        |j                  t        |j                         |j"                        w xY w)a  
        Add span feedback score

        Parameters
        ----------
        id : str

        name : str

        value : float

        source : FeedbackScoreSource

        category_name : typing.Optional[str]

        reason : typing.Optional[str]

        created_at : typing.Optional[dt.datetime]

        last_updated_at : typing.Optional[dt.datetime]

        created_by : typing.Optional[str]

        last_updated_by : typing.Optional[str]

        value_by_author : typing.Optional[typing.Dict[str, ValueEntry]]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[None]
        rA   /feedback-scoresPUTwriteobject_
annotation	direction
ra   r^   rb   r_   rc   r8   r9   r:   r;   r`   rE   rF   rG   rL   rM   NrN   rQ   )r/   rU   rV   r   r   typingDictstrr#   rW   rR   r
   rI   r   r   rX   rJ   r>   r1   r7   ra   rb   rc   r^   r_   r8   r9   r:   r;   r`   r<   rZ   r[   s                  r2   add_span_feedback_scorez&RawSpansClient.add_span_feedback_scoreq   s   d ((55== 0 455EF!.  (#2(#2#J+CO8T`g$  2 ,+ > 
	.	ti++1c1#YTBB&^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   2$C C ?Dr<   spansc          
         | j                   j                  j                  dddt        |t        j
                  t           d      iddi|t              }	 d	|j                  cxk  rd
k  rn nt        |d      S |j                         }t        |j                  t        |j                        |      # t        $ r6 t        |j                  t        |j                        |j                        w xY w)a  
        Create spans

        Parameters
        ----------
        spans : typing.Sequence[SpanWrite]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[None]
        v1/private/spans/batchrC   rs   rg   rh   rE   rF   rG   rL   rM   NrN   rQ   )r/   rU   rV   r   rm   Sequencer!   rW   rR   r
   rI   r   r   rX   rJ   r>   r1   rs   r<   rZ   r[   s        r2   create_spanszRawSpansClient.create_spans   s    " ((55==$@!fooi.HT[  2 , > 
		ti++1c1#YTBB&^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	t   $B6 ;B6 6?C5
merge_tagsr<   idsupdater{   c                   | j                   j                  j                  dd|t        |t        d      |dddi|t
              }	 d	|j                  cxk  rd
k  rn nt        |d      S |j                  dk(  rt        t        |j                        t        j                  t        j                  t        j                     t        t        j                  t        j                     |j!                                           |j!                         }t%        |j                  t        |j                        |      # t"        $ r6 t%        |j                  t        |j                        |j&                        w xY w)a  
        Update multiple spans

        Parameters
        ----------
        ids : typing.Sequence[str]
            List of span IDs to update (max 1000)

        update : SpanUpdate

        merge_tags : typing.Optional[bool]
            If true, merge tags with existing tags instead of replacing them. Default: false

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[None]
        ru   PATCHrg   rh   r|   r}   r{   rE   rF   rG   rL   rM   NrN     type_ri   rJ   rS   rQ   )r/   rU   rV   r   r   rW   rR   r
   r   rX   rJ   rm   castOptionalAnyr   rI   r   r   r>   r1   r|   r}   r{   r<   rZ   r[   s          r2   batch_update_spansz!RawSpansClient.batch_update_spans   sT   8 ((55==$A"zW )  2 , > 
	 	ti++1c1#YTBB$$+% !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   $E ,B*E ?F pagesizeproject_name
project_idtrace_idtypefilterstruncatestrip_attachmentssortingexcludesearch	from_timeto_timer<   r   r   r   r   r   r   r   r   r   r   r   r   r   r   c                Z   | j                   j                  j                  dd|||||||||	|
|||t        |      nd|t        |      ndd|      }	 d|j                  cxk  rdk  rGn nDt        j                  t        t        t        |j                                     }t        ||	      S |j                         }t        |j                  t        |j                        |
      # t        $ r6 t        |j                  t        |j                        |j                  
      w xY w)a  
        Get spans by project_name or project_id and optionally by trace_id and/or type

        Parameters
        ----------
        page : typing.Optional[int]

        size : typing.Optional[int]

        project_name : typing.Optional[str]

        project_id : typing.Optional[str]

        trace_id : typing.Optional[str]

        type : typing.Optional[GetSpansByProjectRequestType]

        filters : typing.Optional[str]

        truncate : typing.Optional[bool]

        strip_attachments : typing.Optional[bool]

        sorting : typing.Optional[str]

        exclude : typing.Optional[str]

        search : typing.Optional[str]

        from_time : typing.Optional[dt.datetime]

        to_time : typing.Optional[dt.datetime]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[SpanPagePublic]
            Spans resource
        v1/private/spansGETNr   r   r   r   r   r   r   r   r   r   r   r   r   r   rH   paramsr<   rL   rM   r   rN   rQ   )r/   rU   rV   r   rR   rm   r   r   r   rI   r
   r   r   rX   rJ   r>   r1   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r<   rZ   _datar[   s                      r2   get_spans_by_projectz#RawSpansClient.get_spans_by_project(  s3   x ((55== ,($"$%6"" >G>S/	:Y]:A:M-g6SW  ,' > 
	*	ti++1c1" , ) 0 $YUCC&^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   AC+ 0C+ +?D*r7   r   r   parent_span_idra   r   end_timeinputoutputmetadatamodelprovidertagsusage
error_infor9   total_estimated_costtotal_estimated_cost_versionttftr<   
start_timer   r   r   r   r   r   r   r   r   r   r   r   r   c                   | j                   j                  j                  ddi d|d|d|d|d|d|d	|d
|dt        |	t        d      dt        |
t        d      dt        |t        d      d|d|d|d|dt        |t
        d      d||||dddi|t              }	 d|j                  cxk  rdk  rn nt        |d      S |j                  dk(  rt        t        |j                        t        j                  t        j                  t        j                     t!        t        j                  t        j                     |j#                                            |j#                         }t'        |j                  t        |j                        |!      # t$        $ r6 t'        |j                  t        |j                        |j(                  !      w xY w)"a  
        Create span

        Parameters
        ----------
        start_time : dt.datetime

        id : typing.Optional[str]

        project_name : typing.Optional[str]
            If null, the default project is used

        trace_id : typing.Optional[str]

        parent_span_id : typing.Optional[str]

        name : typing.Optional[str]

        type : typing.Optional[SpanWriteType]

        end_time : typing.Optional[dt.datetime]

        input : typing.Optional[JsonListStringWrite]

        output : typing.Optional[JsonListStringWrite]

        metadata : typing.Optional[JsonListStringWrite]

        model : typing.Optional[str]

        provider : typing.Optional[str]

        tags : typing.Optional[typing.Sequence[str]]

        usage : typing.Optional[typing.Dict[str, int]]

        error_info : typing.Optional[ErrorInfoWrite]

        last_updated_at : typing.Optional[dt.datetime]

        total_estimated_cost : typing.Optional[float]

        total_estimated_cost_version : typing.Optional[str]

        ttft : typing.Optional[float]
            Time to first token in milliseconds

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[None]
        r   rC   r7   r   r   r   ra   r   r   r   r   rg   rh   r   r   r   r   r   r   r   r9   r   r   r   rE   rF   rG   rL   rM   NrN     r   r   rQ   )r/   rU   rV   r   r   r   rW   rR   r
   r   rX   rJ   rm   r   r   r   r   rI   r   r   r>   r1   r   r7   r   r   r   ra   r   r   r   r   r   r   r   r   r   r   r9   r   r   r   r<   rZ   r[   s                           r2   create_spanzRawSpansClient.create_span  sP   ^ ((55==b H !.	
   j H @!.AW A"/Bg C$1DPW$ %& H'( )* +, E&>W-2 "?34 )=0L9>  2 ,K > &
	N	ti++1c1#YTBB$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   ,$F& B*F& &?G%r   r<   c                X   | j                   j                  j                  dt        |       dd|i|      }	 d|j                  cxk  rdk  rGn nDt        j                  t        t        t        |j                                     }t        ||      S |j                  d	k(  rt        t        |j                        t        j                  t
        j                  t
        j                     t        t
        j                  t
        j                     |j                                     
      |j                         }t#        |j                  t        |j                        |      # t         $ r6 t#        |j                  t        |j                        |j$                        w xY w)aN  
        Get span by id

        Parameters
        ----------
        id : str

        strip_attachments : typing.Optional[bool]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[SpanPublic]
            Span resource
        rA   r   r   r   rL   rM   r   rN     r   rQ   )r/   rU   rV   r   rR   rm   r   r   r   rI   r
   r   rX   rJ   r   r   r   r   r>   r1   r7   r   r<   rZ   r   r[   s          r2   get_span_by_idzRawSpansClient.get_span_by_id  si   0 ((55== 0 456#%6 , > 
		ti++1c1 ( ) 0 $YUCC$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   AE* B*E* *?F)c                   | j                   j                  j                  dt        |       d|      }	 d|j                  cxk  rdk  rn nt        |d      S |j                  dk(  rt        t        |j                        t        j                  t        j                  t        j                     t        t        j                  t        j                     |j                         	            
      |j                         }t!        |j                  t        |j                        |      # t        $ r6 t!        |j                  t        |j                        |j"                        w xY w)z
        Delete span by id

        Parameters
        ----------
        id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[None]
        rA   DELETErH   r<   rL   rM   NrN     r   r   rQ   )r/   rU   rV   r   rR   r
   r   rX   rJ   rm   r   r   r   r   rI   r   r   r>   r1   r7   r<   rZ   r[   s        r2   delete_span_by_idz RawSpansClient.delete_span_by_idK  s4   " ((55== 0 456+ > 
	
	ti++1c1#YTBB$$+) !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   $D0 B*D0 0?E/r   r   r   ra   r   r   r   r   r   r   r   r   tags_to_addtags_to_remover   r   r   r   r<   r   r   c                   | j                   j                  j                  dt        |       di d|d|d|d|d|d|d	|d
t	        |	t
        d      dt	        |
t
        d      dt	        |t
        d      d|d|d|d|d|d|d|t	        |t        d      |dddi|t              }	 d|j                  cxk  rdk  rn nt        |d      S |j                  dk(  rt        t        |j                        t        j                  t        j                  t        j                      t#        t        j                  t        j                      |j%                                            |j%                         }t)        |j                  t        |j                        |!      # t&        $ r6 t)        |j                  t        |j                        |j*                  !      w xY w)"ac  
        Update span by id

        Parameters
        ----------
        id : str

        trace_id : str

        project_name : typing.Optional[str]
            If null and project_id not specified, Default Project is assumed

        project_id : typing.Optional[str]
            If null and project_name not specified, Default Project is assumed

        parent_span_id : typing.Optional[str]

        name : typing.Optional[str]

        type : typing.Optional[SpanUpdateType]

        end_time : typing.Optional[dt.datetime]

        input : typing.Optional[JsonListString]

        output : typing.Optional[JsonListString]

        metadata : typing.Optional[JsonListString]

        model : typing.Optional[str]

        provider : typing.Optional[str]

        tags : typing.Optional[typing.Sequence[str]]
            Tags

        tags_to_add : typing.Optional[typing.Sequence[str]]
            Tags to add

        tags_to_remove : typing.Optional[typing.Sequence[str]]
            Tags to remove

        usage : typing.Optional[typing.Dict[str, int]]

        total_estimated_cost : typing.Optional[float]

        error_info : typing.Optional[ErrorInfo]

        ttft : typing.Optional[float]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[None]
        rA   r   r   r   r   r   ra   r   r   r   rg   rh   r   r   r   r   r   r   r   r   r   r   r   rE   rF   rG   rL   rM   NrN   r   r   r   rQ   )r/   rU   rV   r   r   r   r   rW   rR   r
   r   rX   rJ   rm   r   r   r   r   rI   r   r   r>   r1   r7   r   r   r   r   ra   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r<   rZ   r[   s                           r2   update_spanzRawSpansClient.update_spant  sZ   d ((55== 0 456j H !.	
   H @!n A"~ C$7" #$ H%& '( {)* !.+, -. '(</0 F&9 7<  2 ,I > %
	L	ti++1c1#YTBB$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   7$F1 B*F1 1?G0c                   | j                   j                  j                  ddd|iddi|t              }	 d|j                  cxk  rdk  rn nt        |d	
      S |j                         }t        |j                  t        |j                        |      # t        $ r6 t        |j                  t        |j                        |j                        w xY w)a  
        Delete span comments

        Parameters
        ----------
        ids : typing.Sequence[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[None]
         v1/private/spans/comments/deleterC   r|   rE   rF   rG   rL   rM   NrN   rQ   )r/   rU   rV   rW   rR   r
   rI   r   r   rX   rJ   r>   r1   r|   r<   rZ   r[   s        r2   delete_span_commentsz#RawSpansClient.delete_span_comments  s    " ((55==.s  2 , > 
		ti++1c1#YTBB&^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   $B B ?Cauthorr<   r   c                   | j                   j                  j                  dt        |       dd||dddi|t              }	 d|j
                  cxk  rd	k  rn nt        |d
      S |j                         }t        |j
                  t        |j                        |      # t        $ r6 t        |j
                  t        |j                        |j                        w xY w)aB  
        Delete span feedback score

        Parameters
        ----------
        id : str

        name : str

        author : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[None]
        rA   /feedback-scores/deleterC   ra   r   rE   rF   rG   rL   rM   NrN   rQ   rT   r1   r7   ra   r   r<   rZ   r[   s          r2   delete_span_feedback_scorez)RawSpansClient.delete_span_feedback_score$  s    4 ((55== 0 455LM 
  2 , > 
		ti++1c1#YTBB&^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   $B# (B# #?C"r   r   r<   c                   | j                   j                  j                  dd||d|      }	 d|j                  cxk  rdk  rGn nDt	        j
                  t        t        t        |j                                     }t        ||      S |j                         }t        |j                  t        |j                        |	      # t        $ r6 t        |j                  t        |j                        |j                  	      w xY w)
a  
        Find Feedback Score names

        Parameters
        ----------
        project_id : typing.Optional[str]

        type : typing.Optional[FindFeedbackScoreNames1RequestType]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[FeedbackScoreNamesPublic]
            Feedback Scores resource
        &v1/private/spans/feedback-scores/namesr   r   r   r   rL   rM   r   rN   rQ   )r/   rU   rV   rR   rm   r   r   r   rI   r
   r   r   rX   rJ   r>   r1   r   r   r<   rZ   r   r[   s          r2   find_feedback_score_names1z)RawSpansClient.find_feedback_score_names1S  s    0 ((55==4( , > 
		ti++1c1, 6 ) 0 $YUCC&^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   AC 
C ?Dspan_id
comment_idc                j   | j                   j                  j                  dt        |       dt        |       d|      }	 d|j                  cxk  rdk  rGn nDt        j                  t        t        t        |j                                     }t        ||      S |j                  d	k(  rt        t        |j                        t        j                  t
        j                  t
        j                     t        t
        j                  t
        j                     |j                                     
      |j                         }t#        |j                  t        |j                        |      # t         $ r6 t#        |j                  t        |j                        |j$                        w xY w)a<  
        Get span comment

        Parameters
        ----------
        span_id : str

        comment_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[Comment]
            Comment resource
        rA   
/comments/r   r   rL   rM   r   rN   r   r   rQ   )r/   rU   rV   r   rR   rm   r   r   r   rI   r
   r   rX   rJ   r   r   r   r   r>   r1   r   r   r<   rZ   r   r[   s          r2   get_span_commentzRawSpansClient.get_span_comment  sj   ( ((55== 0 9:*EUV`EaDbc+ > 
	
	ti++1c1 % ) 0 $YUCC$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   AE3 B*E3 3?F2	r   r   r   r   r   r   r   r   r<   c       	         N   | j                   j                  j                  dd|||||||t        |      nd|t        |      ndd|	      }
	 d|
j                  cxk  rdk  rGn nDt        j                  t        t        t        |
j                                     }t        |
|	      S |
j                         }t        |
j                  t        |
j                        |
      # t        $ r6 t        |
j                  t        |
j                        |
j                  
      w xY w)a  
        Get span stats

        Parameters
        ----------
        project_id : typing.Optional[str]

        project_name : typing.Optional[str]

        trace_id : typing.Optional[str]

        type : typing.Optional[GetSpanStatsRequestType]

        filters : typing.Optional[str]

        search : typing.Optional[str]

        from_time : typing.Optional[dt.datetime]

        to_time : typing.Optional[dt.datetime]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[ProjectStatsPublic]
            Span stats resource
        v1/private/spans/statsr   Nr   r   r   r   r   r   r   r   r   rL   rM   r   rN   rQ   )r/   rU   rV   r   rR   rm   r   r   r   rI   r
   r   r   rX   rJ   r>   r1   r   r   r   r   r   r   r   r   r<   rZ   r   r[   s                r2   get_span_statszRawSpansClient.get_span_stats  s!   T ((55==$( ,$" >G>S/	:Y]:A:M-g6SW	 , > 
		ti++1c1& 0 ) 0 $YUCC&^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   AC% *C% %?D$scoresc          
         | j                   j                  j                  dddt        |t        j
                  t           d      iddi|t              }	 d	|j                  cxk  rd
k  rn nt        |d      S |j                         }t        |j                  t        |j                        |      # t        $ r6 t        |j                  t        |j                        |j                        w xY w)a5  
        Batch feedback scoring for spans

        Parameters
        ----------
        scores : typing.Sequence[FeedbackScoreBatchItem]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[None]
         v1/private/spans/feedback-scoresrf   r   rg   rh   rE   rF   rG   rL   rM   NrN   rQ   )r/   rU   rV   r   rm   rv   r   rW   rR   r
   rI   r   r   rX   rJ   r>   r1   r   r<   rZ   r[   s        r2   score_batch_of_spansz#RawSpansClient.score_batch_of_spans  s    ( ((55==.A"v?U/Vbi  2 , > 
		ti++1c1#YTBB&^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	try   r   r   r   r   r   limitlast_retrieved_idr   r   r   r<   r   r   c             #   P  K   | j                   j                  j                  dd||||t        |t        j
                  t           d      ||||	|
d
ddit              5 d	t        t        j                  t              ffd
} |        ddd       y# 1 sw Y   yxY ww)a  
        Search spans

        Parameters
        ----------
        trace_id : typing.Optional[str]

        project_name : typing.Optional[str]

        project_id : typing.Optional[str]

        type : typing.Optional[SpanSearchStreamRequestPublicType]

        filters : typing.Optional[typing.Sequence[SpanFilterPublic]]

        limit : typing.Optional[int]
            Max number of spans to be streamed

        last_retrieved_id : typing.Optional[str]

        truncate : typing.Optional[bool]
            Truncate image included in either input, output or metadata

        from_time : typing.Optional[dt.datetime]
            Filter spans created from this time (ISO-8601 format).

        to_time : typing.Optional[dt.datetime]
            Filter spans created up to this time (ISO-8601 format). If not provided, defaults to current time. Must be after 'from_time'.

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.

        Returns
        -------
        typing.Iterator[HttpResponse[typing.Iterator[bytes]]]
            Spans stream or error during process
        v1/private/spans/searchrC   rg   rh   
r   r   r   r   r   r   r   r   r   r   rE   rF   rG   r?   c                     	 dj                   cxk  rdk  r=n n:j                  dd       nd } t        d j                  |       D              S j	                          j                   dk(  rt        t        j                        t        j                  t        j                  t        j                     t        t        j                  t        j                     j                                     	      j                         }t        j                   t        j                        |
      # t        $ r6 t        j                   t        j                        j                   
      w xY w)NrL   rM   
chunk_sizec              3       K   | ]  }|  y wr-    .0_chunks     r2   	<genexpr>z>RawSpansClient.search_spans.<locals>.stream.<locals>.<genexpr>z  s     5xKwfKws   r   rN   r   r   r   rQ   )rR   getr
   
iter_bytesreadr   rX   rJ   rm   r   r   r   r   rI   r   r   r>   _chunk_sizer[   rZ   r<   s     r2   streamz+RawSpansClient.search_spans.<locals>.streamu  s=   i339c9Q`Qlo&9&9,&Mrv+%.5x9K_K_kvK_Kw5x   NN$ ,,3-$():):$;!' &

 ; ,*0//&***E,5NN,<!""	 	 &/^^%5N
 9+@+@$yO`O`Jahvww	 ' "$-$9$94	HYHYCZajaoao s   AD: B:D: :?E9N)r/   rU   r   r   rm   rv   r   rW   r
   Iteratorbytesr1   r   r   r   r   r   r   r   r   r   r   r<   r   rZ   s              ` @r2   search_spanszRawSpansClient.search_spans(  s     j !!..55%$ ,(B#@P0Q]d %6$&"  2 ,+ 6 
, xL)?@ x4 (Ne
 
 
s   AB&"/B	B&B#B&c                   | j                   j                  j                  dt        |       d||||||dddi|t              }		 d|	j
                  cxk  rdk  rn nt        |	d	
      S |	j
                  dk(  rt        t        |	j                        t        j                  t        j                  t        j                     t        t        j                  t        j                     |	j                                           |	j                         }
t#        |	j
                  t        |	j                        |
      # t         $ r6 t#        |	j
                  t        |	j                        |	j$                        w xY w)a  
        Update span comment by id

        Parameters
        ----------
        comment_id : str

        text : str

        id : typing.Optional[str]

        created_at : typing.Optional[dt.datetime]

        last_updated_at : typing.Optional[dt.datetime]

        created_by : typing.Optional[str]

        last_updated_by : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[None]
        v1/private/spans/comments/r   rD   rE   rF   rG   rL   rM   NrN   r   r   r   rQ   )r/   rU   rV   r   rW   rR   r
   r   rX   rJ   rm   r   r   r   r   rI   r   r   r>   r1   r   r>   r7   r8   r9   r:   r;   r<   rZ   r[   s              r2   update_span_commentz"RawSpansClient.update_span_comment  s^   L ((55==()9*)E(FG(#2(#2  2 , > 
	"	ti++1c1#YTBB$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo  	ty'<'<d9K\K\F]dmdrdrss	ts   $E  +B*E   ?E?)<__name__
__module____qualname__r   r3   rW   ro   rm   r   dtdatetimer   r
   r\   floatr   rn   r#   rq   rv   r!   rx   r   boolr   intr'   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   
contextlibcontextmanagerr(   r   r   r   r  r  r   r5   r2   r*   r*   .   s   .*; . $(378<+/04;?=p=p 	=p
 OOC =p OOBKK0=p  5=p OOC(=p  -=p  8=p 
d	=pL /3'+378<+/04IM;?OpOp 	Op
 Op $Op s+Op $Op OOBKK0Op  5Op OOC(Op  -Op  S*_)EFOp  8Op 
d	Opd hl%p	2%pEK__UcEd%p	d	%pX -1;?=p __S!=p 	=p
 OOD)=p  8=p 
d	=pD &*%)-1+/)->B(,*.37(,(,'+2604;?#^p ooc"^p ooc"	^p
 ooc*^p OOC(^p //#&^p oo:;^p %^p //$'^p "??40^p %^p %^p $^p ??2;;/^p  -!^p"  8#^p$ 
n	%%^pH $(-1)-/3%)/3156:7;9=&*)-6:8<6:8<7;=A'+;?/Gp KKGp OOC 	Gp
 ooc*Gp //#&Gp ,Gp ooc"Gp oom,Gp //"++.Gp 23Gp  34Gp //"56Gp s#Gp //#&Gp  oofooc23!Gp" v{{3845#Gp$ OON3%Gp&  5'Gp( %ooe4)Gp* '-ooc&:+Gp, ooe$-Gp.  8/Gp0 
d	1GpZ 48;?8p8p "??40	8p
  88p 
j	!8pv NR'p'p+1??>+J'p	d	'p\ .2+//3%)0415152648&*)-6:=A@D8<7;15'+;?/IpIp 	Ip
 ooc*Ip OOC(Ip ,Ip ooc"Ip oon-Ip //"++.Ip ~.Ip /Ip //.1Ip s#Ip //#&Ip  oofooc23!Ip" __V__S%9:#Ip$ (<=%Ip& v{{3845'Ip( %ooe4)Ip* OOI.+Ip, ooe$-Ip.  8/Ip0 
d	1IpX `d#pooc*#p=C__^=\#p	d	#pT (,;?-p-p 	-p
 $-p  8-p 
d	-pd ,0DH;?.p OOC(.p oo@A	.p
  8.p 
.	/.pb dh1p1p(+1pAGQ_A`1p	g	1pl ,0-1)-9=(,'+2604;?Fp OOC(Fp ooc*	Fp
 //#&Fp oo56Fp %Fp $Fp ??2;;/Fp -Fp  8Fp 
(	)FpX <@	(p  67(p  8	(p
 
d	(pT  *.-1+/CGFJ&*26*.2604;?f //#&f ooc*	f
 OOC(f oo?@f 1A!BCf s#f "??3/f //$'f ??2;;/f -f  8f 
fooe&<=	>f fZ $(378<+/04;?HpHp 	Hp
 OOC Hp OOBKK0Hp  5Hp OOC(Hp  -Hp  8Hp 
d	Hpr5   r*   c            .       <   e Zd ZdefdZeeeeedddededej                  e   dej                  e	j                     d	ej                  e	j                     d
ej                  e   dej                  e   dej                  e   ded   fdZeeeeeeedddededededej                  e   dej                  e   dej                  e	j                     d	ej                  e	j                     d
ej                  e   dej                  e   dej                  ej                   eef      dej                  e   ded   fdZdddej&                  e   dej                  e   ded   fdZedddej&                  e   dedej                  e   dej                  e   ded   f
dZddddddddddddddddd ej                  e   d!ej                  e   d"ej                  e   d#ej                  e   d$ej                  e   d%ej                  e   d&ej                  e   d'ej                  e   d(ej                  e   d)ej                  e   d*ej                  e   d+ej                  e   d,ej                  e	j                     d-ej                  e	j                     dej                  e   dee   f d.Zeeeeeeeeeeeeeeeeeeedd/d0e	j                  dej                  e   d"ej                  e   d$ej                  e   d1ej                  e   dej                  e   d%ej                  e   d2ej                  e	j                     d3ej                  e   d4ej                  e   d5ej                  e   d6ej                  e   d7ej                  e   d8ej                  ej&                  e      d9ej                  ej                   eef      d:ej                  e   d	ej                  e	j                     d;ej                  e   d<ej                  e   d=ej                  e   dej                  e   ded   f,d>Z ddd?ded(ej                  e   dej                  e   dee!   fd@Z"dddedej                  e   ded   fdAZ#eeeeeeeeeeeeeeeeeeddBded$ed"ej                  e   d#ej                  e   d1ej                  e   dej                  e   d%ej                  e$   d2ej                  e	j                     d3ej                  e%   d4ej                  e%   d5ej                  e%   d6ej                  e   d7ej                  e   d8ej                  ej&                  e      dCej                  ej&                  e      dDej                  ej&                  e      d9ej                  ej                   eef      d;ej                  e   d:ej                  e&   d=ej                  e   dej                  e   ded   f,dEZ'dddej&                  e   dej                  e   ded   fdFZ(eddGdededHej                  e   dej                  e   ded   f
dIZ)ddddJd#ej                  e   d%ej                  e*   dej                  e   dee+   fdKZ,dddLedMedej                  e   dee-   fdNZ.ddddddddddO	d#ej                  e   d"ej                  e   d$ej                  e   d%ej                  e/   d&ej                  e   d+ej                  e   d,ej                  e	j                     d-ej                  e	j                     dej                  e   dee0   fdPZ1dddQej&                  e2   dej                  e   ded   fdRZ3e4jj                  eeeeeeeeeeddSd$ej                  e   d"ej                  e   d#ej                  e   d%ej                  e6   d&ej                  ej&                  e7      dTej                  e   dUej                  e   d'ej                  e   d,ej                  e	j                     d-ej                  e	j                     dej                  e   dejp                  eejp                  e9         fdV       Z:eeeeedddMededej                  e   dej                  e	j                     d	ej                  e	j                     d
ej                  e   dej                  e   dej                  e   ded   fdWZ;y)XAsyncRawSpansClientr+   c                    || _         y r-   r.   r0   s     r2   r3   zAsyncRawSpansClient.__init__  r4   r5   Nr6   r=   r>   r7   r8   r9   r:   r;   r<   r?   c                  K   | j                   j                  j                  dt        |       dd||||||dddi|t               d{   }		 d	|	j
                  cxk  rd
k  rn nt        |	d      S |	j                         }
t        |	j
                  t        |	j                        |
      7 e# t        $ r6 t        |	j
                  t        |	j                        |	j                        w xY ww)a   
        Add span comment

        Parameters
        ----------
        id_ : str

        text : str

        id : typing.Optional[str]

        created_at : typing.Optional[dt.datetime]

        last_updated_at : typing.Optional[dt.datetime]

        created_by : typing.Optional[str]

        last_updated_by : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[None]
        rA   rB   rC   rD   rE   rF   rG   NrL   rM   rN   rQ   r/   rU   rV   r   rW   rR   r	   rI   r   r   rX   rJ   r>   rY   s              r2   r\   z$AsyncRawSpansClient.add_span_comment  s    L ..;;CC 0 56i@(#2(#2  2 , D 
 
	"	ti++1c1()$GG&^^-N 9#8#8$yGXGXBY`noo/
*  	ty'<'<d9K\K\F]dmdrdrss	ts6   A	C5B1C5$B3 5C56B3 ,C53?C22C5r]   ra   rb   rc   r^   r_   r`   c                D  K   | j                   j                  j                  dt        |       dd||||||||	|
t	        |t
        j                  t        t        f   d      d
ddi|t        	       d
{   }	 d|j                  cxk  rdk  rn nt        |d
      S |j                         }t        |j                  t        |j                         |      7 e# t        $ r6 t        |j                  t        |j                         |j"                        w xY ww)a  
        Add span feedback score

        Parameters
        ----------
        id : str

        name : str

        value : float

        source : FeedbackScoreSource

        category_name : typing.Optional[str]

        reason : typing.Optional[str]

        created_at : typing.Optional[dt.datetime]

        last_updated_at : typing.Optional[dt.datetime]

        created_by : typing.Optional[str]

        last_updated_by : typing.Optional[str]

        value_by_author : typing.Optional[typing.Dict[str, ValueEntry]]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[None]
        rA   re   rf   rg   rh   rl   rE   rF   rG   NrL   rM   rN   rQ   )r/   rU   rV   r   r   rm   rn   ro   r#   rW   rR   r	   rI   r   r   rX   rJ   r>   rp   s                  r2   rq   z+AsyncRawSpansClient.add_span_feedback_score  s,    d ..;;CC 0 455EF!.  (#2(#2#J+CO8T`g$  2 ,+ D 
 
	.	ti++1c1()$GG&^^-N 9#8#8$yGXGXBY`noo;
6  	ty'<'<d9K\K\F]dmdrdrss	ts6   A4D 6C7D <$C  D !C 1,D ?DD rr   rs   c          
        K   | j                   j                  j                  dddt        |t        j
                  t           d      iddi|t               d	{   }	 d
|j                  cxk  rdk  rn nt        |d	      S |j                         }t        |j                  t        |j                        |      7 e# t        $ r6 t        |j                  t        |j                        |j                        w xY ww)a  
        Create spans

        Parameters
        ----------
        spans : typing.Sequence[SpanWrite]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[None]
        ru   rC   rs   rg   rh   rE   rF   rG   NrL   rM   rN   rQ   )r/   rU   rV   r   rm   rv   r!   rW   rR   r	   rI   r   r   rX   rJ   r>   rw   s        r2   rx   z AsyncRawSpansClient.create_spansp  s     " ..;;CC$@!fooi.HT[  2 , D 
 
		ti++1c1()$GG&^^-N 9#8#8$yGXGXBY`noo)
$  	ty'<'<d9K\K\F]dmdrdrss	t6   ADC D $C DC ,D?DDrz   r|   r}   r{   c                "  K   | j                   j                  j                  dd|t        |t        d      |dddi|t
               d	{   }	 d
|j                  cxk  rdk  rn nt        |d	      S |j                  dk(  rt        t        |j                        t        j                  t        j                  t        j                     t        t        j                  t        j                     |j!                                           |j!                         }t%        |j                  t        |j                        |      7 # t"        $ r6 t%        |j                  t        |j                        |j&                        w xY ww)a  
        Update multiple spans

        Parameters
        ----------
        ids : typing.Sequence[str]
            List of span IDs to update (max 1000)

        update : SpanUpdate

        merge_tags : typing.Optional[bool]
            If true, merge tags with existing tags instead of replacing them. Default: false

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[None]
        ru   r   rg   rh   r   rE   rF   rG   NrL   rM   rN   r   r   r   rQ   )r/   rU   rV   r   r   rW   rR   r	   r   rX   rJ   rm   r   r   r   r   rI   r   r   r>   r   s          r2   r   z&AsyncRawSpansClient.batch_update_spans  sc    8 ..;;CC$A"zW )  2 , D 
 
	 	ti++1c1()$GG$$+% !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`nooC
>  	ty'<'<d9K\K\F]dmdrdrss	ts7   A	FEF$E 5F6B*E  ,F?FFr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   c                v  K   | j                   j                  j                  dd|||||||||	|
|||t        |      nd|t        |      ndd|       d{   }	 d|j                  cxk  rdk  rGn nDt        j                  t        t        t        |j                                     }t        ||	      S |j                         }t        |j                  t        |j                        |
      7 # t        $ r6 t        |j                  t        |j                        |j                  
      w xY ww)a  
        Get spans by project_name or project_id and optionally by trace_id and/or type

        Parameters
        ----------
        page : typing.Optional[int]

        size : typing.Optional[int]

        project_name : typing.Optional[str]

        project_id : typing.Optional[str]

        trace_id : typing.Optional[str]

        type : typing.Optional[GetSpansByProjectRequestType]

        filters : typing.Optional[str]

        truncate : typing.Optional[bool]

        strip_attachments : typing.Optional[bool]

        sorting : typing.Optional[str]

        exclude : typing.Optional[str]

        search : typing.Optional[str]

        from_time : typing.Optional[dt.datetime]

        to_time : typing.Optional[dt.datetime]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[SpanPagePublic]
            Spans resource
        r   r   Nr   r   rL   rM   r   rN   rQ   )r/   rU   rV   r   rR   rm   r   r   r   rI   r	   r   r   rX   rJ   r>   r   s                      r2   r   z(AsyncRawSpansClient.get_spans_by_project  sC    x ..;;CC ,($"$%6"" >G>S/	:Y]:A:M-g6SW  ,' D 
 
	*	ti++1c1" , ) 0 ))%HH&^^-N 9#8#8$yGXGXBY`nooE
@  	ty'<'<d9K\K\F]dmdrdrss	ts7   AD9C5D9AC7 9D9:C7 
,D97?D66D9r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   c                  K   | j                   j                  j                  ddi d|d|d|d|d|d|d	|d
|dt        |	t        d      dt        |
t        d      dt        |t        d      d|d|d|d|dt        |t
        d      d||||dddi|t               d{   }	 d|j                  cxk  rdk  rn nt        |d      S |j                  dk(  rt        t        |j                        t        j                  t        j                  t        j                     t!        t        j                  t        j                     |j#                                            |j#                         }t'        |j                  t        |j                        |!      7 # t$        $ r6 t'        |j                  t        |j                        |j(                  !      w xY ww)"a  
        Create span

        Parameters
        ----------
        start_time : dt.datetime

        id : typing.Optional[str]

        project_name : typing.Optional[str]
            If null, the default project is used

        trace_id : typing.Optional[str]

        parent_span_id : typing.Optional[str]

        name : typing.Optional[str]

        type : typing.Optional[SpanWriteType]

        end_time : typing.Optional[dt.datetime]

        input : typing.Optional[JsonListStringWrite]

        output : typing.Optional[JsonListStringWrite]

        metadata : typing.Optional[JsonListStringWrite]

        model : typing.Optional[str]

        provider : typing.Optional[str]

        tags : typing.Optional[typing.Sequence[str]]

        usage : typing.Optional[typing.Dict[str, int]]

        error_info : typing.Optional[ErrorInfoWrite]

        last_updated_at : typing.Optional[dt.datetime]

        total_estimated_cost : typing.Optional[float]

        total_estimated_cost_version : typing.Optional[str]

        ttft : typing.Optional[float]
            Time to first token in milliseconds

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[None]
        r   rC   r7   r   r   r   ra   r   r   r   r   rg   rh   r   r   r   r   r   r   r   r9   r   rE   rF   rG   NrL   rM   rN   r   r   r   rQ   )r/   rU   rV   r   r   r   rW   rR   r	   r   rX   rJ   rm   r   r   r   r   rI   r   r   r>   r   s                           r2   r   zAsyncRawSpansClient.create_span6  s`    ^ ..;;CCb H !.	
   j H @!.AW A"/Bg C$1DPW$ %& H'( )* +, E&>W-2 "?34 )=0L9>  2 ,K D &
 &
	N	ti++1c1()$GG$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`nooq&
l  	ty'<'<d9K\K\F]dmdrdrss	ts7   B.G40F01G46$F2 G4B*F2 ,G42?G11G4r   c                v  K   | j                   j                  j                  dt        |       dd|i|       d{   }	 d|j                  cxk  rdk  rGn nDt        j                  t        t        t        |j                                     }t        ||	      S |j                  d
k(  rt        t        |j                        t        j                  t
        j                  t
        j                     t        t
        j                  t
        j                     |j                                           |j                         }t#        |j                  t        |j                        |      7 7# t         $ r6 t#        |j                  t        |j                        |j$                        w xY ww)aS  
        Get span by id

        Parameters
        ----------
        id : str

        strip_attachments : typing.Optional[bool]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[SpanPublic]
            Span resource
        rA   r   r   r   NrL   rM   r   rN   r   r   rQ   )r/   rU   rV   r   rR   rm   r   r   r   rI   r	   r   rX   rJ   r   r   r   r   r>   r   s          r2   r   z"AsyncRawSpansClient.get_span_by_id  sx    0 ..;;CC 0 456#%6 , D 
 
		ti++1c1 ( ) 0 ))%HH$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`nooA
<  	ty'<'<d9K\K\F]dmdrdrss	ts5   ;F9E4F9AE7 F9B*E7 	,F97?F66F9c                   K   | j                   j                  j                  dt        |       d|       d{   }	 d|j                  cxk  rdk  rn nt        |d      S |j                  dk(  rt        t        |j                        t        j                  t        j                  t        j                     t        t        j                  t        j                     |j                         	            
      |j                         }t!        |j                  t        |j                        |      7 # t        $ r6 t!        |j                  t        |j                        |j"                        w xY ww)a  
        Delete span by id

        Parameters
        ----------
        id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[None]
        rA   r   r   NrL   rM   rN   r   r   r   rQ   )r/   rU   rV   r   rR   r	   r   rX   rJ   rm   r   r   r   r   rI   r   r   r>   r   s        r2   r   z%AsyncRawSpansClient.delete_span_by_id  sB    " ..;;CC 0 456+ D 
 
	
	ti++1c1()$GG$$+) !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo-
(  	ty'<'<d9K\K\F]dmdrdrss	ts4   8E>D:E> $D< $E>%B*D< ,E><?E;;E>r   r   r   c                  K   | j                   j                  j                  dt        |       di d|d|d|d|d|d|d	|d
t	        |	t
        d      dt	        |
t
        d      dt	        |t
        d      d|d|d|d|d|d|d|t	        |t        d      |dddi|t               d{   }	 d|j                  cxk  rdk  rn nt        |d      S |j                  dk(  rt        t        |j                        t        j                  t        j                  t        j                      t#        t        j                  t        j                      |j%                                            |j%                         }t)        |j                  t        |j                        |!      7 # t&        $ r6 t)        |j                  t        |j                        |j*                  !      w xY ww)"ah  
        Update span by id

        Parameters
        ----------
        id : str

        trace_id : str

        project_name : typing.Optional[str]
            If null and project_id not specified, Default Project is assumed

        project_id : typing.Optional[str]
            If null and project_name not specified, Default Project is assumed

        parent_span_id : typing.Optional[str]

        name : typing.Optional[str]

        type : typing.Optional[SpanUpdateType]

        end_time : typing.Optional[dt.datetime]

        input : typing.Optional[JsonListString]

        output : typing.Optional[JsonListString]

        metadata : typing.Optional[JsonListString]

        model : typing.Optional[str]

        provider : typing.Optional[str]

        tags : typing.Optional[typing.Sequence[str]]
            Tags

        tags_to_add : typing.Optional[typing.Sequence[str]]
            Tags to add

        tags_to_remove : typing.Optional[typing.Sequence[str]]
            Tags to remove

        usage : typing.Optional[typing.Dict[str, int]]

        total_estimated_cost : typing.Optional[float]

        error_info : typing.Optional[ErrorInfo]

        ttft : typing.Optional[float]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[None]
        rA   r   r   r   r   r   ra   r   r   r   rg   rh   r   r   r   r   r   r   r   r   r   r   rE   rF   rG   NrL   rM   rN   r   r   r   rQ   )r/   rU   rV   r   r   r   r   rW   rR   r	   r   rX   rJ   rm   r   r   r   r   rI   r   r   r>   r   s                           r2   r   zAsyncRawSpansClient.update_span"  sj    d ..;;CC 0 456j H !.	
   H @!n A"~ C$7" #$ H%& '( {)* !.+, -. '(</0 F&9 7<  2 ,I D %
 %
	L	ti++1c1()$GG$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`nooo%
j  	ty'<'<d9K\K\F]dmdrdrss	ts7   B9G?;F;<G?$F= %G?&B*F= ,G?=?G<<G?c                  K   | j                   j                  j                  ddd|iddi|t               d{   }	 d|j                  cxk  rd	k  rn nt        |d
      S |j                         }t        |j                  t        |j                        |      7 e# t        $ r6 t        |j                  t        |j                        |j                        w xY ww)a  
        Delete span comments

        Parameters
        ----------
        ids : typing.Sequence[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[None]
        r   rC   r|   rE   rF   rG   NrL   rM   rN   rQ   )r/   rU   rV   rW   rR   r	   rI   r   r   rX   rJ   r>   r   s        r2   r   z(AsyncRawSpansClient.delete_span_comments  s     " ..;;CC.s  2 , D 
 
		ti++1c1()$GG&^^-N 9#8#8$yGXGXBY`noo%
   	ty'<'<d9K\K\F]dmdrdrss	ts2   7C#BC#$B! #C#$B! 4,C#!?C  C#r   r   c                  K   | j                   j                  j                  dt        |       dd||dddi|t               d{   }	 d	|j
                  cxk  rd
k  rn nt        |d      S |j                         }t        |j
                  t        |j                        |      7 e# t        $ r6 t        |j
                  t        |j                        |j                        w xY ww)aG  
        Delete span feedback score

        Parameters
        ----------
        id : str

        name : str

        author : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[None]
        rA   r   rC   r   rE   rF   rG   NrL   rM   rN   rQ   r  r   s          r2   r   z.AsyncRawSpansClient.delete_span_feedback_score  s     4 ..;;CC 0 455LM 
  2 , D 
 
		ti++1c1()$GG&^^-N 9#8#8$yGXGXBY`noo'
"  	ty'<'<d9K\K\F]dmdrdrss	ts6   AC1B-C1$B/ 1C12B/ ,C1/?C..C1r   c                *  K   | j                   j                  j                  dd||d|       d{   }	 d|j                  cxk  rdk  rGn nDt	        j
                  t        t        t        |j                                     }t        ||	      S |j                         }t        |j                  t        |j                        |
      7 # t        $ r6 t        |j                  t        |j                        |j                  
      w xY ww)a  
        Find Feedback Score names

        Parameters
        ----------
        project_id : typing.Optional[str]

        type : typing.Optional[FindFeedbackScoreNames1RequestType]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[FeedbackScoreNamesPublic]
            Feedback Scores resource
        r   r   r   r   NrL   rM   r   rN   rQ   )r/   rU   rV   rR   rm   r   r   r   rI   r	   r   r   rX   rJ   r>   r   s          r2   r   z.AsyncRawSpansClient.find_feedback_score_names1  s     0 ..;;CC4( , D 
 
		ti++1c1, 6 ) 0 ))%HH&^^-N 9#8#8$yGXGXBY`noo-
(  	ty'<'<d9K\K\F]dmdrdrss	ts3   0DCDAC DC $,D?DDr   r   c                  K   | j                   j                  j                  dt        |       dt        |       d|       d{   }	 d|j                  cxk  rdk  rGn nDt        j                  t        t        t        |j                                     }t        ||	      S |j                  d
k(  rt        t        |j                        t        j                  t
        j                  t
        j                     t        t
        j                  t
        j                     |j                                           |j                         }t#        |j                  t        |j                        |      7 7# t         $ r6 t#        |j                  t        |j                        |j$                        w xY ww)aA  
        Get span comment

        Parameters
        ----------
        span_id : str

        comment_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[Comment]
            Comment resource
        rA   r   r   r   NrL   rM   r   rN   r   r   rQ   )r/   rU   rV   r   rR   rm   r   r   r   rI   r	   r   rX   rJ   r   r   r   r   r>   r   s          r2   r   z$AsyncRawSpansClient.get_span_comment1  sx    ( ..;;CC 0 9:*EUV`EaDbc+ D 
 
	
	ti++1c1 % ) 0 ))%HH$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`noo;
6  	ty'<'<d9K\K\F]dmdrdrss	ts8   AGE=GAF  'G(B*F  ,G ?F??Gr   c       	         j  K   | j                   j                  j                  dd|||||||t        |      nd|t        |      ndd|	       d{   }
	 d|
j                  cxk  rdk  rGn nDt        j                  t        t        t        |
j                                     }t        |
|	      S |
j                         }t        |
j                  t        |
j                        |
      7 # t        $ r6 t        |
j                  t        |
j                        |
j                  
      w xY ww)a  
        Get span stats

        Parameters
        ----------
        project_id : typing.Optional[str]

        project_name : typing.Optional[str]

        trace_id : typing.Optional[str]

        type : typing.Optional[GetSpanStatsRequestType]

        filters : typing.Optional[str]

        search : typing.Optional[str]

        from_time : typing.Optional[dt.datetime]

        to_time : typing.Optional[dt.datetime]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[ProjectStatsPublic]
            Span stats resource
        r   r   Nr   r   rL   rM   r   rN   rQ   )r/   rU   rV   r   rR   rm   r   r   r   rI   r	   r   r   rX   rJ   r>   r   s                r2   r   z"AsyncRawSpansClient.get_span_statsd  s/    T ..;;CC$( ,$" >G>S/	:Y]:A:M-g6SW	 , D 
 
		ti++1c1& 0 ) 0 ))%HH&^^-N 9#8#8$yGXGXBY`noo9
4  	ty'<'<d9K\K\F]dmdrdrss	ts7   AD3C/D3AC1 3D34C1 ,D31?D00D3r   c          
        K   | j                   j                  j                  dddt        |t        j
                  t           d      iddi|t               d	{   }	 d
|j                  cxk  rdk  rn nt        |d	      S |j                         }t        |j                  t        |j                        |      7 e# t        $ r6 t        |j                  t        |j                        |j                        w xY ww)a:  
        Batch feedback scoring for spans

        Parameters
        ----------
        scores : typing.Sequence[FeedbackScoreBatchItem]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[None]
        r   rf   r   rg   rh   rE   rF   rG   NrL   rM   rN   rQ   )r/   rU   rV   r   rm   rv   r   rW   rR   r	   rI   r   r   rX   rJ   r>   r   s        r2   r   z(AsyncRawSpansClient.score_batch_of_spans  s     ( ..;;CC.A"v?U/Vbi  2 , D 
 
		ti++1c1()$GG&^^-N 9#8#8$yGXGXBY`noo)
$  	ty'<'<d9K\K\F]dmdrdrss	tr  r   r   r   c                 K   | j                   j                  j                  dd||||t        |t        j
                  t           d      ||||	|
d
ddit              4 d	{   d
t        t        j                  t              ffd} |        d	{    d	d	d	      d	{    y	7 L7 7 	# 1 d	{  7  sw Y   y	xY ww)a  
        Search spans

        Parameters
        ----------
        trace_id : typing.Optional[str]

        project_name : typing.Optional[str]

        project_id : typing.Optional[str]

        type : typing.Optional[SpanSearchStreamRequestPublicType]

        filters : typing.Optional[typing.Sequence[SpanFilterPublic]]

        limit : typing.Optional[int]
            Max number of spans to be streamed

        last_retrieved_id : typing.Optional[str]

        truncate : typing.Optional[bool]
            Truncate image included in either input, output or metadata

        from_time : typing.Optional[dt.datetime]
            Filter spans created from this time (ISO-8601 format).

        to_time : typing.Optional[dt.datetime]
            Filter spans created up to this time (ISO-8601 format). If not provided, defaults to current time. Must be after 'from_time'.

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.

        Returns
        -------
        typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[bytes]]]
            Spans stream or error during process
        r   rC   rg   rh   r   rE   rF   rG   Nr?   c                    K   	 dj                   cxk  rdk  r=n n:j                  dd       nd } t        d j                  |       2              S j	                          d {    j                   dk(  rt        t        j                        t        j                  t        j                  t        j                     t        t        j                  t        j                     j                                     	      j                         }t        j                   t        j                        |
      7 # t        $ r6 t        j                   t        j                        j                   
      w xY ww)NrL   rM   r   c                2   K   | 3 d {   }| 7 
6 y wr-   r   r   s     r2   r   zCAsyncRawSpansClient.search_spans.<locals>.stream.<locals>.<genexpr>)	  s     !k!k6&!k!ks   r   rN   r   r   r   rQ   )rR   r   r	   aiter_bytesareadr   rX   rJ   rm   r   r   r   r   rI   r   r   r>   r   s     r2   r   z0AsyncRawSpansClient.search_spans.<locals>.stream#	  sK    i339c9Q`Qlo&9&9,&Mrv0%.!kY=R=R^i=R=j!k   $//+++ ,,3-$():):$;!' &

 ; ,*0//&***E,5NN,<!""	 	 &/^^%5N
 9+@+@$yO`O`Jahvww# , ' "$-$9$94	HYHYCZajaoao s<   FAE FE *E+B.E +FE ?FF)r/   rU   r   r   rm   rv   r   rW   r	   AsyncIteratorr   r  s              ` @r2   r  z AsyncRawSpansClient.search_spans  s     j ''44;;%$ ,(B#@P0Q]d %6$&"  2 ,+ < 
 
, x"3F4H4H4O"P x6 . g
 
 
f !g
 
 
 
sZ   A"C&B3'C*0B9B5B9"C-B7.C5B97C9C?C CCc                   K   | j                   j                  j                  dt        |       d||||||dddi|t               d{   }		 d|	j
                  cxk  rd	k  rn nt        |	d
      S |	j
                  dk(  rt        t        |	j                        t        j                  t        j                  t        j                     t        t        j                  t        j                     |	j                                           |	j                         }
t#        |	j
                  t        |	j                        |
      7 # t         $ r6 t#        |	j
                  t        |	j                        |	j$                        w xY ww)a  
        Update span comment by id

        Parameters
        ----------
        comment_id : str

        text : str

        id : typing.Optional[str]

        created_at : typing.Optional[dt.datetime]

        last_updated_at : typing.Optional[dt.datetime]

        created_by : typing.Optional[str]

        last_updated_by : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[None]
        r  r   rD   rE   rF   rG   NrL   rM   rN   r   r   r   rQ   )r/   rU   rV   r   rW   rR   r	   r   rX   rJ   rm   r   r   r   r   rI   r   r   r>   r  s              r2   r  z'AsyncRawSpansClient.update_span_comment@	  sn    L ..;;CC()9*)E(FG(#2(#2  2 , D 
 
	"	ti++1c1()$GG$$+# !2!23

3$"(//&**"=$-NN$4	 	 '^^-N 9#8#8$yGXGXBY`nooE
@  	ty'<'<d9K\K\F]dmdrdrss	ts7   AF
E
F$E 4F5B*E ,F?FF)<r  r  r	  r   r3   rW   ro   rm   r   r
  r  r   r	   r\   r  r   rn   r#   rq   rv   r!   rx   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  asynccontextmanagerr(   r   r*  r   r  r  r   r5   r2   r  r    s   .*< . $(378<+/04;?=p=p 	=p
 OOC =p OOBKK0=p  5=p OOC(=p  -=p  8=p 
4	 =pL /3'+378<+/04IM;?OpOp 	Op
 Op $Op s+Op $Op OOBKK0Op  5Op OOC(Op  -Op  S*_)EFOp  8Op 
4	 Opd hl%p	2%pEK__UcEd%p	4	 %pX -1;?=p __S!=p 	=p
 OOD)=p  8=p 
4	 =pD &*%)-1+/)->B(,*.37(,(,'+2604;?#^p ooc"^p ooc"	^p
 ooc*^p OOC(^p //#&^p oo:;^p %^p //$'^p "??40^p %^p %^p $^p ??2;;/^p  -!^p"  8#^p$ 
>	*%^pH $(-1)-/3%)/3156:7;9=&*)-6:8<6:8<7;=A'+;?/Gp KKGp OOC 	Gp
 ooc*Gp //#&Gp ,Gp ooc"Gp oom,Gp //"++.Gp 23Gp  34Gp //"56Gp s#Gp //#&Gp  oofooc23!Gp" v{{3845#Gp$ OON3%Gp&  5'Gp( %ooe4)Gp* '-ooc&:+Gp, ooe$-Gp.  8/Gp0 
4	 1GpZ 48;?8p8p "??40	8p
  88p 
:	&8pv NR'p'p+1??>+J'p	4	 'p\ .2+//3%)0415152648&*)-6:=A@D8<7;15'+;?/IpIp 	Ip
 ooc*Ip OOC(Ip ,Ip ooc"Ip oon-Ip //"++.Ip ~.Ip /Ip //.1Ip s#Ip //#&Ip  oofooc23!Ip" __V__S%9:#Ip$ (<=%Ip& v{{3845'Ip( %ooe4)Ip* OOI.+Ip, ooe$-Ip.  8/Ip0 
4	 1IpX `d#pooc*#p=C__^=\#p	4	 #pT (,;?-p-p 	-p
 $-p  8-p 
4	 -pd ,0DH;?.p OOC(.p oo@A	.p
  8.p 
3	4.pb dh1p1p(+1pAGQ_A`1p	7	#1pl ,0-1)-9=(,'+2604;?Fp OOC(Fp ooc*	Fp
 //#&Fp oo56Fp %Fp $Fp ??2;;/Fp -Fp  8Fp 
-	.FpX <@	(p  67(p  8	(p
 
4	 (pT ## *.-1+/CGFJ&*26*.2604;?g! //#&g! ooc*	g!
 OOC(g! oo?@g! 1A!BCg! s#g! "??3/g! //$'g! ??2;;/g! -g!  8g! 
		/0D0DU0KL	Mg! $g!\ $(378<+/04;?HpHp 	Hp
 OOC Hp OOBKK0Hp  5Hp OOC(Hp  -Hp  8Hp 
4	 Hpr5   r  )Or  r  r
  rm   json.decoderr   core.api_errorr   core.client_wrapperr   r   core.datetime_utilsr   core.http_responser	   r
   core.jsonable_encoderr   core.pydantic_utilitiesr   core.request_optionsr   core.serializationr   errors.bad_request_errorr   errors.conflict_errorr   errors.not_found_errorr   errors.not_implemented_errorr   types.commentr   types.error_infor   types.error_info_writer   types.feedback_score_batch_itemr   !types.feedback_score_names_publicr   types.feedback_score_sourcer   types.json_list_stringr   types.json_list_string_writer   types.project_stats_publicr   types.span_filter_publicr   types.span_page_publicr   types.span_publicr   types.span_updater   types.span_update_typer    types.span_writer!   types.span_write_typer"   types.value_entryr#   ,types.find_feedback_score_names1request_typer%   !types.get_span_stats_request_typer&   'types.get_spans_by_project_request_typer'   ,types.span_search_stream_request_public_typer(   r   r   rW   r*   r  r   r5   r2   <module>rO     s       ( % G 4 @ 4 2 1 H 6 1 2 > # ( 3 D H = 3 > ; 7 3 * * 3 ( 1 * \ F Q [ v{{6::s#kp kp\%lp lpr5   