Ë
    ³ŒjõŒ  ã                  óž  — d dl mZ d dlmZ d dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlmZ d dlmZmZ d dlmZmZmZmZmZ d dlmZ d dlmZ d dlmZmZ d d	l m!Z!m"Z"m#Z#m$Z$ d d
l%m&Z&m'Z'm(Z( erd dl)m*Z* d dl+m,Z,  ejZ                  d«      Z. ej^                   e«       ¬«      Z0	 	 	 	 dd„Z1ejd                   G d„ d«      «       Z3	 d	 	 	 	 	 	 	 	 	 dd„Z4	 d 	 	 	 	 	 	 	 d!d„Z5	 	 	 	 	 	 d"d„Z6	 	 d#	 	 	 	 	 	 	 	 	 	 	 	 	 d$d„Z7	 	 d#	 	 	 	 	 	 	 	 	 	 	 d%d„Z8	 d&	 	 	 	 	 	 	 	 	 	 	 d'd„Z9d(d„Z:	 	 	 	 d)d„Z;d*d„Z<	 d+	 	 	 	 	 d,d„Z=	 	 	 	 	 	 d-d„Z>y).é    )Ú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                óè   — ddl m}  |t        «      }| D ]Z  }|j                  |j                  |j
                  |j                  |j                  |j                  f}||   j                  |«       Œ\ |S )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        úp/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langsmith/_internal/_background_thread.pyÚ_group_batch_by_api_endpointr+   )   sk   € õ (áœ$Ó€GÛˆà�L‰LØ�L‰LØ×ÑØ�N‰NØ×ÑØ�K‰Kð
ˆð 	�‰×Ñ˜DÕ!ð ð €Nó    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Z	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zy)ÚTracingQueueItemzÒ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©	r0   r(   r    r   r!   r"   r#   r$   r4   Nc
                ó‚   — || _         || _        || _        || _        || _        || _        || _        || _        |	| _        y ©Nr5   )
Úselfr0   r(   r    r   r!   r"   r#   r$   r4   s
             r*   Ú__init__zTracingQueueItem.__init__g   sF   € ð !ˆŒØˆŒ	ØˆŒØˆŒØ&ˆÔØ"ˆŒØ*ˆÔØˆŒØ(ˆÕr,   c                óŒ   — | j                   | j                  j                  f|j                   |j                  j                  fk  S r7   )r0   r(   Ú	__class__©r8   Úothers     r*   Ú__lt__zTracingQueueItem.__lt__}   s;   € Ø—‘˜tŸy™y×2Ñ2Ð3Ø�N‰NØ�J‰J× Ñ ð7
ñ 
ð 	
r,   c                ó°   — t        |t        «      xrE | j                  | j                  j                  f|j                  |j                  j                  fk(  S r7   )Ú
isinstancer.   r0   r(   r;   r<   s     r*   Ú__eq__zTracingQueueItem.__eq__ƒ   sM   € Ü˜%Ô!1Ó2ò 4Ø�M‰MØ�I‰I×Ñð8
ð �n‰n˜eŸj™j×2Ñ2Ð3ñ84ð 	4r,   )NNNNNNN)r0   r/   r(   r1   r    r2   r   r2   r!   r2   r"   r2   r#   r2   r$   r2   r4   r3   ÚreturnÚNone)r=   r.   rB   Úbool)r=   ÚobjectrB   rD   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__Ú	__slots__r9   r>   rA   © r,   r*   r.   r.   G   sÎ   … ñð ƒMØ
DÓDØÓØÓØÓØÓØ Ó ØÓØ#Ó#ð
€Ið  "&Ø!%Ø%)Ø#'Ø'+Ø $Ø*.ð)àð)ð Ið)ð ð	)ð
 ð)ð #ð)ð !ð)ð %ð)ð ð)ð (ð)ð 
