ó
    lQjõŒ  ã                  óÆ  • S SK Jr  S SKJr  S SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKJr  S SKJrJr  S SKJrJrJrJrJr  S SKJr  S SKJr  S SKJrJr  S S	K J!r!J"r"J#r#J$r$  S S
K%J&r&J'r'J(r(  \(       a  S SK)J*r*  S SK+J,r,  \RZ                  " S5      r.\R^                  " \" 5       S9r0    SS jr1\Rd                   " S S5      5       r3 S         SS jjr4 S        S!S jjr5      S"S jr6  S#             S$S jjr7  S#           S%S jjr8 S&           S'S jjr9S(S jr:    S)S jr;S*S jr< S+     S,S jjr=      S-S jr>g).é    )ÚannotationsN)Ú	cpu_count)ÚEmptyÚQueue)ÚTYPE_CHECKINGÚAnyÚOptionalÚUnionÚcast)Úschemas)Úutils)ÚZSTD_AVAILABLEÚCompressedTraces)Ú_AUTO_SCALE_DOWN_NEMPTY_TRIGGERÚ_AUTO_SCALE_UP_NTHREADS_LIMITÚ_AUTO_SCALE_UP_QSIZE_TRIGGERÚ	_BOUNDARY)ÚSerializedFeedbackOperationÚSerializedRunOperationÚ#combine_serialized_queue_operations)ÚContext)ÚClientzlangsmith.client©Úmax_workersc                óê   • SSK Jn  U" [        5      nU  HZ  nUR                  UR                  UR
                  UR                  UR                  UR                  4nX$   R                  U5        M\     U$ )z3Group batch items by endpoint and auth combination.r   )Údefaultdict)
Úcollectionsr   ÚlistÚapi_urlÚapi_keyÚservice_keyÚ	tenant_idÚauthorizationÚcookieÚappend)Úbatchr   ÚgroupedÚitemÚkeys        Úc/home/mande/repo/quber/.venv/lib/python3.13/site-packages/langsmith/_internal/_background_thread.pyÚ_group_batch_by_api_endpointr+   )   si   € õ (áœ$Ó€GÛˆà�L‰LØ�L‰LØ×ÑØ�N‰NØ×ÑØ�K‰Kð
ˆð 	‰×Ñ˜DÖ!ñ ð €Nó    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r       S                   SS jjrSS jrSS jr	Sr
g)ÚTracingQueueIteméG   z¾An item in the tracing queue.

Attributes:
    priority (str): The priority of the item.
    item (Any): The item itself.
    otel_context (Optional[Context]): The OTEL context of the item.
