§
    Ü˜ºhü  ã                  ó,  — d Z ddlmZ ddlZddlZddl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 ddlmZmZ 	 ddlmZmZmZmZ n# e$ r ddlmZmZmZmZ Y nw xY wdd	lmZ dd
lmZmZ ddl m!Z!  ej"        e#¦  «        Z$dd„Z% G d„ de!¦  «        Z&dS )zSchemas for the LangSmith API.é    )ÚannotationsN)ÚFutureÚThreadPoolExecutorÚwait)Údatetime)ÚAnyÚCallableÚDictÚListÚOptionalÚcast)ÚUUIDÚuuid4)ÚFieldÚPrivateAttrÚroot_validatorÚ	validator)Úutils)ÚID_TYPEÚClient)ÚRunBaseÚreturnr   c                 ó"   — t          d¬¦  «        S )z3Ensure a thread pool exists in the current context.é   )Úmax_workers)r   © ó    ú[/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langsmith/run_trees.pyÚ_make_thread_poolr      s   € å¨!Ð,Ñ,Ô,Ð,r   c                  ó   — e Zd ZU dZded<    ee¬¦  «        Zded<    eej	        ¬¦  «        Z
ded<    ed	d
¬¦  «        Zded<    eeddhi¬¦  «        Zded<    ed„ d¬¦  «        Zded<    ed	d¬¦  «        Zded<    ee¬¦  «        Zded<    eed
¬¦  «        Zded<    eed
¬¦  «        Zded <    ee¬¦  «        Zd!ed"<    ed#d$¬%¦  «        Zded&<    ed#d'¬%¦  «        Zded(<    G d)„ d*¦  «        Z ed d
¬+¦  «        dWd/„¦   «         Z edd
¬+¦  «        dXd1„¦   «         Z ed
¬+¦  «        dYd4„¦   «         Z ed5¬+¦  «        dYd6„¦   «         Z d	d	d	d7œdZd?„Z!d	d	d	d	d	d	d	d	d	d	d@œ
d[dI„Z"d\dO„Z#dP„ Z$d]d^dT„Z%d_dU„Z&d`dV„Z'd	S )aÚRunTreez1Run Schema with back-references for posting runs.ÚstrÚname)Údefault_factoryr   Úidr   Ú
start_timeNT)ÚdefaultÚexcludezOptional[RunTree]Ú
parent_runÚ__all__Úparent_run_id)r$   r(   zList[RunTree]Ú
child_runsc                 ó(   — t          j        ¦   «         S ©N)r   Úget_tracer_projectr   r   r   ú<lambda>zRunTree.<lambda>-   s   € ¥Ô 8Ñ :Ô :€ r   Úproject_name)r$   ÚaliasÚsession_nameÚ
project_id)r'   r2   úOptional[UUID]Ú
session_idr
   Úextrar   Úclientr   ÚexecutorzList[Future]Ú_futuresÚ z!The order of the run in the tree.)r'   ÚdescriptionÚdotted_orderzThe trace id of the run.Útrace_idc                  ó   — e Zd ZdZdZdS )úRunTree.ConfigTN)Ú__name__Ú