ó)ó,
ô4r,   r.   c                ó²  — g }d}	 | j                  |d¬«      x}r:|j                  |«       |dkD  r$||j                  j                  «       z  }||kD  r|S 	 	 | j                  |d¬«      }|j                  |«       |dkD  r%||j                  j                  «       z  }||kD  r	 |S |rt        |«      |k\  r	 |S Œc# t        $ r Y |S w xY w# t        $ r Y |S w xY w)Nr   g      Ð?)ÚblockÚtimeoutçš™™™™™©?)Úgetr%   r(   Úcalculate_serialized_sizer   Úlen)Útracing_queueÚlimitrN   Úmax_size_bytesÚ
next_batchÚcurrent_sizer(   s          r*   Ú_tracing_thread_drain_queuerY   Š   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	 ÁB9 Á*8C	 Â%C	 Â8C	 Â9	CÃC	 ÃCÃC	 Ã		CÃCc                ó®  — 	 | j                   €y| j                   j                  5  | j                   j                  }| j                  xs |}|�|dk  rt	        d|› �«      ‚|�|dk  rt	        d|› �«      ‚|�||k  r%|�| j                   j
                  |k  r
	 d d d «       y| j                   j                  j                  dt        › d�j                  «       «       | j                   j                  j                  «        | j                   j                  j                  «       }| j                   j                  }t        t        t        |«      d| j                   j                   «       ||f}| j                   j#                  «        d d d «       j%                  d«       |fS # 1 sw Y   ŒxY w# t&        $ r t(        j+                  dd	¬
