o
    1Xxi1J                     @   sH  d dl mZ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  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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z9m:Z:m;Z; d dl<Z<e<=e>Z?erd dl@mAZAmBZB eddd	ZCG d
d deeC ZDdS )    )	TYPE_CHECKINGDict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                   @   s  e Zd ZU eed< eed< eee  ed< ee	e
  ed< e dfdededeee  d	ee	e
  fd
dZedefddZedefddZedeeef fddZedefddZedefddZedefddZdedefddZdefddZdefddZ			 dNd!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(d)Z0d!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*d+Z1d!eee   d,ee2 d-ee3 d.e4de)ee* ee2 ee3 e4f f
d/d0Z5d1e6d.e4de6fd2d3Z7d4ee!ee" ee#j$ f  d5eee&  d6eee'  d7eee(  d8e8d,ee2 d-ee3 d.e4de)e+e8e2e3f fd9d:Z9d1e:d.e4de:fd;d<Z;d=ee ddfd>d?Z<d@ee d=ee ddfdAdB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dCdD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dEdFZ?d!ee* d,ee2 d-ee3 de)ee* ee2 ee3 f fdGdHZ@eAd"e!ee" ee#j$ f de+fdIdJZBdKede+fdLdMZCdS )OCollectionCommon_model_client_embedding_function_data_loaderNclientmodelembedding_functiondata_loaderc                 C   s,   || _ || _|durt| || _|| _dS )z3Initializes a new instance of the Collection class.N)r8   r7   r,   r9   r:   )selfr;   r<   r=   r>    r@   c/home/air/biblejyuku/back/venv/lib/python3.10/site-packages/chromadb/api/models/CollectionCommon.py__init__L   s   
zCollectionCommon.__init__returnc                 C      | j jS N)r7   idr?   r@   r@   rA   rF   c      zCollectionCommon.idc                 C   rD   rE   )r7   namerG   r@   r@   rA   rI   g   rH   zCollectionCommon.namec                 C   rD   rE   )r7   configuration_jsonrG   r@   r@   rA   rJ   k   rH   z#CollectionCommon.configuration_jsonc                 C   s   t t| jjS rE   )r
   r   r7   metadatarG   r@   r@   rA   rK   o   s   zCollectionCommon.metadatac                 C   rD   rE   )r7   tenantrG   r@   r@   rA   rL   s   rH   zCollectionCommon.tenantc                 C   rD   rE   )r7   databaserG   r@   r@   rA   rM   w   rH   zCollectionCommon.databaseotherc           
      C   s   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}| j	|j	k}	|oF|oF|oF|oF|oF|oF|oF|	S )NF)

isinstancer6   rF   rI   rJ   rK   rL   rM   r9   r:   )
r?   rN   id_match
name_matchconfiguration_matchmetadata_matchtenant_matchdatabase_matchembedding_function_matchdata_loader_matchr@   r@   rA   __eq__{   s2   
zCollectionCommon.__eq__c                 C   s   d| j  d| j dS )NzCollection(id=z, name=))rF   rI   rG   r@   r@   rA   __repr__   s   zCollectionCommon.__repr__c                 C   s   | j S rE   r7   rG   r@   r@   rA   	get_model   s   zCollectionCommon.get_modelTids
embeddings	metadatas	documentsimagesurisrequire_embeddings_or_datac                 C   s  t t|}|d urt| t|nd }	|d urtt|nd }
|d ur)t|nd }|d ur3t|nd }|d ur=t	|nd }|rU|	d u rU|d u rU|d u rU|d u rUt
d|d ura|d urat
d|	d ur{t|	t|kr{t
dt|	 dt| |
d urt|
t|krt
dt|
 dt| |d urt|t|krt
dt| dt| |d urt|t|krt
dt| dt| |d urt|t|krt
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)r?   r]   r^   r_   r`   ra   rb   rc   	valid_idsvalid_embeddingsvalid_metadatasvalid_documentsvalid_images
valid_urisr@   r@   rA   _validate_embedding_set   sn   	z(CollectionCommon._validate_embedding_setc                 C   s   |  ||||||\}}}}}}|d u rC|d ur| j|d}n$|d ur*| j|d}n|d u r2td| jd u r;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.)rm   _embedre   r:   r?   r]   r^   r_   r`   ra   rb   r@   r@   rA   #_validate_and_prepare_embedding_set   s2   
z4CollectionCommon._validate_and_prepare_embedding_setwherewhere_documentincludec           	      C   s   |rt |nd }|rt|nd }|rtt|nd }t|dd}d|v r-| jd u r-tdd|v r:d|vr:|d ||||fS )NFallow_distancesdatarp   rb   )r.   r/   r'   r!   r(   r:   re   append)	r?   r]   rt   ru   rv   valid_wherevalid_where_documentrg   valid_includer@   r@   rA   !_validate_and_prepare_get_request'  s   
z2CollectionCommon._validate_and_prepare_get_requestresponsec                 C   sD   d|v r| j d ur|d d ur|  |d |d< d|vr d |d< |S )Nry   rb   r:   r?   r   rv   r@   r@   rA   _transform_get_response@  s   
z(CollectionCommon._transform_get_responsequery_embeddingsquery_textsquery_images
query_uris	n_resultsc	                 C   sB  |d u|d uA |d uA |d uA st d|rt|ni }	|r"t|ni }
|d ur1t| t|nd }|d ur;t|nd }|d urEt|nd }|d urOt|nd }t	|dd}t
|}|d u r|d urj| j|d}n$|d uru| j|d}n|d u r}t d| jd u rt d| | |}d|v rd|vr|d |||	|
fS )	NzSYou must provide one of query_embeddings, query_texts, query_images, or query_uris.Trw   rn   zSYou must provide either query_embeddings, query_texts, query_images, or query_uris.rp   ry   rb   )re   r.   r/   r+   rd   r"   r$   r%   r&   r(   r-   rq   r:   rz   )r?   r   r   r   r   r   rt   ru   rv   r{   r|   valid_query_embeddingsvalid_query_textsvalid_query_imagesvalid_query_urisr}   valid_n_resultsr@   r@   rA   #_validate_and_prepare_query_requestP  sr   	