__module__Ú__qualname__Úarbitrary_types_allowedÚallow_population_by_field_namer   r   r   ÚConfigr@   <   s   € € € € € Ø"&ÐØ)-Ð&Ð&Ð&r   rF   )ÚpreÚvúOptional[ThreadPoolExecutor]r   c                óR   — |€t          ¦   «         S |j        rt          d¦  «        ‚|S )zEnsure the executor is running.NzExecutor has been shutdown.)r   Ú	_shutdownÚ
ValueError©ÚclsrH   s     r   Úvalidate_executorzRunTree.validate_executor@   s3   € ð ˆ9Ý$Ñ&Ô&Ð&ØŒ;ð 	<ÝÐ:Ñ;Ô;Ð;Øˆr   úOptional[Client]c                ó&   — |€t          ¦   «         S |S )zEnsure the client is specified.)r   rM   s     r   Úvalidate_clientzRunTree.validate_clientI   s   € ð ˆ9Ý‘8”8ˆOØˆr   ÚvaluesÚdictc                ób  — d|vrd|d         i|d<   |                      d¦  «        �|d         j        |d<   d|vrt          ¦   «         |d<   d|vr!d|v r|d         j        |d<   n!|d         |d<   nt	          |d         ¦  «         t          t          |                     di ¦  «        ¦  «         |S )	zAssign name to the run.Ú
serializedr#   r)   Nr+   r%   r>   r7   )Úgetr%   r   r>   Úprintr   rT   Ú
setdefault)rN   rS   s     r   Úinfer_defaultszRunTree.infer_defaultsP   sÒ   € ð ˜vÐ%Ð%Ø$*¨F°6¬NÐ#;ˆF�<Ñ Ø�:Š:�lÑ#Ô#Ð/Ø&,¨\Ô&:Ô&=ˆF�?Ñ#Ø�vÐÐÝ ™7œ7ˆF�4‰LØ˜VÐ#Ð#Ø˜vÐ%Ð%Ø%+¨LÔ%9Ô%B��zÑ"Ð"à%+¨D¤\��zÑ"Ð"å�&˜Ô$Ñ%Ô%Ð%Ý�T�6×$Ò$ W¨bÑ1Ô1Ñ2Ô2Ð2Øˆr   Fc                ó
  — |                      d¦  «        }|r|                     ¦   «         r|S |d                              d¦  «        t          |d         ¦  «        z   }|d         r|d         j        dz   |z   |d<   n||d<   |S )Nr=   r&   z%Y%m%dT%H%M%S%fZr%   r)   ú.)rW   ÚstripÚstrftimer"   r=   )rN   rS   Úcurrent_dotted_orders      r   Úensure_dotted_orderzRunTree.ensure_dotted_orderc   s­   € à%Ÿzšz¨.Ñ9Ô9ÐØð 	Ð$8×$>Ò$>Ñ$@Ô$@ð 	ØˆMØ% lÔ3×<Ò<Ð=OÑPÔPÕSVØ�4ŒLñT
ô T
ñ  
Ðð �,Ôð 	:à�|Ô$Ô1°CÑ7Ð:NÑNð �>Ñ"Ð"ð &:ˆF�>Ñ"Øˆr   )ÚoutputsÚerrorÚend_timera   úOptional[Dict]rb   úOptional[str]rc   úOptional[datetime]ÚNonec               ób   — |pt          j        ¦   «         | _        |�|| _        |�	|| _        dS dS )z/Set the end time of the run and all child runs.N)r   Úutcnowrc   ra   rb   )Úselfra   rb   rc   s       r   ÚendzRunTree.ends   s>   € ð !Ð5¥H¤OÑ$5Ô$5ˆŒØÐØ"ˆDŒLØÐØˆDŒJˆJˆJð Ðr   )
Úrun_idrV   Úinputsra   rb   Úreference_example_idr&   rc   Útagsr7   Úrun_typerl   úOptional[ID_TYPE]rV   rm   rn   ro   úOptional[List[str]]c       
        ó&  — |pd|i}t          di d|“d|pt          ¦   «         “d|“d|pi “d|pi “d|“d|“d|“d	|	pt          j        ¦   «         “d
|
“d|pi “d| “d| j        “d| j        “d| j        “d|“Ž}| j                             |¦  «         |S )z Add a child run to the run tree.r#   r%   rV   rm   ra   rb   rp   rn   r&   rc   r7   r)   r3   r8   r9   ro   r   )	r!   r   r   ri   r3   r8   r9   r,   Úappend)rj   r#   rp   rl   rV   rm   ra   rb   rn   r&   rc   ro   r7   Úserialized_Úruns                  r   Úcreate_childzRunTree.create_child�   s%  € ð" !Ð2 V¨T NˆÝð 
ð 
ð 
Ø�ð
àÐ �™œøð
ð #�{ð
ð �<˜Røð	
ð
 �M˜røð