«       Y yw xY w)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_sizerX   Úfilled_bufferÚcompressed_traces_infos          r*   Ú'_tracing_thread_drain_compressed_bufferrx   ¸   sÛ  € ð3Ø×#Ñ#Ð+ØØ×%Ñ%×*Ó*Ø"(×":Ñ":×"LÑ"LÐà%×;Ñ;ÒOÐ?OÐàÐ%¨*¸ª/Ü Ð#DÀZÀLÐ!QÓRÐRØÐ+Ð0@À1Ò0DÜ Ø@ÐAQÐ@RÐSóð ð
 !Ð(Ð,?ÐBRÒ,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;   ‚F1 �F1 ¥A4F%ÂF1 Â"C&F%ÆF1 Æ%F.Æ*F1 Æ1 GÇGc                óø  — 	 |D ��cg c]  \  }}}|‘Œ
 }}}|D �cg c]  }|j                  d«      ‘Œ }}| j                  €t        d«      ‚t        | j                  |«      «      }t	        |«      t	        |«      k7  r#t        dt	        |«      › dt	        |«      › �«      ‚|D �cg c]  }|j                  d«      ‘Œ }}||k7  rt        d|› d|› �«      ‚t        ||«      D ];  \  \  }	}}
}|	dk(  r | j                  |fi |
¤Ž Œ#|	dk(  sŒ) | j                  |fi |
¤Ž Œ= | j                  r| j                  j                  «        yyc c}}w c c}w c c}w # t        $ r t        j                  d	d
¬«       Y yw xY w)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:Tr]   )rQ   Ú_process_buffered_run_opsÚRuntimeErrorr   rS   rc   ÚzipÚ_create_runÚ_update_runÚ_data_available_eventÚsetro   rp   rq   )rr   Ú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¡. ! X¨q’XÐ4Dˆ	ÑEÙ1:Ó;±¨#˜Ÿ™ �°ˆÐ;ð ×+Ñ+Ð3ÜØSóð ô ˜f×>Ñ>¸yÓIÓJˆô ˆ~Ó¤# i£.Ò0ÜðÜ 	›NÐ+¨6´#°nÓ2EÐ1FðHóð ñ
 3AÓA±.¨3˜Ÿ™ �°.ˆÐAØ˜LÒ(ÜðØ(˜>¨°¨ð@óð ô 9<Ø˜nö9
Ñ4Ñ%ˆY˜˜9 }ð ˜FÒ"Ø"�×"Ñ" =Ñ>°IÓ>Ø˜gÓ%Ø"�×"Ñ" =Ñ>°IÓ>ð9
ð ×'Ò'Ø×(Ñ(×,Ñ,Õ.ð (ùóE FùÚ;ùò  Bøô& ò 
ä�‰ðð ð	 	ö 	
ð
ús?   ‚E ‡E”E ›E³A1E Â$EÂ<AE Ä	;E ÅE Å E9Å8E9c           
     ód  — 	 t        |«      }|j                  «       D �]  \  \  }}}	}
}}}|s$t        |D �cg c]  }|j                  ‘Œ c}«      }nA|D �ch c]  }|j                  j                  ’Œ }}|D �cg c]  }|j                  |v sŒ|‘Œ }}|r| j                  ||||	|
||¬«       Œ�t        d„ |D «       «      r4t        j                  d«       |D �cg c]  }t        |t        «      s|‘Œ }}| j                  t        t        t           |«      |||	|
||¬«       �Œ 	 |r|�|D ]  }	 |j%                  «        Œ yyyc c}w c c}w c c}w c c}w # t        $ r2}t        j!                  dd¬«       | j#                  |«       Y d}~Œid}~ww xY w# t&        $ r1}dt)        |«      v rt        j+                  d	|› �«       n‚ Y d}~Œ d}~ww xY w# |rY|�V|D ]P  }	 |j%                  «        Œ# t&        $ r1}dt)        |«      v rt        j+                  d	|› �«       n‚ Y d}~ŒJd}~ww xY w w w w xY w)
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  ó<   K  — | ]  }t        |t        «      –— Œ y ­wr7   )r@   r   )Ú.0Úops     r*   Ú	<genexpr>z/_tracing_thread_handle_batch.<locals>.<genexpr>[  s   è ø€ ÐWÉYÀr”z "Ô&A×BÉYùs   ‚z;Feedback operations are not supported in non-multipart moder\   Tr]   Nú!task_done() called too many timesú3Ignoring harmless task_done error during shutdown: )r+   Úitemsr   r(   rz   Ú_multipart_ingest_opsÚanyrp   Úwarningr@   r   Ú_batch_ingest_run_opsr   r   r   ro   rq   Ú_invoke_tracing_error_callbackÚ	task_donerc   r/   Údebug)rr   rT   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�T—Y“Y¨;Ñ7ó‘	ñ 7BÓB±k¨d˜TŸY™YŸ\›\°k�	ÐBÙ*-ÓD©# B°·±¸)Ò1CšR¨#�	ÐDáØ×,Ñ,ØØ#Ø#Ø +Ø'Ø"/Ø!ð -õ ô ÑWÉYÓ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­   ‚4E ¶E
Á	E ÁEÁ2E Á8EÂEÂAE ÃEÃ12E Ä#G Ä.FÅE Å	FÅ (FÆG ÆFÆG Æ	GÆ'G
Ç
GÇ
H/ÇG.Ç-H/Ç.	H(	Ç7'H#	ÈH/È#H(	È(H/c                ó°  — 	 |€#t        |D �cg c]  }|j                  ‘Œ c}«      }|D �cg c]  }t        |t        «      sŒ|‘Œ }}|D �ci c]=  }t        |j                  t        «      r!|j                  j                  |j
                  “Œ? }}|r>| j                  �| j                  j                  ||«       nt        j                  d«       |r|�|D ]  }
	 |j                  «        Œ yyyc c}w c c}w c c}w # t        $ r2}	t        j                  dd¬«       | j                  |	«       Y d}	~	Œdd}	~	ww xY w# t        $ r1}	dt        |	«      v rt        j                  d|	› �«       n‚ Y d}	~	Œ›d}	~	ww xY w# |rY|�V|D ]P  }
	 |j                  «        Œ# t        $ r1}	dt        |	«      v rt        j                  d|	› �«       n‚ Y d}	~	ŒJd}	~	ww xY w w w w xY w)ad  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:Tr]   r•   r–   )r   r(   r@   r   rz   r4   Úotel_exporterÚexport_batchrp   rq   ro   rœ   r�   rc   r/   rž   )rr   rT   r&   r    r¡   r(   r“   Úrun_opsÚotel_context_mapr¦   r…   s              r*   Ú!_otel_tracing_thread_handle_batchr­   †  sí  € ð()Øˆ;Ü5ÉUÓ6SÉUÀT°t·y³yÈUÑ6SÓTˆCá #ÓN¡˜"¤z°"Ô6LÕ'M’2 ˆÐNñ ó
