
    3i
                         S SK Jr  S SKJr  S SKJrJrJr  S SKJ	r	Jr  S SK
JrJr  S SKJr   " S S\5      r\ " S	 S
5      5       r\\   r " S S\\	5      rg)    )abstractmethod)	dataclass)AnyCallableList)EnforceOverrides	overrides)	ComponentSystem)Segmentc                   f    \ rS rSrSr\S\S\S\\	   4S j5       r
\S\\/S4   SS4S	 j5       rS
rg)SegmentDirectory
   zA 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                     g)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      _/home/james-whalen/.local/lib/python3.13/site-packages/chromadb/segment/distributed/__init__.pyget_segment_endpoints&SegmentDirectory.get_segment_endpoints   s        callbackNc                     g)zARegister a callback that will be called when a segment is updatedNr   r   r   s     r   !register_updated_segment_callback2SegmentDirectory.register_updated_segment_callback   s    
 	r   r   )__name__
__module____qualname____firstlineno____doc__r   r   intr   strr   r   r   __static_attributes__r   r   r   r   r   
   sd    W W  c  
  'D1	 r   r   c                   4    \ rS rSr% \\S'   \\S'   \\S'   Srg)Member   idipnoder   N)r   r    r!   r"   r%   __annotations__r&   r   r   r   r(   r(      s    GG
Ir   r(   c                      ^  \ rS rSr% Sr\\\/\4      \	S'   S\
4U 4S jjr\S\4S j5       r\S\SS	4S
 j5       r\SS j5       rS\\/\4   SS	4S jrS\\/\4   S\4S jrSrU =r$ )MemberlistProvider&   zReturns 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   > / U l         [        TU ]	  U5        g )N)r1   super__init__)r   r2   	__class__s     r   r5   MemberlistProvider.__init__-   s     r   r   c                     g)zReturns the latest memberlistNr   r   s    r   get_memberlist!MemberlistProvider.get_memberlist1        	r   
memberlistNc                     g)z1Sets the memberlist that this provider will watchNr   )r   r=   s     r   set_memberlist_name&MemberlistProvider.set_memberlist_name6   r<   r   c                     / U l         g)zStops watching the memberlistNr1   r9   s    r   stopMemberlistProvider.stop;   s     r   r   c                 :    U R                   R                  U5        g)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)r1   appendr   s     r   $register_updated_memberlist_callback7MemberlistProvider.register_updated_memberlist_callback@   s     	h'r   c                 Z    XR                   ;   a  U R                   R                  U5        gg)zUnregisters a callback that was previously registered. Returns True if the callback was
successfully unregistered, False if it was not ever registered.TF)r1   remover   s     r   &unregister_updated_memberlist_callback9MemberlistProvider.unregister_updated_memberlist_callbackH   s&    
 ~~%NN!!(+r   rB   )r   N)r   r    r!   r"   r#   r   r   
Memberlistr   r-   r   r5   r   r:   r%   r?   r	   rC   rG   boolrK   r&   __classcell__)r6   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(   rM   r/   r   r   r   <module>rU      sY     ! & & 1 - "y $    &\
*$4 *r   