§
    ~ŠtjáÞ  ã                  ó  — d Z ddlmZ ddlmZ ddlmZ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mZmZmZmZmZmZ dd
lmZ ddlmZmZmZmZm Z m!Z!m"Z" ddl#m$Z$m%Z%m&Z& ee e"e!df         Z'ee(e)e e"e!df         Z* G d„ de¦  «        Z+e(e)ee,e)e-f         e+e,e)ef         f         f         Z.	 e G d„ de¦  «        ¦   «         Z/ G d„ de¦  «        Z0 G d„ de&¦  «        Z1ee+e1e,e)e-f         e,e)ef         f         Z2 G d„ de¦  «        Z3e3Z4 G d„ de3¦  «        Z5 G d„ de&¦  «        Z6 G d„ de0¦  «        Z7 G d„ de¦  «        Z8 G d „ d!e¦  «        Z9e9Z: G d"„ d#e)e¦  «        Z; G d$„ d%e¦  «        Z<e$d&         Z= G d'„ d(e&d)¬*¦  «        Z> G d+„ d,e<¦  «        Z? G d-„ d.e¦  «        Z@d/„ ZA G d0„ d1e¦  «        ZB G d2„ d3eB¦  «        ZC G d4„ d5e)e¦  «        ZD G d6„ d7e&d)¬*¦  «        ZE G d8„ d9eB¦  «        ZF G d:„ d;e¦  «        ZG G d<„ d=eG¦  «        ZH G d>„ d?eG¦  «        ZI G d@„ dAe¦  «        ZJ G dB„ dCe¦  «        ZK G dD„ dEe&d)¬*¦  «        ZL G dF„ dGe&d)¬*¦  «        ZM G dH„ dIeK¦  «        ZN G dJ„ dKeK¦  «        ZO G dL„ dMe¦  «        ZP G dN„ dOeP¦  «        ZQe G dP„ dQe¦  «        ¦   «         ZR G dR„ dSe&d)¬*¦  «        ZS G dT„ dUe&d)¬*¦  «        ZT G dV„ dWe¦  «        ZU G dX„ dYeU¦  «        ZV G dZ„ d[e&¦  «        ZW G d\„ d]e&d)¬*¦  «        ZX G d^„ d_e¦  «        ZYe7 Z                    ¦   «           G d`„ dae¦  «        Z[ G db„ dce¦  «        Z\ G dd„ dee&d)¬*¦  «        Z] G df„ dge&d)¬*¦  «        Z^ G dh„ die¦  «        Z_ G dj„ dke¦  «        Z` G dl„ dme¦  «        Za G dn„ doe¦  «        Zb G dp„ dqe¦  «        Zc G dr„ dse¦  «        Zd G dt„ due)e¦  «        Ze G dv„ dwe¦  «        Zf G dx„ dye¦  «        Zg G dz„ d{e¦  «        Zheeefegehf          ed|¬}¦  «        f         Zi	  G d~„ de¦  «        Zj G d€„ d�e¦  «        Zk G d‚„ dƒe¦  «        Zl G d„„ d…e¦  «        Zm G d†„ d‡e&d)¬*¦  «        Zn G dˆ„ d‰e&d)¬*¦  «        Zo G dŠ„ d‹e&d)¬*¦  «        Zp G dŒ„ d�e&d)¬*¦  «        Zq G dŽ„ d�e&¦  «        Zr G d�„ d‘e&d)¬*¦  «        Zs G d’„ d“e&¦  «        Zt G d”„ d•e7¦  «        Zu G d–„ d—e&¦  «        Zv G d˜„ d™e&¦  «        Zw G dš„ d›e¦  «        Zx G dœ„ d�e¦  «        Zy G dž„ dŸe¦  «        Zz G d „ d¡e¦  «        Z{dd¢œd½d¬„Z| G d­„ d®¦  «        Z} G d¯„ d°¦  «        Z~ G d±„ d²e¦  «        Z G d³„ d´e¦  «        Z€ G dµ„ d¶e¦  «        Z� G d·„ d¸e¦  «        Z‚ G d¹„ dºe�¦  «        Zƒ G d»„ d¼e¦  «        Z„dS )¾zSchemas for the LangSmith API.é    )Úannotations)ÚIterator)ÚdatetimeÚ	timedeltaÚtimezone)ÚDecimal)ÚEnum)Úescape)ÚPath)Ú	AnnotatedÚAnyÚ
NamedTupleÚOptionalÚProtocolÚUnionÚruntime_checkable)ÚUUID)Ú	BaseModelÚ
ConfigDictÚFieldÚPrivateAttrÚ
StrictBoolÚStrictFloatÚ	StrictInt)ÚLiteralÚNotRequiredÚ	TypedDictNc                  ó(   — e Zd ZU dZded<   ded<   dS )Ú
AttachmentaŠ  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]ÚdataN©Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__© ó    úO/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langsmith/schemas.pyr   r   %   s3   € € € € € € ðð ð  €N€N�NØÐÐÑÐÐr+   r   c                  ó.   — e Zd ZdZddd„Zddd„Zdd„ZdS )ÚBinaryIOLikez$Protocol for binary IO-like objects.éÿÿÿÿÚsizeÚintÚreturnÚbytesc                ó   — dS )zRead function.Nr*   )Úselfr0   s     r,   ÚreadzBinaryIOLike.readE   ó   € àˆr+   r   ÚoffsetÚwhencec                ó   — dS )zSeek function.Nr*   )r5   r8   r9   s      r,   ÚseekzBinaryIOLike.seekI   r7   r+   c                ó   — dS )zGet value function.Nr*   ©r5   s    r,   ÚgetvaluezBinaryIOLike.getvalueM   r7   r+   N)r/   )r0   r1   r2   r3   )r   )r8   r1   r9   r1   r2   r1   )r2   r3   )r%   r&   r'   r(   r6   r;   r>   r*   r+   r,   r.   r.   A   s`   € € € € € à.Ð.ðð ð ð ð ðð ð ð ð ðð ð ð ð ð r+   r.   c                  óž   — e Zd ZU dZded<    ed¬¦  «        Zded<    ed¬¦  «        Zded<    ed¬¦  «        Zded	<    e	d
d
¬¦  «        Z
dS )ÚExampleBasezExample base model.r   Ú
dataset_idN©ÚdefaultúOptional[dict[str, Any]]ÚinputsÚoutputsÚmetadataT)ÚfrozenÚarbitrary_types_allowed)r%   r&   r'   r(   r)   r   rE   rF   rG   r   Úmodel_configr*   r+   r,   r@   r@   R   s�   € € € € € € ØÐàÐÐÑØ', u°TÐ':Ñ':Ô':€FÐ:Ð:Ð:Ñ:Ø(-¨°dÐ(;Ñ(;Ô(;€GÐ;Ð;Ð;Ñ;Ø).¨°tÐ)<Ñ)<Ô)<€HÐ<Ð<Ð<Ñ<à�: TÀ4ÐHÑHÔH€L€L€Lr+   r@   c                  ó$   — e Zd ZU ded<   ded<   dS )Ú_AttachmentDictr    r!   r"   r#   N)r%   r&   r'   r)   r*   r+   r,   rL   rL   ]   s'   € € € € € € Ø€N€N�NØÐÐÑÐÐr+   rL   c                  ó  ‡ — e Zd ZU dZdZded<    ed„ ¬¦  «        Zded<    ed¬	¦  «        Zd
ed<    ed¬	¦  «        Z	d
ed<    ed¬	¦  «        Z
d
ed<   dZded<   dZded<   dZded<   dZded<   dZded<   ˆ fd„Zˆ xZS )ÚExampleCreatez Example upload with attachments.NúOptional[UUID]Úidc                 ó>   — t          j        t          j        ¦  «        S ©N©r   Únowr   Úutcr*   r+   r,   ú<lambda>zExampleCreate.<lambda>k   ó   € ½¼ÅhÄlÑ9SÔ9S€ r+   ©Údefault_factoryr   Ú
created_atrB   rD   rE   rF   rG   ú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          ¦   «         j        di |¤Ž dS ©zInitialize from dict.Nr*   ©ÚsuperÚ__init__©r5   r#   Ú	__class__s     €r,   rg   zExampleCreate.__init__u   ó&   ø€ à�‰ŒÔÐ Ð ˜4Ð Ð Ð Ð Ð r+   )r%   r&   r'   r(   rP   r)   r   rZ   rE   rF   rG   r\   r]   r_   ra   rb   rg   Ú__classcell__©ri   s   @r,   rN   rN   g   s$  ø€ € € € € € Ø*Ð*à€BÐÐÐÑØ ˜5Ð1SÐ1SÐTÑTÔT€JÐTÐTÐTÑTØ', u°TÐ':Ñ':Ô':€FÐ:Ð:Ð:Ñ:Ø(-¨°dÐ(;Ñ(;Ô(;€GÐ;Ð;Ð;Ñ;Ø).¨°tÐ)<Ñ)<Ô)<€HÐ<Ð<Ð<Ñ<Ø-1€EÐ1Ð1Ð1Ñ1Ø8<€KÐ<Ð<Ð<Ñ<Ø#ÐÐ#Ð#Ð#Ñ#Ø6:ÐÐ:Ð:Ð:Ñ:Ø$(€MÐ(Ð(Ð(Ñ(ð!ð !ð !ð !ð !ð !ð !ð !ð !r+   rN   c                  ó   — e Zd ZU dZded<   dS )ÚExampleUpsertWithAttachmentsz Example create with attachments.r   rA   Nr$   r*   r+   r,   rn   rn   }   s$   € € € € € € Ø*Ð*àÐÐÑÐÐr+   rn   c                  ó2   — e Zd ZU dZded<   ded<   ded<   dS )	ÚAttachmentInfozInfo for an attachment.r    Úpresigned_urlr.   ÚreaderúOptional[str]r!   Nr$   r*   r+   r,   rp   rp   ƒ   s<   € € € € € € Ø!Ð!àÐÐÑØÐÐÑØÐÐÑÐÐr+   rp   c                  óD  ‡ — e Zd ZU dZded<    ed„ ¬¦  «        Zded<    e ed¦  «        ¬	¦  «        Zded
<    ed¬	¦  «        Z	ded<   dZ
ded<    ed¬	¦  «        Zded<   	  ed¬	¦  «        Zded<    ed¬	¦  «        Zded<   	 	 ddˆ fd„Zedd„¦   «         Zd„ Zˆ xZS )ÚExamplezExample model.r   rP   c                 óB   — t          j        dt          j        ¬¦  «        S )Nr   )Útz)r   Úfromtimestampr   rU   r*   r+   r,   rV   zExample.<lambda>�   s   € ¥Ô 6°q½X¼\Ð JÑ JÔ J€ r+   rX   r   rZ   z$00000000-0000-0000-0000-000000000000rB   rA   NúOptional[datetime]Úmodified_atrO   rb   z#Optional[dict[str, AttachmentInfo]]r]   rs   Ú	_host_urlÚ
_tenant_idÚkwargsr   r2   ÚNonec                óV   •—  t          ¦   «         j        di |¤Ž || _        || _        dS )úInitialize a Dataset object.Nr*   )rf   rg   r{   r|   )r5   r{   r|   r}   ri   s       €r,   rg   zExample.__init__›   s4   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø"ˆŒØ$ˆŒˆˆr+   c                óœ   — | j         rDd| j        › d| j        › �}| j        r | j         › dt	          | j        ¦  «        › |› �S | j         › |› �S dS )úURL of this run within the app.ú
/datasets/z/e/ú/o/N)r{   rA   rP   r|   r    )r5   Úpaths     r,   ÚurlzExample.url¦   so   € ð Œ>ð 	-Ø= ¤Ð=Ð=°D´GÐ=Ð=ˆDØŒð JØœ.ÐIÐI­S°´Ñ-AÔ-AÐIÀ4ÐIÐIÐIØ”nÐ, dÐ,Ð,Ð,Øˆtr+   c                óF   — | j         › d| j        › d| j        › d| j        › d�S )ú5Return a string representation of the RunBase object.ú(id=z, dataset_id=z, link='ú'))ri   rP   rA   r†   r=   s    r,   Ú__repr__zExample.__repr__°   s3   € à”.ÐaÐa d¤gÐaÐa¸D¼OÐaÐaÐUYÔU]ÐaÐaÐaÐar+   )NN)r{   rs   r|   rO   r}   r   r2   r~   ©r2   rs   )r%   r&   r'   r(   r)   r   rZ   r   rA   rz   rb   r]   r   r{   r|   rg   Úpropertyr†   r‹   rk   rl   s   @r,   ru   ru   ‹   sz  ø€ € € € € € ØÐà€H€H�HØ ˜5ØJÐJðñ ô €Jð ð ð ñ ð �u T TÐ*PÑ%QÔ%QÐRÑRÔR€JÐRÐRÐRÑRØ&+ e°DÐ&9Ñ&9Ô&9€KÐ9Ð9Ð9Ñ9Ø$(€MÐ(Ð(Ð(Ñ(Ø7<°uÀTÐ7JÑ7JÔ7J€KÐJÐJÐJÑJð.à*˜{°4Ð8Ñ8Ô8€IÐ8Ð8Ð8Ñ8Ø!, °TÐ!:Ñ!:Ô!:€JÐ:Ð:Ð:Ñ:ð $(Ø%)ð	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð ðð ð ñ „Xððbð bð bð bð bð bð br+   ru   c                  ó\   — e Zd ZU dZ eed¬¦  «        Zded<    eed¬¦  «        Z	ded<   d	S )
ÚAttachmentsOperationsz%Operations to perform on attachments.z,Mapping of old attachment names to new names)rY   Údescriptionzdict[str, str]Úrenamez List of attachment names to keepú	list[str]ÚretainN)
r%   r&   r'   r(   r   Údictr‘   r)   Úlistr“   r*   r+   r,   r�   r�   µ   s~   € € € € € € Ø/Ð/à"˜UØÐ*Xðñ ô €Fð ð ð ñ ð ˜ØÐ*Lðñ ô €Fð ð ð ñ ð ð r+   r�   c                  óä   ‡ — e Zd ZU dZded<   dZded<    ed¬¦  «        Zded	<    ed¬¦  «        Zded
<    ed¬¦  «        Z	ded<   dZ
ded<   dZded<   dZded<    ed¬¦  «        Zˆ fd„Zˆ xZS )ÚExampleUpdatez Example update with attachments.r   rP   NrO   rA   rB   rD   rE   rF   rG   r[   r\   zOptional[Attachments]r]   zOptional[AttachmentsOperations]Úattachments_operationsT©rH   c                ó:   •—  t          ¦   «         j        di |¤Ž dS rd   re   rh   s     €r,   rg   zExampleUpdate.__init__Î   rj   r+   )r%   r&   r'   r(   r)   rA   r   rE   rF   rG   r\   r]   r˜   r   rJ   rg   rk   rl   s   @r,   r—   r—   À   sú   ø€ € € € € € Ø*Ð*à€H€H�HØ!%€JÐ%Ð%Ð%Ñ%Ø', u°TÐ':Ñ':Ô':€FÐ:Ð:Ð:Ñ:Ø(-¨°dÐ(;Ñ(;Ô(;€GÐ;Ð;Ð;Ñ;Ø).¨°tÐ)<Ñ)<Ô)<€HÐ<Ð<Ð<Ñ<Ø-1€EÐ1Ð1Ð1Ñ1Ø)-€KÐ-Ð-Ð-Ñ-Ø>BÐÐBÐBÐBÑBà�: TÐ*Ñ*Ô*€Lð!ð !ð !ð !ð !ð !ð !ð !ð !r+   r—   c                  ó   — e Zd ZdZdZdZdZdS )ÚDataTypezEnum for dataset data types.ÚkvÚllmÚchatN)r%   r&   r'   r(   r�   rž   rŸ   r*   r+   r,   rœ   rœ   Ö   s#   € € € € € Ø&Ð&à	€BØ
€CØ€D€D€Dr+   rœ   c                  óR   — e Zd ZU dZded<   dZded<   dZded<    ed	¬
¦  «        ZdS )ÚDatasetBasezDataset base model.r    ÚnameNrs   r�   zOptional[DataType]Ú	data_typeTr™   )	r%   r&   r'   r(   r)   r�   r£   r   rJ   r*   r+   r,   r¡   r¡   Þ   sS   € € € € € € ØÐà€I€I�IØ!%€KÐ%Ð%Ð%Ñ%Ø$(€IÐ(Ð(Ð(Ñ(à�: TÐ*Ñ*Ô*€L€L€Lr+   r¡   )Úremove_system_messagesÚconvert_to_openai_messageÚconvert_to_openai_toolÚremove_extra_fieldsÚextract_tools_from_runc                  ó(   — e Zd ZU dZded<   ded<   dS )ÚDatasetTransformationz#Schema for dataset transformations.r’   r…   z%Union[DatasetTransformationType, str]Útransformation_typeNr$   r*   r+   r,   rª   rª   ñ   s-   € € € € € € Ø-Ð-à€O€O�OØ>Ð>Ð>Ñ>Ð>Ð>r+   rª   F)Útotalc                  óD  ‡ — e Zd ZU dZded<   ded<    ed¬¦  «        Zded	<   dZd
ed<   dZd
ed<   dZ	ded<   dZ
ded<   dZded<   dZded<   dZded<    ed¬¦  «        Zded<    ed¬¦  «        Zded<    ed¬¦  «        Zded<   	 	 	 dd ˆ fd„Zed!d„¦   «         Zˆ xZS )"ÚDatasetzDataset ORM model.r   rP   r   rZ   NrB   ry   rz   úOptional[int]Úexample_countÚsession_countÚlast_session_start_timerD   Úinputs_schemaÚoutputs_schemaz%Optional[list[DatasetTransformation]]ÚtransformationsrG   rs   r{   rO   r|   Ú_public_pathr}   r   r2   r~   c                óÔ   •— d|v r|                      d¦  «        |d<   d|v r|                      d¦  «        |d<    t          ¦   «         j        di |¤Ž || _        || _        || _        dS )r€   Úinputs_schema_definitionr³   Úoutputs_schema_definitionr´   Nr*   )Úpoprf   rg   r{   r|   r¶   )r5   r{   r|   r¶   r}   ri   s        €r,   rg   zDataset.__init__	  sƒ   ø€ ð &¨Ð/Ð/Ø&,§j¢jÐ1KÑ&LÔ&LˆF�?Ñ#à&¨&Ð0Ð0Ø'-§z¢zÐ2MÑ'NÔ'NˆFÐ#Ñ$à�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø"ˆŒØ$ˆŒØ(ˆÔÐÐr+   c                ó¾   — | j         rU| j        r| j         › | j        › �S | j        r&| j         › dt          | j        ¦  «        › d| j        › �S | j         › d| j        › �S dS )r‚   r„   rƒ   N)r{   r¶   r|   r    rP   r=   s    r,   r†   zDataset.url  s�   € ð Œ>ð 	:ØÔ ð >Øœ.Ð=¨$Ô*;Ð=Ð=Ð=ØŒð WØœ.ÐVÐV­S°´Ñ-AÔ-AÐVÐVÈTÌWÐVÐVÐVØ”nÐ9Ð9°´Ð9Ð9Ð9Øˆtr+   )NNN)
r{   rs   r|   rO   r¶   rs   r}   r   r2   r~   rŒ   )r%   r&   r'   r(   r)   r   rz   r°   r±   r²   r³   r´   rµ   rG   r   r{   r|   r¶   rg   r�   r†   rk   rl   s   @r,   r®   r®   ø   sz  ø€ € € € € € ØÐà€H€H�HØÐÐÑØ&+ e°DÐ&9Ñ&9Ô&9€KÐ9Ð9Ð9Ñ9Ø#'€MÐ'Ð'Ð'Ñ'Ø#'€MÐ'Ð'Ð'Ñ'Ø26ÐÐ6Ð6Ð6Ñ6Ø.2€MÐ2Ð2Ð2Ñ2Ø/3€NÐ3Ð3Ð3Ñ3Ø=A€OÐAÐAÐAÑAØ)-€HÐ-Ð-Ð-Ñ-Ø*˜{°4Ð8Ñ8Ô8€IÐ8Ð8Ð8Ñ8Ø!, °TÐ!:Ñ!:Ô!:€JÐ:Ð:Ð:Ñ:Ø"- +°dÐ";Ñ";Ô";€LÐ;Ð;Ð;Ñ;ð $(Ø%)Ø&*ð	)ð )ð )ð )ð )ð )ð )ð& ðð ð ñ „Xðð ð ð ð r+   r®   c                  ó,   — e Zd ZU dZdZded<   ded<   dS )ÚDatasetVersionz%Class representing a dataset version.Nr`   Útagsr   Úas_of)r%   r&   r'   r(   r¾   r)   r*   r+   r,   r½   r½   (  s0   € € € € € € Ø/Ð/à $€DÐ$Ð$Ð$Ñ$Ø€O€O�O€O€Or+   r½   c                 ó
   — di iS )NrG   r*   r*   r+   r,   Ú_default_extrarÁ   /  s   € Ø˜ÐÐr+   c                  ó–  — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 d	Zd
