
    ti"H                     ~   d dl mZmZmZmZmZmZmZmZ d dl	Z
d dlmZ d dlmc mZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z8m9Z9m:Z: d dl;Z; e;j<        e=          Z>erd dl?m@Z@mAZA  eddd	          ZB G d
 deeB                   ZCdS )    )TYPE_CHECKINGGenericOptionalTupleAnyTypeVarUnioncastN)UUID)$URICollectionMetadata
DataLoader	Embedding
Embeddings
Embeddable	GetResultIncludeLoadableMetadata	MetadatasDocument	DocumentsImageImagesQueryResultURIsIDsEmbeddingFunctionID	OneOrManymaybe_cast_one_to_many_ids maybe_cast_one_to_many_embeddingmaybe_cast_one_to_many_metadatamaybe_cast_one_to_many_documentmaybe_cast_one_to_many_imagemaybe_cast_one_to_many_urivalidate_idsvalidate_includevalidate_metadatavalidate_metadatasvalidate_embeddingsvalidate_embedding_functionvalidate_n_resultsvalidate_wherevalidate_where_document)
CollectionWhereWhereDocument)	ServerAPIAsyncServerAPIClientTr3   r4   c                   d   e Zd ZU eed<   eed<   eee                  ed<   ee	e
                  ed<    ej                    dfdededeee                  d	ee	e
                  fd
Zedefd            Zedefd            Zedefd            Zedefd            Zedefd            ZdedefdZdefdZ	 	 	 d5dee         deeee         eej                  f                  deee!                  deee"                  deee#                  deee$                  dede%e&ee'         ee(         ee)         ee*         ee+         f         fdZ,dee         deeee         eej                  f                  deee!                  deee"                  deee#                  deee$                  de%e&e'ee(         ee)         ee+         f         fdZ-deee                  dee.         dee/         d e0de%ee&         ee.         ee/         e0f         f
d!Z1d"e2d e0de2fd#Z3d$eeee         eej                  f                  d%eee"                  d&eee#                  d'eee$                  d(e4dee.         dee/         d e0de%e'e4e.e/f         fd)Z5d"e6d e0de6fd*Z7d+ee         ddfd,Z8d-ee         d+ee         ddfd.Z9dee         deeee         eej                  f                  deee!                  deee"                  deee#                  deee$                  de%e&e'ee(         ee)         ee+         f         fd/Z:dee         deeee         eej                  f                  deee!                  deee"                  deee#                  deee$                  de%e&e'ee(         ee)         ee+         f         fd0Z;dee&         dee.         dee/         de%ee&         ee.         ee/         f         fd1Z<e=deee         eej                  f         de'fd2            Z>d3e?de'fd4Z@dS )6CollectionCommon_model_client_embedding_function_data_loaderNclientmodelembedding_functiondata_loaderc                 `    || _         || _        |t          |           || _        || _        dS )z3Initializes a new instance of the Collection class.N)r9   r8   r,   r:   r;   )selfr<   r=   r>   r?   s        W/var/www/icac/venv/lib/python3.11/site-packages/chromadb/api/models/CollectionCommon.py__init__zCollectionCommon.__init__K   s?      )'(:;;;#5 '    returnc                     | j         d         S )Nidr8   rA   s    rB   rG   zCollectionCommon.idb   s    {4  rD   c                     | j         d         S )NnamerH   rI   s    rB   rK   zCollectionCommon.namef   s    {6""rD   c                 B    t          t          | j        d                   S )Nmetadata)r
   r   r8   rI   s    rB   rM   zCollectionCommon.metadataj   s    &J(?@@@rD   c                     | j         d         S )NtenantrH   rI   s    rB   rO   zCollectionCommon.tenantn   s    {8$$rD   c                     | j         d         S )NdatabaserH   rI   s    rB   rQ   zCollectionCommon.databaser   s    {:&&rD   otherc                 ,   t          |t                    sdS | j        |j        k    }| j        |j        k    }| j        |j        k    }| j        |j        k    }| j        |j        k    }| j        |j        k    }| j        |j        k    }|o|o	|o|o|o|o|S )NF)	
isinstancer7   rG   rK   rM   rO   rQ   r:   r;   )	rA   rR   id_match
name_matchmetadata_matchtenant_matchdatabase_matchembedding_function_matchdata_loader_matchs	            rB   __eq__zCollectionCommon.__eq__v   s    %!122 	57eh&Y%*,
%.8{el2%.8#'#;u?X#X  -1CC """ " 	"
 )" "	
