o
    ɭRh                     @   s   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%&e'Z(G d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                       s  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d	Zed
ejed3 fdd
Zedejed3 fddZedejed3 fddZedejededdfddZedejededdfddZedejedededefddZedejededee dee fddZedeje			d4dededee d ee d!ee defd"dZed#ejed$eddfd%d#Zedefd&d'Zedefd(d)Z e!edefd*d+Z"ded,ee defd-d.Z#ded/ed0edee$ fd1d2Z%  Z&S )5
LogServicez(
    Distributed Chroma Log Service
    _log_service_stub_request_timeout_seconds_channel_log_service_url_log_service_portsystemc                    sF   |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__ `/home/air/sanwanet/backup_V2/venv/lib/python3.10/site-packages/chromadb/logservice/logservice.pyr'   -   s   zLogService.__init__zLogService.startreturnNc                    sV   t | 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)   r+   r,   r2   6   s   zLogService.stopc                    s   | j   t   d S N)r   closer&   stopr(   r)   r+   r,   r6   A   s   
zLogService.reset_statec                    s   t    d S r4   )r&   reset_stater7   r)   r+   r,   r8   G   s   zLogService.delete_logcollection_idc                 C      t dNzNot implementedNotImplementedErrorr(   r9   r+   r+   r,   
delete_logL      zLogService.purge_logc                 C   r:   r;   r<   r>   r+   r+   r,   	purge_logQ   r@   zLogService.submit_embedding	embeddingc                 C   s    | j std| ||gd S )NComponent not runningr   )_runningRuntimeErrorsubmit_embeddings)r(   r9   rB   r+   r+   r,   submit_embeddingV   s   zLogService.submit_embeddings
embeddingsc                 C   sz   t dt| d|  tdt|i | jstdt|dkr$g S g }dd |D }|| |tt	t
 | |S )NzSubmitting z" embeddings to log for collection records_countrC   r   c                 S   s   g | ]}t |qS r+   r   ).0recordr+   r+   r,   
<listcomp>w   s    z0LogService.submit_embeddings.<locals>.<listcomp>)loggerinfolenr   rD   rE   append	push_logsr   r   r   )r(   r9   rH   countsprotos_to_submitr+   r+   r,   rF   `   s(   	zLogService.subscribe
consume_fnr2   endidc                 C   s   t d| d tddS )NzSubscribing to log for , noop for logservicer   )int)rM   rN   r   )r(   r9   rT   r2   rU   rV   r+   r+   r,   	subscribe   s   

zLogService.unsubscribesubscription_idc                 C   s   t d| d d S )NzUnsubscribing from rW   )rM   rN   )r(   rZ   r+   r+   r,   unsubscribe   s   c                 C      dS )Nr   r+   r7   r+   r+   r,   	min_seqid   s   zLogService.min_seqidc                 C   s   t jS r4   )sysmaxsizer7   r+   r+   r,   	max_seqid   s   zLogService.max_seqidc                 C   r\   )Nd   r+   r7   r+   r+   r,   max_batch_size   s   zLogService.max_batch_sizerecordsc                 C   s(   t t||d}| jj|| jd}|jS )N)r9   rc   timeout)r   strr   PushLogsr   record_count)r(   r9   rc   requestresponser+   r+   r,   rQ      s
   zLogService.push_logsstart_offset
batch_sizec                 C   s0   t t|||t d}| jj|| jd}|jS )N)r9   start_from_offsetrl   end_timestamprd   )r	   rf   timetime_nsr   PullLogsr   rc   )r(   r9   rk   rl   ri   rj   r+   r+   r,   	pull_logs   s   zLogService.pull_logs)r-   N)NNN)'__name__
__module____qualname____doc__r   __annotations__rX   r/   Channelrf   r   r'   r   r   ALLr   r2   r6   r8   r   r?   rA   r   r   rG   r   rF   r   r   rY   r[   r]   r`   propertyrb   rQ   r
   rr   __classcell__r+   r+   r)   r,   r   "   s   
 

	
	





!
r   )*r^   chromadb.proto.utilsr   r/   ro   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	getLoggerrs   rM   r   r+   r+   r+   r,   <module>   s$    
