
    Ig~}                        d dl mZmZmZmZ d dlmZ d dl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 d dlmZ d d	lmZ d d
lmZ d dlmZmZmZmZm Z  d dl!m"Z"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- d dl.m/Z0 d dl1m2Z2 d dl3m4Z4m5Z5m6Z6 d dl7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZH d dlImJZJmKZKmLZLmMZMmNZNmOZO d dl.mPZQ d dlRmSZSmTZTmUZUmVZVmWZWmXZXmYZY d dlZm[Z[ d dl\m]Z]m^Z^ d dl_m`Z` d dlaZad dlbZbd dlcZc eYdeXdeWf         Zd ebj                  ef      ZgdehddfdZid eddedfd!Zj G d" d#e      Zk	 	 	 	 d+d$eQj                  d%e9d&eSe:   d'eSe;   d(eSe<   d)eSe=   deUeQj                  ddf   fd*Zny),    )retrystop_after_attemptretry_if_exception
wait_fixed)	ServerAPI)CollectionConfigurationInternal)UserIdentity)DEFAULT_DATABASEDEFAULT_TENANTSettingsSystem)SysDB)QuotaEnforcerAction)RateLimitEnforcer)SegmentManager)Executor)ScanFilterLimitKNN
Projection)	CountPlanGetPlanKNNPlan)add_attributes_to_current_spanOpenTelemetryClientOpenTelemetryGranularitytrace_method)ProductTelemetryClient)Producer)
Collection__version__)InvalidDimensionExceptionInvalidCollectionExceptionVersionMismatchError)CollectionMetadataIDs
Embeddings	Metadatas	DocumentsURIsWhereWhereDocumentIncludeIncludeEnum	GetResultQueryResultvalidate_metadatavalidate_update_metadatavalidate_wherevalidate_where_documentvalidate_batch)CollectionAddEventCollectionDeleteEventCollectionGetEventCollectionUpdateEventCollectionQueryEventClientCreateCollectionEventN)OptionalSequence	GeneratorListAnyCallableTypeVar)override)UUIDuuid4)wrapsT.)bound
index_namereturnc                     d|  }t        |       dk  st        |       dkD  rt        |      t        j                  d|       st        |      d| v rt        |      t        j                  d|       rt        |      y )Na  Expected collection name that (1) contains 3-63 characters, (2) starts and ends with an alphanumeric character, (3) otherwise contains only alphanumeric characters, underscores or hyphens (-), (4) contains no two consecutive periods (..) and (5) is not a valid IPv4 address, got    ?   z'^[a-zA-Z0-9][a-zA-Z0-9._-]*[a-zA-Z0-9]$z..z0^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$)len
ValueErrorrematch)rL   msgs     Q/var/www/html/answerous/venv/lib/python3.12/site-packages/chromadb/api/segment.pycheck_index_namerW   O   s    	 l	  :c*o2o88=zJozo	xxEzRo S    funcc                 T     t               dt        dt        dt        f fd       }|S )NargskwargsrM   c                  P    | d   } |j                   j                        | i |S )Nr   )_rate_limit_enforcer
rate_limit)r[   r\   selfrY   s      rV   wrapperzrate_limit.<locals>.wrapperd   s/    Aw9t((33D94J6JJrX   )rI   rC   )rY   ra   s   ` rV   r_   r_   c   s:    
4[Ks Kc Kc K K NrX   c                   Z    e Zd ZU dZeed<   eed<   eed<   eed<   e	ed<   e
ed<   eed<   eed	<   eed
<   def fdZedefd       Z edej(                        eefdededdfd              Z edej(                        eefdededej0                  fd              Z edej(                        ededdfd              Zedefd       Z edej(                        ededej:                  fd              Z edej(                        eedddee fdede!e"   de!e#   de$ded ede%fd!                     Z& ed"ej(                        eeddee fdede!e"   de!e#   ded ede%fd#                     Z' ed$ej(                        eedee fde!e   ded ede%fd%                     Z( ed&ej(                        eeddee fd'e!e   d(e!e   ded ede)e%   f
d)                     Z* ed*ej(                        eeee fded edefd+                     Z+ ed,ej(                        eeddee fd-e,d.e!e   d/e!e#   ded eddfd0                     Z- ed1ej(                        eeee fdeded eddfd2                     Z. ed3ej(                        eedddee fd4e/d5e,d6e0d7e!e1   d8e!e2   d9e!e3   ded ede$fd:                     Z4 ed;ej(                        eeddddee fd5e,d4e/d6e!e0   d7e!e1   d8e!e2   d9e!e3   ded ede$fd<                     Z5 ed=ej(                        eedddee fd5e,d4e/d6e0d7e!e1   d8e!e2   d9e!e3   ded ede$fd>                     Z6 ed?ej(                         e7 e8d@        e9dA       e:dB      dCD      eeddddddddg dEee fd5e,d4e!e/   dFe!e;   dGe!e   d'e!e   d(e!e   dHe!e   dIe!e   dJe!e<   dKe=ded ede>fdL                            Z? edMej(                        eedddee fd5e,d4e!e/   dFe!e;   dJe!e<   ded eddfdN                     Z@ edOej(                         e7 e8dP        e9dA       e:dB      dCD      eeee fd5e,ded edefdQ                            ZA edRej(                         e7 e8dS        e9dA       e:dB      dCD      eedTddg dUee fd5e,dVe0dWedFe!e;   dJe!e<   dKe=ded edeBfdX                            ZC edYej(                        eedTee fd5e,dZeded ede>f
d[                     ZDedefd\       ZEedjd]       ZFede$fd^       ZGedefd_       ZHedefd`       ZI edaej                        dbej                  dceLej                     ddfdd       ZNdbej                  deedfe$ddfdgZO edhej                        d5e,dej                  fdi       ZP xZQS )k
SegmentAPIzHAPI implementation utilizing the new segment-based internal architecture	_settings_sysdb_manager	_executor	_producer_product_telemetry_client_opentelemetry_client
_tenant_id	_topic_nssystemc                    t         |   |       |j                  | _        | j	                  t
              | _        | j	                  t              | _        | j	                  t              | _
        | j	                  t              | _        | j	                  t              | _        | j	                  t              | _        | j	                  t"              | _        | j&                  j	                  t(              | _        y N)super__init__settingsrd   requirer   re   r   rf   r   rg   r   _quota_enforcerr    ri   r   rj   r!   rh   _systemr   r^   )r`   rm   	__class__s     rV   rq   zSegmentAPI.__init__y   s     ll5)^4h/#||M:)-6L)M&%)\\2E%F"h/$(LL$8$89J$K!rX   rM   c                 <    t        t        j                               S ro   )inttimetime_nsr`   s    rV   	heartbeatzSegmentAPI.heartbeat   s    4<<>""rX   zSegmentAPI.create_databasenametenantNc                     t        |      dk  rt        d      | j                  j                  t        j
                  ||       | j                  j                  t               ||       y )NrO   z0Database name must be at least 3 characters long)actionr~   r}   )idr}   r~   )	rQ   rR   rt   enforcer   CREATE_DATABASEre   create_databaserH   r`   r}   r~   s      rV   r   zSegmentAPI.create_database   sg     t9q=OPP$$)) 	% 	
 	##w 	$ 	