á�Ü˜$Ÿ)™)Ô%;Ô<ð �I‰I�L‰L˜$×+Ñ+Ñ+Øð 	ð 
ñ
 Ø×#Ñ#Ð/Ø×$Ñ$×1Ñ1°'Ð;KÕ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š   ‚C= �C. C= «C3ÁC3ÁC= ÁAC8ÂAC= ÃD;Ã.C= Ã=	D8Ä(D3Ä.E8 Ä3D8Ä8E8 Ä;	E5Å'E0Å0E5Å8
GÆFÆGÆ	G	Æ'G		ÇGÇ	G	ÇGc           
     ó  — t        |D �cg c]  }|j                  ‘Œ c}«      }t        j                  |«      }t        j                  |«      }	 t	        j
                  d¬«      5 }	|	j                  t        | |||d|«      }
|	j                  t        | ||d|«      }|
j                  «        |j                  «        ddd«       |r|�|D ]  }	 |j                  «        Œ yyyc c}w # 1 sw Y   Œ-xY w# t        $ rM}dt        |«      v r5t        j                  d«       t        | |||d|«       t        | ||d|«       n‚ Y d}~Œ�d}~ww xY w# t        $ r1}dt        |«      v rt        j                  d|› �«       n‚ Y d}~Œ¸d}~ww xY w)	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~   r/   rp   rž   r�   rc   )rr   rT   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¨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¨m¸UÀMôô .Ø˜ u¨e°Xõð ô	ûðûô* ò Ø6¼#¸a»&Ñ@ô —L‘LØMÈaÈSÐQõð ô	ûð	úsO   ŠC"ÁC3 Á%AC'Â;C3 ÃEÃ'C0Ã,C3 Ã3	E	Ã<AEÅE	Å	FÅ'FÆFc                 óš   — t        j                  d«      } | �	 t        | «      S y # t        $ r t        j                  d| › d�«       Y y w xY w)NÚBATCH_INGEST_SIZE_LIMITz+Invalid value for BATCH_INGEST_SIZE_LIMIT: z, continuing with default)Úls_utilsÚget_env_varÚintrc   rp   rš   )Úsize_limit_strs    r*   Úget_size_limit_from_envrÂ     sg   € Ü×)Ñ)Ø!ó€Nð Ð!ð	Ü�~Ó&Ð&ð øô ò 	Ü�N‰NØ=¸nÐ=Mð N*ð *õð ð	ús   ™
% ¥"A
Á	A
c                óæ   — t        j                  dd dt        t        t        ¬«      }| s|S 	 | j
                  s|S t        «       }|�|| j
                  d<   | j
                  S # t        $ r |cY S w xY w)NTéd   )Úuse_multipart_endpointrt   rs   Úscale_up_nthreads_limitÚscale_up_qsize_triggerÚscale_down_nempty_triggerrs   )Ú
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ˆD×$Ñ$ \Ñ2Ø×'Ñ'Ð'øÜò ØÒðús   ­A" »&A" Á"A0Á/A0c                óè  ‡‡‡—  | «       Š‰€y ‰j                   }|€J ‚t        ‰j                  «      }|d   }|d   }|d   }‰j                   xr |j	                  dd«      }g ŠdŠt
        st        j                  d«       t        j                  d«      xs ‰j                  d	v xs t
         }|sÐ|rÎ‰j                  j                  xs i j	                  d