ed<   	  ee¬¦  «        Zded<   	 d	Z	ded<   	 d	Z
ded<   	 d	Zded<   	  ee¬¦  «        Zded<   	 d	Zded<   	 d	Zded<   	 d	Zded<   	 d	Zded<   	  ee¬¦  «        Zded<   	 ed'd „¦   «         Zed(d!„¦   «         Zed)d#„¦   «         Zd$„ Z ed%¬&¦  «        Zd	S )*ÚRunBasea3  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   rP   r    r¢   r   Ú
start_timeÚrun_typeNry   Úend_timerX   úOptional[dict]Úextrars   ÚerrorÚ
serializedúOptional[list[dict]]Úeventsr”   rE   rF   rO   Úreference_example_idÚparent_run_idr`   r¾   z-Union[Attachments, dict[str, AttachmentInfo]]r]   r2   údict[str, Any]c                óT   — | j         €i | _         | j                              di ¦  «        S ©zRetrieve the metadata (if any).NrG   )rÈ   Ú
setdefaultr=   s    r,   rG   zRunBase.metadatap  s+   € ð Œ:ÐØˆDŒJØŒz×$Ò$ Z°Ñ4Ô4Ð4r+   c                ó6   — | j                              d¦  «        S )z"Retrieve the revision ID (if any).Úrevision_id)rG   Úgetr=   s    r,   rÔ   zRunBase.revision_idw  s   € ð Œ}× Ò  Ñ/Ô/Ð/r+   úOptional[float]c                óV   — | j         €dS | j         | j        z
                       ¦   «         S )zLatency in seconds.N)rÆ   rÄ   Útotal_secondsr=   s    r,   ÚlatencyzRunBase.latency|  s,   € ð Œ=Ð Ø�4Ø” ¤Ñ/×>Ò>Ñ@Ô@Ð@r+   c                óF   — | j         › d| j        › d| j        › d| j        › d�S )rˆ   r‰   z, name='z', run_type='rŠ   )ri   rP   r¢   rÅ   r=   s    r,   r‹   zRunBase.__repr__ƒ  s1   € à”.Ð`Ð` d¤gÐ`Ð`°t´yÐ`Ð`ÈtÌ}Ð`Ð`Ð`Ð`r+   T)rI   ©r2   rÏ   )r2   rO   )r2   rÖ   )r%   r&   r'   r(   r)   rÆ   r   rÁ   rÈ   rÉ   rÊ   rÌ   r”   rE   rF   rÍ   rÎ   r¾   r]   r�   rG   rÔ   rÙ   r‹   r   rJ   r*   r+   r,   rÃ   rÃ   3  sù  € € € € € € ðð ð €H€H�HØ(à€I€I�IØ*àÐÐÑØ à€M€M�Mð"ð $(€HÐ'Ð'Ð'Ñ'Ø-à!˜E°.ÐAÑAÔA€EÐAÐAÐAÑAØ=à€EÐÐÐÑØ;à!%€JÐ%Ð%Ð%Ñ%ØFà#'€FÐ'Ð'Ð'Ñ'ðð �5¨Ð.Ñ.Ô.€FÐ.Ð.Ð.Ñ.Ø"à"€GÐ"Ð"Ð"Ñ"Ø/à+/ÐÐ/Ð/Ð/Ñ/Ø@à$(€MÐ(Ð(Ð(Ñ(Ø@à $€DÐ$Ð$Ð$Ñ$Ø6àAFÀØðBñ Bô B€Kð ð ð ñ ðð
 ð5ð 5ð 5ñ „Xð5ð ð0ð 0ð 0ñ „Xð0ð ðAð Að Añ „XðAðað að að �:°dÐ;Ñ;Ô;€L€L€Lr+   rÃ   c                  ó’  ‡ — e Zd ZU dZdZded<   	 dZded<   	 dZded<   	 dZd	ed
<   	 dZ	ded<   	 dZ
ded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 d ed!<   	  ed"¬#¦  «        Zd$ed%<   	 dZd&ed'<   	  ed¬#¦  «        Zded(<   d;d<ˆ fd-„Zed=d.„¦   «         Zed>d0„¦   «         Z ed>d1„¦   «         Z!ed?d3„¦   «         Z"ed?d4„¦   «         Z#ed@d6„¦   «         Z$ed@d7„¦   «         Z%edAd9„¦   «         Z&edAd:„¦   «         Z'ˆ xZ(S )BÚRunz$Run schema when loading from the DB.NrO   Ú
session_idúOptional[list[UUID]]Úchild_run_idszOptional[list[Run]]Ú
child_runsrD   Úfeedback_statsrs   Úapp_pathÚmanifest_idÚstatusr¯   Úprompt_tokensÚcompletion_tokensÚtotal_tokenszOptional[dict[str, int]]Úprompt_token_detailsÚcompletion_token_detailsry   Ú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Ú rB   r    Údotted_orderúOptional[bool]Ú
in_datasetr{   r}   r   r2   r~   c                óX  •— |                      d¦  «        sd|                      d¦  «        i|¥}|                     dd¦  «        pi } t          ¦   «         j        di |¤d|i¤Ž || _        | j        j        €*| j                             t          j	        ¬¦  «        | _        | j
        �6| j
        j        €*| j
                             t          j	        ¬¦  «        | _
        | j                             ¦   «         s0| j        s+| j                             ¦   «         › | j        › �| _        dS dS dS )úInitialize a Run object.ró   rP   rE   N©Útzinfor*   )rÕ   rº   rf   rg   r{   rÄ   rû   Úreplacer   rU   rÆ   rõ   ÚstriprÎ   Ú	isoformatrP   )r5   r{   r}   rE   ri   s       €r,   rg   zRun.__init__Ò  s2  ø€ à�zŠz˜*Ñ%Ô%ð 	>Ø  &§*¢*¨TÑ"2Ô"2Ð=°fÐ=ˆFØ—’˜H dÑ+Ô+Ð1¨rˆØ�‰ŒÔÐ1Ð1˜6Ð1Ð1¨&Ð1Ð1Ð1Ð1Ø"ˆŒØŒ?Ô!Ð)Ø"œo×5Ò5½X¼\Ð5ÑJÔJˆDŒOØŒ=Ð$¨¬Ô)=Ð)EØ œM×1Ò1½¼Ð1ÑFÔFˆDŒMØÔ ×&Ò&Ñ(Ô(ð 	J°Ô1Cð 	JØ#'¤?×#<Ò#<Ñ#>Ô#>Ð IÀÄÐ IÐ IˆDÔÐÐð	Jð 	Jð 	Jð 	Jr+   c                óB   — | j         r| j        r| j         › | j        › �S dS )r‚   N)r{   rã   r=   s    r,   r†   zRun.urlà  s1   € ð Œ>ð 	6˜dœmð 	6Ø”nÐ5 d¤mÐ5Ð5Ð5Øˆtr+   ú
int | Nonec                ó   — | j         S )zAlias for prompt_tokens.)ræ   r=   s    r,   Úinput_tokenszRun.input_tokensç  s   € ð Ô!Ð!r+   c                ó   — | j         S )zAlias for completion_tokens.)rç   r=   s    r,   Úoutput_tokenszRun.output_tokensì  s   € ð Ô%Ð%r+   úDecimal | Nonec                ó   — | j         S )zAlias for prompt_cost.)rî   r=   s    r,   Ú
input_costzRun.input_costñ  s   € ð ÔÐr+   c                ó   — | j         S )zAlias for completion_cost.)rï   r=   s    r,   Úoutput_costzRun.output_costö  s   € ð Ô#Ð#r+   údict[str, int] | Nonec                ó   — | j         S )zAlias for prompt_token_details.)ré   r=   s    r,   Úinput_token_detailszRun.input_token_detailsû  s   € ð Ô(Ð(r+   c                ó   — | j         S )zAlias for output_token_details.)rê   r=   s    r,   Úoutput_token_detailszRun.output_token_details   s   € ð Ô,Ð,r+   údict[str, Decimal] | Nonec                ó   — | j         S )zAlias for prompt_cost_details.)rð   r=   s    r,   Úinput_cost_detailszRun.input_cost_details  s   € ð Ô'Ð'r+   c                ó   — | j         S )z"Alias for completion_cost_details.)rñ   r=   s    r,   Úoutput_cost_detailszRun.output_cost_details
  s   € ð Ô+Ð+r+   rR   ©r{   rs   r}   r   r2   r~   rŒ   )r2   r   )r2   r  )r2   r
  )r2   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{   rg   r�   r†   r  r  r  r	  r  r  r  r  rk   rl   s   @r,   rÝ   rÝ   Š  sj  ø€ € € € € € Ø.Ð.à!%€JÐ%Ð%Ð%Ñ%Ø-Ø*.€MÐ.Ð.Ð.Ñ.Ø4Ø&*€JÐ*Ð*Ð*Ñ*ðMà/3€NÐ3Ð3Ð3Ñ3Ø&Ø"€HÐ"Ð"Ð"Ñ"Ø7Ø"&€KÐ&Ð&Ð&Ñ&Ø:Ø €FÐ Ð Ð Ñ Ø.Ø#'€MÐ'Ð'Ð'Ñ'Ø/Ø'+ÐÐ+Ð+Ð+Ñ+Ø/Ø"&€LÐ&Ð&Ð&Ñ&Ø1Ø59ÐÐ9Ð9Ð9Ñ9ðð :>ÐÐ=Ð=Ð=Ñ=ðð ,0ÐÐ/Ð/Ð/Ñ/Ø-Ø$(€JÐ(Ð(Ð(Ñ(ØMØ%)€KÐ)Ð)Ð)Ñ)ØGØ)-€OÐ-Ð-Ð-Ñ-ØCØ8<ÐÐ<Ð<Ð<Ñ<ðð =AÐÐ@Ð@Ð@Ñ@ðð ,0€NÐ/Ð/Ð/Ñ/Ø!Ø€N€N�NØCØ˜ bÐ)Ñ)Ô)€LÐ)Ð)Ð)Ñ)ð
ð "&€JÐ%Ð%Ð%Ñ%Ø+Ø*˜{°4Ð8Ñ8Ô8€IÐ8Ð8Ð8Ñ8ðJð Jð Jð Jð Jð Jð Jð ðð ð ñ „Xðð ð"ð "ð "ñ „Xð"ð ð&ð &ð &ñ „Xð&ð ð ð  ð  ñ „Xð ð ð$ð $ð $ñ „Xð$ð ð)ð )ð )ñ „Xð)ð ð-ð -ð -ñ „Xð-ð ð(ð (ð (ñ „Xð(ð ð,ð ,ð ,ñ „Xð,ð ,ð ,ð ,ð ,r+   rÝ   c                  ó.   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	S )
ÚRunTypeEnumz5(Deprecated) Enum for run types. Use string directly.ÚtoolÚchainrž   Ú	retrieverÚ	embeddingÚpromptÚparserN)r%   r&   r'   r(   r  r  rž   r  r  r  r  r*   r+   r,   r  r    s7   € € € € € Ø?Ð?à€DØ€EØ
€CØ€IØ€IØ€FØ€F€F€Fr+   r  c                  ó  — e Zd ZU dZded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   d ed!<   ded"<   d#ed$<   d%S )&ÚRunLikeDictz&Run-like dictionary, for type-hinting.r    r¢   r  rÅ   r   rÄ   rÇ   rE   rF   ry   rÆ   rÈ   rs   rÉ   rÊ   rO   rÎ   rä   rË   rÌ   r`   r¾   Úinputs_s3_urlsÚoutputs_s3_urlsrP   rÞ   Úsession_namerÍ   Úinput_attachmentsÚoutput_attachmentsr   ró   rõ   ÚAttachmentsr]   Nr$   r*   r+   r,   r  r    s2  € € € € € € Ø0Ð0à€I€I�IØÐÐÑØÐÐÑØÐÐÑØÐÐÑØ Ð Ð Ñ ØÐÐÑØÐÐÑØÐÐÑØ!Ð!Ð!Ñ!ØÐÐÑØ Ð Ð Ñ ØÐÐÑØ"Ð"Ð"Ñ"Ø#Ð#Ð#Ñ#ØÐÐÑØÐÐÑØÐÐÑØ(Ð(Ð(Ñ(Ø%Ð%Ð%Ñ%Ø&Ð&Ð&Ñ&Ø€N€N�NØÐÐÑØÐÐÑÐÐr+   r  c                  ó2   — e Zd ZU dZdZded<   	 dZded<   dS )ÚRunWithAnnotationQueueInfoz&Run schema with annotation queue info.Nry   Úlast_reviewed_timeÚadded_at)r%   r&   r'   r(   r'  r)   r(  r*   r+   r,   r&  r&  9  s>   € € € € € € Ø0Ð0à-1ÐÐ1Ð1Ð1Ñ1Ø.Ø#'€HÐ'Ð'Ð'Ñ'Ø3Ð3r+   r&  c                  ób   — e Zd ZU dZded<   	  ee¬¦  «        Zded<   	 dZded	<   	 dZ	d
ed<   dS )ÚFeedbackSourceBasez‰Base class for feedback sources.

    This represents whether feedback is submitted from the API, model, human labeler,
        etc.
    r    ÚtyperX   rD   rG   NzOptional[Union[UUID, str]]Úuser_idrs   Ú	user_name)
