
    Bvh
                         d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	mZ d dl
mZmZ d dlmZ  G d de      Ze G d	 d
             Zee   Z G d dee	      Zy)    )abstractmethod)	dataclass)AnyCallableList)EnforceOverrides	overrides)	ComponentSystem)Segmentc                   Z    e Zd ZdZedededee   fd       Z	ede
egdf   ddfd       Zy)	SegmentDirectoryzA segment directory is a data interface that manages the location of segments. Concretely, this
    means that for distributed chroma, it provides the grpc endpoint for a segment.segmentnreturnc                      y)zReturn the segment residences for a given segment ID. Will return at most n residences.
        Should only return less than n residences if there are less than n residences available.
        N )selfr   r   s      O/RAG/venv/lib/python3.12/site-packages/chromadb/segment/distributed/__init__.pyget_segment_endpointsz&SegmentDirectory.get_segment_endpoints   s        callbackNc                      y)zARegister a callback that will be called when a segment is updatedNr   r   r   s     r   !register_updated_segment_callbackz2SegmentDirectory.register_updated_segment_callback   s    
 	r   )__name__
__module____qualname____doc__r   r   intr   strr   r   r   r   r   r   r   r   
   sd    W W  c  
  'D1	 r   r   c                   ,    e Zd ZU eed<   eed<   eed<   y)MemberidipnodeN)r   r   r   r!   __annotations__r   r   r   r#   r#      s    GG
Ir   r#   c                        e Zd ZU dZeeegef      ed<   de	f fdZ
edefd       Zededdfd	       Zedd
       Zdeegef   ddfdZdeegef   defdZ xZS )MemberlistProviderzReturns the latest memberlist and provdes a callback for when it changes. This
    callback may be called from a different thread than the one that called. Callers should ensure
    that they are thread-safe.	callbackssystemc                 2    g | _         t        | 	  |       y )N)r*   super__init__)r   r+   	__class__s     r   r.   zMemberlistProvider.__init__-   s     r   r   c                      y)zReturns the latest memberlistNr   r   s    r   get_memberlistz!MemberlistProvider.get_memberlist1        	r   
memberlistNc                      y)z1Sets the memberlist that this provider will watchNr   )r   r4   s     r   set_memberlist_namez&MemberlistProvider.set_memberlist_name6   r3   r   c                     g | _         y)zStops watching the memberlistN)r*   r1   s    r   stopzMemberlistProvider.stop;   s     r   r   c                 :    | j                   j                  |       y)zRegisters a callback that will be called when the memberlist changes. May be called many times
        with the same memberlist, so callers should be idempotent. May be called from a different thread.
        N)r*   appendr   s     r   $register_updated_memberlist_callbackz7MemberlistProvider.register_updated_memberlist_callback@   s     	h'r   c                 X    || j                   v r| j                   j                  |       yy)zUnregisters a callback that was previously registered. Returns True if the callback was
        successfully unregistered, False if it was not ever registered.TF)r*   remover   s     r   &unregister_updated_memberlist_callbackz9MemberlistProvider.unregister_updated_memberlist_callbackH   s(    
 t~~%NN!!(+r   )r   N)r   r   r   r   r   r   
Memberlistr   r'   r   r.   r   r2   r!   r6   r	   r8   r;   boolr>   __classcell__)r/   s   @r   r)   r)   &   s    " Hj\3./00!v ! 
   c d    ( *s!23(	( *s!23	r   r)   N)abcr   dataclassesr   typingr   r   r   r	   r   chromadb.configr
   r   chromadb.typesr   r   r#   r?   r)   r   r   r   <module>rG      sY     ! & & 1 - "y $    &\
*$4 *r   