d«      st        j                  d«       nŽt        j                  «       ‰_        t!        «       ‰_        t%        j&                  «       ‰_        t%        j*                  t,        t        j.                  ‰«      f‰j0                  ¬«      j3                  «        ‰dz  Šdˆˆˆfd„} |«       �rb‰D ]$  }	|	j5                  «       rŒ‰j7                  |	«       Œ& t9        ‰«      |k  ro|j;                  «       |kD  r\t%        j*                  t<        t        j.                  ‰«      |f‰j0                  ¬«      }
‰j?                  |
«       |
j3                  «        ‰j                  }‰j@                  xs |j	                  d«      xs d}tC        |||¬«      x}rt|dk(  r$t        j                  d«       tE        ‰|||«       nK|dk(  r#t        j                  d«       tG        ‰||«       n#t        j                  d«       tI        ‰|||«        |«       r�Œbt        j                  d|j;                  «       «       ‰j                  }‰j@                  xs |j	                  d«      xs d}tC        ||d|¬«      x}r†|dk(  r$t        j                  d«       tE        ‰|||«       nK|dk(  r#t        j                  d«       tG        ‰||«       n#t        j                  d«       tI        ‰|||«       tC        ||d|¬«      x}rŒ†t        j                  d«       y )Nrs   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                 ó|  •— ‰rt        ‰d«      r"‰j                  rt        j                  d«       yt	        j
                  «       j                  «       st        j                  d«       yt        t        d«      rCt        j                  ‰«      } ‰t        ‰«      z   }| |kD  }|st        j                  d| |«       |S y)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Ü   rp   rž   Ú	threadingÚmain_threadÚis_aliveÚsysrÝ   rS   )ÚrefcountÚ	thresholdÚshould_keep_threadrr   Únum_known_refsÚsub_threadss      €€€r*   Úkeep_thread_activez7tracing_control_thread_func.<locals>.keep_thread_activeo  s«   ø€ áÜ�FÐ-Ô.°6×3IÒ3Iä�L‰LÐNÔOØÜ×$Ñ$Ó&×/Ñ/Ô1ä�L‰LÐGÔHØä”3˜Ô&ô —‘ vÓ.ˆHØ&¬¨[Ó)9Ñ9ˆIØ!)¨IÑ!5ÐÙ%Ü—‘ð2ð Øôð &Ð%ð r,   rt   r   ©rU   rV   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©rU   rN   rV   zDraining batch in hybrid modezDraining batch in otel modez Draining batch in langsmith modez'Tracing control thread is shutting down©rB   rD   )%rT   rÐ   rÍ   Ú_multipart_disabledrQ   r   rp   rž   r¾   Úis_env_var_truishÚ_tracing_modeÚinstance_flagsrš   ÚweakrefÚWeakSetÚ_futuresr   r_   rß   ÚEventr‚   ÚThreadÚ-tracing_control_thread_func_compress_parallelÚrefÚ_use_daemon_threadsÚstartrá   ÚremoverS   ÚqsizeÚ_tracing_sub_thread_funcr%   rb   rY   r»   r­   r§   )Ú
