
    ZiW                    l   S r SSKJr  SSKJr  SSKJrJrJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJrJrJrJrJrJrJr  SS	KJr  SS
KJrJrJrJrJrJrJr  SSK J!r!J"r"J#r#  \\\\S4   r$\\%\&\\\S4   r' " S S\5      r(\%\&\\)\&\*4   \(\)\&\4   4   4   r+ \ " S S\5      5       r, " S S\5      r- " S S\#5      r.\\(\.\)\&\*4   \)\&\4   4   r/ " S S\5      r0\0r1 " S S\05      r2 " S S\#5      r3 " S S\-5      r4 " S S\5      r5 " S S \5      r6\6r7 " S! S"\&\5      r8 " S# S$\5      r9\!S%   r: " S& S'\#S(S)9r; " S* S+\95      r< " S, S-\5      r=S. r> " S/ S0\5      r? " S1 S2\?5      r@ " S3 S4\&\5      rA " S5 S6\#S(S)9rB " S7 S8\?5      rC " S9 S:\5      rD " S; S<\D5      rE " S= S>\D5      rF " S? S@\5      rG " SA SB\5      rH " SC SD\#S(S)9rI " SE SF\#S(S)9rJ " SG SH\H5      rK " SI SJ\H5      rL " SK SL\5      rM " SM SN\M5      rN\ " SO SP\5      5       rO " SQ SR\#S(S)9rP " SS ST\#S(S)9rQ " SU SV\5      rR " SW SX\R5      rS " SY SZ\#S(S)9rT " S[ S\\5      rU\4R                  5          " S] S^\5      rW " S_ S`\5      rX " Sa Sb\#S(S)9rY " Sc Sd\#S(S)9rZ " Se Sf\5      r[ " Sg Sh\5      r\ " Si Sj\5      r] " Sk Sl\5      r^ " Sm Sn\5      r_ " So Sp\5      r` " Sq Sr\&\5      ra " Ss St\5      rb " Su Sv\5      rc " Sw Sx\5      rd\\\b\c\d4   \" SySz94   re  " S{ S|\5      rf " S} S~\5      rg " S S\5      rh " S S\5      ri " S S\#S(S)9rj " S S\#S(S)9rk " S S\#S(S)9rl " S S\#S(S)9rm " S S\#5      rn " S S\#S(S)9ro " S S\#5      rp " S S\45      rq " S S\#5      rr " S S\#5      rs " S S\5      rt " S S\5      ru " S S\5      rv " S S\5      rwSS.         SS jjrx " S S5      ry " S S5      rz " S S\5      r{ " S S\5      r| " S S\5      r} " S S\5      r~ " S S\}5      r " S S\5      rg)zSchemas for the LangSmith API.    )annotations)Iterator)datetime	timedeltatimezone)Decimal)Enum)Path)	AnnotatedAny
NamedTupleOptionalProtocolUnionruntime_checkable)UUID)	BaseModel
ConfigDictFieldPrivateAttr
StrictBoolStrictFloat	StrictInt)LiteralNotRequired	TypedDictNc                  .    \ rS rSr% SrS\S'   S\S'   Srg)	
Attachment$   a^  Annotated type that will be stored as an attachment if used.

Examples:
    ```python
    from langsmith import traceable
    from langsmith.schemas import Attachment


    @traceable
    def my_function(bar: int, my_val: Attachment):
        # my_val will be stored as an attachment
        # bar will be stored as inputs
        return bar
    ```