rX   zSegmentAPI.get_databasec                 <    | j                   j                  ||      S )N)r}   r~   )re   get_databaser   s      rV   r   zSegmentAPI.get_database   s     {{''T&'AArX   zSegmentAPI.create_tenantc                 n    t        |      dk  rt        d      | j                  j                  |       y )NrO   z.Tenant name must be at least 3 characters longr}   )rQ   rR   re   create_tenantr`   r}   s     rV   r   zSegmentAPI.create_tenant   s5     t9q=MNN!! 	" 	
rX   c                 0    t        dt        t        g      S )N )user_idr~   	databases)r	   r   r
   r{   s    rV   get_user_identityzSegmentAPI.get_user_identity   s    !'(
 	
rX   zSegmentAPI.get_tenantc                 :    | j                   j                  |      S )Nr   )re   
get_tenantr   s     rV   r   zSegmentAPI.get_tenant   s     {{%%4%00rX   zSegmentAPI.create_collectionFconfigurationmetadataget_or_createdatabasec                    |t        |       t        |       | j                  j                  t        j
                  |||       t               }t        |||||n	t               ||d       }| j                  j                  |j                  |j                  |j                         g |j                  d |||	      \  }	}
|
r>| j                  j!                  |	      }|D ]  }| j                  j#                  |        nt$        j'                  d| d       | j(                  j+                  t-        t/        |                   t1        dt/        |      i       |	S )Nr   r~   r}   r   )r   r}   r   r   r~   r   	dimension)	r   r}   r   segmentsr   r   r   r~   r   Collection z/ already exists, returning existing collection.)collection_uuidr   )r4   rW   rt   r   r   CREATE_COLLECTIONrH   CollectionModelr   re   create_collectionr   r}   get_configurationr   rf   #prepare_segments_for_new_collectioncreate_segmentloggerdebugri   capturer>   strr   )r`   r}   r   r   r   r~   r   r   modelcollcreatedr   segments                rV   r   zSegmentAPI.create_collection   s_    h' 	$$++	 	% 	
 W( (02

 55xx113^^' 6 

g }}HHNH# 4**734 LLdV#RS 	&&..' #B	
 	'(93r7'CDrX   z#SegmentAPI.get_or_create_collectionc                 0    | j                  |||d||      S )NT)r}   r   r   r   r~   r   )r   )r`   r}   r   r   r~   r   s         rV   get_or_create_collectionz#SegmentAPI.get_or_create_collection  s.     %%' & 
 	