client_refrT   rË   rs   rÆ   rÇ   rŸ   Údisable_compressionrè   ÚthreadÚ
new_threadÚmodeÚmax_batch_sizerW   rr   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Ø˜Z¨uÀ^ôð ˆ*ð ð �8ÒÜ�L‰LÐ8Ô9Ü/Ø˜ z°=õð �VŠ^Ü�L‰LÐ6Ô7Ü-¨f°mÀZÕPä�L‰LÐ;Ô<Ü(Ø˜ z°=ôô 4Ø˜Z¨uÀ^ôð ˆ*ñ ô  ‡L�LÐ:Õ;r,   c                óò  ‡‡—  | «       Š‰€y t         j                  d«       ‰j                  �‰j                  �‰j                  €t         j                  d«       y t        ‰j                  «      }|d   }‰j                  xs |j                  dd«      }dŠdˆˆfd„}t        j                  «       }	 ‰j                  j                  d	¬
«      } |«       snù|r~‰j                  j                  «        t        ‰||«      \  }}	|�=	 t        j!                  ‰j"                  ||	«      }
‰j                  j%                  |
«       t        j                  «       }nwt        j                  «       |z
  |k\  r]t        ‰dd¬«      \  }}	|�6	 t)        j                  t        j!                  ‰j"                  ||	«      g«       t        j                  «       }�Œ	 ‰j                  �‰j                  j*                  nd}t         j                  d|«       t        ‰dd¬«      \  }}	|�zt         j                  d|j-                  «       j.                  «       	 t)        j                  t        j!                  ‰j"                  ||	«      g«       t         j                  d«       nt         j                  d«       t         j                  d«       y # t&        $ r ‰j#                  ||	«       Y �ŒŸw xY w# t&        $ r ‰j#                  ||	«       Y �ŒIw xY w# t&        $ r? t         j                  d«       ‰j#                  ||	«       t         j                  d«       Y Œ¡w xY w# t0        $ r t         j                  dd¬«       Y ŒÇw xY w)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.rs   rt   é  @é   c                 ó`  •— ‰rt        ‰d«      r"‰j                  rt        j                  d«       yt	        j
                  «       j                  «       st        j                  d«       yt        t        d«      r5t        j                  ‰«      } | ‰kD  }|st        j                  d| ‰«       |S y)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Ü   rp   rž   rß   rà   rá   râ   rÝ   )rã   rå   rr   ræ   s     €€r*   rè   zItracing_control_thread_func_compress_parallel.<locals>.keep_thread_activeï  sœ   ø€ áÜ�FÐ-Ô.°6×3IÒ3Iä�L‰LÐRÔSØÜ×$Ñ$Ó&×/Ñ/Ô1ä�L‰LÐKÔLØÜ”3˜Ô&ô —‘ vÓ.ˆHØ!)¨NÑ!:ÐÙ%Ü—‘ð2ð Ø"ôð &Ð%ð r,   TrP   )rO   rÚ   )rs   rt   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:r]   z1Compressed traces control thread is shutting downrë   )rp   rž   r_   r‚   rò   rq   rÐ   rÍ   rb   rQ   ÚtimeÚ	monotonicÚwaitÚclearrx   ÚLANGSMITH_CLIENT_THREAD_POOLr´   Ú_send_compressed_multipart_reqÚaddr~   r²   rd   Ú	getbufferÚnbytesro   )rü   Úflush_intervalrË   rs   rt   rè   Úlast_flush_timeÚ	triggeredÚdata_streamrw   Úfuturerd   Úfinal_data_streamrr   ræ   s                @@r*   rõ   rõ   Ó  sz  ù€ ñ ‹\€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Ð"2ó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 Æ5K& ÇA;M ÉA