str	mime_typeUnion[bytes, Path]data N__name__
__module____qualname____firstlineno____doc____annotations____static_attributes__r$       k/var/www/eduai.edurigo.com/question_generate/ques_gen_env/lib/python3.13/site-packages/langsmith/schemas.pyr   r   $   s      N
r-   r   c                  >    \ rS rSrSrSS	S jjrS
SS jjrSS jrSrg)BinaryIOLike@   z$Protocol for binary IO-like objects.c                    g)zRead function.Nr$   )selfsizes     r.   readBinaryIOLike.readD       r-   c                    g)zSeek function.Nr$   )r3   offsetwhences      r.   seekBinaryIOLike.seekH   r7   r-   c                    g)zGet value function.Nr$   r3   s    r.   getvalueBinaryIOLike.getvalueL   r7   r-   r$   N))r4   intreturnbytes)r   )r9   rB   r:   rB   rC   rB   )rC   rD   )	r&   r'   r(   r)   r*   r5   r;   r?   r,   r$   r-   r.   r0   r0   @   s    .r-   r0   c                  t    \ rS rSr% SrS\S'   \" SS9rS\S'   \" SS9rS\S	'   \" SS9r	S\S
'   \
" SSS9rSrg)ExampleBaseQ   zExample base model.r   
dataset_idNdefaultOptional[dict[str, Any]]inputsoutputsmetadataT)frozenarbitrary_types_allowedr$   )r&   r'   r(   r)   r*   r+   r   rL   rM   rN   r   model_configr,   r$   r-   r.   rF   rF   Q   sG    ',T':F$:(-d(;G%;).t)<H&<T4HLr-   rF   c                  *    \ rS rSr% S\S'   S\S'   Srg)_AttachmentDict\   r    r!   r"   r#   r$   N)r&   r'   r(   r)   r+   r,   r$   r-   r.   rS   rS   \   s    N
r-   rS   c                     ^  \ rS rSr% SrSrS\S'   \" S S9rS\S	'   \" SS
9r	S\S'   \" SS
9r
S\S'   \" SS
9rS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   U 4S jrSrU =r$ )ExampleCreatef   z Example upload with attachments.NOptional[UUID]idc                 J    [         R                  " [        R                  5      $ Nr   nowr   utcr$   r-   r.   <lambda>ExampleCreate.<lambda>j       hll9Sr-   default_factoryr   
created_atrI   rK   rL   rM   rN   Optional[Union[str, list[str]]]splitz$Optional[dict[str, _AttachmentLike]]attachmentsFbooluse_source_run_ioOptional[list[str]]use_source_run_attachmentssource_run_idc                &   > [         TU ]  " S0 UD6  gzInitialize from dict.Nr$   super__init__r3   r#   	__class__s     r.   rq   ExampleCreate.__init__t        4 r-   r$   )r&   r'   r(   r)   r*   rY   r+   r   rd   rL   rM   rN   rf   rg   ri   rk   rl   rq   r,   __classcell__rs   s   @r.   rV   rV   f   s    *B 1STJT',T':F$:(-d(;G%;).t)<H&<-1E*18<K5<#t#6: 3:$(M>(! !r-   rV   c                  $    \ rS rSr% SrS\S'   Srg)ExampleUpsertWithAttachments|   z Example create with attachments.r   rH   r$   Nr%   r$   r-   r.   ry   ry   |   s    *r-   ry   c                  8    \ rS rSr% SrS\S'   S\S'   S\S'   S	rg
)AttachmentInfo   zInfo for an attachment.r    presigned_urlr0   readerOptional[str]r!   r$   Nr%   r$   r-   r.   r|   r|      s    !r-   r|   c                    ^  \ rS rSr% SrS\S'   \" S S9rS\S'   \" \" S	5      S
9r	S\S'   \" SS
9r
S\S'   SrS\S'   \" SS
9rS\S'    \" SS
9rS\S'   \" SS
9rS\S'     S       SU 4S jjjr\SS j5       rS rSrU =r$ )Example   zExample model.r   rY   c                 H    [         R                  " S[        R                  S9$ )Nr   )tz)r   fromtimestampr   r^   r$   r-   r.   r_   Example.<lambda>   s     6 6qX\\ Jr-   rb   r   rd   z$00000000-0000-0000-0000-000000000000rI   rH   NOptional[datetime]modified_atrX   rl   z#Optional[dict[str, AttachmentInfo]]rg   r   	_host_url
_tenant_idc                >   > [         TU ]  " S0 UD6  Xl        X l        g)Initialize a Dataset object.Nr$   )rp   rq   r   r   )r3   r   r   kwargsrs   s       r.   rq   Example.__init__   s     	"6""$r-   c                    U R                   (       ac  SU R                   SU R                   3nU R                  (       a&  U R                    S[	        U R                  5       U 3$ U R                    U 3$ g)URL of this run within the app.
/datasets/z/e//o/N)r   rH   rY   r   r    )r3   paths     r.   urlExample.url   sh     >>0DGG9=D..)S-A,B4&IInn%dV,,r-   c                n    U R                    SU R                   SU R                   SU R                   S3$ )5Return a string representation of the RunBase object.(id=z, dataset_id=z, link=''))rs   rY   rH   r   r>   s    r.   __repr__Example.__repr__   s8    ..!dggYmDOO;LHUYU]U]T^^`aar-   )r   r   )NN)r   r   r   rX   r   r   rC   NonerC   r   )r&   r'   r(   r)   r*   r+   r   rd   r   rH   r   rl   rg   r   r   r   rq   propertyr   r   r,   rv   rw   s   @r.   r   r      s    H JJ  T*P%QRJR&+D&9K#9$(M>(7<T7JK4J.*48I}8!,T!:J: $(%)	% 	% #	% 		%
 
	% 	%  b br-   r   c                  J    \ rS rSr% Sr\" \SS9rS\S'   \" \	SS9r
S\S	'   S
rg)AttachmentsOperations   z%Operations to perform on attachments.z,Mapping of old attachment names to new names)rc   descriptionzdict[str, str]renamez List of attachment names to keep	list[str]retainr$   N)r&   r'   r(   r)   r*   r   dictr   r+   listr   r,   r$   r-   r.   r   r      s5    /"*XFN  *LFI r-   r   c                     ^  \ rS rSr% SrS\S'   SrS\S'   \" SS9rS	\S
'   \" SS9r	S	\S'   \" SS9r
S	\S'   SrS\S'   SrS\S'   SrS\S'   \" SS9rU 4S jrSrU =r$ )ExampleUpdate   z Example update with attachments.r   rY   NrX   rH   rI   rK   rL   rM   rN   re   rf   zOptional[Attachments]rg   zOptional[AttachmentsOperations]attachments_operationsTrO   c                &   > [         TU ]  " S0 UD6  grn   ro   rr   s     r.   rq   ExampleUpdate.__init__   ru   r-   r$   )r&   r'   r(   r)   r*   r+   rH   r   rL   rM   rN   rf   rg   r   r   rQ   rq   r,   rv   rw   s   @r.   r   r      s{    *H!%J%',T':F$:(-d(;G%;).t)<H&<-1E*1)-K&->B;BT*L! !r-   r   c                  $    \ rS rSrSrSrSrSrSrg)DataType   zEnum for dataset data types.kvllmchatr$   N)	r&   r'   r(   r)   r*   r   r   r   r,   r$   r-   r.   r   r      s    &	B
CDr-   r   c                  L    \ rS rSr% SrS\S'   SrS\S'   SrS\S	'   \" S
S9r	Sr
g)DatasetBase   zDataset base model.r    nameNr   r   zOptional[DataType]	data_typeTr   r$   )r&   r'   r(   r)   r*   r+   r   r   r   rQ   r,   r$   r-   r.   r   r      s)    
I!%K%$(I!(T*Lr-   r   )remove_system_messagesconvert_to_openai_messageconvert_to_openai_toolremove_extra_fieldsextract_tools_from_runc                  .    \ rS rSr% SrS\S'   S\S'   Srg)	DatasetTransformation   z#Schema for dataset transformations.r   r   z%Union[DatasetTransformationType, str]transformation_typer$   Nr%   r$   r-   r.   r   r      s    -
O>>r-   r   F)totalc                  0  ^  \ rS rSr% SrS\S'   S\S'   \" SS9rS	\S
'   SrS\S'   Sr	S\S'   Sr
S	\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   \" SS9rS\S'   \" SS9rS\S'   \" SS9rS\S'      S         SU 4S jjjr\SS j5       rSrU =r$ ) Dataset   zDataset ORM model.r   rY   r   rd   NrI   r   r   Optional[int]example_countsession_countlast_session_start_timerK   inputs_schemaoutputs_schemaz%Optional[list[DatasetTransformation]]transformationsrN   r   r   rX   r   _public_pathc                   > SU;   a  UR                  S5      US'   SU;   a  UR                  S5      US'   [        TU ]  " S0 UD6  Xl        X l        X0l        g)r   inputs_schema_definitionr   outputs_schema_definitionr   Nr$   )poprp   rq   r   r   r   )r3   r   r   r   r   rs   s        r.   rq   Dataset.__init__  s^     &/&,jj1K&LF?#&&0'-zz2M'NF#$"6""$(r-   c                6   U R                   (       a  U R                  (       a  U R                    U R                   3$ U R                  (       a1  U R                    S[        U R                  5       SU R                   3$ U R                    SU R                   3$ g)r   r   r   N)r   r   r   r    rY   r>   s    r.   r   Dataset.url  s}     >>  ..)$*;*;)<==..)S-A,B*TWWIVVnn%Zy99r-   )r   r   r   )NNN)
r   r   r   rX   r   r   r   r   rC   r   r   )r&   r'   r(   r)   r*   r+   r   r   r   r   r   r   r   r   rN   r   r   r   r   rq   r   r   r,   rv   rw   s   @r.   r   r      s    H&+D&9K#9#'M='#'M='26/6.2M+2/3N,3=AO:A)-H&-*48I}8!,T!:J:"-d";L-; $(%)&*	) ) #) $	)
 ) 
) )&  r-   r   c                  2    \ rS rSr% SrSrS\S'   S\S'   Srg)	DatasetVersioni'  z%Class representing a dataset version.Nrj   tagsr   as_ofr$   )r&   r'   r(   r)   r*   r   r+   r,   r$   r-   r.   r   r   '  s    / $D
$Or-   r   c                 
    S0 0$ )NrN   r$   r$   r-   r.   _default_extrar   .  s    r-   c                  `   \ rS rSr% SrS\S'    S\S'    S\S'    S\S	'    S
rS\S'    \" \S9r	S\S'    S
r
S\S'    S
rS\S'    S
rS\S'    \" \S9rS\S'    S
rS\S'    S
rS\S'    S
rS\S'    S
rS\S'    \" \S9rS\S'    \S&S j5       r\S'S  j5       r\S(S! j5       rS" r\" S#S$9rS%rg
))RunBasei2  a  Base Run schema.

A Run is a span representing a single unit of work or operation within your LLM app.
This could be a single call to an LLM or chain, to a prompt formatting call,
to a runnable lambda invocation. If you are familiar with OpenTelemetry,
you can think of a run as a span.
r   rY   r    r   r   
start_timerun_typeNr   end_timerb   Optional[dict]extrar   error
serializedOptional[list[dict]]eventsr   rL   rM   rX   reference_example_idparent_run_idrj   r   z-Union[Attachments, dict[str, AttachmentInfo]]rg   c                b    U R                   c  0 U l         U R                   R                  S0 5      $ zRetrieve the metadata (if any).rN   )r   
setdefaultr>   s    r.   rN   RunBase.metadatao  s,     ::DJzz$$Z44r-   c                8    U R                   R                  S5      $ )z"Retrieve the revision ID (if any).revision_id)rN   getr>   s    r.   r   RunBase.revision_idv  s     }}  //r-   c                l    U R                   c  gU R                   U R                  -
  R                  5       $ )zLatency in seconds.N)r   r   total_secondsr>   s    r.   latencyRunBase.latency{  s-     == />>@@r-   c                n    U R                    SU R                   SU R                   SU R                   S3$ )r   r   z, name='z', run_type='r   )rs   rY   r   r   r>   s    r.   r   RunBase.__repr__  s3    ..!dggYhtyykt}}o]_``r-   T)rP   r   rC   dict[str, Any])rC   rX   )rC   Optional[float])r&   r'   r(   r)   r*   r+   r   r   r   r   r   r   r   r   rL   rM   r   r   r   rg   r   rN   r   r   r   r   rQ   r,   r$   r-   r.   r   r   2  s-    	H(
I* M" $(H '-!.AE>A=E=;!%J%F#'F ' .FD.""G^"/+/./@$(M>(@ $D
$6AFBK> 
 5 5 0 0 A Aa d;Lr-   r   c                  d  ^  \ rS rSr% SrSrS\S'    SrS\S'    SrS\S	'    Sr	S
\S'    Sr
S\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S '    S!\S"'    \" S#S$9rS%\S&'    SrS'\S('    \" SS$9rS\S)'   S5S6U 4S* jjjr\S7S+ j5       r \S8S, j5       r!\S8S- j5       r"\S9S. j5       r#\S9S/ j5       r$\S:S0 j5       r%\S:S1 j5       r&\S;S2 j5       r'\S;S3 j5       r(S4r)U =r*$ )<Runi  z$Run schema when loading from the DB.NrX   
session_idOptional[list[UUID]]child_run_idszOptional[list[Run]]
child_runsrK   feedback_statsr   app_pathmanifest_idstatusr   prompt_tokenscompletion_tokenstotal_tokenszOptional[dict[str, int]]prompt_token_detailscompletion_token_detailsr   first_token_timeOptional[Decimal]
total_costprompt_costcompletion_costzOptional[dict[str, Decimal]]prompt_cost_detailscompletion_cost_detailsparent_run_idsr   trace_id rI   r    dotted_orderOptional[bool]
in_datasetr   c                  > UR                  S5      (       d  SUR                  S5      0UEnUR                  SS5      =(       d    0 n[        TU ]  " S0 UDSU0D6  Xl        U R
                  R                  c,  U R
                  R                  [        R                  S9U l        U R                  bC  U R                  R                  c,  U R                  R                  [        R                  S9U l
        U R                  R                  5       (       d@  U R                  (       d.  U R
                  R                  5        U R                   3U l        ggg)Initialize a Run object.r  rY   rL   Ntzinfor$   )r   r   rp   rq   r   r   r  replacer   r^   r   r  stripr   	isoformatrY   )r3   r   r   rL   rs   s       r.   rq   Run.__init__  s   zz*%% &**T"2=f=FHd+1r161&1"??!!)"oo55X\\5JDO==$)=)=)E MM111FDM  &&((1C1C#'??#<#<#>"?y ID 2D(r-   c                |    U R                   (       a+  U R                  (       a  U R                    U R                   3$ g)r   N)r   r  r>   s    r.   r   Run.url  s,     >>dmmnn%dmm_55r-   c                    U R                   $ )zAlias for prompt_tokens.)r  r>   s    r.   input_tokensRun.input_tokens  s     !!!r-   c                    U R                   $ )zAlias for completion_tokens.)r  r>   s    r.   output_tokensRun.output_tokens  s     %%%r-   c                    U R                   $ )zAlias for prompt_cost.)r  r>   s    r.   
input_costRun.input_cost  s     r-   c                    U R                   $ )zAlias for completion_cost.)r  r>   s    r.   output_costRun.output_cost  s     ###r-   c                    U R                   $ )zAlias for prompt_token_details.)r	  r>   s    r.   input_token_detailsRun.input_token_details  s     (((r-   c                    U R                   $ )zAlias for output_token_details.)r
  r>   s    r.   output_token_detailsRun.output_token_details  s     ,,,r-   c                    U R                   $ )zAlias for prompt_cost_details.)r  r>   s    r.   input_cost_detailsRun.input_cost_details  s     '''r-   c                    U R                   $ )z"Alias for completion_cost_details.)r  r>   s    r.   output_cost_detailsRun.output_cost_details	  s     +++r-   )r   r  r   r   r[   r   r   r   r   rC   r   r   )rC   z
int | None)rC   zDecimal | None)rC   dict[str, int] | None)rC   zdict[str, Decimal] | None)+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   rq   r   r   r#  r&  r)  r,  r/  r2  r5  r8  r,   rv   rw   s   @r.   r   r     s   .!%J%-*.M'.4&*J#*M/3N,3&"Hm"7"&K&: FM .#'M='/'+}+/"&L-&15929 :>6= ,0(/-$(J!(M%)K")G)-O&-C8<5< =A9@ ,0N(/!NCb)L#)
 "&J%+*48I}8J J   " " & &     $ $ ) ) - - ( ( , ,r-   r   c                  4    \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rg)RunTypeEnumi  z5(Deprecated) Enum for run types. Use string directly.toolchainr   	retriever	embeddingpromptparserr$   N)r&   r'   r(   r)   r*   r>  r?  r   r@  rA  rB  rC  r,   r$   r-   r.   r=  r=    s(    ?DE
CIIFFr-   r=  c                  
   \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'   S	\S'   S\S'   S	\S'   S\S'   S	\S'   S\S'   S\S'   S\S'   S\S'   S	\S'   S	\S'   S\S'   S\S'   S\S'   S\S'   S	\S'   S	\S '   S!\S"'   S\S#'   S$\S%'   S&rg')(RunLikeDicti  z&Run-like dictionary, for type-hinting.r    r   r=  r   r   r   r   rL   rM   r   r   r   r   r   r   rX   r   r  r   r   rj   r   inputs_s3_urlsoutputs_s3_urlsrY   r   session_namer   input_attachmentsoutput_attachmentsr   r  r  Attachmentsrg   r$   Nr%   r$   r-   r.   rE  rE    s    0
I  !!  
""##((%%&&Nr-   rE  c                  8    \ rS rSr% SrSrS\S'    SrS\S'   Srg)RunWithAnnotationQueueInfoi8  z&Run schema with annotation queue info.Nr   last_reviewed_timeadded_atr$   )	r&   r'   r(   r)   r*   rN  r+   rO  r,   r$   r-   r.   rM  rM  8  s"    0-1*1.#'H '3r-   rM  c                  \    \ rS rSr% SrS\S'    \" \S9rS\S'    Sr	S	\S
'    Sr
S\S'   Srg)FeedbackSourceBaseiA  z}Base class for feedback sources.

This represents whether feedback is submitted from the API, model, human labeler,
    etc.
r    typerb   rK   rN   NzOptional[Union[UUID, str]]user_idr   	user_namer$   )r&   r'   r(   r)   r*   r+   r   r   rN   rS  rT  r,   r$   r-   r.   rQ  rQ  A  s?     I*).t)DH&D6*.G'.:#I}#<r-   rQ  c                  (    \ rS rSr% SrSrS\S'   Srg)APIFeedbackSourceiR  zAPI feedback source.apizLiteral['api']rR  r$   Nr&   r'   r(   r)   r*   rR  r+   r,   r$   r-   r.   rV  rV  R  s     D. r-   rV  c                  (    \ rS rSr% SrSrS\S'   Srg)ModelFeedbackSourceiX  zModel feedback source.modelzLiteral['model']rR  r$   NrX  r$   r-   r.   rZ  rZ  X  s     $D
$r-   rZ  c                  "    \ rS rSrSrSr SrSrg)FeedbackSourceTypei^  zFeedback source type.rW  r[  r$   N)r&   r'   r(   r)   r*   APIMODELr,   r$   r-   r.   r]  r]  ^  s    
C2E"r-   r]  c                     \ rS rSr% SrS\S'    SrS\S'    SrS\S'    S	\S
'    S	\S'    S\S'    SrS\S'    Sr	S\S'    Sr
S\S'    SrS\S'    SrS\S'    SrS	\S'    SrS\S'    SrS	\S'    SrS	\S'    SrS\S'    \" SS9rS rg)!FeedbackBaseig  zFeedback schema.r   rY   Nr   rd   r   rX   run_idr  r    key
SCORE_TYPEscore
VALUE_TYPEvaluer   commentzUnion[str, dict, None]
correctionOptional[FeedbackSourceBase]feedback_sourcer   r   comparative_experiment_idfeedback_group_idr   r   Tr   r$   )r&   r'   r(   r)   r*   r+   rd   r   re  rg  rh  ri  rk  r   r   rl  rm  r   r   rQ   r,   r$   r-   r.   ra  ra  g  s    H(%)J"),&*K#*2<>	HAE:+E:Q!G]!2)-J&-!48O18%!%J%T%)J")E04~4X(,~,1 !E> 'T*Lr-   ra  c                  0    \ rS rSr% SrS\S'    S\S'   Srg)	FeedbackCategoryi  z+Specific value and label pair for feedback.floatrg  r   labelr$   Nr%   r$   r-   r.   ro  ro    s    5LCNr-   ro  c                  H    \ rS rSr% SrS\S'    S\S'    S\S'    S\S	'   S
rg)FeedbackConfigi  z:Represents _how_ a feedback value ought to be interpreted.z0Literal['continuous', 'categorical', 'freeform']rR  r   minmaxz Optional[list[FeedbackCategory]]
categoriesr$   Nr%   r$   r-   r.   rs  rs    s,    D
::	4	400@r-   rs  c                  D    \ rS rSr% SrS\S'    SrS\S'    SrS\S	'   S
rg)FeedbackCreatei  z"Schema used for creating feedback.rQ  rk  NzOptional[FeedbackConfig]feedback_configr  r   r$   )	r&   r'   r(   r)   r*   r+   ry  r   r,   r$   r-   r.   rx  rx    s&    ,''%04O-4% E> r-   rx  c                  J    \ rS rSr% SrS\S'   S\S'    S\S'    SrS	\S
'   Srg)Feedbacki  zSchema for getting feedback.r   rY   r   rd   r   Nrj  rk  r$   )r&   r'   r(   r)   r*   r+   rk  r,   r$   r-   r.   r{  r{    s*    &H,248O182r-   r{  c                    ^  \ rS rSr% SrS\S'    \" S S9rS\S'    S	rS
\S'    S	r	S\S'    S	r
S\S'    S	rS\S'    S\S'    S\S'    \" S	S9rS\S'   SSU 4S jjjr\SS j5       r\SS j5       r\SS j5       rSrU =r$ ) TracerSessioni  zZTracerSession schema for the API.

Sessions are also referred to as "Projects" in the UI.
r   rY   c                 J    [         R                  " [        R                  5      $ r[   r\   r$   r-   r.   r_   TracerSession.<lambda>  ra   r-   rb   r   r   Nr   r   r   r   r   rK   r   	tenant_idrX   reference_dataset_idrI   r   c                   > [         TU ]  " S0 UD6  Xl        U R                  R                  c-  U R                  R                  [        R                  S9U l        gg)r  Nr  r$   )rp   rq   r   r   r  r  r   r^   )r3   r   r   rs   s      r.   rq   TracerSession.__init__  sJ    "6""??!!)"oo55X\\5JDO *r-   c                v    U R                   (       a(  U R                    SU R                   SU R                   3$ g)r   r   /projects/p/N)r   r  rY   r>   s    r.   r   TracerSession.url  s3     >>nn%S(8TWWINNr-   c                ^    U R                   b  SU R                   ;  a  0 $ U R                   S   $ r   r   r>   s    r.   rN   TracerSession.metadata  -     ::4::!=Izz*%%r-   c                ^    U R                   b  SU R                   ;  a  / $ U R                   S   $ )zRetrieve the tags (if any).r   r   r>   s    r.   r   TracerSession.tags  s-     ::tzz!9Izz&!!r-   )r   r   r[   r:  r   r   rC   r   )r&   r'   r(   r)   r*   r+   r   r   r   r   r   r   r   r   rq   r   r   rN   r   r,   rv   rw   s   @r.   r}  r}    s    
 	H  1STJT+#'H ')!%K%)D-"&*E#*)O0((J*48I}8K K   & & " "r-   r}  c                     \ rS rSr% SrSrS\S'    SrS\S'    SrS\S'    Sr	S\S	'    Sr
S\S
'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'   Srg)TracerSessionResulti  ziA project, hydrated with additional information.

Sessions are also referred to as "Projects" in the UI.
Nr   	run_countOptional[timedelta]latency_p50latency_p99r  r  r  r   last_run_start_timerK   r  session_feedback_statsOptional[list[dict[str, Any]]]
run_facetsr  r  r  r  first_token_p50first_token_p99r   
error_rater$   )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    
  $I}#,'+K$+?'+K$+6"&L-&=#'M='D'+}+H.2+28/3N,3)7;4;115J.5-$(J!(M%)K")G)-O&-C+/O(/G+/O(/>"&J&)r-   r  c                  F    \ rS rSr% SrS\S'    S\S'    \S
S j5       rSrg	)BaseMessageLikei  z7A protocol representing objects similar to BaseMessage.r    contentzdict[Any, Any]additional_kwargsc                    g)z,Type of the Message, used for serialization.Nr$   r>   s    r.   rR  BaseMessageLike.type$  s    r-   r$   NrC   r    )	r&   r'   r(   r)   r*   r+   r   rR  r,   r$   r-   r.   r  r    s(    AL%%%C; ;r-   r  c                  <    \ rS rSr% SrS\S'    S\S'    S\S'   Srg	)
DatasetShareSchemai)  z*Represents the schema for a dataset share.r   rH   share_tokenr    r   r$   Nr%   r$   r-   r.   r  r  )  s    4 ,	H(r-   r  c                  T    \ rS rSr% SrS\S'    S\S'    S\S'    S\S	'    S
\S'   Srg)AnnotationQueueRubricItemi4  zRepresents a rubric item assigned to an annotation queue.

Links a feedback config to a queue with optional per-queue customization.
r    feedback_keyr   r   zOptional[dict[str, str]]value_descriptionsscore_descriptionsr  is_requiredr$   Nr%   r$   r-   r.   r  r  4  s6    
 =C00700(Nr-   r  c                      \ rS rSr% SrS\S'    S\S'    SrS\S	'    \" S
 S9rS\S'    \" S S9r	S\S'    S\S'   Sr
g)AnnotationQueueiF  zRepresents an annotation queue.r   rY   r    r   Nr   r   c                 J    [         R                  " [        R                  5      $ r[   r\   r$   r-   r.   r_   AnnotationQueue.<lambda>O  ra   r-   rb   r   rd   c                 J    [         R                  " [        R                  5      $ r[   r\   r$   r-   r.   r_   r  Q  ra   r-   
updated_atr  r$   )r&   r'   r(   r)   r*   r+   r   r   rd   r  r,   r$   r-   r.   r  r  F  sP    )H8
I+!%K%: 1STJT> 1STJTCODr-   r  c                  (    \ rS rSr% SrSrS\S'   Srg)AnnotationQueueWithDetailsiW  z,Represents an annotation queue with details.Nr   rubric_instructionsr$   )r&   r'   r(   r)   r*   r  r+   r,   r$   r-   r.   r  r  W  s    6)--;r-   r  c                  `    \ rS rSr% SrS\S'    S\S'    S\S'    S\S'    S\S	'    S
\S'   Srg)BatchIngestConfigi^  z"Configuration for batch ingestion.rh   use_multipart_endpointrB   scale_up_qsize_triggerscale_up_nthreads_limitscale_down_nempty_trigger
size_limitr   size_limit_bytesr$   Nr%   r$   r-   r.   r  r  ^  s:    ,  D<  7""AO/##8r-   r  c                  X    \ rS rSr% SrSrS\S'    SrS\S'    SrS	\S
'    Sr	S\S'   Sr
g)LangSmithInfoio  z'Information about the LangSmith server.r  r    versionNr   license_expiration_timezOptional[BatchIngestConfig]batch_ingest_configrK   instance_flagsr$   )r&   r'   r(   r)   r*   r  r+   r  r  r  r,   r$   r-   r.   r  r  o  s;    1GS.26/6+7;4;/3N,3r-   r  c                  L    \ rS rSr% SrS\S'    S\S'    S\S'    SrS	\S
'   Srg)LangSmithSettingsi~  z"Settings for the LangSmith tenant.r    rY   display_namer   rd   Nr   tenant_handler$   )r&   r'   r(   r)   r*   r+   r  r,   r$   r-   r.   r  r  ~  s)    ,G)*#'M='r-   r  c                  <    \ rS rSr% SrS\S'    S\S'    S\S'   S	rg
)FeedbackIngestTokeni  z2Represents the schema for a feedback ingest token.r   rY   r    r   r   
expires_atr$   Nr%   r$   r-   r.   r  r    s    <H.	H3+r-   r  c                  <    \ rS rSr% SrS\S'    S\S'    S\S'   S	rg
)RunEventi  zRun event schema.r    r   zUnion[datetime, str]timerK   r   r$   Nr%   r$   r-   r.   r  r    s    
I
$$,r-   r  c                  <    \ rS rSr% SrS\S'    S\S'    S\S'   Srg)	TimeDeltaInputi  zTimedelta input schema.rB   dayshoursminutesr$   Nr%   r$   r-   r.   r  r    s    !
IJLr-   r  c                  <    \ rS rSr% SrS\S'    S\S'    S\S'   Srg)	DatasetDiffInfoi  z;Represents the difference information between two datasets.z
list[UUID]examples_modifiedexamples_addedexamples_removedr$   Nr%   r$   r-   r.   r  r    s     E!!=:  <r-   r  c                      \ rS rSr% SrS\S'    SrS\S'    SrS\S'    S\S	'    S
\S'    S
\S'    S\S'    SrS\S'    Sr	S\S'    Sr
S\S'    \SS j5       rSrg)ComparativeExperimenti  zRepresents a comparative experiment.