r%   r&   r'   r(   r)   r   r”   rG   r,  r-  r*   r+   r,   r*  r*  B  sp   € € € € € € ðð ð €I€I�IØ*Ø).¨¸tÐ)DÑ)DÔ)D€HÐDÐDÐDÑDØ6Ø*.€GÐ.Ð.Ð.Ñ.Ø:Ø#€IÐ#Ð#Ð#Ñ#Ø<Ð<r+   r*  c                  ó"   — e Zd ZU dZdZded<   dS )ÚAPIFeedbackSourcezAPI feedback source.ÚapizLiteral['api']r+  N©r%   r&   r'   r(   r+  r)   r*   r+   r,   r/  r/  S  s)   € € € € € € ØÐà €DÐ Ð Ð Ñ Ð Ð r+   r/  c                  ó"   — e Zd ZU dZdZded<   dS )ÚModelFeedbackSourcezModel feedback source.ÚmodelzLiteral['model']r+  Nr1  r*   r+   r,   r3  r3  Y  s)   € € € € € € Ø Ð à$€DÐ$Ð$Ð$Ñ$Ð$Ð$r+   r3  c                  ó   — e Zd ZdZdZ	 dZdS )ÚFeedbackSourceTypezFeedback source type.r0  r4  N)r%   r&   r'   r(   ÚAPIÚMODELr*   r+   r,   r6  r6  _  s#   € € € € € ØÐà
€CØ2Ø€EØ"Ð"r+   r6  c                  ó  — e Zd ZU dZded<   	 dZded<   	 dZded<   	 ded	<   	 ded
<   	 ded<   	 dZded<   	 dZded<   	 dZ	ded<   	 dZ
ded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	  ed¬¦  «        ZdS )ÚFeedbackBasezFeedback schema.r   rP   Nry   rZ   rz   rO   Úrun_idró   r    ÚkeyÚ
SCORE_TYPEÚscoreÚ
VALUE_TYPEÚvaluers   ÚcommentzUnion[str, dict, None]Ú
correctionúOptional[FeedbackSourceBase]Úfeedback_sourcerÞ   rÄ   Úcomparative_experiment_idÚfeedback_group_idrÇ   rÈ   Tr™   )r%   r&   r'   r(   r)   rZ   rz   r>  r@  rA  rB  rD  rÞ   rÄ   rE  rF  rÈ   r   rJ   r*   r+   r,   r:  r:  h  sT  € € € € € € ØÐà€H€H�HØ(Ø%)€JÐ)Ð)Ð)Ñ)Ø,Ø&*€KÐ*Ð*Ð*Ñ*Ø2ØÐÐÑØ<ØÐÐÑØ>Ø€H€H�HØAØ€EÐÐÐÑØ+Ø€EÐÐÐÑØQØ!€GÐ!Ð!Ð!Ñ!Ø2Ø)-€JÐ-Ð-Ð-Ñ-Ø!Ø48€OÐ8Ð8Ð8Ñ8Ø%Ø!%€JÐ%Ð%Ð%Ñ%ØTØ%)€JÐ)Ð)Ð)Ñ)ØEØ04ÐÐ4Ð4Ð4Ñ4ØXØ(,ÐÐ,Ð,Ð,Ñ,ð1ð !€EÐ Ð Ð Ñ Ø'à�: TÐ*Ñ*Ô*€L€L€Lr+   r:  c                  ó*   — e Zd ZU dZded<   	 ded<   dS )ÚFeedbackCategoryz+Specific value and label pair for feedback.Úfloatr@  rs   ÚlabelNr$   r*   r+   r,   rH  rH  ‘  s0   € € € € € € Ø5Ð5à€L€L�LØCØÐÐÑØNÐNr+   rH  c                  óB   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   d	S )
ÚFeedbackConfigz:Represents _how_ a feedback value ought to be interpreted.z0Literal['continuous', 'categorical', 'freeform']r+  rÖ   ÚminÚmaxz Optional[list[FeedbackCategory]]Ú
categoriesNr$   r*   r+   r,   rL  rL  š  sW   € € € € € € ØDÐDà:Ð:Ð:Ñ:ØØÐÐÑØ4ØÐÐÑØ4Ø0Ð0Ð0Ñ0ð@ð @r+   rL  c                  óN   — e Zd ZU dZded<   	 dZded<   	 dZded	<   	 dZd
ed<   dS )ÚFeedbackCreatez"Schema used for creating feedback.r*  rD  NzOptional[FeedbackConfig]Úfeedback_configTr^   Úextend_trace_retentionrö   rÉ   )r%   r&   r'   r(   r)   rR  rS  rÉ   r*   r+   r,   rQ  rQ  ¨  sa   € € € € € € Ø,Ð,à'Ð'Ð'Ñ'Ø%Ø04€OÐ4Ð4Ð4Ñ4Ø%Ø#'ÐÐ'Ð'Ð'Ñ'ØWØ €EÐ Ð Ð Ñ Ð Ð r+   rQ  c                  óD   — e Zd ZU dZded<   ded<   	 ded<   	 dZded	<   dS )
ÚFeedbackzSchema for getting feedback.r   rP   r   rZ   rz   NrC  rD  )r%   r&   r'   r(   r)   rD  r*   r+   r,   rU  rU  ´  sP   € € € € € € Ø&Ð&à€H€H�HØÐÐÑØ,ØÐÐÑØ2Ø48€OÐ8Ð8Ð8Ñ8Ø2Ð2r+   rU  c                  ó  ‡ — e Zd ZU dZded<   	  ed„ ¬¦  «        Zded<   	 dZd	ed
<   	 dZded<   	 dZ	ded<   	 dZ
ded<   	 ded<   	 ded<   	  ed¬¦  «        Zded<   dd ˆ fd„Zed!d„¦   «         Zed"d„¦   «         Zed#d„¦   «         Zˆ xZS )$ÚTracerSessionzbTracerSession schema for the API.

    Sessions are also referred to as "Projects" in the UI.
    r   rP   c                 ó>   — t          j        t          j        ¦  «        S rR   rS   r*   r+   r,   rV   zTracerSession.<lambda>È  rW   r+   rX   r   rÄ   Nry   rÆ   rs   r�   r¢   rD   rÈ   Ú	tenant_idrO   Úreference_dataset_idrB   r{   r}   r   r2   r~   c                ó¸   •—  t          ¦   «         j        di |¤Ž || _        | j        j        €,| j                             t          j        ¬¦  «        | _        dS dS )rù   Nrú   r*   )rf   rg   r{   rÄ   rû   rü   r   rU   )r5   r{   r}   ri   s      €r,   rg   zTracerSession.__init__Ù  sZ   ø€ à�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø"ˆŒØŒ?Ô!Ð)Ø"œo×5Ò5½X¼\Ð5ÑJÔJˆDŒOˆOˆOð *Ð)r+   c                óF   — | j         r| j         › d| j        › d| j        › �S dS )r‚   r„   ú/projects/p/N)r{   rY  rP   r=   s    r,   r†   zTracerSession.urlà  s6   € ð Œ>ð 	OØ”nÐNÐN¨¬ÐNÐNÀTÄWÐNÐNÐNØˆtr+   rÏ   c                ó@   — | j         �	d| j         vri S | j         d         S rÑ   ©rÈ   r=   s    r,   rG   zTracerSession.metadataç  ó*   € ð Œ:Ð °4´:Ð!=Ð!=ØˆIØŒz˜*Ô%Ð%r+   r’   c                ó@   — | j         �	d| j         vrg S | j         d         S )zRetrieve the tags (if any).Nr¾   r_  r=   s    r,   r¾   zTracerSession.tagsî  s*   € ð Œ:Ð ¨t¬zÐ!9Ð!9ØˆIØŒz˜&Ô!Ð!r+   rR   r  rŒ   rÛ   ©r2   r’   )r%   r&   r'   r(   r)   r   rÄ   rÆ   r�   r¢   rÈ   r   r{   rg   r�   r†   rG   r¾   rk   rl   s   @r,   rW  rW  À  sq  ø€ € € € € € ðð ð
 €H€H�HØ Ø ˜5Ð1SÐ1SÐTÑTÔT€JÐTÐTÐTÑTØ+Ø#'€HÐ'Ð'Ð'Ñ'Ø)Ø!%€KÐ%Ð%Ð%Ñ%Ø)Ø€DÐÐÐÑØ"Ø&*€EÐ*Ð*Ð*Ñ*Ø)Ø€O€O�OØ0Ø(Ð(Ð(Ñ(ØJà*˜{°4Ð8Ñ8Ô8€IÐ8Ð8Ð8Ñ8ðKð Kð Kð Kð Kð Kð Kð ðð ð ñ „Xðð ð&ð &ð &ñ „Xð&ð ð"ð "ð "ñ „Xð"ð "ð "ð "ð "r+   rW  c                  ó  — e Zd ZU dZdZded<   	 dZded<   	 dZded<   	 dZded<   	 dZ	ded	<   	 dZ