rX   zSegmentAPI.get_collectionc                 j    | j                   j                  |||      }|r|d   S t        d| d      )Nr}   r~   r   r   r    does not exist.)re   get_collectionsr&   )r`   r}   r~   r   existings        rV   get_collectionzSegmentAPI.get_collection  sH     ;;..fx / 
 A;,{4&@P-QRRrX   zSegmentAPI.list_collectionlimitoffsetc                     | j                   j                  t        j                  ||       | j                  j                  ||||      S )N)r   r~   r   )r   r   r~   r   )rt   r   r   LIST_COLLECTIONSre   r   )r`   r   r   r~   r   s        rV   list_collectionszSegmentAPI.list_collections.  sS     	$$** 	% 	
 {{**v + 
 	
rX   zSegmentAPI.count_collectionsc                 R    t        | j                  j                  ||            }|S )Nr~   r   )rQ   re   r   )r`   r~   r   collection_counts       rV   count_collectionszSegmentAPI.count_collectionsB  s.     KK''v'I
  rX   zSegmentAPI._modifyr   new_namenew_metadatac                 z   |rt        |       |rt        |       | j                  |      }| j                  j	                  t
        j                  |||       |r!|r| j                  j                  |||       y |r| j                  j                  ||       y |r| j                  j                  ||       y y )Nr   )r}   r   r   )r   )	rW   r5   _get_collectionrt   r   r   UPDATE_COLLECTIONre   update_collection)r`   r   r   r   r~   r   _s          rV   _modifyzSegmentAPI._modifyP  s     X&$\2   $$$++!	 	% 	
 KK))"8l)SKK))"8)<KK))"|)D rX   zSegmentAPI.delete_collectionc                 d   | j                   j                  |||      }|r| j                   j                  |d   j                  ||       | j                  j                  |d   j                        D ]+  }| j                   j                  |d   j                  |       - y t        d| d      )Nr   r   r   r   r   )re   r   delete_collectionr   rf   delete_segmentsdelete_segmentrR   )r`   r}   r~   r   r   ss         rV   r   zSegmentAPI.delete_collectionu  s     ;;..fx / 
 KK))v *  ]]228A;>>B >**8A;>>1=> {4&0@ABBrX   zSegmentAPI._addidscollection_id
embeddings	metadatas	documentsurisc	                    | j                  |      }	| j                  j                  |t        j                  j
                         t        |||||fd| j                         i       t        t        t        j                  j
                  |||||            }
| j                  |	|
       | j                  j                  t        j
                  ||||||       | j                  j                  ||
       | j                   j#                  t%        t'        |      t)        |      |t)        |      nd|t)        |      nd|t)        |      nd             y)Nmax_batch_sizer   r   r   r   r   r   r~   r   r   r   r   r   r   )r   