This information summarizes evaluation results comparing
two or more models on a given dataset.
r   rY   Nr   r   r   r  r   rd   r   r  rK   r   r   experiments_infor  c                ^    U R                   b  SU R                   ;  a  0 $ U R                   S   $ r   r   r>   s    r.   rN   ComparativeExperiment.metadata  r  r-   r$   r   )r&   r'   r(   r)   r*   r+   r   r   r   r  r  r   rN   r,   r$   r-   r.   r  r    s     	H?D-:!%K%@OGDJJ&*E#*?-1*1\/3N,3P& &r-   r  c                      \ rS rSr% Sr\" SS9rS\S'    S\S'    S\S'    S	\S
'    S\S'    SrS\S'    \	" SSS9r
S\S'    \	" SSS9rS\S'   Srg)PromptCommiti  z$Represents a Prompt with a manifest.T)populate_by_namer    ownerrepocommit_hashr   manifestz
list[dict]examplesNr   r   rQ   )rJ   aliasr   hub_model_configmodel_providerhub_model_providerr$   )r&   r'   r(   r)   r*   r   rQ   r+   r   r   r  r  r,   r$   r-   r.   r  r    sr    .t4LJ0
I!(%!%K%=',T'PnP1(-dBR(SS/r-   r  c                      \ rS rSr% SrS\S'    S\S'    S\S'    SrS	\S
'    SrS	\S'    SrS	\S'    Sr	S\S'    Sr
S\S'    SrS\S'    \" \S9rS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'   Srg)ListedPromptCommiti  z;Represents a listed prompt commit with associated metadata.r   rY   r    r  r  NrX   r  repo_id	parent_idr   r  r   rd   r  rb   r   example_run_idsr   r   num_downloads	num_viewsparent_commit_hashr   r$   )r&   r'   r(   r)   r*   r+   r  r  r  r  rd   r  r   r   r  r  r  r  r   r,   r$   r-   r.   r  r    s    EH6J)
I3"&K&O"G^"5 $I~$8!%K%*%)J")=%)J")B,1$,GO)GH#$M=$> I} :(,,1!%K%=r-   r  c                  @   \ rS rSr% SrS\S'    SrS\S'    SrS\S'    S\S	'    S\S
'    S\S'    S\S'    S\S'    S\S'    S\S'    SrS\S'    Sr	S\S'    S\S'    S\S'    S\S'    S\S'    S\S'    Sr
S\S'    SrS\S'    S\S'    SrS\S'    SrS\S '   S!rg)"Prompti  z"Represents a Prompt with metadata.r    repo_handleNr   r   readmerY   r  r   rd   r  rh   	is_publicis_archivedr   r   original_repo_idupstream_repo_idr  	full_namerB   	num_likesr  r  r  liked_by_auth_userlast_commit_hashnum_commitsoriginal_repo_full_nameupstream_repo_full_namer$   )r&   r'   r(   r)   r*   r+   r   r  r  r  r  r  r  r  r,   r$   r-   r.   r  r    s    ,!!%K%( FM #GN,*-O')
O.&*m*3&*m*30N<N"N)--@&*m*& -1]1:-1]1:r-   r  c                  0    \ rS rSr% SrS\S'    S\S'   Srg)	ListPromptsResponseiP  z A list of prompts with metadata.zlist[Prompt]reposrB   r   r$   Nr%   r$   r-   r.   r  r  P  s    *J&r-   r  c                  .    \ rS rSrSrSr Sr Sr SrSr	g)	PromptSortFieldiY  z$Enum for sorting fields for prompts.r  r  r  r  r$   N)
r&   r'   r(   r)   r*   r  r  r  r  r,   r$   r-   r.   r  r  Y  s%    .#MIJIr-   r  c                  4    \ rS rSr% SrSrS\S'    S\S'   Srg	)
	FileEntryif  zA file with inline content.filezLiteral['file']rR  r    r  r$   NrX  r$   r-   r.   r  r  f  s    %"D/"Lr-   r  c                  d    \ rS rSr% SrSrS\S'    S\S'    SrS	\S
'    SrS\S'    Sr	S\S'   Sr
g)
AgentEntryio  zA link to another agent repo.agentzLiteral['agent']rR  r    r  NrX   	commit_idr   r  r  r$   r&   r'   r(   r)   r*   rR  r+   r  r  r  r,   r$   r-   r.   r  r  o  sC    '$D
$( $I~$6E='!%K%-r-   r  c                  d    \ rS rSr% SrSrS\S'    S\S'    SrS	\S
'    SrS\S'    Sr	S\S'   Sr
g)
SkillEntryi~  zA link to a skill repo.skillzLiteral['skill']rR  r    r  NrX   r  r   r  r  r$   r	  r$   r-   r.   r  r  ~  sC    !$D
$( $I~$6E='!%K%-r-   r  rR  )discriminatorc                  <    \ rS rSr% SrS\S'    S\S'    S\S'   S	rg
)AgentContexti  zAn agent pulled from hub.r   r  r    r  dict[str, Entry]filesr$   Nr%   r$   r-   r.   r  r    s    #O!r-   r  c                  <    \ rS rSr% SrS\S'    S\S'    S\S'   S	rg
)SkillContexti  zA skill pulled from hub.r   r  r    r  r  r  r$   Nr%   r$   r-   r.   r  r    s    "O!r-   r  c                  <    \ rS rSr% SrS\S'    S\S'    S\S'   S	rg
)DirectoryCommitInfoi  z0Commit details returned from a directory commit.r   rY   r    r  r   rd   r$   Nr%   r$   r-   r.   r  r    s    :H&r-   r  c                  $    \ rS rSr% SrS\S'   Srg)DirectoryCommitResponsei  z0Response body for ``POST /directories/commits``.r  commitr$   Nr%   r$   r-   r.   r  r    s    :r-   r  c                  `    \ rS rSr% SrS\S'    S\S'    S\S'    S\S'    S\S'    S\S	'   S
rg)InputTokenDetailsi  zvBreakdown of input token counts.