ð �%ð
ð �Xð
ð "6Ð!5ð
ð "Ð6¥X¤_Ñ%6Ô%6øð
ð �Xð
ð �+˜2øð
ð �tð
ð Ô*Ð*ð
ð ”;�;ð
ð ”]�]ð
ð  �ð!
ˆð$ 	Œ×Ò˜sÑ#Ô#Ð#Øˆ
r   Úfuncr	   Úargsr   Úkwargsc                óp   — 	  ||i |¤ŽS # t           $ r!}t                               |¦  «         |‚d }~ww xY wr.   )Ú	ExceptionÚloggerÚ	exception)rj   rx   ry   rz   Úes        r   Ú_executezRunTree._execute¨   sT   € ð	Ø�4˜Ð( Ð(Ð(Ð(øÝð 	ð 	ð 	Ý×Ò˜QÑÔÐØˆGøøøøð	øøøs   ‚
 Š
5”0°5c                ó  — 	 |                       dhd¬¦  «        S # t          $ rd |                       h d£d¬¦  «        }| j        r| j                             ¦   «         |d<   | j        r| j                             ¦   «         |d<   |cY S w xY w)Nr,   T)r(   Úexclude_none>   rm   ra   r,   rm   ra   )rT   Ú	TypeErrorrm   Úcopyra   )rj   Ú	self_dicts     r   Ú_get_dicts_safezRunTree._get_dicts_safe¯   s¯   € ð	Ø—9’9 l ^À$�9ÑGÔGÐGøÝð 	ð 	ð 	àŸ	š	Ø;Ð;Ð;È$ð "ñ ô ˆIð Œ{ð 9à&*¤k×&6Ò&6Ñ&8Ô&8�	˜(Ñ#ØŒ|ð ;à'+¤|×'8Ò'8Ñ':Ô':�	˜)Ñ$ØÐÐÐð	øøøs   ‚ šA+BÂBÚexclude_child_runsÚboolr   c                ób  — |                       ¦   «         }| j                              | j        j        | j        | j        j        fi |¤Ž¦  «         |sRt          j	        dt          ¦  «         | j        D ]0}| j                             |                     d¬¦  «        ¦  «         Œ1| j        d         S )z,Post the run tree to the API asynchronously.z\Posting with exclude_child_runs=False is deprecated and will be removed in a future version.F)r‡   éÿÿÿÿ)r†   r:   rt   r9   Úsubmitr€   r8   Ú
create_runÚwarningsÚwarnÚDeprecationWarningr,   Úpost)rj   r‡   rz   Ú	child_runs       r   r�   zRunTree.post¿   sÍ   € à×%Ò%Ñ'Ô'ˆØŒ×ÒØ ˆDŒMÔ Ø”Ø”Ô&ðð ð ðð ñ	
ô 	
ð 	
ð "ð 	OÝŒMð<å"ñô ð ð
 "œ_ð Oð O�	Ø”×$Ò$ Y§^¢^Àu ^Ñ%MÔ%MÑNÔNÐNÐNØŒ}˜RÔ Ð r   c                ó   — | j                              | j                             | j        | j        j        | j        | j        r| j         	                    ¦   «         nd| j
        | j        | j        | j        ¬¦  «        ¦  «         | j         d         S )z5Patch the run tree to the API in a background thread.N)rl   ra   rb   r+   rn   rc   rŠ   )r:   rt   r9   r‹   r€   r8   Ú