ded
<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   dS )ÚTracerSessionResultzqA 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ç   ry   Úlast_run_start_timerD   râ   Úsession_feedback_statsúOptional[list[dict[str, Any]]]Ú
run_facetsrì   rí   rî   rï   Úfirst_token_p50Úfirst_token_p99rÖ   Ú
error_rate)r%   r&   r'   r(   re  r)   rg  rh  rè   ræ   rç   ri  râ   rj  rl  rí   rî   rï   rm  rn  ro  r*   r+   r,   rd  rd  ö  s^  € € € € € € ðð ð
  $€IÐ#Ð#Ð#Ñ#Ø,Ø'+€KÐ+Ð+Ð+Ñ+Ø?Ø'+€KÐ+Ð+Ð+Ñ+Ø6Ø"&€LÐ&Ð&Ð&Ñ&Ø=Ø#'€MÐ'Ð'Ð'Ñ'ØDØ'+ÐÐ+Ð+Ð+Ñ+ØHØ.2ÐÐ2Ð2Ð2Ñ2Ø8Ø/3€NÐ3Ð3Ð3Ñ3Ø)Ø7;ÐÐ;Ð;Ð;Ñ;Ø1Ø15€JÐ5Ð5Ð5Ñ5Ø-Ø$(€JÐ(Ð(Ð(Ñ(ØMØ%)€KÐ)Ð)Ð)Ñ)ØGØ)-€OÐ-Ð-Ð-Ñ-ØCØ+/€OÐ/Ð/Ð/Ñ/ØGØ+/€OÐ/Ð/Ð/Ñ/Ø>Ø"&€JÐ&Ð&Ð&Ñ&Ø)Ð)r+   rd  c                  óD   — e Zd ZU dZded<   	 ded<   	 ed	d„¦   «         ZdS )
ÚBaseMessageLikez7A protocol representing objects similar to BaseMessage.r    Úcontentzdict[Any, Any]Úadditional_kwargsr2   c                ó   — dS )z,Type of the Message, used for serialization.Nr*   r=   s    r,   r+  zBaseMessageLike.type'  s   € € € r+   N©r2   r    )r%   r&   r'   r(   r)   r�   r+  r*   r+   r,   rq  rq    sU   € € € € € € àAÐAà€L€L�LØ%Ø%Ð%Ð%Ñ%ØCàð;ð ;ð ;ñ „Xð;ð ;ð ;r+   rq  c                  ó6   — e Zd ZU dZded<   	 ded<   	 ded<   dS )ÚDatasetShareSchemaz*Represents the schema for a dataset share.r   rA   Úshare_tokenr    r†   Nr$   r*   r+   r,   rw  rw  ,  s?   € € € € € € Ø4Ð4àÐÐÑØ ØÐÐÑØ,Ø€H€H�HØ(Ð(r+   rw  c                  óN   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 d	ed
<   dS )ÚAnnotationQueueRubricItemz�Represents a rubric item assigned to an annotation queue.

    Links a feedback config to a queue with optional per-queue customization.
    r    Úfeedback_keyrs   r�   zOptional[dict[str, str]]Úvalue_descriptionsÚscore_descriptionsrö   Úis_requiredNr$   r*   r+   r,   rz  rz  7  sf   € € € € € € ðð ð
 ÐÐÑØ=ØÐÐÑØCØ0Ð0Ð0Ñ0Ø7Ø0Ð0Ð0Ñ0Ø(ØÐÐÑØNÐNr+   rz  c                  ó’   — e Zd ZU dZded<   	 ded<   	 dZded<   	  ed	„ ¬
¦  «        Zded<   	  ed„ ¬
¦  «        Zded<   	 ded<   dS )ÚAnnotationQueuezRepresents an annotation queue.r   rP   r    r¢   Nrs   r�   c                 ó>   — t          j        t          j        ¦  «        S rR   rS   r*   r+   r,   rV   zAnnotationQueue.<lambda>R  rW   r+   rX   r   rZ   c                 ó>   — t          j        t          j        ¦  «        S rR   rS   r*   r+   r,   rV   zAnnotationQueue.<lambda>T  rW   r+   Ú
updated_atrY  )	r%   r&   r'   r(   r)   r�   r   rZ   rƒ  r*   r+   r,   r€  r€  I  s—   € € € € € € Ø)Ð)à€H€H�HØ8Ø€I€I�IØ+Ø!%€KÐ%Ð%Ð%Ñ%Ø:Ø ˜5Ð1SÐ1SÐTÑTÔT€JÐTÐTÐTÑTØ>Ø ˜5Ð1SÐ1SÐTÑTÔT€JÐTÐTÐTÑTØCØ€O€O�OØDÐDr+   r€  c                  ó"   — e Zd ZU dZdZded<   dS )ÚAnnotationQueueWithDetailsz,Represents an annotation queue with details.Nrs   Úrubric_instructions)r%   r&   r'   r(   r†  r)   r*   r+   r,   r…  r…  Z  s*   € € € € € € Ø6Ð6à)-ÐÐ-Ð-Ð-Ñ-Ø;Ð;r+   r…  c                  óB   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   d	S )
ÚRunKeyzæA run identified by its full lookup key, for adding to an annotation queue.

    Unlike a bare run ID, this carries the partition key (``session_id`` and
    ``start_time``) so the run can be located directly, without a scan.
    zUnion[UUID, str]r;  rÞ   úUnion[datetime, str]rÄ   zNotRequired[Union[UUID, str]]Úsource_proposed_example_idNr$   r*   r+   r,   rˆ  rˆ  a  s_   € € € € € € ðð ð ÐÐÑØ0Ø Ð Ð Ñ ØKØ$Ð$Ð$Ñ$ðà=Ð=Ð=Ñ=ðRð Rr+   rˆ  c                  óZ   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 ded<   	 d	ed