Does *not* need to sum to full input token count. Does *not* need to have all keys.
rB   audiocache_creation
cache_readcache_read_over_200kephemeral_5m_input_tokensephemeral_1h_input_tokensr$   Nr%   r$   r-   r.   r  r    sG    
 J O ""S""Qr-   r  c                  0    \ rS rSr% SrS\S'    S\S'   Srg)OutputTokenDetailsi  zxBreakdown of output token counts.

Does *not* need to sum to full output token count. Does *not* need to have all keys.
rB   r  	reasoningr$   Nr%   r$   r-   r.   r"  r"    s    
 JNr-   r"  c                  <    \ rS rSr% SrS\S'    S\S'    S\S'   Srg)	InputCostDetailsi  znBreakdown of input token costs.

Does *not* need to sum to full input cost. Does *not* need to have all keys.
rp  r  r  r  r$   Nr%   r$   r-   r.   r%  r%    s)    
 L% r-   r%  c                  0    \ rS rSr% SrS\S'    S\S'   Srg)OutputCostDetailsi  zpBreakdown of output token costs.

Does *not* need to sum to full output cost. Does *not* need to have all keys.
rp  r  r#  r$   Nr%   r$   r-   r.   r'  r'    s    
 L&r-   r'  c                      \ rS rSr% SrS\S'    S\S'    S\S'    S\S'    S	\S