add_amountwith_metadatawith_documents	with_urisT)r   rf   hint_use_collectiont	OperationADDr8   get_max_batch_sizelist_records_validate_embedding_record_setrt   r   r   rh   submit_embeddingsri   r   r9   r   rQ   )r`   r   r   r   r   r   r   r~   r   r   records_to_submits              rV   _addzSegmentAPI._add  s<    ##M2))-I*iD9t6689	
 !%##	
 	++D2CD$$::! 	% 	
 	((8IJ&&.. #M 2s8*3*?c#hQ+4+@s3xa&*&6#c(A	
 rX   zSegmentAPI._updatec	                    | j                  |      }	| j                  j                  |t        j                  j
                         t        |||||fd| j                         i       t        t        t        j                  j
                  |||||            }
| j                  |	|
       | j                  j                  t        j
                  ||||||       | j                  j                  ||
       | j                   j#                  t%        t'        |      t)        |      |rt)        |      nd|rt)        |      nd|rt)        |      nd|rt)        |      nd             y)Nr   r   r   r   )r   update_amountwith_embeddingsr   r   r   T)r   rf   r   r   r   UPDATEr8   r   r   r   r   rt   r   r   rh   r   ri   r   r<   r   rQ   r`   r   r   r   r   r   r   r~   r   r   r   s              rV   _updatezSegmentAPI._update  sB    ##M2))-9K9KL*iD9t6689	
 !""%##	
 	++D2CD$$==! 	% 	
 	((8IJ&&..! #M 2!#h3=J109c)nq1:s9~'+#d)		
 rX   zSegmentAPI._upsertc	           
         | j                  |      }	| j                  j                  |t        j                  j
                         t        |||||fd| j                         i       t        t        t        j                  j
                  |||||            }
| j                  |	|
       | j                  j                  t        j
                  ||||||       | j                  j                  ||
       y)Nr   r   r   T)r   rf   r   r   r   UPSERTr8   r   r   r   r   rt   r   r   rh   r   r   s              rV   _upsertzSegmentAPI._upsert  s     ##M2))-9K9KL*iD9t6689	
 !""%##	
 	++D2CD$$==! 	% 	
 	((8IJrX   zSegmentAPI._getc                 "    t        | t              S ro   
isinstancer'   es    rV   <lambda>zSegmentAPI.<lambda>+      :a9M+N rX         T)r   waitstopreraise)r   r   r   wheresortpage	page_sizewhere_documentincludec                    t        t        |      |rt        |      ndd       | j                  |      }|t	        |       |	t        |	       | j                  j                  t        j                  ||||	|       |t        d      |r|r
|dz
  |z  }|}|rt        |      nd}| j                  j                  t        t        |      ||r|ndd|
v r|ndd|
v r|ndd|
v r|nd	             | j                  j                  t!        t#        |      t%        |||	      t'        |xs d|      t)        t*        j,                  |
v t*        j.                  |
v t*        j0                  |
v d
t*        j2                  |
v                   S )Nr   r   	ids_count)r   r~   r   r   r   r   zSorting is not yet supported   r   r   r   )r   r   r   include_metadatainclude_documentsinclude_urisF)r   r   rQ   r   r6   r7   rt   r   r   GETNotImplementedErrorri   r   r;   rg   getr   r   r   r   r   r1   r   r   r   r   )r`   r   r   r   r   r   r   r   r   r   r   r~   r   r   
ids_amounts                  rV   _getzSegmentAPI._get)  s   0 	'!$]!3),SX!	
 ##M2 5!%#N3$$::) 	% 	
 %&DEEIQh)+FE!$SX!
&&.. #M 2$$e!/:g/E10;w0F*A+1W+<Z!		
 ~~!!T
sE>2fk5)))W4**g5))W4$$/	
 	
rX   zSegmentAPI._deletec           
         t        t        |      |rt        |      ndd       |t        |       |t	        |       ||=t        |      dk(  r/||+t        |      dk(  r||t        |      dk(  rt        d      | j                  |      }| j                  j                  t        j                  ||||       | j                  j                  |t        j                  j                         |s|s|s=| j                  j!                  t#        t%        |      t'        |||                  d   }n|}t        |      dk(  ry t)        t+        t        j                  j                  |            }	| j-                  ||	       | j.                  j1                  ||	       | j2                  j5                  t7        t        |      t        |                   y )Nr   r   aU  
                You must provide either ids, where, or where_document to delete. If
                you want to delete all data in a collection you can delete the
                collection itself using the delete_collection method. Or alternatively,
                you can get() all the relevant ids and then delete them.
                )r   r~   r   r   r   r   )	operationr   )r   delete_amount)r   r   rQ   r6   r7   rR   r   rt   r   r   DELETErf   r   r   r   rg   r  r   r   r   r   r   r   rh   r   ri   r   r:   )
r`   r   r   r   r   r~   r   r   ids_to_deleter   s
             rV   _deletezSegmentAPI._delete|  s    	'!$]!3),SX!	
 5!%#N3 [S_SQ5#4Uq&".3~3F!3K   ##M2$$==) 	% 	
 	))-9K9KL^C NN..T