<   dS )ÚBatchIngestConfigz"Configuration for batch ingestion.r^   Úuse_multipart_endpointr1   Úscale_up_qsize_triggerÚscale_up_nthreads_limitÚscale_down_nempty_triggerÚ
size_limitr¯   Úsize_limit_bytesNr$   r*   r+   r,   rŒ  rŒ  t  sl   € € € € € € Ø,Ð,à Ð Ð Ñ ØDØÐÐÑØ<Ø Ð Ð Ñ Ø7Ø"Ð"Ð"Ñ"ØAØ€O€O�OØ/Ø#Ð#Ð#Ñ#Ø8Ð8r+   rŒ  c                  óR   — e Zd ZU dZdZded<   	 dZded<   	 dZded	<   	 dZd
ed<   dS )ÚLangSmithInfoz'Information about the LangSmith server.rô   r    ÚversionNry   Úlicense_expiration_timezOptional[BatchIngestConfig]Úbatch_ingest_configrD   Úinstance_flags)	r%   r&   r'   r(   r•  r)   r–  r—  r˜  r*   r+   r,   r”  r”  …  sg   € € € € € € Ø1Ð1à€GÐÐÐÑØ.Ø26ÐÐ6Ð6Ð6Ñ6Ø+Ø7;ÐÐ;Ð;Ð;Ñ;ØØ/3€NÐ3Ð3Ð3Ñ3Ð3Ð3r+   r”  c                  óF   — e Zd ZU dZded<   	 ded<   	 ded<   	 dZded	<   dS )
ÚLangSmithSettingsz"Settings for the LangSmith tenant.r    rP   Údisplay_namer   rZ   Nrs   Útenant_handle)r%   r&   r'   r(   r)   rœ  r*   r+   r,   rš  rš  ”  sS   € € € € € € Ø,Ð,à€G€G�GØØÐÐÑØ)ØÐÐÑØ*Ø#'€MÐ'Ð'Ð'Ñ'Ð'Ð'r+   rš  c                  ó6   — e Zd ZU dZded<   	 ded<   	 ded<   dS )	ÚFeedbackIngestTokenz2Represents the schema for a feedback ingest token.r   rP   r    r†   r   Ú
expires_atNr$   r*   r+   r,   rž  rž     s<   € € € € € € Ø<Ð<à€H€H�HØ.Ø€H€H�HØ3ØÐÐÑØ+Ð+r+   rž  c                  ó6   — e Zd ZU dZded<   	 ded<   	 ded<   dS )	ÚRunEventzRun event schema.r    r¢   r‰  ÚtimerD   r}   Nr$   r*   r+   r,   r¡  r¡  «  s?   € € € € € € ØÐà€I€I�IØØÐÐÑØØ$Ð$Ð$Ñ$Ø,Ð,r+   r¡  c                  ó6   — e Zd ZU dZded<   	 ded<   	 ded<   dS )ÚTimeDeltaInputzTimedelta input schema.r1   ÚdaysÚhoursÚminutesNr$   r*   r+   r,   r¤  r¤  ¶  s9   € € € € € € Ø!Ð!à€I€I�IØØ€J€J�JØØ€L€L�LØÐr+   r¤  c                  ó6   — e Zd ZU dZded<   	 ded<   	 ded<   dS )ÚDatasetDiffInfoz;Represents the difference information between two datasets.z
list[UUID]Úexamples_modifiedÚexamples_addedÚexamples_removedNr$   r*   r+   r,   r©  r©  Á  sB   € € € € € € ØEÐEà!Ð!Ð!Ñ!Ø=ØÐÐÑØ:Ø Ð Ð Ñ Ø<Ð<r+   r©  c                  ó¸   — e Zd ZU dZded<   	 dZded<   	 dZded<   	 ded<   	 d	ed
<   	 d	ed<   	 ded<   	 dZded<   	 dZded<   	 dZ	ded<   	 e
dd„¦   «         ZdS )ÚComparativeExperimentz’Represents a comparative experiment.

    This information summarizes evaluation results comparing
    two or more models on a given dataset.
    r   rP   Nrs   r¢   r�   rY  r   rZ   rz   rZ  rD   rÈ   rË   Úexperiments_inforâ   r2   rÏ   c                ó@   — | j         �	d| j         vri S | j         d         S rÑ   r_  r=   s    r,   rG   zComparativeExperiment.metadataè  r`  r+   rÛ   )r%   r&   r'   r(   r)   r¢   r�   rÈ   r¯  râ   r�   rG   r*   r+   r,   r®  r®  Ì  sê   € € € € € € ðð ð €H€H�HØ?Ø€DÐÐÐÑØ:Ø!%€KÐ%Ð%Ð%Ñ%Ø@Ø€O€O�OØGØÐÐÑØDØÐÐÑØJØÐÐÑØJØ&*€EÐ*Ð*Ð*Ñ*Ø?Ø-1ÐÐ1Ð1Ð1Ñ1Ø\Ø/3€NÐ3Ð3Ð3Ñ3ØPàð&ð &ð &ñ „Xð&ð &ð &r+   r®  c                  óÂ   — e Zd ZU dZ ed¬¦  «        Zded<   	 ded<   	 ded<   	 ded	<   	 d
ed<   	 dZded<   	  edd¬¦  «        Z	ded<   	  edd¬¦  «        Z
ded<   dS )ÚPromptCommitz$Represents a Prompt with a manifest.T)Úpopulate_by_namer    ÚownerÚrepoÚcommit_hashrÏ   Úmanifestz
list[dict]ÚexamplesNrs   r�   rJ   )rC   ÚaliasrÇ   Úhub_model_configÚmodel_providerÚhub_model_provider)r%   r&   r'   r(   r   rJ   r)   r�   r   rº  r¼  r*   r+   r,   r²  r²  ð  sÉ   € € € € € € Ø.Ð.à�:¨tÐ4Ñ4Ô4€Là€J€J�JØ0Ø€I€I�IØ!ØÐÐÑØ(ØÐÐÑØ%ØÐÐÑØØ!%€KÐ%Ð%Ð%Ñ%Ø=Ø', u°TÀÐ'PÑ'PÔ'PÐÐPÐPÐPÑPØ1Ø(-¨°dÐBRÐ(SÑ(SÔ(SÐÐSÐSÐSÑSØ/Ð/r+   r²  c                  óú   — e Zd ZU dZded<   	 ded<   	 ded<   	 dZded	<   	 dZded
<   	 dZded<   	 dZded<   	 dZ	ded<   	 dZ
ded<   	  ee¬¦  «        Zded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   dS )ÚListedPromptCommitz;Represents a listed prompt commit with associated metadata.r   rP   r    r´  rµ  NrO   rä   Úrepo_idÚ	parent_idrs   r¶  ry   rZ   rƒ  rX   rß   Úexample_run_idsr   r¯   Únum_downloadsÚ	num_viewsÚparent_commit_hashr�   )r%   r&   r'   r(   r)   rä   r¿  rÀ  r¶  rZ   rƒ  r   r•   rÁ  rÂ  rÃ  rÄ  r�   r*   r+   r,   r¾  r¾    s#  € € € € € € ØEÐEà€H€H�HØ6à€J€J�JØ)à€I€I�IØ3à"&€KÐ&Ð&Ð&Ñ&ØOà"€GÐ"Ð"Ð"Ñ"Ø5à $€IÐ$Ð$Ð$Ñ$Ø8à!%€KÐ%Ð%Ð%Ñ%Ø*à%)€JÐ)Ð)Ð)Ñ)Ø=à%)€JÐ)Ð)Ð)Ñ)ØBà,1¨EÀ$Ð,GÑ,GÔ,G€OÐGÐGÐGÑGØHà#$€MÐ$Ð$Ð$Ñ$Ø>à €IÐ Ð Ð Ñ Ø:à(,ÐÐ,Ð,Ð,Ñ,Ø1à!%€KÐ%Ð%Ð%Ñ%Ø=Ð=r+   r¾  c                  ó:  — e Zd ZU dZded<   	 dZded<   	 dZded<   	 ded<   	 ded	<   	 d
ed<   	 d
ed<   	 ded<   	 ded<   	 ded<   	 dZded<   	 dZded<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded<   	 dZ	ded<   	 dZ
ded<   	 ded<   	 dZded<   	 dZded<   dS ) ÚPromptz"Represents a Prompt with metadata.r    Úrepo_handleNrs   r�   ÚreadmerP   rY  r   rZ   rƒ  r^   Ú	is_publicÚis_archivedr’   r¾   Úoriginal_repo_idÚupstream_repo_idr´  Ú	full_namer1   Ú	num_likesrÂ  rÃ  rö   Úliked_by_auth_userÚlast_commit_hashÚnum_commitsÚoriginal_repo_full_nameÚupstream_repo_full_name)r%   r&   r'   r(   r)   r�   rÈ  rË  rÌ  rÏ  rÐ  rÒ  rÓ  r*   r+   r,   rÆ  rÆ  5  sx  € € € € € € Ø,Ð,àÐÐÑØ!Ø!%€KÐ%Ð%Ð%Ñ%Ø(Ø €FÐ Ð Ð Ñ Ø#Ø€G€G�GØØ€N€N�NØ,ØÐÐÑØ*ØÐÐÑØ-Ø€O€O�OØ'ØÐÐÑØ)Ø€O€O�OØ.Ø&*ÐÐ*Ð*Ð*Ñ*Ø3Ø&*ÐÐ*Ð*Ð*Ñ*Ø3ØÐÐÑØ0Ø€N€N�NØ<Ø€N€N�NØØÐÐÑØ"Ø€N€N�NØØ)-ÐÐ-Ð-Ð-Ñ-Ø@Ø&*ÐÐ*Ð*Ð*Ñ*Ø&ØÐÐÑØ Ø-1ÐÐ1Ð1Ð1Ñ1Ø:Ø-1ÐÐ1Ð1Ð1Ñ1Ø:Ð:r+   rÆ  c                  ó*   — e Zd ZU dZded<   	 ded<   dS )ÚListPromptsResponsez A list of prompts with metadata.zlist[Prompt]Úreposr1   r¬   Nr$   r*   r+   r,   rÕ  rÕ  f  s0   € € € € € € Ø*Ð*àÐÐÑØØ€J€J�JØ&Ð&r+   rÕ  c                  ó(   — e Zd ZdZdZ	 dZ	 dZ	 dZdS )ÚPromptSortFieldz$Enum for sorting fields for prompts.rÂ  rÃ  rƒ  rÎ  N)r%   r&   r'   r(   rÂ  rÃ  rƒ  rÎ  r*   r+   r,   rØ  rØ  o  s3   € € € € € Ø.Ð.à#€MØØ€IØØ€JØØ€IØÐr+   rØ  c                  ó.   — e Zd ZU dZdZded<   	 ded<   dS )Ú	FileEntryzA file with inline content.ÚfilezLiteral['file']r+  r    rr  Nr1  r*   r+   r,   rÚ  rÚ  |  s5   € € € € € € Ø%Ð%à"€DÐ"Ð"Ð"Ñ"ØØ€L€L�LØÐr+   rÚ  c                  ó^   — e Zd ZU dZdZded<   	 ded<   	 dZded	<   	 dZd
ed<   	 dZd
ed<   dS )Ú
AgentEntryzA link to another agent repo.ÚagentzLiteral['agent']r+  r    rÇ  NrO   Ú	commit_idrs   r´  r¶  ©	r%   r&   r'   r(   r+  r)   rß  r´  r¶  r*   r+   r,   rÝ  rÝ  …  st   € € € € € € Ø'Ð'à$€DÐ$Ð$Ð$Ñ$ØØÐÐÑØ(Ø $€IÐ$Ð$Ð$Ñ$Ø6Ø€EÐÐÐÑØ'Ø!%€KÐ%Ð%Ð%Ñ%Ø-Ð-r+   rÝ  c                  ó^   — e Zd ZU dZdZded<   	 ded<   	 dZded	<   	 dZd
ed<   	 dZd
ed<   dS )Ú
SkillEntryzA link to a skill repo.ÚskillzLiteral['skill']r+  r    rÇ  NrO   rß  rs   r´  r¶  rà  r*   r+   r,   râ  râ  ”  st   € € € € € € Ø!Ð!à$€DÐ$Ð$Ð$Ñ$ØØÐÐÑØ(Ø $€IÐ$Ð$Ð$Ñ$Ø6Ø€EÐÐÐÑØ'Ø!%€KÐ%Ð%Ð%Ñ%Ø-Ð-r+   râ  r+  )Údiscriminatorc                  ó6   — e Zd ZU dZded<   	 ded<   	 ded<   dS )	ÚAgentContextzAn agent pulled from hub.r   rß  r    r¶  údict[str, Entry]ÚfilesNr$   r*   r+   r,   ræ  ræ  §  s?   € € € € € € Ø#Ð#à€O€O�OØØÐÐÑØØÐÐÑØ!Ð!r+   ræ  c                  ó6   — e Zd ZU dZded<   	 ded<   	 ded<   dS )	ÚSkillContextzA skill pulled from hub.r   rß  r    r¶  rç  rè  Nr$   r*   r+   r,   rê  rê  ²  s?   € € € € € € Ø"Ð"à€O€O�OØØÐÐÑØØÐÐÑØ!Ð!r+   rê  c                  ó6   — e Zd ZU dZded<   	 ded<   	 ded<   dS )	ÚDirectoryCommitInfoz0Commit details returned from a directory commit.r   rP   r    r¶  r   rZ   Nr$   r*   r+   r,   rì  rì  ½  s?   € € € € € € Ø:Ð:à€H€H�HØØÐÐÑØØÐÐÑØ&Ð&r+   rì  c                  ó   — e Zd ZU dZded<   dS )ÚDirectoryCommitResponsez0Response body for ``POST /directories/commits``.rì  ÚcommitNr$   r*   r+   r,   rî  rî  È  s$   € € € € € € Ø:Ð:àÐÐÑØÐr+   rî  c                  óZ   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded<   d	S )
ÚInputTokenDetailsz~Breakdown of input token counts.

    Does *not* need to sum to full input token count. Does *not* need to have all keys.
    r1   ÚaudioÚcache_creationÚ
cache_readÚcache_read_over_200kÚephemeral_5m_input_tokensÚephemeral_1h_input_tokensNr$   r*   r+   r,   rñ  rñ  Ï  sy   € € € € € € ðð ð
 €J€J�JØØÐÐÑðð €O€O�Oðð ÐÐÑðà"Ð"Ð"Ñ"ØSØ"Ð"Ð"Ñ"ØQÐQr+   rñ  c                  ó*   — e Zd ZU dZded<   	 ded<   dS )ÚOutputTokenDetailsz€Breakdown of output token counts.

    Does *not* need to sum to full output token count. Does *not* need to have all keys.
    r1   rò  Ú	reasoningNr$   r*   r+   r,   rù  rù  ê  s7   € € € € € € ðð ð
 €J€J�JØØ€N€N�Nðð r+   rù  c                  ó6   — e Zd ZU dZded<   	 ded<   	 ded<   dS )ÚInputCostDetailszvBreakdown of input token costs.

    Does *not* need to sum to full input cost. Does *not* need to have all keys.
    rI  rò  ró  rô  Nr$   r*   r+   r,   rü  rü  ú  sM   € € € € € € ðð ð
 €L€L�LØ%ØÐÐÑðð ÐÐÑðð r+   rü  c                  ó*   — e Zd ZU dZded<   	 ded<   dS )ÚOutputCostDetailszxBreakdown of output token costs.

    Does *not* need to sum to full output cost. Does *not* need to have all keys.
    rI  rò  rú  Nr$   r*   r+   r,   rþ  rþ    s:   € € € € € € ðð ð
 €L€L�LØ&ØÐÐÑðð r+   rþ  c                  óŠ   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 ded	<   	 d
ed<   	 d
ed<   	 d
ed<   	 ded<   	 ded<   dS )ÚUsageMetadataz�Usage metadata for a message, such as token counts.

    This is a standard representation of token usage that is consistent across models.
    r1   r  r  rè   zNotRequired[InputTokenDetails]r  zNotRequired[OutputTokenDetails]r  zNotRequired[float]r  r	  rí   zNotRequired[InputCostDetails]r  zNotRequired[OutputCostDetails]r  Nr$   r*   r+   r,   r   r     s¹   € € € € € € ðð ð
 ÐÐÑØJØÐÐÑØPØÐÐÑØAØ7Ð7Ð7Ñ7ðð :Ð9Ð9Ñ9ðð #Ð"Ð"Ñ"Ø'Ø#Ð#Ð#Ñ#Ø(Ø"Ð"Ð"Ñ"Ø'Ø5Ð5Ð5Ñ5Ø/Ø7Ð7Ð7Ñ7Ø0Ð0r+   r   c                  óŠ   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 ded	<   	 d
ed<   	 d
ed<   	 d
ed<   	 ded<   	 ded<   dS )ÚExtractedUsageMetadataz�Usage metadata dictionary extracted from a run.

    Should be the same as UsageMetadata, but does not require all
    keys to be present.
    r1   r  r  rè   rñ  r  rù  r  rI  r  r	  rí   rü  r  rþ  r  Nr$   r*   r+   r,   r  r  A  s±   € € € € € € ðð ð ÐÐÑØ3ØÐÐÑØ3ØÐÐÑØ*Ø*Ð*Ð*Ñ*Ø*Ø,Ð,Ð,Ñ,Ø+ØÐÐÑØ'ØÐÐÑØ(ØÐÐÑØ'Ø(Ð(Ð(Ñ(Ø/Ø*Ð*Ð*Ñ*Ø0Ð0r+   r  c                  ó6   — e Zd ZU dZded<   	 ded<   	 ded<   dS )	ÚUpsertExamplesResponsezCResponse object returned from the upsert_examples_multipart method.r1   Úcountr’   Úexample_idszNotRequired[str | None]r¿   Nr$   r*   r+   r,   r  r  ^  s?   € € € € € € ØMÐMà€J€J�JØ4ØÐÐÑØ5Ø"Ð"Ð"Ñ"ØcÐcr+   r  c                  ó6   — e Zd ZU dZ ee¬¦  «        Zded<   dS )ÚExampleWithRunszExample with runs.rX   z	list[Run]ÚrunsN)r%   r&   r'   r(   r   r•   r	  r)   r*   r+   r,   r  r  i  s6   € € € € € € ØÐà�e¨DÐ1Ñ1Ô1€DÐ1Ð1Ð1Ñ1à"Ð"r+   r  c                  óº   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded	<   	 d
ed<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded<   dS )ÚExperimentRunStatsz!Run statistics for an experiment.r¯   re  rf  rg  rh  rè   ræ   rç   ry   ri  rk  rl  rì   rí   rî   rï   rm  rn  rÖ   ro  Nr$   r*   r+   r,   r  r  q  sç   € € € € € € Ø+Ð+àÐÐÑØ,Ø$Ð$Ð$Ñ$Ø?Ø$Ð$Ð$Ñ$Ø6ØÐÐÑØ=Ø Ð Ð Ñ ØDØ$Ð$Ð$Ñ$ØHØ+Ð+Ð+Ñ+Ø8Ø.Ð.Ð.Ñ.Ø-Ø!Ð!Ð!Ñ!ØMØ"Ð"Ð"Ñ"ØGØ&Ð&Ð&Ñ&ØCØ(Ð(Ð(Ñ(ØGØ(Ð(Ð(Ñ(Ø>ØÐÐÑØ)Ð)r+   r  c                  ó6   — e Zd ZU dZded<   	 ded<   	 ded<   dS )	ÚExperimentResultsz´Results 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â   r  Ú	run_statszIterator[ExampleWithRuns]Úexamples_with_runsNr$   r*   r+   r,   r  r  ’  sH   € € € € € € ðð ð ÐÐÑØ1Ø!Ð!Ð!Ñ!Ø6Ø1Ð1Ð1Ñ1Ð1Ð1r+   r  c                  ó~   — e Zd ZU dZded<   ded<   ded<   dZded	<   ded
<   ded<   ded<   edd„¦   «         Zdd„ZdS )ÚInsightsReportzHAn Insights Report created by the Insights Agent over a tracing project.ú
UUID | strrP   r    r¢   rå   Nú
str | NonerÉ   Ú
project_idÚhost_urlrY  r2   c           	     ó’   — | j         › dt          | j        ¦  «        › dt          | j        ¦  «        › dt          | j        ¦  «        › �S )z1URL to view this Insights Report in LangSmith UI.r„   r]  z?tab=3&clusterJobId=)r  r    rY  r  rP   r=   s    r,   ÚlinkzInsightsReport.link«  sK   € ð ”-Ð}Ð}¥C¨¬Ñ$7Ô$7Ð}Ð}ÅSÈÌÑEYÔEYÐ}Ð}ÕorÐswÔszÑo{Ôo{Ð}Ð}Ð}r+   c                ó`   — dt          | j        d¬¦  «        › dt          | j        ¦  «        › d�S )Nz	<a href="T)Úquotez2", target="_blank" rel="noopener">InsightsReport('z')</a>)Ú_html_escaper  r¢   r=   s    r,   Ú_repr_html_zInsightsReport._repr_html_°  s\   € ð T�<¨¬	¸Ð>Ñ>Ô>ð  Tð  TÕsð  AEô  AJñ  tKô  tKð  Tð  Tð  Tð  	Tr+   ru  )	r%   r&   r'   r(   r)   rÉ   r�   r  r  r*   r+   r,   r  r     s¥   € € € € € € ØRÐRà€N€N�NØ€I€I�IØ€K€K�KØ€EÐÐÐÑØÐÐÑØ€M€M�MØÐÐÑàð~ð ~ð ~ñ „Xð~ðTð Tð Tð Tð Tð Tr+   r  c                  ó\   — e Zd ZU dZded<   dZded<   dZded<   d	ed
<   ded<   dZded<   dS )ÚInsightsHighlightedTracez2A trace highlighted in an insights report summary.r  r;  NúUUID | str | NoneÚ
cluster_idr  Úcluster_namer1   Úrankr    Úhighlight_reasonÚsummary)r%   r&   r'   r(   r)   r  r   r#  r*   r+   r,   r  r  ´  sl   € € € € € € Ø<Ð<àÐÐÑØ$(€JÐ(Ð(Ð(Ñ(Ø#€LÐ#Ð#Ð#Ñ#Ø€I€I�IØÐÐÑØ€GÐÐÐÑÐÐr+   r  c                  ót   — e Zd ZU dZ ee¬¦  «        Zded<   dZded<    ee¬¦  «        Z	ded	<   dZ
d
ed<   dS )ÚInsightsSummaryReportzIHigh-level summary of an insights job: key points and highlighted traces.rX   r’   Ú
key_pointsNr  Útitlezlist[InsightsHighlightedTrace]Úhighlighted_traceszdatetime | NonerZ   )r%   r&   r'   r(   r   r•   r&  r)   r'  r(  rZ   r*   r+   r,   r%  r%  ¿  sw   € € € € € € ØSÐSà!˜E°$Ð7Ñ7Ô7€JÐ7Ð7Ð7Ñ7Ø€EÐÐÐÑØ9>¸ÈtÐ9TÑ9TÔ9TÐÐTÐTÐTÑTØ"&€JÐ&Ð&Ð&Ñ&Ð&Ð&r+   r%  c                  óp   — e Zd ZU dZded<   dZded<   ded<   d	ed
<   d	ed<   dZded<   ded<   dZded<   dS )ÚInsightsClusterz/A single cluster of runs in an insights report.r  rP   Nr  rÀ  r1   Úlevelr    r¢   r�   r  Úparent_nameÚnum_runsúdict[str, Any] | NoneÚstats)r%   r&   r'   r(   r)   rÀ  r,  r/  r*   r+   r,   r*  r*  È  s{   € € € € € € Ø9Ð9à€N€N�NØ#'€IÐ'Ð'Ð'Ñ'Ø€J€J�JØ€I€I�IØÐÐÑØ"€KÐ"Ð"Ð"Ñ"Ø€M€M�MØ#'€EÐ'Ð'Ð'Ñ'Ð'Ð'r+   r*  )r  Úclientr   rÞ   ú
str | UUIDÚjob_idr  ústr | UUID | Noner2   úlist[dict[str, Any]]c               óœ  — ddl m} g }d}d}|�½||dœ}|�t          |¦  «        |d<   |                      dd|› d	|› d
�|¬¦  «        }	|                     |	¦  «         |	                     ¦   «         }
|
                     dg ¦  «        pg }|                     |¦  «         |
                     d¦  «        }|€d}nt          |¦  «        }|sd}|­½|S )zHFetch runs for an Insights job, optionally filtered to a single cluster.r   )Úutilséd   N)Úlimitr8   r  ÚGETz