'    S\S'    S\S'    S\S'    S\S'    S\S'   Srg)UsageMetadatai	  zUsage metadata for a message, such as token counts.

This is a standard representation of token usage that is consistent across models.
rB   r#  r&  r  zNotRequired[InputTokenDetails]r/  zNotRequired[OutputTokenDetails]r2  zNotRequired[float]r)  r,  r  zNotRequired[InputCostDetails]r5  zNotRequired[OutputCostDetails]r8  r$   Nr%   r$   r-   r.   r)  r)  	  sk    
 JPA77 :9 #"'##(""'55/770r-   r)  c                      \ rS rSr% SrS\S'    S\S'    S\S'    S\S'    S	\S
'    S\S'    S\S'    S\S'    S\S'    S\S'   Srg)ExtractedUsageMetadatai+  zUsage metadata dictionary extracted from a run.

Should be the same as UsageMetadata, but does not require all
keys to be present.
rB   r#  r&  r  r  r/  r"  r2  rp  r)  r,  r  r%  r5  r'  r8  r$   Nr%   r$   r-   r.   r+  r+  +  sc     33****,,+'('((/**0r-   r+  c                  <    \ rS rSr% SrS\S'    S\S'    S\S'   S	rg
)UpsertExamplesResponseiH  zCResponse object returned from the upsert_examples_multipart method.rB   countr   example_idszNotRequired[str | None]r   r$   Nr%   r$   r-   r.   r-  r-  H  s    MJ45""cr-   r-  c                  0    \ rS rSr% Sr\" \S9rS\S'   Sr	g)ExampleWithRunsiS  zExample with runs.rb   z	list[Run]runsr$   N)
r&   r'   r(   r)   r*   r   r   r2  r+   r,   r$   r-   r.   r1  r1  S  s    D1D)1"r-   r1  c                      \ rS rSr% SrS\S'    S\S'    S\S'    S\S'    S\S	'    S\S
'    S\S'    S\S'    S\S'    S\S'    S\S'    S\S'    S\S'    S\S'   Srg)ExperimentRunStatsi[  z!Run statistics for an experiment.r   r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r   r  r$   Nr%   r$   r-   r.   r4  r4  [  s    +,$$?$$6=  D$$H++8..-!!M""G&&C((G((>)r-   r4  c                  <    \ rS rSr% SrS\S'    S\S'    S\S'   S	rg
)ExperimentResultsi|  zResults container for experiment data with stats and examples.