F3~$FGM  M}" q{{11}E
 	++D2CD((8IJ&&..! #M 2#mBT	
rX   zSegmentAPI._countc                 "    t        | t              S ro   r   r   s    rV   r   zSegmentAPI.<lambda>  r   rX   c                     t        dt        |      i       | j                  |      }| j                  j	                  t        t        |                  S )Nr   )r   r   r   rg   countr   r   )r`   r   r~   r   r   s        rV   _countzSegmentAPI._count  sD     	']9K'LM##M2~~##Id4j$9::rX   zSegmentAPI._queryc                 "    t        | t              S ro   r   r   s    rV   r   zSegmentAPI.<lambda>  r   rX   
   )r   r   	distancesquery_embeddings	n_resultsc	                 F   t        t        |      |t        |      d       t        |      }	| j                  j	                  t        t        |      |	|||	nd||	ndd|v r|	ndd|v r|	ndd|v r|	ndd|v r|	nd	             |t        |       |t        |       | j                  |      }
|D ]  }| j                  |
t        |      d	       ! | j                  j                  t        j                  |||||
       | j                  j                  t!        t#        |
      t%        ||      t'        d ||      t)        t*        j,                  |v t*        j.                  |v t*        j0                  |v t*        j2                  |v t*        j4                  |v                   S )N)r   r  r   r   r   r   r   r  )	r   query_amountr  with_metadata_filterwith_document_filterinclude_metadatasr  r  include_distancesFupdate)r   r~   r   r   r  r  )r   r   rQ   ri   r   r=   r6   r7   r   _validate_dimensionrt   r   r   QUERYrg   knnr   r   r   r   r   r1   r   r   r   r  r   )r`   r   r  r  r   r   r   r~   r   r  r   	embeddings               rV   _queryzSegmentAPI._query  s   6 	'!$]!3&U	
 +,&&..  #M 2)#5:5F\A5C5O\UV2=2H,a2=2H,a-3w->\A2=2H,a
	
 5!%#N3##M2) 	II$$T3y>%$H	I 	$$<<)- 	% 	
 ~~!!T
$i0tUN3))W4**g5))W4))W4$$/	
 	
