
    Zi                        d dl 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 d dlmZ d dlmZ d dlmZmZ d d	l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$ d dl%Z% e%j&        e'          Z( G d dee          Z)dS )    N) RetryOnRpcErrorClientInterceptor)ProducerConsumerConsumerCallbackFnto_proto_submit)PushLogsRequestPullLogsRequest	LogRecord)LogServiceStub)OtelInterceptor)OperationRecordSeqId)System)OpenTelemetryClientOpenTelemetryGranularityadd_attributes_to_current_spantrace_method)override)SequenceOptionalcast)UUIDc                       e Zd ZU dZeed<   eed<   ej        ed<   e	ed<   eed<   de
f fdZ ed	ej                  ed- fd                        Z edej                  ed- fd                        Z edej                  ed- fd                        Z edej                  eded
dfd                        Z edej                  eded
dfd                        Z edej                  ededed
efd                        Z edej                  ededee         d
ee         fd                        Z edej                  e	 	 	 d.dededee         dee         d ee         d
efd!                        Z ed"ej                  ed#ed
dfd$                        Zed
efd%            Zed
efd&            Z e!ed
efd'                        Z"ded(ee         d
efd)Z#ded*ed+ed
ee$         fd,Z% xZ&S )/
LogServicez(
    Distributed Chroma Log Service
    _log_service_stub_request_timeout_seconds_channel_log_service_url_log_service_portsystemc                 B   |j                             d          | _        |j                             d          | _        |j                             d          | _        |                    t
                    | _        t                                          |           d S )Nchroma_logservice_hostchroma_logservice_port)chroma_logservice_request_timeout_seconds)	settingsrequirer   r    r   r   _opentelemetry_clientsuper__init__)selfr!   	__class__s     [/root/projects/butler/venv/lib64/python3.11/site-packages/chromadb/logservice/logservice.pyr*   zLogService.__init__-   s     & 7 78P Q Q!'!8!89Q!R!R(.(?(?7)
 )
% &,^^4G%H%H"         zLogService.startreturnNc                 :   t          j        | j         d| j                   | _        t                      t                      g}t          j        | j        g|R  | _        t          | j                  | _	        t                                                       d S )N:)grpcinsecure_channelr   r    r   r   r   intercept_channelr   r   r)   start)r+   interceptorsr,   s     r-   r5   zLogService.start6   s     -$??t'=??
 
 ())+K+M+MN.t}L|LLL!/!>!>r.   zLogService.stopc                 z    | j                                          t                                                       d S N)r   closer)   stopr+   r,   s    r-   r:   zLogService.stopA   s.     	r.   zLogService.reset_statec                 H    t                                                       d S r8   )r)   reset_stater;   s    r-   r=   zLogService.reset_stateG   s!     	r.   zLogService.delete_logcollection_idc                      t          d          NzNot implementedNotImplementedErrorr+   r>   s     r-   
delete_logzLogService.delete_logL        ""3444r.   zLogService.purge_logc                      t          d          r@   rA   rC   s     r-   	purge_logzLogService.purge_logQ   rE   r.   zLogService.submit_embedding	embeddingc                 h    | j         st          d          |                     ||g          d         S )NComponent not runningr   )_runningRuntimeErrorsubmit_embeddings)r+   r>   rH   s      r-   submit_embeddingzLogService.submit_embeddingV   s:    
 } 	86777%%mi[AA!DDr.   zLogService.submit_embeddings
embeddingsc           	         t                               dt          |           d|            t          dt          |          i           | j        st          d          t          |          dk    rg S g }d |D             }|                    |                     |t          t          t                   |                               |S )NzSubmitting z" embeddings to log for collection records_countrJ   r   c                 ,    g | ]}t          |          S  r   ).0records     r-   
<listcomp>z0LogService.submit_embeddings.<locals>.<listcomp>w   s     MMMOF33MMMr.   )loggerinfolenr   rK   rL   append	push_logsr   r   r   )r+   r>   rO   countsprotos_to_submits        r-   rM   zLogService.submit_embeddings`   s    
 	\#j//\\]\\	
 	
 	
 	'Z	
 	
 	
 } 	86777z??aI MM*MMMNNXo.0@AA 	
 	
 	
 r.   zLogService.subscribe
consume_fnr5   endidc                 ^    t                               d| d           t          d          S )NzSubscribing to log for , noop for logservicer   )int)rW   rX   r   )r+   r>   r^   r5   r_   r`   s         r-   	subscribezLogService.subscribe   s0     	RmRRRSSS{{{r.   zLogService.unsubscribesubscription_idc                 B    t                               d| d           d S )NzUnsubscribing from rb   )rW   rX   )r+   re   s     r-   unsubscribezLogService.unsubscribe   s(     	P/PPPQQQQQr.   c                     dS )Nr   rS   r+   s    r-   	min_seqidzLogService.min_seqid   s    qr.   c                     t           j        S r8   )sysmaxsizeri   s    r-   	max_seqidzLogService.max_seqid   s
    {r.   c                     dS )Nd   rS   ri   s    r-   max_batch_sizezLogService.max_batch_size   s	     sr.   recordsc                     t          t          |          |          }| j                            || j                  }|j        S )N)r>   rr   timeout)r	   strr   PushLogsr   record_count)r+   r>   rr   requestresponses        r-   r[   zLogService.push_logs   sL    !M0B0BGTTT)22T: 3 
 
 $$r.   start_offset
batch_sizec                     t          t          |          ||t          j                              }| j                            || j                  }|j        S )N)r>   start_from_offsetr|   end_timestamprt   )r
   rv   timetime_nsr   PullLogsr   rr   )r+   r>   r{   r|   ry   rz   s         r-   	pull_logszLogService.pull_logs   sd     "m,,*!,..	
 
 
 )22T: 3 
 
 r.   )r/   N)NNN)'__name__
__module____qualname____doc__r   __annotations__rc   r2   Channelrv   r   r*   r   r   ALLr   r5   r:   r=   r   rD   rG   r   r   rN   r   rM   r   r   rd   rg   rj   rn   propertyrq   r[   r   r   __classcell__)r,   s   @r-   r   r   "   s          &%%%!!!!l!v ! ! ! ! ! ! \$&>&BCC     X DC \#%=%ABB     X CB \*,D,HII     X JI \)+C+GHH5 5 5 5 5 X IH5 \(*B*FGG5t 5 5 5 5 X HG5 \/1I1MNNE!E.=E	E E E X ONE \02J2NOO!/7/H	%   X POB \(*B*FGG
 "&#!	 		 '	 		
 e_	 TN	 
	 	 	 X HG	 \*,D,HIIR4 RD R R R X JIR 5    X 5    X     X X%t %h6O %TW % % % % ! 14 BE 	)	               r.   r   )*rl   chromadb.proto.utilsr   r2   r   chromadb.ingestr   r   r   chromadb.proto.convertr   chromadb.proto.logservice_pb2r	   r
   r   "chromadb.proto.logservice_pb2_grpcr   %chromadb.telemetry.opentelemetry.grpcr   chromadb.typesr   r   chromadb.configr    chromadb.telemetry.opentelemetryr   r   r   r   	overridesr   typingr   r   r   uuidr   logging	getLoggerr   rW   r   rS   r.   r-   <module>r      s   



 A A A A A A           
 3 2 2 2 2 2 U U U U U U U U U U = = = = = = A A A A A A        # " " " " "                  + + + + + + + + + +       		8	$	$S  S  S  S  S 8 S  S  S  S  S r.   