rD   c                     | j         S NrH   rI   s    rB   	get_modelzCollectionCommon.get_model   s
    {rD   Tids
embeddings	metadatas	documentsimagesurisrequire_embeddings_or_datac                    t          t          |                    }|/t          |                     t	          |                              nd }	|t          t          |                    nd }
|t          |          nd }|t          |          nd }|t          |          nd }|r|	|||t          d          ||t          d          |	Ot          |	          t          |          k    r/t          dt          |	           dt          |                     |
Ot          |
          t          |          k    r/t          dt          |
           dt          |                     |Ot          |          t          |          k    r/t          dt          |           dt          |                     |Ot          |          t          |          k    r/t          dt          |           dt          |                     |Ot          |          t          |          k    r/t          dt          |           dt          |                     ||	|
|||fS )	Nz8You must provide embeddings, documents, images, or uris.z3You can only provide documents or images, not both.zNumber of embeddings z must match number of ids zNumber of metadatas zNumber of documents zNumber of images zNumber of uris )r'   r!   r+   _normalize_embeddingsr"   r*   r#   r$   r%   r&   
ValueErrorlen)rA   r`   ra   rb   rc   rd   re   rf   	valid_idsvalid_embeddingsvalid_metadatasvalid_documentsvalid_images
valid_uriss                 rB   _validate_embedding_setz(CollectionCommon._validate_embedding_set   s   , !!;C!@!@AA	
 %  **+KJ+W+WXX    	 $ >yIIJJJ 	 $ ,I666 	 5;4F(000D 	 :>9I/555t
 & 		 (#+ (& N  
 &<+CRSSS 'C0@,A,AS^^,S,Si,<(=(=iiY\]fYgYgii   &3+?+?3y>>+Q+Qgs?';';ggWZ[dWeWegg   &3+?+?3y>>+Q+Qgs?';';ggWZ[dWeWegg   #L(9(9S^^(K(KaC$5$5aaQTU^Q_Q_aa   !c*ooY&G&G]#j//]]SQZ^^]]  
 
 	
rD   c                 X   |                      ||||||          \  }}}}}}|||                     |          }nh||                     |          }nO|t          d          | j        t          d          |                     |                     |                    }|||||fS )Ninputz?You must provide either embeddings, documents, images, or uris.BYou must set a data loader on the collection if loading from URIs.)rq   _embedri   r;   rA   r`   ra   rb   rc   rd   re   s          rB   #_validate_and_prepare_embedding_setz4CollectionCommon._validate_and_prepare_embedding_set   s    6 ((Y	64
 
	
 $![[y[99

#![[v[66

<$Y   $,$\   "[[):):4)@)@AA
J	9d::rD   wherewhere_documentincludec                 *   |rt          |          nd }|rt          |          nd }|rt          t          |                    nd }t	          |d          }d|v r| j        t          d          d|v rd|vr|                    d           ||||fS )NFallow_distancesdataru   re   )r.   r/   r'   r!   r(   r;   ri   append)	rA   r`   ry   rz   r{   valid_wherevalid_where_documentrk   valid_includes	            rB   !_validate_and_prepare_get_requestz2CollectionCommon._validate_and_prepare_get_request  s     05>nU+++$7EO#N3334 	 FIRL!;C!@!@AAAd	(%HHHW!2!:T  
 Ww!6!6  (((+';]JJrD   responsec                 z    d|v r-| j         &|d         |                      |d                   |d<   d|vrd |d<   |S )Nr   re   r;   rA   r   r{   s      rB   _transform_get_responsez(CollectionCommon._transform_get_response6  s\     g!- ,#00&1ABBHV   #HVrD   query_embeddingsquery_textsquery_images
query_uris	n_resultsc	                    |d u|d uz  |d uz  |d uz  st          d          |rt          |          ni }	|rt          |          ni }
|/t          |                     t          |                              nd }|t          |          nd }|t          |          nd }|t          |          nd }t          |d          }t          |          }|||                     |          }nh||                     |          }nO|t          d          | j        t          d          |                     |                     |                    }d|v rd|vr|                    d           |||	|
fS )	NzSYou must provide one of query_embeddings, query_texts, query_images, or query_uris.Tr}   rs   zSYou must provide either query_embeddings, query_texts, query_images, or query_uris.ru   r   re   )ri   r.   r/   r+   rh   r"   r$   r%   r&   r(   r-   rv   r;   r   )rA   r   r   r   r   r   ry   rz   r{   r   r   valid_query_embeddingsvalid_query_textsvalid_query_imagesvalid_query_urisr   valid_n_resultss                    rB   #_validate_and_prepare_query_requestz4CollectionCommon._validate_and_prepare_query_requestF  s4   $ T)$&(4') %'	 e   05<nU+++"7EM#N3332 	  +  **45EFF     	 & ,K888 	 ' )666 	 7A6L&z222RV 	 )$GGG,Y77 ")&)-;L)M)M&&))-;M)N)N&&#+$m   $,$\   *.%%&677* *& Ww!6!6  ((( # 	
 	