rX   zSegmentAPI._peeknc                 T    t        dt        |      i       | j                  ||      S )Nr   )r   )r   r   r  )r`   r   r%  r~   r   s        rV   _peekzSegmentAPI._peek1  s)     	']9K'LMyyay00rX   c                     t         S ro   r#   r{   s    rV   get_versionzSegmentAPI.get_version>  s    rX   c                      y ro    r{   s    rV   reset_statezSegmentAPI.reset_stateB  s    rX   c                 8    | j                   j                          y)NT)ru   r,  r{   s    rV   resetzSegmentAPI.resetF  s      "rX   c                     | j                   S ro   )rd   r{   s    rV   get_settingszSegmentAPI.get_settingsK  s    ~~rX   c                 .    | j                   j                  S ro   )rh   r   r{   s    rV   r   zSegmentAPI.get_max_batch_sizeO  s    ~~,,,rX   z)SegmentAPI._validate_embedding_record_set
collectionrecordsc                     t        dt        |d         i       |D ](  }|d   	| j                  |t        |d         d       * y)zQValidate the dimension of an embedding record before submitting it to the system.r   r   r#  NTr  )r   r   r   rQ   )r`   r2  r3  records       rV   r   z)SegmentAPI._validate_embedding_record_setW  sY     	'Z=M9N'OP 	Fk".((F;$7 8 ) 	rX   dimr  c                     |d   2|r/|j                   }| j                  j                  ||       ||d<   yy|d   |k7  rt        d| d|d          y)zValidate that a collection supports records of the given dimension. If update
        is true, update the collection if the collection doesn't already have a
        dimension.r   N)r   r   zEmbedding dimension z* does not match collection dimensionality )r   re   r   r%   )r`   r2  r6  r  r   s        rV   r   zSegmentAPI._validate_dimensionf  s{     k"*]]--s-C*-
;'  $++&se+UV`alVmUno  rX   zSegmentAPI._get_collectionc                     | j                   j                  |      }|rt        |      dk(  rt        d| d      |d   S )N)r   r   r   r   )re   r   rQ   r&   )r`   r   collectionss      rV   r   zSegmentAPI._get_collectionx  sN    kk11]1Cc+.!3,m_,<=  1~rX   )rM   N)R__name__
__module____qualname____doc__r   __annotations__r   r   r   r!   r    r   r   r   rq   rF   rx   r|   r   r   	OPERATIONr   r   r   Databaser   r   r	   r   Tenantr   r_   r
   r?   r   r(   boolr   r   r   r   r@   r   r   rG   r   r   r)   r*   r+   r,   r-   r   r   r   r   r   r   r   r.   r/   r0   r2   r  r  r  r3   r$  r'  r)  r,  r.  r0  r   ALLr"   rB   OperationRecordr   r   r   __classcell__)rv   s   @rV   rc   rc   l   s   RM55..ON
Lv 
L #3 # # .0H0R0RS7E 
C 
 
$ 
  T
  +-E-O-OP4B B Bc Bqzz B  QB ,.F.P.PQ
# 
$ 
  R
 
< 
 
 )+C+M+MN1s 1qxx 1  O1 02J2T2TU DH15#$(DD   ?@D -.	D
 D D D 
D   VDL -/G/Q/Q  DH15$(

   ?@
 -.	

 
 
 

  

( -/G/Q/QR #$(	SsmS S 	S
 
S   SS .0H0R0RS  $ $$(
}
 
 	

 
 
/	"
   T
" 02J2T2TU %(	 	  	  
		    V	  &(@(J(JK #'59$( E E 3- E 12	 E
  E  E 
 E   L ED 02J2T2TU %(	CC C 	C
 
C   VC& #%=%G%GH *.)-#$(22 2 	2
 I&2 I&2 tn2 2 2 
2   I2h &(@(J(JK
 ,0)-)-#$(44 4 Z(	4
 I&4 I&4 tn4 4 4 
4   L4l &(@(J(JK *.)-#$()) ) 	)
 I&) I&) tn) ) ) 
)   L)V #%=%G%GH
 !NO]"	  "!%"# $"#'26C$(H
H
 c]H
 	H

 smH
 }H
 H
 smH
 C=H
 !/H
 H
 H
 H
 
H
   IH
T &(@(J(JK "!%26$(I
I
 c]I
 	I

 !/I
 I
 I
 
I
   LI
V %'?'I'IJ
 !NO]"	  %(	;; ; 	;
 
;   K; %'?'I'IJ  !NO]"	 
 !%26B$(B
B
 %B
 	B

 B
 !/B
 B
 B
 B
 
B
   K B
H $&>&H&HI $(11 1 	1
 1 
1   J1 S     t   h   -C - - 35M5Q5Q	,,	15a6G6G1H				,,-0:>	$ .0H0L0LMT all  NrX   rc   r
  r   r   r   r   r   c              #   $  K   |g k(  rd}t        |      D ]w  \  }}d}|r||   }|r||   }	|r	i |d|	i}nd|	i}|r||   }
|r	i |d|
i}nd|
i}t        j                  ||||   ndt        j                  j                  ||       }| y yw)ziConvert parallel lists of embeddings, metadatas and documents to a sequence of
    SubmitEmbeddingRecordsNzchroma:documentz
chroma:uri)r   r#  encodingr   r
  )	enumerater   rD  ScalarEncodingFLOAT32)r
  r   r   r   r   r   ir   r   documenturir5  s               rV   r   r     s      R
3 2 |H |HDhD(98D-x8q'C:h:c:(#.""'1'=jm4%%--
 5s   BB)NNNN)otenacityr   r   r   r   chromadb.apir   chromadb.api.configurationr   chromadb.authr	   chromadb.configr
   r   r   r   chromadb.db.systemr   chromadb.quotar   r   chromadb.rate_limitr   chromadb.segmentr   $chromadb.execution.executor.abstractr   &chromadb.execution.expression.operatorr   r   r   r   r   "chromadb.execution.expression.planr   r   r    chromadb.telemetry.opentelemetryr   r   r   r   chromadb.telemetry.productr    chromadb.ingestr!   chromadb.typesr"   r   chromadbr$   chromadb.errorsr%   r&   r'   chromadb.api.typesr(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   !chromadb.telemetry.product.eventsr9   r:   r;   r<   r=   r>   typesr   typingr?   r@   rA   rB   rC   rD   rE   	overridesrF   uuidrG   rH   	functoolsrI   ry   loggingrS   rJ   	getLoggerr:  r   r   rW   r_   rc   r   rD  r   r+  rX   rV   <module>ri     s|   N N " F & N N $ 0 1 + 9 W W J J  > $ 8   
    &          	CxS)*			8	$  (Q 1 S Sr (,%)%),{{,	, $, 	"	,
 	", 4., q  $,-,rX   