Breaking change in v0.4.32:
    The 'stats' field has been split into 'feedback_stats' and 'run_stats'.
r   r  r4  	run_statszIterator[ExampleWithRuns]examples_with_runsr$   Nr%   r$   r-   r.   r6  r6  |  s!     1!!611r-   r6  c                      \ rS rSr% SrS\S'   S\S'   S\S'   SrS	\S
'   S\S'   S\S'   S\S'   \SS j5       rSS jr	Sr
g)InsightsReporti  zHAn Insights Report created by the Insights Agent over a tracing project.
UUID | strrY   r    r   r  N
str | Noner   
project_idhost_urlr  c           	         U R                    S[        U R                  5       S[        U R                  5       S[        U R                  5       3$ )z1URL to view this Insights Report in LangSmith UI.r   r  z?tab=4&clusterJobId=)r>  r    r  r=  rY   r>   s    r.   linkInsightsReport.link  sH     --C$7#8SEYDZZnorswszszo{n|}}r-   c                <    SU R                    SU R                   S3$ )Nz	<a href="z2", target="_blank" rel="noopener">InsightsReport('z')</a>)r@  r   r>   s    r.   _repr_html_InsightsReport._repr_html_  s%    499+%XY]YbYbXccjkkr-   r$   r  )r&   r'   r(   r)   r*   r+   r   r   r@  rC  r,   r$   r-   r.   r:  r:    sI    RN
IKE:M~ ~lr-   r:  c                  b    \ rS rSr% SrS\S'   SrS\S'   SrS\S	'   S
\S'   S\S'   SrS\S'   Sr	g)InsightsHighlightedTracei  z2A trace highlighted in an insights report summary.r;  rb  NUUID | str | None
cluster_idr<  cluster_namerB   rankr    highlight_reasonsummaryr$   )
r&   r'   r(   r)   r*   r+   rH  rI  rL  r,   r$   r-   r.   rF  rF    s5    <$(J!(#L*#
IGZr-   rF  c                  b    \ rS rSr% Sr\" \S9rS\S'   Sr	S\S'   \" \S9r
S	\S
'   SrS\S'   Srg)InsightsSummaryReporti  zIHigh-level summary of an insights job: key points and highlighted traces.rb   r   
key_pointsNr<  titlezlist[InsightsHighlightedTrace]highlighted_traceszdatetime | Nonerd   r$   )r&   r'   r(   r)   r*   r   r   rO  r+   rP  rQ  rd   r,   r$   r-   r.   rN  rN    s9    S!$7J	7E:9>t9T6T"&J&r-   rN  c                  v    \ rS rSr% SrS\S'   SrS\S'   S\S	'   S
\S'   S
\S'   SrS\S'   S\S'   SrS\S'   Sr	g)InsightsClusteri  z/A single cluster of runs in an insights report.r;  rY   NrG  r  rB   levelr    r   r   r<  parent_namenum_runsdict[str, Any] | Nonestatsr$   )
r&   r'   r(   r)   r*   r+   r  rU  rX  r,   r$   r-   r.   rS  rS    s?    9N#'I 'J
I"K"M#'E 'r-   rS  )rH  c               x   SSK Jn  / nSnSnUb  XgS.nUb  [        U5      US'   U R                  SSU S	U S
3US9n	UR	                  U	5        U	R                  5       n
U
R                  S/ 5      =(       d    / nUR                  U5        U
R                  S5      nUc  SnO[        U5      nU(       d  SnUb  M  U$ )zHFetch runs for an Insights job, optionally filtered to a single cluster.r   )utilsd   N)limitr9   rH  GETz
/sessions/z
/insights/z/runs)paramsr2  r9   )		langsmithrZ  r    request_with_retriesraise_for_status_with_textjsonr   extendrB   )clientr   job_idrH  ls_utilsall_runsr\  next_offsetr^  respbodybatchreturned_offsets                r.   _fetch_insights_runsrm    s     ,%'HEK