rD   c                 n     d|v r& j         |d          fd|d         D             |d<   d|vrd |d<   |S )Nr   re   c                 :    g | ]}                     |          S  r   ).0re   rA   s     rB   
<listcomp>z>CollectionCommon._transform_query_response.<locals>.<listcomp>  s'    UUUD 1 1$ 7 7UUUrD   r   r   s   `  rB   _transform_query_responsez*CollectionCommon._transform_query_response  sc     g!- ,UUUUHVDTUUUHV   #HVrD   rM   c                 R    |"t          |           d|v rt          d          d S d S )Nz
hnsw:spacez]Changing the distance function of a collection once it is created is not supported currently.)r)   ri   )rA   rM   s     rB   _validate_modify_requestz)CollectionCommon._validate_modify_request  sD    h'''x'' s    ''rD   rK   c                 :    |r
|| j         d<   |r|| j         d<   d S d S )NrK   rM   rH   )rA   rK   rM   s      rB   "_update_model_after_modify_successz3CollectionCommon._update_model_after_modify_success  s<      	'"&DK 	/&.DK
###	/ 	/rD   c           	          |                      ||||||d          \  }}}}}}|1||                     |          }n||                     |          }|t          t          |          |||fS )NF)rf   rs   )rq   rv   r
   r   rw   s          rB   $_validate_and_prepare_update_requestz5CollectionCommon._validate_and_prepare_update_request  s    6 ((', ) 
 
	
 $![[y[99

#![[v[66
DZ00)YLLrD   c                     |                      ||||||          \  }}}}}}|/||                     |          }n|                     |          }|||||fS )Nrs   )rq   rv   rw   s          rB   $_validate_and_prepare_upsert_requestz5CollectionCommon._validate_and_prepare_upsert_request  s    6 ((Y	64
 
	

 $![[y[99

![[v[66
J	9d::rD   c                     |rt          t          |                    nd }|rt          |          nd }|rt          |          nd }|||fS r^   )r'   r!   r.   r/   )rA   r`   ry   rz   s       rB   $_validate_and_prepare_delete_requestz5CollectionCommon._validate_and_prepare_delete_request  sg     @CLl5c::;;;).8u%%%D7EO#N3334 	 UN++rD   c                 b    t          | t          j                  r|                                 S | S r^   )rT   npndarraytolist)ra   s    rB   rh   z&CollectionCommon._normalize_embeddings  s0     j"*-- 	'$$&&&rD   rt   c                 Z    | j         t          d          |                      |          S )NziYou must provide an embedding function to compute embeddings.https://docs.trychroma.com/guides/embeddingsrs   )r:   ri   )rA   rt   s     rB   rv   zCollectionCommon._embed(  s;    #+?   ''e'444rD   )NNT)A__name__
__module____qualname__CollectionModel__annotations__r5   r   r   r   r   r   efDefaultEmbeddingFunctionrC   propertyr   rG   strrK   r   rM   rO   rQ   objectboolr\   r_   r    r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rq   rx   r1   r2   r   r   r   r   intr   r   r   r   r   r   r   r   staticmethodrh   r   rv   r   rD   rB   r7   r7   E   s        !"3J"?@@@@:h/0000 (B'))6:( (( ( %j)
	( j23( ( ( (. !D ! ! ! X! #c # # # X# A, A A A XA % % % % X% '# ' ' ' X'
F 
t 
 
 
 
(?     .2)-+/[
 [
r][
 )$"*%'
[
 Ih/0[
 Ih/0[
 5)*[
 y~&[
 %)[
 
	
[
 [
 [
 [
z1;r]1; )$"*%'
1; Ih/01; Ih/01; 5)*1; y~&1; 
		
1; 1; 1; 1;fKim$K K !/	K
 K 
x}huox/FP	QK K K K2!,3	    S
")$"*%'
S
 i12S
 y/0S
 Ys^,S
 S
 S
 !/S
 S
 
z3}5	6S
 S
 S
 S
j#.5	    :L1M RV    /SM/-56H-I/	/ / / /+Mr]+M )$"*%'
+M Ih/0+M Ih/0+M 5)*+M y~&+M 
		
+M +M +M +MZ%;r]%; )$"*%'
%; Ih/0%; Ih/0%; 5)*%; y~&%; 
		
%; %; %; %;N,c], , !/	,
 
x}huox/FF	G, , , , i bj!#

 
   \5C 5J 5 5 5 5 5 5rD   r7   )Dtypingr   r   r   r   r   r   r	   r
   numpyr   uuidr   "chromadb.utils.embedding_functionsutilsembedding_functionsr   chromadb.api.typesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   chromadb.typesr0   r   r1   r2   logging	getLoggerr   loggerchromadb.apir3   r4   r5   r7   r   rD   rB   <module>r      s  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	           / / / / / / / / /% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %V O N N N N N N N N N 		8	$	$ 766666666
')[*:
;
;i5 i5 i5 i5 i5ww' i5 i5 i5 i5 i5rD   