/sessions/z
/insights/z/runs)Úparamsr	  r8   )	Ú	langsmithr6  r    Úrequest_with_retriesÚraise_for_status_with_textÚjsonrÕ   Úextendr1   )r0  rÞ   r2  r  Úls_utilsÚall_runsr8  Únext_offsetr:  ÚrespÚbodyÚbatchÚreturned_offsets                r,   Ú_fetch_insights_runsrG  Õ  s  € ð ,Ð+Ð+Ð+Ð+Ð+à%'€HØ€EØ€KØ
Ð
!Ø+0¸KÐ!HÐ!HˆØÐ!Ý#& z¡?¤?ˆF�<Ñ à×*Ò*ØØ<˜Ð<Ð<¨vÐ<Ð<Ð<Øð +ñ 
ô 
ˆð
 	×+Ò+¨DÑ1Ô1Ð1Ø�yŠy‰{Œ{ˆØ—’˜ Ñ$Ô$Ð*¨ˆØ�Š˜ÑÔÐØŸ(š( 8Ñ,Ô,ˆØÐ"ØˆKˆKå˜oÑ.Ô.ˆKØð #Ø"�ð) Ð
!ð* €Or+   c                  ó>   — e Zd ZdZdZdd	„Zdd„Zdd„Zdd„Zdd„Z	dS )Ú_ClusterWithTraceszYCluster wrapper that can load its traces from the API. Returned by report.clusters[name].©Ú_clusterÚ_reportÚclusterr*  ÚreportÚInsightsReportResultr2   r~   c                ó"   — || _         || _        d S rR   rJ  )r5   rM  rN  s      r,   rg   z_ClusterWithTraces.__init__ÿ  s   € ØˆŒØˆŒˆˆr+   r¢   r    r   c                ó,   — t          | j        |¦  «        S rR   )ÚgetattrrK  )r5   r¢   s     r,   Ú__getattr__z_ClusterWithTraces.__getattr__  s   € Ý�t”} dÑ+Ô+Ð+r+   r’   c                ó¢   — t          t          t          | j        ¦  «        ¦  «        t          t          | j        ¦  «        ¦  «        z  ¦  «        S rR   )r•   ÚsetÚdirri   rK  r=   s    r,   Ú__dir__z_ClusterWithTraces.__dir__  s9   € Ý•C�˜DœNÑ+Ô+Ñ,Ô,­sµ3°t´}Ñ3EÔ3EÑ/FÔ/FÑFÑGÔGÐGr+   c                ó"   — d| j         j        ›d�S )Nz_ClusterWithTraces(name=ú))rK  r¢   r=   s    r,   r‹   z_ClusterWithTraces.__repr__	  s   € ØA¨$¬-Ô*<ÐAÐAÐAÐAr+   r4  c                ó  — t          | j        dd¦  «        }|€t          d¦  «        ‚t          | j        dd¦  «        }t          | j        dd¦  «        }|�|€t          d¦  «        ‚t          |||| j        j        ¬¦  «        S )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)r0  rÞ   r2  r  )rR  rL  Ú
ValueErrorrG  rK  rP   ©r5   r0  rÞ   r2  s       r,   Úload_tracesz_ClusterWithTraces.load_traces  s˜   € å˜œ y°$Ñ7Ô7ˆØˆ>ÝØ_ñô ð õ ˜Tœ\¨=¸$Ñ?Ô?ˆ
Ý˜œ y°$Ñ7Ô7ˆØÐ  ÝÐ=Ñ>Ô>Ð>å#ØØ!ØØ”}Ô'ð	
ñ 
ô 
ð 	
r+   N)rM  r*  rN  rO  r2   r~   )r¢   r    r2   r   rb  ru  )r2   r4  )
r%   r&   r'   r(   Ú	__slots__rg   rS  rW  r‹   r`  r*   r+   r,   rI  rI  ú  s‹   € € € € € ØcÐcà'€Iðð ð ð ð,ð ,ð ,ð ,ðHð Hð Hð HðBð Bð Bð Bð
ð 
ð 
ð 
ð 
ð 
r+   rI  c                  ó<   — e Zd ZdZdZdd	„Zdd„Zd„ Zdd„Zdd„Z	dS )Ú_ClustersMapzWList-like map of clusters by name. Supports report.clusters['name'] and .load_traces().)Ú	_clustersrL  Úclustersúlist[InsightsCluster]rN  rO  r2   r~   c                ó<   — t          |¦  «        | _        || _        d S rR   )r•   rd  rL  )r5   re  rN  s      r,   rg   z_ClustersMap.__init__%  s   € õ
 ˜h™œˆŒØˆŒˆˆr+   r<  ú	str | intrI  c           	     ó  — t          |t          ¦  «        r| j        |         }nQd„ | j        D ¦   «         }||vr4t          d|›dt	          |                     ¦   «         ¦  «        › �¦  «        ‚||         }t          || j        ¦  «        S )Nc                ó   — i | ]
}|j         |“ŒS r*   )r¢   )Ú.0Úcs     r,   ú
<dictcomp>z,_ClustersMap.__getitem__.<locals>.<dictcomp>1  s   € Ð9Ð9Ð9 Q�q”v˜qÐ9Ð9Ð9r+   zCluster z not found; available: )Ú
isinstancer1   rd  ÚKeyErrorr•   ÚkeysrI  rL  )r5   r<  rM  Úby_names       r,   Ú__getitem__z_ClustersMap.__getitem__-  s”   € Ý�c�3ÑÔð 	#Ø”n SÔ)ˆGˆGà9Ð9¨$¬.Ð9Ñ9Ô9ˆGØ˜'Ð!Ð!ÝØS˜sÐSÐS½TÀ'Ç,Â,Á.Ä.Ñ=QÔ=QÐSÐSñô ð ð ˜c”lˆGÝ! '¨4¬<Ñ8Ô8Ð8r+   c                ó*   ‡ — ˆ fd„‰ j         D ¦   «         S )Nc              3  óB   •K  — | ]}t          |‰j        ¦  «        V — Œd S rR   )rI  rL  )rk  rl  r5   s     €r,   ú	<genexpr>z(_ClustersMap.__iter__.<locals>.<genexpr>:  s0   øè è € ÐLÐL¸Õ" 1 d¤lÑ3Ô3ÐLÐLÐLÐLÐLÐLr+   )rd  r=   s   `r,   Ú__iter__z_ClustersMap.__iter__9  s   ø€ ØLÐLÐLÐL¸T¼^ÐLÑLÔLÐLr+   r1   c                ó*   — t          | j        ¦  «        S rR   ©Úlenrd  r=   s    r,   Ú__len__z_ClustersMap.__len__<  s   € Ý�4”>Ñ"Ô"Ð"r+   r    c                ó2   — dt          | j        ¦  «        › d�S )Nz_ClustersMap(n_clusters=rY  rx  r=   s    r,   r‹   z_ClustersMap.__repr__?  s   € Ø@­#¨d¬nÑ*=Ô*=Ð@Ð@Ð@Ð@r+   N)re  rf  rN  rO  r2   r~   )r<  rh  r2   rI  )r2   r1   ru  )
r%   r&   r'   r(   ra  rg   rr  rv  rz  r‹   r*   r+   r,   rc  rc     s‡   € € € € € ØaÐaà(€Iðð ð ð ð
9ð 
9ð 
9ð 
9ðMð Mð Mð#ð #ð #ð #ðAð Að Að Að Að Ar+   rc  c                  ó~  — e Zd ZU dZded<   ded<   ded<   dZded	<   dZded
<   dZded<   dZded<   dZ	ded<   dZ
ded<   dZded<    ee¬¦  «        Zded<   dZded<    ee¬¦  «        Zded<   	  ed¬¦  «        Zded<    ed¬¦  «        Zded<    ed¬¦  «        Zded<    ed ¬!¦  «        Zd,d(„Zd-d*„Zd-d+„ZdS ).rO  zVFull result of fetching an Insights report (job + clusters + summary + optional runs).r  rP   r    r¢   rå   Nzdatetime | str | NonerÄ   rÆ   rZ   r.  rG   r
  Úshaper  rÉ   r  Ú	config_idrX   rf  re  zInsightsSummaryReport | NonerN  r4  r	  rB   r   r[  r\  r]  Úallowr_  r0  rÞ   r1  r2  r2   r~   c                ó@  — t                                | d|¦  «         t                                | dt          |¦  «        ¦  «         t                                | dt          |¦  «        ¦  «         t                                | dt          | j        | ¦  «        ¦  «         dS )zXAttach client and ids so clusters can load traces. Called by Client.get_insights_report.r[  r\  r]  re  N)ÚobjectÚ__setattr__r    rc  re  r_  s       r,   Ú_attach_clientz#InsightsReportResult._attach_client[  s�   € õ 	×Ò˜4 ¨FÑ3Ô3Ð3Ý×Ò˜4 µ°J±´Ñ@Ô@Ð@Ý×Ò˜4 ­C°©K¬KÑ8Ô8Ð8Ý×ÒØØÝ˜œ¨Ñ-Ô-ñ	