update_runr%   ra   r„   rb   r+   rn   rc   )rj   s    r   ÚpatchzRunTree.patchÓ   sŠ   € àŒ×ÒØŒM× Ò Ø”Ø”Ô&Ø”wØ/3¬|ÐE˜œ×)Ò)Ñ+Ô+Ð+ÀØ”jØ"Ô0Ø%)Ô%>Øœð !ñ 	ô 	ñ	
ô 	
ð 	
ð Œ}˜RÔ Ð r   c                óz   — | j         }t          | j         ¦  «         |D ]}| j                              |¦  «         ŒdS )z"Wait for all _futures to complete.N)r:   r   Úremove)rj   ÚfuturesÚfutures      r   r   zRunTree.waitã   sK   € à”-ˆÝˆTŒ]ÑÔÐØð 	)ð 	)ˆFØŒM× Ò  Ñ(Ô(Ð(Ð(ð	)ð 	)r   )rH   rI   r   r   )rH   rP   r   r   )rS   rT   r   rT   )ra   rd   rb   re   rc   rf   r   rg   )r#   r"   rp   r"   rl   rq   rV   rd   rm   rd   ra   rd   rb   re   rn   r5   r&   rf   rc   rf   ro   rr   r7   rd   r   r!   )rx   r	   ry   r   rz   r   r   r   )T)r‡   rˆ   r   r   )r   r   )r   rg   )(rA   rB   rC   Ú__doc__Ú__annotations__r   r   r%   r   ri   r&   r)   Úlistr,   r3   r6   rT   r7   r   r8   r   r9   r   r:   r=   r>   rF   r   rO   rR   r   rZ   r`   rk   rw   r€   r†   r�   r”   r   r   r   r   r!   r!   !   s¢  € € € € € € Ø;Ð;à€I€I�IØˆu UÐ+Ñ+Ô+€BÐ+Ð+Ð+Ñ+Ø ˜5°´ÐAÑAÔA€JÐAÐAÐAÑAØ$) E°$ÀÐ$EÑ$EÔ$E€JÐEÐEÐEÑEØ % ØØ˜_Ð-Ð.ð!ñ !ô !€Jð ð ð ñ ð ˜Ø:Ð:Øðñ ô €Lð ð ð ñ ð "' ¨t¸<Ð!HÑ!HÔ!H€JÐHÐHÐHÑHØ�%¨Ð-Ñ-Ô-€EÐ-Ð-Ð-Ñ-Ø�U¨6¸4Ð@Ñ@Ô@€FÐ@Ð@Ð@Ñ@Ø#( 5Ø)°4ð$ñ $ô $€Hð ð ð ñ ð )˜[¸Ð>Ñ>Ô>€HÐ>Ð>Ð>Ñ>Ø˜ØÐ Cðñ ô €Lð ð ð ñ ð �U 2Ð3MÐNÑNÔN€HÐNÐNÐNÑNð.ð .ð .ð .ð .ñ .ô .ð .ð €Yˆz˜tÐ$Ñ$Ô$ðð ð ñ %Ô$ðð €Yˆx˜TÐ"Ñ"Ô"ðð ð ñ #Ô"ðð €^˜ÐÑÔðð ð ñ Ôðð$ €^˜ÐÑÔðð ð ñ Ôðð$ #'Ø#Ø'+ðð ð ð ð ð ð& %)Ø%)Ø!%Ø"&Ø#Ø/3Ø)-Ø'+Ø$(Ø $ð%ð %ð %ð %ð %ð %ðNð ð ð ðð ð ð !ð !ð !ð !ð !ð(!ð !ð !ð !ð )ð )ð )ð )ð )ð )r   r!   )r   r   )'r™   Ú
__future__r   Úloggingr�   Úconcurrent.futuresr   r   r   r   Útypingr   r	   r
   r   r   r   Úuuidr   r   Úpydantic.v1r   r   r   r   ÚImportErrorÚpydanticÚ	langsmithr   Úlangsmith.clientr   r   Úlangsmith.schemasr   Ú	getLoggerrA   r}   r   r!   r   r   r   ú<module>r¨      sÛ  ðØ $Ð $Ø "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø Ð Ð Ð Ð Ð Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø Ð Ð Ð Ð Ð Ð Ð ðGðð ð ð ð ð ð ð ð ð ð ð ð øð ð Gð Gð GØFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFðGøøøð Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø %Ð %Ð %Ð %Ð %Ð %à	ˆÔ	˜8Ñ	$Ô	$€ð-ð -ð -ð -ð
G)ð G)ð G)ð G)ð G)ˆgñ G)ô G)ð G)ð G)ð G)s   ºA ÁAÁA