
    Ng>                    &   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mZm	Z	 d dl
mZmZmZmZ d dlmZ d dlmZmZmZ d dlmZmZmZ erd dlmZ  ej        d	          Zej         G d
 d                      Z	 d%d&dZ d'dZ!d(d Z"d)d#Z#d*d$Z$dS )+    )annotationsN)EmptyQueue)TYPE_CHECKINGListUnioncast)schemas)_AUTO_SCALE_DOWN_NEMPTY_TRIGGER_AUTO_SCALE_UP_NTHREADS_LIMIT_AUTO_SCALE_UP_QSIZE_TRIGGER)SerializedFeedbackOperationSerializedRunOperation#combine_serialized_queue_operations)Clientzlangsmith.clientc                  D    e Zd ZU dZded<   ded<   dZdd	ZddZddZdS )TracingQueueItemzAn item in the tracing queue.

    Attributes:
        priority (str): The priority of the item.
        action (str): The action associated with the item.
        item (Any): The item itself.
    strpriority:Union[SerializedRunOperation, SerializedFeedbackOperation]itemr   r   returnNonec                "    || _         || _        d S Nr   )selfr   r   s      b/var/www/html/ai-engine/env/lib/python3.11/site-packages/langsmith/_internal/_background_thread.py__init__zTracingQueueItem.__init__1   s    
 !			    otherboolc                R    | j         | j        j        f|j         |j        j        fk     S r   )r   r   	__class__r   r!   s     r   __lt__zTracingQueueItem.__lt__9   s-    ty23NJ 7
 
 	
r    objectc                |    t          |t                    o'| j        | j        j        f|j        |j        j        fk    S r   )
isinstancer   r   r   r$   r%   s     r   __eq__zTracingQueueItem.__eq__?   sB    %!122 4MI8
 nej2384 	4r    N)r   r   r   r   r   r   )r!   r   r   r"   )r!   r'   r   r"   )	__name__
__module____qualname____doc____annotations__	__slots__r   r&   r*    r    r   r   r   "   sx           MMMDDDD$I   
 
 
 
4 4 4 4 4 4r    r   d   Ttracing_queuer   limitintblockr"   r   List[TracingQueueItem]c                D   g }	 |                      |d          x}r|                    |           |                      |d          x}rD|                    |           |rt          |          |k    rn|                      |d          x}Dn# t          $ r Y nw xY w|S )Ng      ?)r6   timeoutg?)getappendlenr   )r3   r4   r6   
next_batchr   s        r   _tracing_thread_drain_queuer>   F   s     *,J !$$5$$???4 	$d####''eT'BBBd 	d### ZE11 $''eT'BBBd 	    s   BB 
BBclientr   batchuse_multipartr   c                   	 t          d |D                       }|r|                     |           nrt          d |D                       r&t                              d           d |D             }|                     t          t          t                   |                     n,# t          $ r t          
                    dd           Y nw xY w|D ]}|                                 d S # |D ]}|                                 w xY w)Nc                    g | ]	}|j         
S r1   )r   ).0r   s     r   
<listcomp>z0_tracing_thread_handle_batch.<locals>.<listcomp>b   s    2O2O2O492O2O2Or    c              3  @   K   | ]}t          |t                    V  d S r   r)   r   rD   ops     r   	<genexpr>z/_tracing_thread_handle_batch.<locals>.<genexpr>f   s-      MM2:b"=>>MMMMMMr    z;Feedback operations are not supported in non-multipart modec                <    g | ]}t          |t                    |S r1   rG   rH   s     r   rE   z0_tracing_thread_handle_batch.<locals>.<listcomp>j   s8       Jr;V,W,W  r    zError in tracing queueT)exc_info)r   _multipart_ingest_opsanyloggerwarn_batch_ingest_run_opsr	   r   r   	Exceptionerror	task_done)r?   r3   r@   rA   ops_s         r   _tracing_thread_handle_batchrW   [   sU   &12O2O2O2O2OPP 
	R((----MMMMMMM Q   !$   ((d3I.JC)P)PQQQ   -=== 		  	& 	&A##%%%%	& 	& 	& 	&A##%%%%	&s*   B#B& %C- &&CC- CC- -Dinfols_schemas.LangSmithInfols_schemas.BatchIngestConfigc                    t          j        dd dt          t          t                    }| s|S 	 | j        s|S | j        S # t          $ r |cY S w xY w)NFr2   )use_multipart_endpointsize_limit_bytes
size_limitscale_up_nthreads_limitscale_up_qsize_triggerscale_down_nempty_trigger)
ls_schemasBatchIngestConfigr   r   r   batch_ingest_configBaseException)rX   default_configs     r   _ensure_ingest_configrg   y   s      1$ =;"A  N  ' 	"!!''   s   ? ? AA
client_refweakref.ref[Client]c                &    |             d S j         }|J t          j                  }|d         }|d         }|d         }|                    dd          }g ddfd	} |            rD ]+}|                                s                    |           ,t                    |k     rp|                                |k    rXt          j	        t          t          j                  |f
          }	                    |	           |	                                 t          ||          x}