z4CollectionCommon._validate_and_prepare_query_requestc                    sL   d|v r j d ur|d d ur fdd|d D |d< d|vr$d |d< |S )Nry   rb   c                    s   g | ]}  |qS r@   r   ).0rb   rG   r@   rA   
<listcomp>  s    z>CollectionCommon._transform_query_response.<locals>.<listcomp>r   r   r@   rG   rA   _transform_query_response  s   
z*CollectionCommon._transform_query_responserK   c                 C   s(   |d u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)   re   )r?   rK   r@   r@   rA   _validate_modify_request  s   z)CollectionCommon._validate_modify_requestrI   c                 C   s$   |r|| j d< |r|| j d< d S d S )NrI   rK   r[   )r?   rI   rK   r@   r@   rA   "_update_model_after_modify_success  s
   
z3CollectionCommon._update_model_after_modify_successc              	   C   sj   | j ||||||dd\}}}}}}|d u r+|d ur!| j|d}n
|d ur+| j|d}|tt||||fS )NF)rc   rn   )rm   rq   r
   r   rr   r@   r@   rA   $_validate_and_prepare_update_request  s,   z5CollectionCommon._validate_and_prepare_update_requestc                 C   sX   |  ||||||\}}}}}}|d u r%|d ur| j|d}n| j|d}|||||fS )Nrn   )rm   rq   rr   r@   r@   rA   $_validate_and_prepare_upsert_request  s   z5CollectionCommon._validate_and_prepare_upsert_requestc                 C   s>   |rt t|nd }|rt|nd }|rt|nd }|||fS rE   )r'   r!   r.   r/   )r?   r]   rt   ru   r@   r@   rA   $_validate_and_prepare_delete_request  s
   
z5CollectionCommon._validate_and_prepare_delete_requestc                 C   s   t | tjr
|  S | S rE   )rO   npndarraytolist)r^   r@   r@   rA   rd   '  s   z&CollectionCommon._normalize_embeddingsro   c                 C   s   | j d u r	td| j |dS )NziYou must provide an embedding function to compute embeddings.https://docs.trychroma.com/guides/embeddingsrn   )r9   re   )r?   ro   r@   r@   rA   rq   2  s
   
zCollectionCommon._embed)NNT)D__name__
__module____qualname__CollectionModel__annotations__r5   r   r   r   r   r   efDefaultEmbeddingFunctionrB   propertyr   rF   strrI   r   r   rJ   r   rK   rL   rM   objectboolrX   rZ   r\   r    r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rm   rs   r1   r2   r   r~   r   r   intr   r   r   r   r   r   r   r   staticmethodrd   rq   r@   r@   r@   rA   r6   F   s  
 


	




]
	




3




	


U


	




-
	




'

r6   )Etypingr   r   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   r6   r@   r@   r@   rA   <module>   s   , +