!+0!H!#&z?F< **Jvhe< + 

 	++D1yy{$*((8,"Ko.K") 
!* Or-   c                  N    \ rS rSrSrSrS
S jrSS jrSS jrSS jr	SS jr
Srg	)_ClusterWithTracesi  zYCluster wrapper that can load its traces from the API. Returned by report.clusters[name]._cluster_reportc                    Xl         X l        g r[   rp  )r3   clusterreports      r.   rq   _ClusterWithTraces.__init__  s    r-   c                .    [        U R                  U5      $ r[   )getattrrq  )r3   r   s     r.   __getattr___ClusterWithTraces.__getattr__  s    t}}d++r-   c                    [        [        [        U R                  5      5      [        [        U R                  5      5      -  5      $ r[   )r   setdirrs   rq  r>   s    r.   __dir___ClusterWithTraces.__dir__  s.    CDNN+,s3t}}3E/FFGGr-   c                8    SU R                   R                  < S3$ )Nz_ClusterWithTraces(name=))rq  r   r>   s    r.   r   _ClusterWithTraces.__repr__  s    )$--*<*<)?qAAr-   c                
   [        U R                  SS5      nUc  [        S5      e[        U R                  SS5      n[        U R                  SS5      nUb  Uc  [        S5      e[        UUUU R                  R
                  S9$ )z.Fetch run dicts for this cluster from the API._clientNzMReport not attached to a client; get reports via Client.get_insights_report()_session_id_job_idzReport missing session/job ids)rd  r   re  rH  )rx  rr  
ValueErrorrm  rq  rY   r3   rd  r   re  s       r.   load_traces_ClusterWithTraces.load_traces  s    y$7>_  T\\=$?
y$7=>>#!}}''	
 	
r-   N)rt  rS  ru  InsightsReportResultrC   r   )r   r    rC   r   r  r  )rC   list[dict[str, Any]])r&   r'   r(   r)   r*   	__slots__rq   ry  r~  r   r  r,   r$   r-   r.   ro  ro    s%    c'I,HB
r-   ro  c                  V    \ rS rSrSrSr      S
S jrSS jrS rSS jr	SS jr
Srg	)_ClustersMapi
  zWList-like map of clusters by name. Supports report.clusters['name'] and .load_traces().)	_clustersrr  c                0    [        U5      U l        X l        g r[   )r   r  rr  )r3   clustersru  s      r.   rq   _ClustersMap.__init__  s    
 hr-   c           	     0   [        U[        5      (       a  U R                  U   nOXU R                   Vs0 s H  o3R                  U_M     nnX;  a)  [	        SU< S[        UR                  5       5       35      eXA   n[        X R                  5      $ s  snf )NzCluster z not found; available: )	
isinstancerB   r  r   KeyErrorr   keysro  rr  )r3   rc  rt  cby_names        r.   __getitem___ClustersMap.__getitem__  s    c3nnS)G*...9.Qvvqy.G9!sg%<T',,.=Q<RS  lG!'<<88 :s   Bc                0   ^  U 4S jT R                    5       $ )Nc              3  P   >#    U  H  n[        UTR                  5      v   M     g 7fr[   )ro  rr  ).0r  r3   s     r.   	<genexpr>(_ClustersMap.__iter__.<locals>.<genexpr>$  s      L^"1dll33^s   #&)r  r>   s   `r.   __iter___ClustersMap.__iter__#  s    LT^^LLr-   c                ,    [        U R                  5      $ r[   lenr  r>   s    r.   __len___ClustersMap.__len__&  s    4>>""r-   c                4    S[        U R                  5       S3$ )Nz_ClustersMap(n_clusters=r  r  r>   s    r.   r   _ClustersMap.__repr__)  s    )#dnn*=)>a@@r-   N)r  list[InsightsCluster]ru  r  rC   r   )rc  z	str | intrC   ro  )rC   rB   r  )r&   r'   r(   r)   r*   r  rq   r  r  r  r   r,   r$   r-   r.   r  r  
  sA    a(I' % 
	
9M#Ar-   r  c                  R   \ rS rSr% SrS\S'   S\S'   S\S'   SrS	\S
'   SrS	\S'   SrS	\S'   Sr	S\S'   Sr
S\S'   SrS\S'   SrS\S'   \" \S9rS\S'   SrS\S'   \" \S9rS\S'    \" SS9rS\S'   \" SS9rS\S'   \" SS9rS\S '   \" S!S"9r        S'S# jrS(S$ jrS(S% jrS&rg))r  i-  zVFull result of fetching an Insights report (job + clusters + summary + optional runs).r;  rY   r    r   r  Nzdatetime | str | Noner   r   rd   rW  rN   r;  shaper<  r   rG  	config_idrb   r  r  zInsightsSummaryReport | Noneru  r  r2  rI   r   r  r  r  allowr   c                   [         R                  U SU5        [         R                  U S[        U5      5        [         R                  U S[        U5      5        [         R                  U S[        U R                  U 5      5        g)zXAttach client and ids so clusters can load traces. Called by Client.get_insights_report.r  r  r  r  N)object__setattr__r    r  r  r  s       r.   _attach_client#InsightsReportResult._attach_clientE  sd     	4F34J@4CK8-	
r-   c                L   U R                   n[        US5      (       a!  [        R                  U SUR                  5         U R                  SS9[        US5      (       a  [        R                  U SU5        $ $ ! [        US5      (       a  [        R                  U SU5        f f = f)z?Return the report as a JSON-serializable dict (raw JSON shape).r  r  rb  mode)r  hasattrr  r  r  
model_dump)r3   clusters_vals     r.   to_jsonInsightsReportResult.to_jsonU  s    }}<--tZ1G1GH	C???/|[11""4\B 2w|[11""4\B 2s    A8 8+B#c                     U R                  SS9$ )zHReturn the report as a JSON-serializable dict (e.g. for saving to file).rb  r  )r  r>   s    r.   model_dump_json_dict)InsightsReportResult.model_dump_json_dict`  s    F++r-   r$   )rd  r   r   
str | UUIDre  r  rC   r   r   )r&   r'   r(   r)   r*   r+   r   r   rd   rN   r  r   r  r   r   r  ru  r2  r   r  r  r  r   rQ   r  r  r  r,   r$   r-   r.   r  r  -  s    `N
IK(,J%,&*H#*(,J%,&*H#*#'E 'E:#'I '&+D&AH#A+/F(/!&t!<D
<8t,GS,"40K0t,GS,G,L

 
 	

 

 	C,r-   r  c                  8    \ rS rSr% SrS\S'   S\S'   S\S'   S	rg
)FeedbackFormulaWeightedVariableie  zBA feedback key and weight used when calculating feedback formulas.zLiteral['weighted_key']	part_typerp  weightz#Annotated[str, Field(min_length=1)]rc  r$   Nr%   r$   r-   r.   r  r  e  s    L&&M	,,r-   r  c                  d    \ rS rSr% SrSrS\S'   SrS\S'   S\S'   S	\S
'   \" SSSS9r	S\S'   Sr
g)FeedbackFormulaCreateim  z,Schema used for creating a feedback formula.NrX   rH   r   r    r  Literal['sum', 'avg']aggregation_type.   2   
min_length
max_length%list[FeedbackFormulaWeightedVariable]formula_partsr$   )r&   r'   r(   r)   r*   rH   r+   r   r   r  r,   r$   r-   r.   r  r  m  s>    6!%J%!%J%++;@b<M8 r-   r  c                  H    \ rS rSr% SrS\S'   S\S'   \" SSS	S
9rS\S'   Srg)FeedbackFormulaUpdateiy  z,Schema used for updating a feedback formula.r    r  r  r  .r  r  r  r  r  r$   N)	r&   r'   r(   r)   r*   r+   r   r  r,   r$   r-   r.   r  r  y  s*    6++;@b<M8 r-   r  c                  8    \ rS rSr% SrS\S'   S\S'   S\S'   Srg	)
FeedbackFormulai  z%Schema for getting feedback formulas.r   rY   r   rd   r   r$   Nr%   r$   r-   r.   r  r    s    /Hr-   r  c                  X    \ rS rSr% SrS\S'    S\S'    S\S'    S	\S
'    SrS\S'   Srg)FeedbackConfigSchemai  zRepresents a feedback configuration for a tenant's feedback key.

Feedback configurations define how feedback with a given key should be
interpreted, including its type (continuous, categorical, or freeform),
scoring bounds, and valid categories.
r    r  rs  ry  r   r  r   r   Nr  is_lower_score_betterr$   )r&   r'   r(   r)   r*   r+   r  r,   r$   r-   r.   r  r    s:     A##HOE=,0>0Kr-   r  )
rd  r   r   r  re  r  rH  zstr | UUID | NonerC   r  )r*   
__future__r   collections.abcr   r   r   r   decimalr   enumr	   pathlibr
   typingr   r   r   r   r   r   r   uuidr   pydanticr   r   r   r   r   r   r   typing_extensionsr   r   r   rd  r   r    rf  r   tuplerD   rK  r0   rF   rS   _AttachmentLikerV   ExampleUploadWithAttachmentsry   r|   r   r   r   ExampleUpdateWithAttachmentsr   r   DatasetTransformationTyper   r   r   r   r   r   r=  rE  rM  rQ  rV  rZ  r]  ra  ro  rs  rx  r{  r}  r  r  r  r  r  r  r  r  model_rebuildr  r  r  r  r  r  r  r  r  r  r  r  r  r  Entryr  r  r  r  r  r"  r%  r'  r)  r+  r-  r1  r4  r6  r:  rF  rN  rS  rm  ro  r  r  r  r  r  r  r  r$   r-   r.   <module>r     st   $ " $ 2 2         > =:y+t;<
4j)[$FG
 * 3eCJ/U39=MMNNO 8   I) Ii 
 sEz!2E#t)4DD
!I !&  - = Y 'bk 'bTI !I !&  - sD +) + $ ?IU ?-k -`Y T<i T<nC,' C,L	#t 	)5 :4 4= ="!* !%, %# #&+9 &+ROy O@Ye @!\ !	3| 	33"I 3"l%*- %*P 
;h 
; 
;)% )O	 O$Ei E"< <9	 9"	4I 	4    	(	 	(,) ,-y -Ye =i =!&I !&H09 0.+> +>\.;Y .;b') '
c4 
	 . .. . 	%	:z9:EPV<WWX 5"9 ""9 "') 'i R	 R6%  y *	  1I 1D1Ye 1:dY d#g #* *B2	 2lY l(y 'I '
(i 
($ %)""" "
 "" "J#
 #
L A  AF5,9 5,p-i -	I 	I + L9 Lr-   