ô 	
ð 	
ð 	
ð 	
r+   rÏ   c                ó^  — | j         }t          |d¦  «        r!t                               | d|j        ¦  «         	 |                      d¬¦  «        t          |d¦  «        rt                               | d|¦  «         S S # t          |d¦  «        rt                               | d|¦  «         w w xY w)z?Return the report as a JSON-serializable dict (raw JSON shape).rd  re  r>  ©Úmode)re  Úhasattrr�  r‚  rd  Ú
model_dump)r5   Úclusters_vals     r,   Úto_jsonzInsightsReportResult.to_jsonk  s¹   € à”}ˆÝ�< Ñ-Ô-ð 	IÝ×Ò˜t Z°Ô1GÑHÔHÐHð	CØ—?’?¨�?Ñ/Ô/å�| [Ñ1Ô1ð CÝ×"Ò" 4¨°\ÑBÔBÐBÐBðCø�w�| [Ñ1Ô1ð CÝ×"Ò" 4¨°\ÑBÔBÐBÐBðCøøøs   ºA= Á=/B,c                ó.   — |                       d¬¦  «        S )zHReturn the report as a JSON-serializable dict (e.g. for saving to file).r>  r…  )rˆ  r=   s    r,   Úmodel_dump_json_dictz)InsightsReportResult.model_dump_json_dictv  s   € à�Š FˆÑ+Ô+Ð+r+   )r0  r   rÞ   r1  r2  r1  r2   r~   rÛ   )r%   r&   r'   r(   r)   rÄ   rÆ   rZ   rG   r}  rÉ   r~  r   r•   re  rN  r	  r   r[  r\  r]  r   rJ   rƒ  rŠ  rŒ  r*   r+   r,   rO  rO  C  sª  € € € € € € Ø`Ð`à€N€N�NØ€I€I�IØ€K€K�KØ(,€JÐ,Ð,Ð,Ñ,Ø&*€HÐ*Ð*Ð*Ñ*Ø(,€JÐ,Ð,Ð,Ñ,Ø&*€HÐ*Ð*Ð*Ñ*Ø#'€EÐ'Ð'Ð'Ñ'Ø€EÐÐÐÑØ#'€IÐ'Ð'Ð'Ñ'Ø&+ e¸DÐ&AÑ&AÔ&A€HÐAÐAÐAÑAØ+/€FÐ/Ð/Ð/Ñ/Ø!& °tÐ!<Ñ!<Ô!<€DÐ<Ð<Ð<Ñ<Ø8à�; tÐ,Ñ,Ô,€GÐ,Ð,Ð,Ñ,Ø"�{¨4Ð0Ñ0Ô0€KÐ0Ð0Ð0Ñ0Ø�; tÐ,Ñ,Ô,€GÐ,Ð,Ð,Ñ,à�: GÐ,Ñ,Ô,€Lð
ð 
ð 
ð 
ð 	Cð 	Cð 	Cð 	Cð,ð ,ð ,ð ,ð ,ð ,r+   rO  c                  ó2   — e Zd ZU dZded<   ded<   ded<   dS )	ÚFeedbackFormulaWeightedVariableaf  A feedback key and weight used when calculating feedback formulas.

    .. admonition:: Deprecated

        Composite feedback formulas are no longer supported in the SDK.
        Add composite feedback scores via the LangSmith UI instead. This
        schema is retained only for backwards compatibility and will be
        removed in a future release.
    zLiteral['weighted_key']Ú	part_typerI  Úweightz#Annotated[str, Field(min_length=1)]r<  Nr$   r*   r+   r,   rŽ  rŽ  {  s?   € € € € € € ðð ð 'Ð&Ð&Ñ&Ø€M€M�MØ,Ð,Ð,Ñ,Ð,Ð,r+   rŽ  c                  ój   — e Zd ZU dZdZded<   dZded<   ded<   ded	<    ed