ÚstrÚpriorityú:Union[SerializedRunOperation, SerializedFeedbackOperation]r(   úOptional[str]r   r    r!   r"   r#   r$   úOptional[Context]Úotel_context©	r1   r(   r    r   r!   r"   r#   r$   r5   Nc
                óp   • Xl         X l        X0l        X@l        XPl        X`l        Xpl        X€l        X�l        g ©Nr6   )
Úselfr1   r(   r    r   r!   r"   r#   r$   r5   s
             r*   Ú__init__ÚTracingQueueItem.__init__g   s4   € ð !ŒØŒ	ØŒØŒØ&ÔØ"ŒØ*ÔØŒØ(Õr,   c                óŒ   • U R                   U R                  R                  4UR                   UR                  R                  4:  $ r8   )r1   r(   Ú	__class__©r9   Úothers     r*   Ú__lt__ÚTracingQueueItem.__lt__}   s;   € Ø—‘˜tŸy™y×2Ñ2Ð3Ø�N‰NØ�J‰J× Ñ ð7
ñ 
ð 	
r,   c                óº   • [        U[        5      =(       aE    U R                  U R                  R                  4UR                  UR                  R                  4:H  $ r8   )Ú
isinstancer.   r1   r(   r=   r>   s     r*   Ú__eq__ÚTracingQueueItem.__eq__ƒ   sM   € Ü˜%Ô!1Ó2÷ 4Ø�M‰MØ�I‰I×Ñð8
ð �n‰n˜eŸj™j×2Ñ2Ð3ñ84ð 	4r,   )	r    r   r#   r$   r(   r5   r1   r!   r"   )NNNNNNN)r1   r0   r(   r2   r    r3   r   r3   r!   r3   r"   r3   r#   r3   r$   r3   r5   r4   ÚreturnÚNone)r?   r.   rF   Úbool)r?   ÚobjectrF   rH   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__Ú	__slots__r:   r@   rD   Ú__static_attributes__© r,   r*   r.   r.   G   sÎ   ‡ ñð ƒMØ
DÓDØÓØÓØÓØÓØ Ó ØÓØ#Ó#ð
€Ið  "&Ø!%Ø%)Ø#'Ø'+Ø $Ø*.ð)àð)ð Ið)ð ð	)ð
 ð)ð #ð)ð !ð)ð %ð)ð ð)ð (ð)ð 
õ)ô,
÷4r,   r.   c                óÂ  • / nSn U R                  USS9=n(       a:  UR                  U5        US:”  a#  XVR                  R                  5       -  nXS:”  a  U$   U R                  USS9nUR                  U5        US:”  a$  XVR                  R                  5       -  nXS:”  a   U$ U(       a  [        U5      U:¼  a   U$ Mg  ! [         a     U$ f = f! [         a     U$ f = f)Nr   g      Ð?)ÚblockÚtimeoutçš™™™™™©?)Úgetr%   r(   Úcalculate_serialized_sizer   Úlen)Útracing_queueÚlimitrT   Úmax_size_bytesÚ
next_batchÚcurrent_sizer(   s          r*   Ú_tracing_thread_drain_queuer_   Š   s  € ð *,€JØ€Lð$ð !×$Ñ$¨5¸$Ð$Ð?Ð?ˆ4Õ?Ø×Ñ˜dÔ#Ø Ó!Ø§	¡	× CÑ CÓ EÑE�àÓ0Ø%Ð%ð ðØ$×(Ñ(¨u¸dÐ(ÐC�ð
 ×Ñ˜dÔ#ð  Ó!Ø§	¡	× CÑ CÓ EÑE�ð  Ó0Øð Ðö	 œ˜Z›¨EÓ1Øð Ðñ- øô ó Øð$ Ðð'ûô" ó ØØÐðúsH   †AC ÁC ÁB? Á)8C Â$C Â=C Â?
CÃ	C ÃCÃC Ã
CÃCc                óÌ  •  U R                   c  gU R                   R                     U R                   R                  nU R                  =(       d    UnUb  US::  a  [	        SU 35      eUb  US:  a  [	        SU 35      eUb  X2:  a'  Ub  U R                   R
                  U:  a
   S S S 5        gU R                   R                  R                  S[         S3R                  5       5        U R                   R                  R                  5         U R                   R                  R                  5       nU R                   R                  n[        [        [        U5      SU R                   R                   5        X44nU R                   R#                  5         S S S 5        WR%                  S5        UW4$ ! , (       d  f       N#= f! [&         a    [(        R+                  SS	S
9   gf = f)N)NNr   z!size_limit must be positive; got z*size_limit_bytes must be nonnegative; got z--z--
ÚcontextúuLangSmith tracing error: Failed to submit trace data.
This does not affect your application's runtime.
Error details:T©Úexc_info)Úcompressed_tracesÚlockÚuncompressed_sizeÚ_max_batch_size_bytesÚ
ValueErrorÚtrace_countÚcompressor_writerÚwriter   ÚencodeÚcloseÚbufferÚtellÚsetattrr   r   Ú_contextÚresetÚseekÚ	ExceptionÚloggerÚerror)ÚclientÚ
size_limitÚsize_limit_bytesÚpre_compressed_sizer^   Úfilled_bufferÚcompressed_traces_infos          r*   Ú'_tracing_thread_drain_compressed_bufferr~   ¸   sÖ  € ð3Ø×#Ñ#Ñ+ØØ×%Ñ%×*Ó*Ø"(×":Ñ":×"LÑ"LÐà%×;Ñ;×OÐ?OÐàÑ%¨*¸«/Ü Ð#DÀZÀLÐ!QÓRÐRØÑ+Ð0@À1Ó0DÜ Ø@ÐAQÐ@RÐSóð ð
 !Ñ(Ð,?Ó,RàÑ" f×&>Ñ&>×&JÑ&JÈZÓ&Wà!÷# +Ð*ð( ×$Ñ$×6Ñ6×<Ñ<Ø”Y�K˜vÐ&×-Ñ-Ó/ôð ×$Ñ$×6Ñ6×<Ñ<Ô>Ø!×3Ñ3×:Ñ:×?Ñ?ÓAˆLà"×4Ñ4×;Ñ;ˆMÜÜ”S˜-Ó(ØØ×(Ñ(×1Ñ1ôð ':Ð%HÐ"à×$Ñ$×*Ñ*Ô,÷G +ðJ 	×Ñ˜1ÔØÐ5Ð6Ð6÷M +Õ*ûôN ó 	Ü�‰ðð ð	 	ñ 	
ñ ð	ús;   ‚G �G ¦B F1Â&G Â/C%F1ÆG Æ1
F?Æ;G ÇG#Ç"G#c                ó  •  U VVs/ s H  u  p#o#PM	     nnnU Vs/ s H  oUR                  S5      PM     nnU R                  c  [        S5      e[        U R                  U5      5      n[	        U5      [	        U5      :w  a#  [        S[	        U5       S[	        U5       35      eU Vs/ s H  oUR                  S5      PM     nnX†:w  a  [        SU SU 35      e[        X5       H>  u  u  p’p«U	S:X  a  U R                  " U40 U
D6  M#  U	S:X  d  M+  U R                  " U40 U
D6  M@     U R                  (       a  U R                  R                  5         ggs  snnf s  snf s  snf ! [         a    [        R                  S	S
S9   gf = f)z1Process a batch of run operations asynchronously.ÚidNzAprocess_buffered_run_ops should not be None when processing batchzGprocess_buffered_run_ops must return the same number of runs. Expected z, got zKprocess_buffered_run_ops must preserve run IDs in the same order. Expected ÚpostÚpatchz…LangSmith buffered run ops processing error: Failed to process batch.
This does not affect your application's runtime.
Error details:Trc   )rW   Ú_process_buffered_run_opsÚRuntimeErrorr   rY   ri   ÚzipÚ_create_runÚ_update_runÚ_data_available_eventÚsetru   rv   rw   )rx   Úbatch_to_processÚ_Úrun_dataÚ	run_dictsÚrunÚoriginal_idsÚprocessed_runsÚprocessed_idsÚ	operationÚ	write_ctxÚprocessed_runs               r*   Ú_process_buffered_run_ops_batchr•   ñ   s©  € ð
-
á4DÔEÒ4D¡. !¨q’XÑ4Dˆ	ÑEÙ1:Ó;²¨#Ÿ™ ž±ˆÐ;ð ×+Ñ+Ñ3ÜØSóð ô ˜f×>Ñ>¸yÓIÓJˆô ˆ~Ó¤# i£.Ó0ÜðÜ 	›NÐ+¨6´#°nÓ2EÐ1FðHóð ñ
 3AÓA².¨3Ÿ™ ž±.ˆÐAØÓ(ÜðØ(˜>¨°¨ð@óð ô 9<Øö9
Ñ4Ñ%ˆY˜9ð ˜FÓ"Ø×"Ò" =Ñ>°IÔ>Ø˜gÕ%Ø×"Ò" =Ñ>°IÔ>ñ9
ð ×'×'Ø×(Ñ(×,Ñ,Õ.ð (ùóE FùÚ;ùò  Bøô& ó 
ä�‰ðð ð	 	ó 	
ð
ús@   ‚E% ‡E•E% œE¶A3E% Â)E ÃA
E% ÄAE% ÅE% Å%FÆFc                óÊ  •  [        U5      nUR                  5        GH!  u  u  nnn	n
nnnU(       d&  [        U Vs/ s H  oîR                  PM     sn5      nOIU Vs1 s H  oîR                  R                  iM     nnU Vs/ s H  nUR                  U;   d  M  UPM     nnU(       a  U R                  UUUU	U
UUS9  M¢  [        S U 5       5      (       a>  [        R                  S5        U Vs/ s H  n[        U[        5      (       a  M  UPM     nnU R                  [        [        [           U5      UUU	U
UUS9  GM$     U(       a  Ub  U H  n UR%                  5         M     gggs  snf s  snf s  snf s  snf ! [         a/  n[        R!                  SSS9  U R#                  U5         SnANoSnAff = f! [&         a3  nS[)        U5      ;   a  [        R+                  S	U 35         SnAM¢  e SnAff = f! U(       a_  Ub[  U HT  n UR%                  5         M  ! [&         a3  nS[)        U5      ;   a  [        R+                  S	U 35         SnAMM  e SnAff = f   f f f = f)
a…  Handle a batch of tracing queue items by sending them to LangSmith.

Args:
    client: The LangSmith client to use for sending data.
    tracing_queue: The queue containing tracing items (used for task_done calls).
    batch: List of tracing queue items to process.
    use_multipart: Whether to use multipart endpoint for sending data.
    mark_task_done: Whether to mark queue tasks as done after processing.
        Set to False when called from parallel execution to avoid double counting.
    ops: Pre-combined serialized operations to use instead of combining from batch.
        If None, operations will be combined from the batch items.
)r   r    r!   r"   r#   r$   c              3  óB   #   • U  H  n[        U[        5      v •  M     g 7fr8   )rC   r   )Ú.0Úops     r*   Ú	<genexpr>Ú/_tracing_thread_handle_batch.<locals>.<genexpr>[  s   é € ÐWÊYÀr”z "Ô&A×BÐBÊYùs   ‚z;Feedback operations are not supported in non-multipart moderb   Trc   Nú!task_done() called too many timesú3Ignoring harmless task_done error during shutdown: )r+   Úitemsr   r(   r€   Ú_multipart_ingest_opsÚanyrv   ÚwarningrC   r   Ú_batch_ingest_run_opsr   r   r   ru   rw   Ú_invoke_tracing_error_callbackÚ	task_doneri   r0   Údebug)rx   rZ   r&   Úuse_multipartÚmark_task_doneÚopsÚgrouped_batchesr   r    r!   r"   r#   r$   Úgroup_batchr(   Ú	group_opsÚ	group_idsr™   Úer‹   s                       r*   Ú_tracing_thread_handle_batchr®   &  s�  € ð,Gä6°uÓ=ˆð *×/Ñ/×1ññ 
ØØØØØØØÞÜ?Ù+6Ó7ª; 4—Y”Y©;Ñ7ó‘	ñ 7BÓB²k¨dŸY™YŸ\œ\±k�	ÐBÙ*-ÓDª# B°·±¸)Ñ1CŸR©#�	ÐDæØ×,Ñ,ØØ#Ø#Ø +Ø'Ø"/Ø!ð -ó ô ÑWÉYÓW×WÑWÜ—N‘NØUôñ
 #,ó!â"+˜BÜ)¨"Ô.I×J÷ Ù"+ð ð !ð
 ×,Ñ,ÜœÔ4Ñ5°yÓAØ#Ø#Ø +Ø'Ø"/Ø!ð -ô ñ; 2ö` ˜mÑ7Û�ð
Ø!×+Ñ+Ö-ò ð 8ˆ>ùò[ 8ùò CùÚDùò"!øô ó 1Ü�‰ðð ð	 	ñ 	
ð 	×-Ñ-¨a×0Ñ0ûð1ûô "ó Ø:¼cÀ!»fÓDô Ÿ™ØQÐRSÐQTÐU÷ò ð ûðûö	 ˜mÑ7Û�ð
Ø!×+Ñ+Ö-øÜ!ó Ø:¼cÀ!»fÓDô Ÿ™ØQÐRSÐQTÐU÷ò ð ûðúò ð 8ˆ>ús¹   ‚9E> »E*
ÁE> ÁE/Á;E> ÂE4ÂE4ÂAE> Ã/E9ÄE9Ä1E> ÅF:Å*E> Å>
F7Æ%F2Æ-G: Æ2F7Æ7G: Æ:
G7Ç'G2Ç1G2Ç2G7Ç:I"ÈHÈI"È
I	È''I	ÉI"ÉI	ÉI	ÉI"c                ó  •  Uc%  [        U Vs/ s H  oUR                  PM     sn5      nU Vs/ s H  n[        U[        5      (       d  M  UPM     nnU Vs0 s HE  n[        UR                  [        5      (       d  M$  UR                  R                  UR
                  _MG     nnU(       a>  U R                  b  U R                  R                  Xx5        O[        R                  S5        U(       a  Ub  U H  n
 UR                  5         M     gggs  snf s  snf s  snf ! [         a/  n	[        R                  SSS9  U R                  U	5         Sn	A	NjSn	A	ff = f! [         a3  n	S[        U	5      ;   a  [        R                  SU	 35         Sn	A	M�  e Sn	A	ff = f! U(       a_  Ub[  U HT  n
 UR                  5         M  ! [         a3  n	S[        U	5      ;   a  [        R                  SU	 35         Sn	A	MM  e Sn	A	ff = f   f f f = f)a@  Handle a batch of tracing queue items by exporting them to OTEL.

Args:
    client: The LangSmith client containing the OTEL exporter.
    tracing_queue: The queue containing tracing items (used for task_done calls).
    batch: List of tracing queue items to process.
    mark_task_done: Whether to mark queue tasks as done after processing.
        Set to False when called from parallel execution to avoid double counting.
    ops: Pre-combined serialized operations to use instead of combining from batch.
        If None, operations will be combined from the batch items.
Nz—LangSmith tracing error: Failed to submit OTEL trace data.
This does not affect your application's runtime.
Error details: client.otel_exporter is NonezpOTEL tracing error: Failed to submit trace data.
This does not affect your application's runtime.
Error details:Trc   rœ   r�   )r   r(   rC   r   r€   r5   Úotel_exporterÚexport_batchrv   rw   ru   r£   r¤   ri   r0   r¥   )rx   rZ   r&   r§   r¨   r(   r™   Úrun_opsÚotel_context_mapr­   r‹   s              r*   Ú!_otel_tracing_thread_handle_batchr´   †  sê  € ð()Ø‰;Ü5ÉUÓ6SÊUÀT·y´yÉUÑ6SÓTˆCá #ÓN¢˜"¤z°"Ô6L×'M—2¡ˆÐNñ ó
â�Ü˜$Ÿ)™)Ô%;×<ó ,ˆD�I‰I�L‰L˜$×+Ñ+Ò+Ùð 	ð 
ö
 Ø×#Ñ#Ñ/Ø×$Ñ$×1Ñ1°'ÕLä—‘ðBôö ˜mÑ7Û�ð
Ø!×+Ñ+Ö-ò ð 8ˆ>ùò7 7TùâNùò
øô ó 1Ü�‰ðð ð	 	ñ 	
ð 	×-Ñ-¨a×0Ñ0ûð1ûô "ó Ø:¼cÀ!»fÓDô Ÿ™ØQÐRSÐQTÐU÷ò ð ûðûö	 ˜mÑ7Û�ð
Ø!×+Ñ+Ö-øÜ!ó Ø:¼cÀ!»fÓDô Ÿ™ØQÐRSÐQTÐU÷ò ð ûðúò ð 8ˆ>ús¶   ‚D  ŽD£D  ®DÁDÁD  Á#DÁ>%DÂ#1D  ÃF ÃD  Ã:EÄD  Ä 
EÄ*%EÅF ÅEÅF Å
FÅ&'FÆFÆFÆHÆ-F?Æ=HÆ?
G<	Ç	'G7	Ç0HÇ6G7	Ç7G<	Ç<Hc           
     ó4  • [        U Vs/ s H  oUR                  PM     sn5      n[        R                  " U5      n[        R                  " U5      n [        R
                  " SS9 n	U	R                  [        U UUUSU5      n
U	R                  [        U UUSU5      nU
R                  5         UR                  5         SSS5        U(       a  Ub  U H  n UR                  5         M     gggs  snf ! , (       d  f       N:= f! [         aK  nS[        U5      ;   a6  [        R                  S5        [        XX#SU5        [        XUSU5         SnANŒe SnAff = f! [         a3  nS[        U5      ;   a  [        R                  SU 35         SnAMÀ  e SnAff = f)	aõ  Handle a batch of tracing queue items by sending to both both LangSmith and OTEL.

Args:
    client: The LangSmith client to use for sending data.
    tracing_queue: The queue containing tracing items (used for task_done calls).
    batch: List of tracing queue items to process.
    use_multipart: Whether to use multipart endpoint for LangSmith.
    mark_task_done: Whether to mark queue tasks as done after processing.
        Set to False primarily for testing when items weren't actually queued.
é   r   FNz6cannot schedule new futures after interpreter shutdownz@Interpreter shutting down, falling back to sequential processingrœ   r�   )r   r(   ÚcopyÚdeepcopyÚcfÚThreadPoolExecutorÚsubmitr®   r´   Úresultr„   r0   rv   r¥   r¤   ri   )rx   rZ   r&   r¦   r§   r(   r¨   Úlangsmith_opsÚotel_opsÚexecutorÚfuture_langsmithÚfuture_otelr­   r‹   s                 r*   Ú#_hybrid_tracing_thread_handle_batchrÂ   Æ  s‘  € ô$ .ÁUÓ.KÂU¸T¯y¬yÁUÑ.KÓ
L€Cô —M’M #Ó&€MÜ�}Š}˜SÓ!€Hð'ä×"Ò"¨qÒ1°Xà'Ÿ™Ü,ØØØØØØó Ðð #Ÿ/™/Ü1ØØØØØóˆKð ×#Ñ#Ô%Ø×ÑÔ ÷- 2öP ˜-Ñ3ÛˆAð
Ø×'Ñ'Ö)ò ð 4€~ùòa /L÷ 2Õ1ûô. ó ØCÄsÈ1ÃvÓMô �L‰LØRôô )Ø u¸UÀMôô .Ø u¨e°X÷ñ ð ûðûô* ó Ø6¼#¸a»&Ó@ô —L‘LØMÈaÈSÐQ÷ò ð ûðúsa   ŠC,ÁD Á'AC1Â=D ÃEÃ1
C?Ã;D Ã?D Ä
EÄA EÅEÅEÅ
FÅ$'FÆFÆFc                 ó    • [         R                  " S5      n U b   [        U 5      $ g ! [         a    [        R                  SU  S35         g f = f)NÚBATCH_INGEST_SIZE_LIMITz+Invalid value for BATCH_INGEST_SIZE_LIMIT: z, continuing with default)Úls_utilsÚget_env_varÚintri   rv   r¡   )Úsize_limit_strs    r*   Úget_size_limit_from_envrÉ     sg   € Ü×)Ò)Ø!ó€Nð Ñ!ð	Ü�~Ó&Ð&ð øô ó 	Ü�N‰NØ=¸nÐ=Mð N*ð *õð ð	ús   ›
' §#AÁAc           	     óø   • [         R                  " SS S[        [        [        S9nU (       d  U$  U R
                  (       d  U$ [        5       nUb  X R
                  S'   U R
                  $ ! [         a    Us $ f = f)NTéd   )Úuse_multipart_endpointrz   ry   Úscale_up_nthreads_limitÚscale_up_qsize_triggerÚscale_down_nempty_triggerry   )Ú
ls_schemasÚBatchIngestConfigr   r   r   Úbatch_ingest_configrÉ   ÚBaseException)ÚinfoÚdefault_configÚenv_size_limits      r*   Ú_ensure_ingest_configr×   &  s‚   € ô  ×1Ò1Ø#ØØÜ =Ü;Ü"Añ€Nö ØÐðØ×'×'Ø!Ð!Ü0Ó2ˆØÑ%Ø5C×$Ñ$ \Ñ2Ø×'Ñ'Ð'øÜó ØÒðús   °A* Á&A* Á*A9Á8A9c                óª  ^^^• U " 5       mTc  g TR                   nUc   e[        TR                  5      nUS   nUS   nUS   nTR                  (       + =(       a    UR	                  SS5      n/ mSm[
        (       d  [        R                  S5        [        R                  " S5      =(       d!    TR                  S	;   =(       d    [
        (       + nU(       dà  U(       aÙ  TR                  R                  =(       d    0 R	                  S
S5      (       d  [        R                  S5        O�[        R                  " 5       Tl        [!        5       Tl        [$        R&                  " 5       Tl        [$        R*                  " [,        [        R.                  " T5      4TR0                  S9R3                  5         TS-  mSUUU4S jjnU" 5       (       Ga{  T H+  n	U	R5                  5       (       a  M  TR7                  U	5        M-     [9        T5      U:  ao  UR;                  5       U:”  a[  [$        R*                  " [<        [        R.                  " T5      U4TR0                  S9n
TR?                  U
5        U
R3                  5         TR                  nTR@                  =(       d    UR	                  S5      =(       d    Sn[C        XUS9=n(       as  US:X  a#  [        R                  S5        [E        TXU5        OJUS:X  a"  [        R                  S5        [G        TX5        O"[        R                  S5        [I        TXU5        U" 5       (       a  GM{  [        R                  SUR;                  5       5        TR                  nTR@                  =(       d    UR	                  S5      =(       d    Sn[C        XSUS9=n(       a‡  US:X  a#  [        R                  S5        [E        TXU5        OJUS:X  a"  [        R                  S5        [G        TX5        O"[        R                  S5        [I        TXU5        [C        XSUS9=n(       a  M‡  [        R                  S5        g )Nry   rÍ   rÎ   rÌ   Té   zUzstandard package is not installed. Falling back to uncompressed multipart ingestion.ÚDISABLE_RUN_COMPRESSION)ÚotelÚhybridÚzstd_compression_enabledFz~Run compression is not enabled. Please update to the latest version of LangSmith. Falling back to regular multipart ingestion.)ÚtargetÚargsÚdaemoné   c                 óº  >• T(       a"  [        TS5      (       a'  TR                  (       a  [        R                  S5        g[        R
                  " 5       R                  5       (       d  [        R                  S5        g[        [        S5      (       aH  [        R                  " T5      n T[        T5      -   nX:„  nU(       d  [        R                  SU U5        U$ g)NÚ_manual_cleanupz3Client is being cleaned up, stopping tracing threadFz,Main thread is dead, stopping tracing threadÚgetrefcountz�Client refs count indicates we're the only remaining reference to the client, stopping tracing thread (refcount=%d, threshold=%d)T)
Úhasattrrã   rv   r¥   Ú	threadingÚmain_threadÚis_aliveÚsysrä   rY   )ÚrefcountÚ	thresholdÚshould_keep_threadrx   Únum_known_refsÚsub_threadss      €€€r*   Úkeep_thread_activeÚ7tracing_control_thread_func.<locals>.keep_thread_activeo  s²   ø€ æÜ�FÐ-×.Ñ.°6×3I×3Iä�L‰LÐNÔOØÜ×$Ò$Ó&×/Ñ/×1Ñ1ä�L‰LÐGÔHØä”3˜×&Ñ&ô —’ vÓ.ˆHØ&¬¨[Ó)9Ñ9ˆIØ!)Ñ!5ÐÞ%Ü—‘ð2ð Øôð &Ð%ð r,   rz   r   ©r[   r\   rÜ   zHandling batch in hybrid moderÛ   zHandling batch in otel modez Handling batch in langsmith modez/Tracing thread draining queue on exit: qsize=%d©r[   rT   r\   zDraining batch in hybrid modezDraining batch in otel modez Draining batch in langsmith modez'Tracing control thread is shutting down©rF   rH   )%rZ   r×   rÔ   Ú_multipart_disabledrW   r   rv   r¥   rÅ   Úis_env_var_truishÚ_tracing_modeÚinstance_flagsr¡   ÚweakrefÚWeakSetÚ_futuresr   re   ræ   ÚEventrˆ   ÚThreadÚ-tracing_control_thread_func_compress_parallelÚrefÚ_use_daemon_threadsÚstartrè   ÚremoverY   ÚqsizeÚ_tracing_sub_thread_funcr%   rh   r_   rÂ   r´   r®   )Ú
client_refrZ   rÒ   ry   rÍ   rÎ   r¦   Údisable_compressionrï   ÚthreadÚ
new_threadÚmodeÚmax_batch_sizer]   rx   rí   rî   s                 @@@r*   Útracing_control_thread_funcr
  >  sâ  ú€ Ù‹\€FØ�~ØØ×(Ñ(€MØÑ$Ð$Ð$Ü/°·±Ó<ÐØ)¨,Ñ7€JØ#6Ð7PÑ#QÐØ"5Ð6NÑ"OÐØ×2Ñ2Ô2÷ Ð7J×7NÑ7NØ  $ó8€Mð +-€Kà€N÷ Š>Ü�‰ð@ô	
ô
 	×"Ò"Ð#<Ó=÷ 	Ø×ÑÐ#5Ñ5÷	äÔð ö
 ¦=Ø—‘×*Ñ*×0¨b×5Ñ5Ø&¨÷
ñ 
ô �N‰NðUõô
 &ŸošoÓ/ˆFŒOÜ'7Ó'9ˆFÔ$Ü+4¯?ª?Ó+<ˆFÔ(Ü×ÒÜDÜ—k’k &Ó)Ð+Ø×1Ñ1ñ÷ ‰eŒgà˜aÑˆN÷ñ ñB ×
Ò
Û!ˆFØ—?‘?×$Ó$Ø×"Ñ" 6Ö*ñ "ô �ÓÐ6Ó6Ø×#Ñ#Ó%Ð(>Ó>ä"×)Ò)Ü/Ü—k’k &Ó)¨=Ð9Ø×1Ñ1ñˆJð
 ×Ñ˜zÔ*Ø×ÑÔà×#Ñ#ˆà×(Ñ(÷ Ø"×&Ñ&Ð'9Ó:÷àð 	ô
 5Ø¸Nñ
ð 
ˆ:õ 
ð �xÓÜ—‘Ð<Ô=Ü3Ø˜M°}õð ˜“Ü—‘Ð:Ô;Ü1°&¸-ÕTä—‘Ð?Ô@Ü,Ø˜M°}ôñG ×
Ô
ôP ‡L�LØ9Ø×ÑÓôð ×Ñ€Dà×$Ñ$×XÐ(;×(?Ñ(?Ð@RÓ(S×XÐWXð ô 4Ø¨uÀ^ñð ˆ*õ ð �8ÓÜ�L‰LÐ8Ô9Ü/Ø˜°=õð �V‹^Ü�L‰LÐ6Ô7Ü-¨f°mÕPä�L‰LÐ;Ô<Ü(Ø˜°=ôô 4Ø¨uÀ^ñð ˆ*÷ ô  ‡L�LÐ:Õ;r,   c                ó$  ^^• U " 5       mTc  g [         R                  S5        TR                  b  TR                  b  TR                  c  [         R                  S5        g [        TR                  5      nUS   nTR                  =(       d    UR                  SS5      nSmSUU4S jjn[        R                  " 5       n TR                  R                  S	S
9nU" 5       (       d  GOU(       a~  TR                  R                  5         [        TX45      u  p‰Ub=   [        R!                  TR"                  UU	5      n
TR                  R%                  U
5        [        R                  " 5       nOy[        R                  " 5       U-
  U:¼  a]  [        TSSS9u  nn	Ub7   [(        R                  " [        R!                  TR"                  UU	5      /5        [        R                  " 5       nGM(   TR                  b  TR                  R*                  OSn[         R                  SU5        [        TSSS9u  nn	Ub{  [         R                  SUR-                  5       R.                  5         [(        R                  " [        R!                  TR"                  UU	5      /5        [         R                  S5        O[         R                  S5         [         R                  S5        g ! [&         a    TR#                  UU	5         GN¥f = f! [&         a    TR#                  UU	5         GNNf = f! [&         a?    [         R                  S5        TR#                  UU	5        [         R                  S5         N¤f = f! [0         a    [         R                  SSS9   NÈf = f)Nz4Tracing control thread func compress parallel calledzšLangSmith tracing error: Required compression attributes not initialized.
This may affect trace submission but does not impact your application's runtime.ry   rz   é  @é   c                 ó   >• T(       a"  [        TS5      (       a'  TR                  (       a  [        R                  S5        g[        R
                  " 5       R                  5       (       d  [        R                  S5        g[        [        S5      (       a;  [        R                  " T5      n U T:„  nU(       d  [        R                  SU T5        U$ g)Nrã   z7Client is being cleaned up, stopping compression threadFz0Main thread is dead, stopping compression threadrä   z…Client refs count indicates we're the only remaining reference to the client, stopping compression thread (refcount=%d, threshold=%d)T)	rå   rã   rv   r¥   ræ   rç   rè   ré   rä   )rê   rì   rx   rí   s     €€r*   rï   ÚItracing_control_thread_func_compress_parallel.<locals>.keep_thread_activeï  s¥   ø€ æÜ�FÐ-×.Ñ.°6×3I×3Iä�L‰LÐRÔSØÜ×$Ò$Ó&×/Ñ/×1Ñ1ä�L‰LÐKÔLØÜ”3˜×&Ñ&ô —’ vÓ.ˆHØ!)¨NÑ!:ÐÞ%Ü—‘ð2ð Ø"ôð &Ð%ð r,   TrV   )rU   rá   )ry   rz   r   z.Compression thread final flush: trace_count=%dz0Compression thread final flush: sending %d bytesz.Compression thread final flush: send completedzKCompression thread final flush: thread pool shutdown, sending synchronouslyz3Compression thread final flush: sync send completedz/Compression thread final flush: no data to sendzuLangSmith tracing error: Failed during final cleanup.
This does not affect your application's runtime.
Error details:rc   z1Compressed traces control thread is shutting downró   )rv   r¥   re   rˆ   rú   rw   r×   rÔ   rh   rW   ÚtimeÚ	monotonicÚwaitÚclearr~   ÚLANGSMITH_CLIENT_THREAD_POOLr»   Ú_send_compressed_multipart_reqÚaddr„   r¹   rj   Ú	getbufferÚnbytesru   )r  Úflush_intervalrÒ   ry   rz   rï   Úlast_flush_timeÚ	triggeredÚdata_streamr}   Úfuturerj   Úfinal_data_streamrx   rí   s                @@r*   rý   rý   Ó  s|  ù€ ñ ‹\€FØ�~ØÜ
‡L�LÐGÔHà× Ñ Ñ(Ø×'Ñ'Ñ/Ø�?‰?Ñ"ä�‰ð1ô	
ð
 	ä/°·±Ó<ÐØ)¨,Ñ7€JØ×3Ñ3÷ Ð7J×7NÑ7NØ˜Jó8Ðð
 €N÷ð ô< —n’nÓ&€Oà
Ø×0Ñ0×5Ñ5¸dÐ5ÐCˆ	Ù!×#Ñ#Ùö Ø×(Ñ(×.Ñ.Ô0ô 8Ø�jó34Ñ/ˆKð Ñ&ðÜ9×@Ñ@Ø×=Ñ=Ø#Ø.ó�Fð
 —O‘O×'Ñ'¨Ô/ô #ŸnšnÓ.‰Oô —’Ó  ?Ñ2°~ÓEô <Ø q¸1ññØØ*ð Ñ*ðÜŸšä <× CÑ CØ$*×$IÑ$IØ$/Ø$:ó!"ðôô #'§.¢.Ó"2�òi ðn3
ð ×'Ñ'Ñ3ð ×$Ñ$×0Ò0àð 	ô
 	�‰Ø<Øô	
ô 4Ø˜q°1ñ
ñ	
ØØ"ð Ñ(Ü�L‰LØBØ!×+Ñ+Ó-×4Ñ4ôðTÜ—’ä4×;Ñ;Ø"×AÑAØ-Ø2óðôô —‘ÐMÕNô �L‰LÐJÕKô ‡L�LÐDÕEøôm $ó Ø×9Ñ9Ø#Ø.÷ðûô4 (ó Ø×=Ñ=Ø'Ø2÷ðûôP  ó 	TÜ—‘ð,ôð ×5Ñ5Ø%Ø*ôô —‘ÐRÖSð	Tûô ó 
Ü�‰ðð ð	 	ó 	
ð
ús]   Ä<K Æ6K? Ç)A:M. É$AL" Ê0M. ËK<Ë;K<Ë?LÌLÌ"AM+Í(M. Í*M+Í+M. Í.NÎNc                ó(  • U " 5       nUc  g  UR                   (       d  g  UR                  nUc   e[        UR                   5      nUR                  SS5      nSn[        R                  " 5       R                  5       (       aÿ  UUS   ::  aö  UR                  =(       d    UR                  S5      =(       d    Sn[        XFUS9=n	(       a€  SnUR                  n
U
S:X  a"  [        R                  S	5        [        X$X‘5        OOU
S
:X  a"  [        R                  S5        [        X$U	5        O'[        R                  S5        [        X$X‘5        OUS-  n[        R                  " 5       R                  5       (       a  UUS   ::  a  Mö  UR                  n
UR                  =(       d    UR                  S5      =(       d    Sn[        XFSUS9=n	(       a…  U
S:X  a"  [        R                  S5        [        X$X‘5        OIU
S
:X  a"  [        R                  S5        [        X$U	5        O![        R                  S5        [        X$X‘5        [        XFSUS9=n	(       a  M…  [        R                  S5        g ! [         a   n[        R                  SU5         S nAg S nAff = f)Nz#Error in tracing control thread: %sry   rË   r   rÏ   rz   rñ   rÜ   z(Sub-thread handling batch in hybrid moderÛ   z&Sub-thread handling batch in otel modez+Sub-thread handling batch in langsmith moderá   Frò   z(Sub-thread draining batch in hybrid modez&Sub-thread draining batch in otel modez+Sub-thread draining batch in langsmith modez+Tracing control sub-thread is shutting down)rÔ   rÓ   rv   r¥   rZ   r×   rW   ræ   rç   rè   rh   r_   rö   rÂ   r´   r®   )r  r¦   rx   r­   rZ   rÒ   ry   Úseen_successive_empty_queuesr	  r]   r  s              r*   r  r  }  s  € ñ ‹\€FØ�~ØðØ�{�{Øð ð
 ×(Ñ(€MØÑ$Ð$Ð$Ü/°·±Ó<ÐØ$×(Ñ(¨°sÓ;€JØ#$Ð ô
 	×ÒÓ×(Ñ(×*Ñ*à(ØÐ:Ñ;ó<ð ×(Ñ(÷ Ø"×&Ñ&Ð'9Ó:÷àð 	ô
 5Ø¸Nñ
ð 
ˆ:õ 
ð ,-Ð(à×'Ñ'ˆDØ�xÓÜ—‘ÐGÔHÜ3Ø¨:õð ˜“Ü—‘ÐEÔFÜ1°&ÈÕTä—‘ÐJÔKÜ,Ø¨:õð )¨AÑ-Ð(ô= 	×ÒÓ×(Ñ(×*Ñ*à(ØÐ:Ñ;õ<ð> ×Ñ€Dà×$Ñ$×XÐ(;×(?Ñ(?Ð@RÓ(S×XÐWXð ô 4Ø¨uÀ^ñð ˆ*õ ð �8ÓÜ�L‰LÐCÔDÜ/Ø zõð �V‹^Ü�L‰LÐAÔBÜ-¨fÀZÕPä�L‰LÐFÔGÜ(Ø zôô 4Ø¨uÀ^ñð ˆ*÷ ô  ‡L�LÐ>Õ?øôC ó Ü�‰Ð:¸AÔ>Üûðús   �I' É'
JÉ1JÊJ)r&   úlist[TracingQueueItem]rF   z}dict[tuple[Optional[str], Optional[str], Optional[str], Optional[str], Optional[str], Optional[str]], list[TracingQueueItem]])rË   Tr   )
rZ   r   r[   rÇ   rT   rH   r\   rÇ   rF   r!  )rË   r  )rx   r   ry   rÇ   rz   z
int | NonerF   z6tuple[Optional[io.BytesIO], Optional[tuple[int, int]]])rx   r   rŠ   z0list[tuple[str, dict, dict[str, Optional[str]]]]rF   rG   )TN)rx   r   rZ   r   r&   r!  r¦   rH   r§   rH   r¨   úJOptional[list[Union[SerializedRunOperation, SerializedFeedbackOperation]]]rF   rG   )rx   r   rZ   r   r&   r!  r§   rH   r¨   r"  rF   rG   )T)rx   r   rZ   r   r&   r!  r¦   rH   r§   rH   rF   rG   )rF   zOptional[int])rÔ   zls_schemas.LangSmithInforF   zls_schemas.BatchIngestConfig)r  úweakref.ref[Client]rF   rG   )g      à?)r  r#  r  ÚfloatrF   rG   )r  r#  r¦   rH   rF   rG   )?Ú
__future__r   Úconcurrent.futuresÚfuturesr¹   r·   Ú	functoolsÚioÚloggingré   ræ   r  rø   Úmultiprocessingr   Úqueuer   r   Útypingr   r   r	   r
   r   Ú	langsmithr   rÐ   r   rÅ   Ú&langsmith._internal._compressed_tracesr   r   Úlangsmith._internal._constantsr   r   r   r   Úlangsmith._internal._operationsr   r   r   Úopentelemetry.context.contextr   Úlangsmith.clientr   Ú	getLoggerrv   rº   r  r+   Útotal_orderingr.   r_   r~   r•   r®   r´   rÂ   rÉ   r×   r
  rý   r  rR   r,   r*   Ú<module>r6     s”  ðÝ "å Û Û Û 	Û Û 
Û Û Û Ý %ß ß <Õ <å +Ý 'ß S÷ó ÷ñ ö Ý5å'à	×	Ò	Ð-Ó	.€à!×4Ò4ÁÃÑMÐ ðØ!ðð
ôð< ×Ñ÷?4ð ?4ó ð?4ðF WXð+Øð+Ø!$ð+Ø37ð+ØPSð+àõ+ð^ KUð6Øð6Ø #ð6Ø=Gð6à;õ6ðr2
Øð2
àFð2
ð 
ô2
ðt  ð 	ð]Øð]àð]ð "ð]ð ð	]ð
 ð]ð
ð]ð 
õ]ðH  ð 	ð=Øð=àð=ð "ð=ð ð	=ð

ð=ð 
õ=ðJ  ðNØðNàðNð "ðNð ð	Nð
 ðNð 
õNôbðØ
"ðà!ôô0R<ðl >AðgFØ#ðgFØ5:ðgFà	õgFðTK@Ø#ðK@àðK@ð 
õK@r,   