rt!          ||
|            |            t          ||d          x}
r(t!          ||
|           t          ||d          x}
&d S d S )Nr^   r_   r`   r\   F   r   r"   c                     rt           d          r	 j        rdS t          j                                                    sdS t          t
          d          r(t          j                   t                    z   k    S dS )N_manual_cleanupFgetrefcountT)hasattrrm   	threadingmain_threadis_alivesysrn   r<   )r?   num_known_refssub_threadss   r   keep_thread_activez7tracing_control_thread_func.<locals>.keep_thread_active   s     	F-..	393I	 5$&&//11 	53&& 	 ?6**^c+>N>N-NNN 4r    )targetargsr4   r4   r6   )r   r"   )r3   rg   rX   r:   rr   remover<   qsizerp   Thread_tracing_sub_thread_funcweakrefrefr;   startr>   rW   )rh   r3   rd   r^   r_   r`   rA   rv   thread
new_threadr=   r?   rt   ru   s              @@@r   tracing_control_thread_funcr      s7   Z\\F~(M$$$/<<),7J#67P#Q"56N"O'++,DeLLM*,KN       ( 


 ! 	+ 	+F??$$ +""6***666##%%(>>>")/k&))=9  J z***4]*UUUU: 	(z=   


 & 4Zu   * W 	%V]JVVV 4Zu   * W W W W Wr    c                    |             }|d S 	 |j         sd S n3# t          $ r&}t                              d|           Y d }~d S d }~ww xY w|j        }|J t          |j                   }|                    dd          }d}t          j                    	                                rj||d         k    r^t          ||          x}rd}t          ||||           n|dz  }t          j                    	                                r||d         k    ^t          ||d	          x}r(t          ||||           t          ||d	          x}&d S d S )
Nz#Error in tracing control thread: %sr^   r2   r   ra   ry      Frz   )rX   re   rO   debugr3   rg   r:   rp   rq   rr   r>   rW   )	rh   rA   r?   er3   rd   r^   seen_successive_empty_queuesr=   s	            r   r~   r~      s    Z\\F~{ 	F	   :A>>> (M$$$/<<$((s;;J#$ 
 	((**. ):;< < 5]*UUUU: 	.+,((z=    )A-( 	((**. ):;< < 4Zu   * W 	%V]JVVV 4Zu   * W W W W Ws    
A
AA
)r2   T)r3   r   r4   r5   r6   r"   r   r7   )
r?   r   r3   r   r@   r7   rA   r"   r   r   )rX   rY   r   rZ   )rh   ri   r   r   )rh   ri   rA   r"   r   r   )%
__future__r   	functoolsloggingrs   rp   r   queuer   r   typingr   r   r   r	   	langsmithr
   rb   langsmith._internal._constantsr   r   r   langsmith._internal._operationsr   r   r   langsmith.clientr   	getLoggerrO   total_orderingr   r>   rW   rg   r   r~   r1   r    r   <module>r      s   " " " " " "      



                         , + + + + +         
           (''''''		-	.	.  4  4  4  4  4  4  4  4H ;?    *& & & &<   *:W :W :W :Wz'W 'W 'W 'W 'W 'Wr    