dd¬¦  «        Zded<   dS )ÚFeedbackFormulaCreateaP  Schema used for creating a feedback formula.

    .. admonition:: Deprecated

        Composite feedback formulas are no longer supported in the SDK.
        Add composite feedback scores via the LangSmith UI instead. This
        schema is retained only for backwards compatibility and will be
        removed in a future release.
    NrO   rA   rÞ   r    r{  úLiteral['sum', 'avg']Úaggregation_type.é   é2   ©Ú
min_lengthÚ
max_lengthú%list[FeedbackFormulaWeightedVariable]Úformula_parts)	r%   r&   r'   r(   rA   r)   rÞ   r   r›  r*   r+   r,   r’  r’  ‹  s�   € € € € € € ðð ð "&€JÐ%Ð%Ð%Ñ%Ø!%€JÐ%Ð%Ð%Ñ%ØÐÐÑØ+Ð+Ð+Ñ+Ø;@¸5Ø˜ bð<ñ <ô <€Mð ð ð ñ ð ð r+   r’  c                  óN   — e Zd ZU dZded<   ded<    eddd¬	¦  «        Zd
ed<   dS )ÚFeedbackFormulaUpdateaP  Schema used for updating a feedback formula.

    .. admonition:: Deprecated

        Composite feedback formulas are no longer supported in the SDK.
        Add composite feedback scores via the LangSmith UI instead. This
        schema is retained only for backwards compatibility and will be
        removed in a future release.
    r    r{  r“  r”  .r•  r–  r—  rš  r›  N)r%   r&   r'   r(   r)   r   r›  r*   r+   r,   r�  r�  Ÿ  sk   € € € € € € ðð ð ÐÐÑØ+Ð+Ð+Ñ+Ø;@¸5Ø˜ bð<ñ <ô <€Mð ð ð ñ ð ð r+   r�  c                  ó2   — e Zd ZU dZded<   ded<   ded<   dS )ÚFeedbackFormulaaI  Schema for getting feedback formulas.

    .. admonition:: Deprecated

        Composite feedback formulas are no longer supported in the SDK.
        Add composite feedback scores via the LangSmith UI instead. This
        schema is retained only for backwards compatibility and will be
        removed in a future release.
    r   rP   r   rZ   rz   Nr$   r*   r+   r,   rŸ  rŸ  ±  s?   € € € € € € ðð ð €H€H�HØÐÐÑØÐÐÑÐÐr+   rŸ  c                  óR   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded	<   	 d
Zded<   d
S )ÚFeedbackConfigSchemaa  Represents 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{  rL  rR  r   rY  r   rz   Nrö   Úis_lower_score_better)r%   r&   r'   r(   r)   r¢  r*   r+   r,   r¡  r¡  Á  si   € € € € € € ðð ð ÐÐÑØAØ#Ð#Ð#Ñ#ØHØ€O€O�OØEØÐÐÑØ=Ø,0ÐÐ0Ð0Ð0Ñ0ØKÐKr+   r¡  )
r0  r   rÞ   r1  r2  r1  r  r3  r2   r4  )…r(   Ú
__future__r   Úcollections.abcr   r   r   r   Údecimalr   Úenumr	   Úhtmlr
   r  Úpathlibr   Útypingr   r   r   r   r   r   r   Úuuidr   Úpydanticr   r   r   r   r   r   r   Útyping_extensionsr   r   r   r=  r”   r    r?  r   Útupler3   r$  r.   r@   rL   Ú_AttachmentLikerN   ÚExampleUploadWithAttachmentsrn   rp   ru   r�   r—   ÚExampleUpdateWithAttachmentsrœ   r¡   ÚDatasetTransformationTyperª   r®   r½   rÁ   rÃ   rÝ   r  r  r&  r*  r/  r3  r6  r:  rH  rL  rQ  rU  rW  rd  rq  rw  rz  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  r  r  r  r  r  r%  r*  rG  rI  rc  rO  rŽ  r’  r�  rŸ  r¡  r*   r+   r,   ú<module>r´     s¢  ðØ $Ð $à "Ð "Ð "Ð "Ð "Ð "à $Ð $Ð $Ð $Ð $Ð $Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð >Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =à�:˜y¨+°tÐ;Ô<€
Ø�4˜˜j¨)°[À$ÐFÔG€
ðð ð ð ð �ñ ô ð ð* �3˜˜e C¨ JÔ/°¸UÀ3ÈÀ9Ô=MÐMÔNÐNÔO€ðð ðð ð ð ð �8ñ ô ñ Ôðð Ið Ið Ið Ið I�)ñ Iô Ið Iðð ð ð ð �iñ ô ð ð
 Ø�  s¨E zÔ!2°E¸#¸t¸)Ô4DÐDô€ð
!ð !ð !ð !ð !�Iñ !ô !ð !ð&  -Ð ðð ð ð ð  =ñ ô ð ðð ð ð ð �Yñ ô ð ð'bð 'bð 'bð 'bð 'bˆkñ 'bô 'bð 'bðTð ð ð ð ˜Iñ ô ð ð!ð !ð !ð !ð !�Iñ !ô !ð !ð&  -Ð ðð ð ð ð ˆs�Dñ ô ð ð+ð +ð +ð +ð +�)ñ +ô +ð +ð $ðôÐ ð?ð ?ð ?ð ?ð ?˜I¨Uð ?ñ ?ô ?ð ?ð-ð -ð -ð -ð -ˆkñ -ô -ð -ð`ð ð ð ð �Yñ ô ð ðð ð ðT<ð T<ð T<ð T<ð T<ˆiñ T<ô T<ð T<ðnC,ð C,ð C,ð C,ð C,ˆ'ñ C,ô C,ð C,ðL	ð 	ð 	ð 	ð 	�#�tñ 	ô 	ð 	ðð ð ð ð �) 5ð ñ ô ð ð:4ð 4ð 4ð 4ð 4 ñ 4ô 4ð 4ð=ð =ð =ð =ð =˜ñ =ô =ð =ð"!ð !ð !ð !ð !Ð*ñ !ô !ð !ð%ð %ð %ð %ð %Ð,ñ %ô %ð %ð#ð #ð #ð #ð #˜ñ #ô #ð #ð&+ð &+ð &+ð &+ð &+�9ñ &+ô &+ð &+ðROð Oð Oð Oð O�y¨ð Oñ Oô Oð Oð@ð @ð @ð @ð @�Y eð @ñ @ô @ð @ð	!ð 	!ð 	!ð 	!ð 	!�\ñ 	!ô 	!ð 	!ð	3ð 	3ð 	3ð 	3ð 	3ˆ|ñ 	3ô 	3ð 	3ð3"ð 3"ð 3"ð 3"ð 3"�Iñ 3"ô 3"ð 3"ðl%*ð %*ð %*ð %*ð %*˜-ñ %*ô %*ð %*ðP ð
;ð 
;ð 
;ð 
;ð 
;�hñ 
;ô 
;ñ Ôð
;ð)ð )ð )ð )ð )˜¨%ð )ñ )ô )ð )ðOð Oð Oð Oð O 	°ð Oñ Oô Oð Oð$Eð Eð Eð Eð E�iñ Eô Eð Eð"<ð <ð <ð <ð < ñ <ô <ð <ðRð Rð Rð Rð RˆYñ Rô Rð Rð&9ð 9ð 9ð 9ð 9˜	¨ð 9ñ 9ô 9ð 9ð"	4ð 	4ð 	4ð 	4ð 	4�Iñ 	4ô 	4ð 	4ð × Ò Ñ Ô Ð ð	(ð 	(ð 	(ð 	(ð 	(˜	ñ 	(ô 	(ð 	(ð,ð ,ð ,ð ,ð ,˜)ñ ,ô ,ð ,ð-ð -ð -ð -ð -ˆy ð -ñ -ô -ð -ðð ð ð ð �Y eð ñ ô ð ð=ð =ð =ð =ð =�iñ =ô =ð =ð!&ð !&ð !&ð !&ð !&˜Iñ !&ô !&ð !&ðH0ð 0ð 0ð 0ð 0�9ñ 0ô 0ð 0ð.+>ð +>ð +>ð +>ð +>˜ñ +>ô +>ð +>ð\.;ð .;ð .;ð .;ð .;ˆYñ .;ô .;ð .;ðb'ð 'ð 'ð 'ð '˜)ñ 'ô 'ð 'ð
ð 
ð 
ð 
ð 
�c˜4ñ 
ô 
ð 
ðð ð ð ð �	ñ ô ð ð.ð .ð .ð .ð .�ñ .ô .ð .ð.ð .ð .ð .ð .�ñ .ô .ð .ð 	�%˜	 :¨zÐ9Ô:¸E¸EÐPVÐ<WÑ<WÔ<WÐWÔX€Ø 5ð"ð "ð "ð "ð "�9ñ "ô "ð "ð"ð "ð "ð "ð "�9ñ "ô "ð "ð'ð 'ð 'ð 'ð '˜)ñ 'ô 'ð 'ðð ð ð ð ˜iñ ô ð ðRð Rð Rð Rð R˜	¨ð Rñ Rô Rð Rð6ð ð ð ð ˜¨%ð ñ ô ð ð ð ð ð ð �y¨ð ñ ô ð ð*ð ð ð ð ˜	¨ð ñ ô ð ð 1ð 1ð 1ð 1ð 1�Iñ 1ô 1ð 1ðD1ð 1ð 1ð 1ð 1˜Y¨eð 1ñ 1ô 1ð 1ð:dð dð dð dð d˜Yñ dô dð dð#ð #ð #ð #ð #�gñ #ô #ð #ð*ð *ð *ð *ð *˜ñ *ô *ð *ðB2ð 2ð 2ð 2ð 2˜	ñ 2ô 2ð 2ðTð Tð Tð Tð T�Yñ Tô Tð Tð(ð ð ð ð ˜yñ ô ð ð'ð 'ð 'ð 'ð '˜Iñ 'ô 'ð 'ð
(ð 
(ð 
(ð 
(ð 
(�iñ 
(ô 
(ð 
(ð$ %)ð"ð "ð "ð "ð "ð "ðJ#
ð #
ð #
ð #
ð #
ñ #
ô #
ð #
ðL Að  Að  Að  Að  Añ  Aô  Að  AðF5,ð 5,ð 5,ð 5,ð 5,˜9ñ 5,ô 5,ð 5,ðp-ð -ð -ð -ð - iñ -ô -ð -ð ð ð ð ð ˜Iñ ô ð ð(ð ð ð ð ˜Iñ ô ð ð$ð ð ð ð Ð+ñ ô ð ð Lð Lð Lð Lð L˜9ñ Lô Lð Lð Lð Lr+   