L ÊM ËK#Ë"K#Ë&LÌLÌAMÍM ÍMÍM Í M6Í5M6c                óÖ  —  | «       }|€y 	 |j                   sy 	 |j                  }|€J ‚t        |j                   «      }|j                  dd«      }d}t        j                  «       j                  «       rî||d   k  ræ|j                  xs |j                  d«      xs d}t        |||¬«      x}	rƒd}|j                  }
|
dk(  r$t        j                  d	«       t        |||	|«       nQ|
d
k(  r#t        j                  d«       t        |||	«       n)t        j                  d«       t        |||	|«       n|dz  }t        j                  «       j                  «       r	||d   k  rŒæ|j                  }
|j                  xs |j                  d«      xs d}t        ||d|¬«      x}	r†|
dk(  r$t        j                  d«       t        |||	|«       nK|
d
k(  r#t        j                  d«       t        |||	«       n#t        j                  d«       t        |||	|«       t        ||d|¬«      x}	rŒ†t        j                  d«       y # t        $ r }t        j                  d|«       Y d }~y d }~ww xY w)Nz#Error in tracing control thread: %srs   rÄ   r   rÈ   rt   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Ì   rp   rž   rT   rÐ   rQ   rß   rà   rá   rb   rY   rî   r»   r­   r§   )rü   rŸ   rr   r¦   rT   rË   rs   Úseen_successive_empty_queuesr  rW   r   s              r*   rû   rû   }  s“  € ñ ‹\€FØ€~ØðØ�{Š{Øð ð
 ×(Ñ(€MØÐ$Ð$Ð$Ü/°·±Ó<ÐØ$×(Ñ(¨°sÓ;€JØ#$Ð ô
 	×ÑÓ×(Ñ(Ô*à(ØÐ:Ñ;ò<ð ×(Ñ(ò Ø"×&Ñ&Ð'9Ó:òàð 	ô
 5Ø ¸Nô
ð 
ˆ:ð 
ð ,-Ð(à×'Ñ'ˆDØ�xÒÜ—‘ÐGÔHÜ3Ø˜M¨:°}õð ˜’Ü—‘ÐEÔFÜ1°&¸-ÈÕTä—‘ÐJÔKÜ,Ø˜M¨:°}õð )¨AÑ-Ð(ô= 	×ÑÓ×(Ñ(Ô*à(ØÐ:Ñ;ó<ð> ×Ñ€Dà×$Ñ$ÒXÐ(;×(?Ñ(?Ð@RÓ(SÒXÐWXð ô 4Ø˜Z¨uÀ^ôð ˆ*ð ð �8ÒÜ�L‰LÐCÔDÜ/Ø˜ z°=õð �VŠ^Ü�L‰LÐAÔBÜ-¨f°mÀZÕPä�L‰LÐFÔGÜ(Ø˜ z°=ôô 4Ø˜Z¨uÀ^ôð ˆ*ñ ô  ‡L�LÐ>Õ?øôC ò Ü�‰Ð:¸AÔ>Üûðús   ŒH? È?	I(ÉI#É#I()r&   úlist[TracingQueueItem]rB   z}dict[tuple[Optional[str], Optional[str], Optional[str], Optional[str], Optional[str], Optional[str]], list[TracingQueueItem]])rÄ   Tr   )
rT   r   rU   rÀ   rN   rD   rV   rÀ   rB   r  )rÄ   r  )rr   r   rs   rÀ   rt   z
int | NonerB   z6tuple[Optional[io.BytesIO], Optional[tuple[int, int]]])rr   r   r„   z0list[tuple[str, dict, dict[str, Optional[str]]]]rB   rC   )TN)rr   r   rT   r   r&   r  rŸ   rD   r    rD   r¡   úJOptional[list[Union[SerializedRunOperation, SerializedFeedbackOperation]]]rB   rC   )rr   r   rT   r   r&   r  r    rD   r¡   r  rB   rC   )T)rr   r   rT   r   r&   r  rŸ   rD   r    rD   rB   rC   )rB   zOptional[int])rÍ   zls_schemas.LangSmithInforB   zls_schemas.BatchIngestConfig)rü   úweakref.ref[Client]rB   rC   )g      à?)rü   r  r  ÚfloatrB   rC   )rü   r  rŸ   rD   rB   rC   )?Ú
__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   Ú	getLoggerrp   r³   r  r+   Útotal_orderingr.   rY   rx   r�   r§   r­   r»   rÂ   rÐ   r  rõ   rû   rL   r,   r*   Ú<module>r-     s˜  ðÝ "å Û Û Û 	Û Û 
Û Û Û Ý %ß ß <Õ <å +Ý 'ß S÷ó ÷ñ ñ Ý5å'à	ˆ×	Ñ	Ð-Ó	.€à4˜r×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,   