Ë
    lQêjó�  ã                   ó  — d dl 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 d dlmZ d dlZd dl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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZC d dlDmEZEmFZFmGZGmHZH d dlmIZJmKZKmLZL d dlMZM eMjœ                  eO«      ZPerd dlQmRZRmSZS  e	d	d
d«      ZT e	d«      ZUdeVdeedeUf   gedeUf   f   fd„ZW G d„ deeT   «      ZXy)é    N)ÚTYPE_CHECKINGÚCallableÚDictÚGenericÚOptionalÚAnyÚSetÚTypeVarÚUnionÚcastÚList)ÚMetadata)ÚUUID)0ÚURIÚSchemaÚSparseVectorIndexConfigÚURIsÚ
AddRequestÚBaseRecordSetÚCollectionMetadataÚ
DataLoaderÚDeleteRequestÚ	EmbeddingÚ
EmbeddingsÚ	FilterSetÚ
GetRequestÚPyEmbeddingÚ
EmbeddableÚ	GetResultÚIncludeÚLoadableÚDocumentÚImageÚQueryRequestÚQueryResultÚIDsÚEmbeddingFunctionÚSparseEmbeddingFunctionÚIDÚ	OneOrManyÚUpdateRequestÚUpsertRequestÚ(get_default_embeddable_record_set_fieldsÚmaybe_cast_one_to_manyÚnormalize_base_record_setÚnormalize_insert_record_setÚvalidate_base_record_setÚvalidate_idsÚvalidate_includeÚvalidate_insert_record_setÚvalidate_metadataÚvalidate_metadatasÚvalidate_embedding_functionÚ"validate_sparse_embedding_functionÚvalidate_n_resultsÚ validate_record_set_contains_anyÚ!validate_record_set_for_embeddingÚvalidate_filter_setÚDefaultEmbeddingFunctionÚEMBEDDING_KEYÚDOCUMENT_KEY)ÚUpdateCollectionConfigurationÚ"overwrite_collection_configurationÚ'load_collection_configuration_from_jsonÚCollectionConfiguration)Ú
CollectionÚWhereÚWhereDocument)Ú	ServerAPIÚAsyncServerAPIÚClientTrG   rH   ÚTÚnameÚreturn.c                 óP   ‡ — dt         dt        f   dt         dt        f   fˆ fd„}|S )zæA decorator that wraps a method with a try-except block that catches
    exceptions and adds the method name to the error message. This allows us to
    provide more context when an error occurs, without rewriting validators.
    Úfunc.rL   c           	      óx   •‡ — t        j                  ‰ «      dt        dt        dt        dt        fˆ ˆfd„«       }|S )NÚselfÚargsÚkwargsrL   c                 ó¼   •— 	  ‰| g|¢­i |¤ŽS # t         $ rC}t        |«      › d‰› d�}|j                  r|f|j                  dd  z   |_        ‚ d|_        ‚ d }~ww xY w)Nz in ú.é   © )Ú	ExceptionÚstrrQ   )rP   rQ   rR   ÚeÚmsgrN   rK   s        €€úi/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/chromadb/api/models/CollectionCommon.pyÚwrapperz6validation_context.<locals>.decorator.<locals>.wrapperd   sp   ø€ ðÙ˜DÐ2 4Ò2¨6Ñ2Ð2øÜò Ü˜Q›˜  T F¨!Ð,�à01·²˜#˜ !§&¡&¨¨ *Ñ,�”àð =?�”àûðús   ƒ �	A˜>AÁA)Ú	functoolsÚwrapsr   rJ   )rN   r\   rK   s   ` €r[   Ú	decoratorz%validation_context.<locals>.decoratorc   sA   ù€ Ü	�‰˜Ó	ð	œ#ð 	¤cð 	´Sð 	¼Qõ 	ó 
ð	ð ˆó    )r   rJ   )rK   r_   s   ` r[   Úvalidation_contextra   ]   s0   ø€ ðœ ¤a Ñ(ð ¬X°c¼1°fÑ-=õ ð Ðr`   c                   ó¸  — 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
„Zedefd„«       Zedefd„«       Zedefd„«       Zedeeef   fd„«       Zede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 defd„Z! e"d«      de#e$   dee%e#e&   e#e'   f      dee#e(      dee#e)      dee#e*      dee#e+      de,fd„«       Z- e"d «      dee#e$      d!ee.   d"ee/   d#e0de1f
d$„«       Z2 e"d%«      d&ee%e#e&   e#e'   f      d'ee#e)      d(ee#e*      d)ee#e+      dee#e$      d*e3d!ee.   d"ee/   d#e0de4fd+„«       Z5 e"d,«      de#e$   dee%e#e&   e#e'   f      dee#e(      dee#e)      dee#e*      dee#e+      de6fd-„«       Z7 e"d.«      	 	 	 	 	 dMde#e$   dee%e#e&   e#e'   f      dee#e(      dee#e)      dee#e*      dee#e+      de8fd/„«       Z9 e"d0«      	 dNdee:   d!ee.   d"ee/   d1ee3   de;f
d2„«       Z<d3e=de=fd4„Z>d3e=d#e0de=fd5„Z?d3e@d#e0de@fd6„ZAd7ee   ddfd8„ZBd9ee   d7ee   d:eeC   ddfd;„ZDdeed<f   fd=„ZE	 dNdeeFe(      deeFe)      deeFe(      fd>„ZG	 	 dOd?eHd@eeIe      dAedeJfdB„ZKdPdCedAedeJfdD„ZL	 dPdCedEeMe   dAedefdF„ZNdGedefdH„ZOdIedefdJ„ZPdKedefdL„ZQy)QÚCollectionCommonÚ_modelÚ_clientÚ_embedding_functionÚ_data_loaderNÚclientÚmodelÚembedding_functionÚdata_loaderc                 óV   — || _         || _        |�t        |«       || _        || _        y)z3Initializes a new instance of the Collection class.N)re   rd   r7   rf   rg   )rP   rh   ri   rj   rk   s        r[   Ú__init__zCollectionCommon.__init__z   s3   € ð ˆŒØˆŒð Ð)Ü'Ð(:Ô;à#5ˆÔ Ø'ˆÕr`   rL   c                 ó.   — | j                   j                  S ©N)rd   Úid©rP   s    r[   rp   zCollectionCommon.id‘   s   € à�{‰{�~‰~Ðr`   c                 ó.   — | j                   j                  S ro   )rd   rK   rq   s    r[   rK   zCollectionCommon.name•   s   € à�{‰{×ÑÐr`   c                 ó@   — t        | j                  j                  «      S ro   )rB   rd   Úconfiguration_jsonrq   s    r[   ÚconfigurationzCollectionCommon.configuration™   s   € ä6°t·{±{×7UÑ7UÓVÐVr`   c                 ó.   — | j                   j                  S ro   )rd   rt   rq   s    r[   rt   z#CollectionCommon.configuration_json�   s   € à�{‰{×-Ñ-Ð-r`   c                 óŒ   — t        j                  | j                  j                  r| j                  j                  «      S i «      S ro   )r   Údeserialize_from_jsonrd   Úserialized_schemarq   s    r[   ÚschemazCollectionCommon.schema¡   s;   € ä×+Ñ+Ø-1¯[©[×-JÒ-JˆD�K‰K×)Ñ)ó
ð 	
ØPRó
ð 	
r`   c                 óJ   — t        t        | j                  j                  «      S ro   )r   r   rd   Úmetadatarq   s    r[   r|   zCollectionCommon.metadata§   s   € äÔ&¨¯©×(<Ñ(<Ó=Ð=r`   c                 ó.   — | j                   j                  S ro   )rd   Útenantrq   s    r[   r~   zCollectionCommon.tenant«   s   € à�{‰{×!Ñ!Ð!r`   c                 ó.   — | j                   j                  S ro   )rd   Údatabaserq   s    r[   r€   zCollectionCommon.database¯   s   € à�{‰{×#Ñ#Ð#r`   Úotherc                 ó*  — t        |t        «      sy| j                  |j                  k(  }| j                  |j                  k(  }| j                  |j                  k(  }| j
                  |j
                  k(  }| j                  |j                  k(  }| j                  |j                  k(  }| j                  |j                  k(  }| j                  |j                  k(  }	| j                  |j                  k(  }
|xr |xr |xr |xr |xr |xr
 |xr |	xr |
S ©NF)Ú
isinstancerc   rp   rK   rt   rz   r|   r~   r€   rf   rg   )rP   r�   Úid_matchÚ
name_matchÚconfiguration_matchÚschema_matchÚmetadata_matchÚtenant_matchÚdatabase_matchÚembedding_function_matchÚdata_loader_matchs              r[   Ú__eq__zCollectionCommon.__eq__³   s  € Ü˜%Ô!1Ô2ØØ—7‘7˜eŸh™hÑ&ˆØ—Y‘Y %§*¡*Ñ,ˆ
Ø"×5Ñ5¸×9QÑ9QÑQÐØ—{‘{ e§l¡lÑ2ˆØŸ™¨%¯.©.Ñ8ˆØ—{‘{ e§l¡lÑ2ˆØŸ™¨%¯.©.Ñ8ˆØ#'×#;Ñ#;¸u×?XÑ?XÑ#XÐ Ø ×-Ñ-°×1CÑ1CÑCÐàò "Øò"à#ò"ð ò"ð ò	"ð
 ò"ð ò"ð )ò"ð "ð
	
r`   c                 ó"   — d| j                   › d�S )NzCollection(name=ú))rK   rq   s    r[   Ú__repr__zCollectionCommon.__repr__Ë   s   € Ø! $§)¡) ¨AÐ.Ð.r`   c                 ó   — | j                   S ro   )rd   rq   s    r[   Ú	get_modelzCollectionCommon.get_modelÎ   s   € Ø�{‰{Ðr`   ÚaddÚidsÚ
embeddingsÚ	metadatasÚ	documentsÚimagesÚurisc                 ó  — t        ||||||¬«      }t        |¬«       t        |dh¬«       |d   €t        |¬«       | j	                  |¬«      }n|d   }| j                  |d   |d   «      }	t        |d   ||	|d   |d   ¬	«      S )
N©r•   r–   r—   r˜   r™   rš   ©Ú
record_setr•   )rž   Úcontains_anyr–   r—   r˜   rš   ©r•   r–   r—   r˜   rš   )r0   r4   r:   r;   Ú_embed_record_setÚ%_apply_sparse_embeddings_to_metadatasr   )
rP   r•   r–   r—   r˜   r™   rš   Úadd_recordsÚadd_embeddingsÚadd_metadatass
             r[   Ú!_validate_and_prepare_add_requestz2CollectionCommon._validate_and_prepare_add_requestÑ   s´   € ô  2ØØ!ØØØØô
ˆô 	#¨kÕ:Ü(°KÈuÈgÕVð �|Ñ$Ð,Ü-¸ÕEØ!×3Ñ3¸{Ð3ÓK‰Nà(¨Ñ6ˆNà×BÑBØ˜Ñ$ k°+Ñ&>ó
ˆô Ø˜EÑ"Ø%Ø#Ø! +Ñ.Ø˜VÑ$ô
ð 	
r`   ÚgetÚwhereÚwhere_documentÚincludec                 ó  — t        |¬«      }t        ||¬«      }|�t        |¬«       t        |¬«       t	        |dg¬«       d|v r| j
                  €t        d«      ‚|}d|v rd	|vr|j                  d	«       t        ||d
   |d   |¬«      S )N)Útarget©r¨   r©   ©r•   ©Ú
filter_setÚ	distances)rª   Ú
dissalowedÚdataúBYou must set a data loader on the collection if loading from URIs.rš   r¨   r©   )r•   r¨   r©   rª   )	r.   r   r2   r<   r3   rg   Ú
ValueErrorÚappendr   )rP   r•   r¨   r©   rª   Úunpacked_idsÚfiltersÚrequest_includes           r[   Ú!_validate_and_prepare_get_requestz2CollectionCommon._validate_and_prepare_get_request  s©   € ô '=ÀCÔ&HˆÜ %¸ÔGˆð Ð#Ü˜\Õ*ä wÕ/Ü °k°]ÕCà�WÑ ×!2Ñ!2Ð!:ÜØTóð ð
 "ˆà�WÑ ¨wÑ!6Ø×"Ñ" 6Ô*äØØ˜'Ñ"Ø"Ð#3Ñ4Ø#ô	
ð 	
r`   ÚqueryÚquery_embeddingsÚquery_textsÚquery_imagesÚ
query_urisÚ	n_resultsc
                 óp  — t        ||||¬«      }
t        |«      }t        ||¬«      }t        |
¬«       t	        |¬«       t        |	¬«       t        |¬«       |
d   € t        |
¬«       | j                  |
d¬	«      }n|
d   }|d
   }|d   }|	}d|v rd|vr|j                  d«       t        ||||||¬«      S )N)r–   r˜   r™   rš   r­   r�   r¯   )rª   )rÀ   r–   T)rž   Úis_queryr¨   r©   r³   rš   )r–   r•   r¨   r©   rª   rÀ   )r/   r.   r   r1   r<   r3   r9   r;   r¡   r¶   r$   )rP   r¼   r½   r¾   r¿   r•   rÀ   r¨   r©   rª   Úquery_recordsÚ
filter_idsr¸   Úrequest_embeddingsÚrequest_whereÚrequest_where_documentr¹   s                    r[   Ú#_validate_and_prepare_query_requestz4CollectionCommon._validate_and_prepare_query_request&  sî   € ô& 2Ø'Ø!ØØô	
ˆô ,¨CÓ0ˆ
äØØ)ô
ˆô 	!¨MÕ:Ü wÕ/Ü Õ)Ü YÕ/ð ˜Ñ&Ð.Ü-¸ÕGØ!%×!7Ñ!7Ø(°4ð "8ó "Ñð "/¨|Ñ!<Ðà Ñ(ˆØ!(Ð)9Ñ!:Ðð "ˆØ�_Ñ$¨°Ñ)FØ×"Ñ" 6Ô*äØ)ØØØ1Ø#Øô
ð 	
r`   Úupdatec                 ó  — t        ||||||¬«      }t        |¬«       |d   €/|d   €|d   �"t        |ddh¬«       | j                  |¬«      }nd }n|d   }| j	                  |d   |d   «      }	t        |d   ||	|d   |d	   ¬
«      S )Nrœ   r�   r–   r˜   r™   )Úembeddable_fieldsr—   r•   rš   r    )r0   r4   r;   r¡   r¢   r+   )
rP   r•   r–   r—   r˜   r™   rš   Úupdate_recordsÚupdate_embeddingsÚupdate_metadatass
             r[   Ú$_validate_and_prepare_update_requestz5CollectionCommon._validate_and_prepare_update_requestg  sÕ   € ô  5ØØ!ØØØØô
ˆô 	#¨nÕ=ð ˜,Ñ'Ð/ð ˜{Ñ+Ð7Ø! (Ñ+Ð7ä1Ø"°{ÀHÐ6Mõð %)×$:Ñ$:ÀnÐ$:Ó$UÑ!à$(Ñ!à .¨|Ñ <Ðà×EÑEØ˜;Ñ'¨¸Ñ)Dó
Ðô Ø˜uÑ%Ø(Ø&Ø$ [Ñ1Ø Ñ'ô
ð 	
r`   Úupsertc                 óö   — t        ||||||¬«      }t        |¬«       |d   €"t        |ddh¬«       | j                  |¬«      }n|d   }| j	                  |d   |d   «      }	t        |d   |	||d   |d	   ¬
«      S )Nrœ   r�   r–   r˜   r™   )rž   rË   r—   r•   rš   )r•   r—   r–   r˜   rš   )r0   r4   r;   r¡   r¢   r,   )
rP   r•   r–   r—   r˜   r™   rš   Úupsert_recordsÚupsert_embeddingsÚupsert_metadatass
             r[   Ú$_validate_and_prepare_upsert_requestz5CollectionCommon._validate_and_prepare_upsert_requestŸ  s·   € ô  5ØØ!ØØØØô
ˆô 	#¨nÕ=ð ˜,Ñ'Ð/Ü-Ø)¸kÈ8Ð=Tõð !%× 6Ñ 6À.Ð 6Ó QÑà .¨|Ñ <Ðà×EÑEØ˜;Ñ'¨¸Ñ)Dó
Ðô Ø˜uÑ%Ø&Ø(Ø$ [Ñ1Ø Ñ'ô
ð 	
r`   ÚdeleteÚlimitc                 óh  — |€|€|€t        d«      ‚|�;t        |t        «      rt        |t        «      rt	        d«      ‚|dk  rt        d«      ‚|�|€|€t        d«      ‚|�t        t        t        |«      «      }nd }t        ||¬«      }|�t        |¬«       t        |¬«       t        ||||¬«      S )	Nz>At least one of ids, where, or where_document must be providedz$limit must be a non-negative integerr   zMlimit can only be specified when a where or where_document clause is providedr­   r®   r¯   )r•   r¨   r©   r×   )rµ   r„   ÚintÚboolÚ	TypeErrorr   r&   r.   r   r2   r<   r   )rP   r•   r¨   r©   r×   Úrequest_idsr¸   s          r[   Ú$_validate_and_prepare_delete_requestz5CollectionCommon._validate_and_prepare_delete_requestÐ  sÓ   € ð ˆ;˜5˜=¨^Ð-CÜØPóð ð ÐÜ˜e¤SÔ)¬Z¸¼tÔ-DÜÐ FÓGÐGØ�qŠyÜ Ð!GÓHÐHàÐ  °>Ð3IÜØ_óð ð
 ˆ?ÜœsÔ$:¸3Ó$?Ó@‰KàˆKÜ %¸ÔGˆð Ð"Ü˜[Õ)Ü wÕ/äØ 5¸Èuô
ð 	
r`   Úresponsec                 óF   — |d   �t        j                  |d   «      |d<   |S )Nr–   )ÚnpÚarray)rP   rÞ   s     r[   Ú_transform_peek_responsez)CollectionCommon._transform_peek_responseø  s*   € Ø�LÑ!Ð-Ü%'§X¡X¨h°|Ñ.DÓ%EˆH�\Ñ"àˆr`   c                 ó®   — d|v r(| j                   �|d   �| j                  |d   «      |d<   d|v rt        j                  |d   «      |d<   d|vrd |d<   |S ©Nr³   rš   r–   ©rg   rà   rá   )rP   rÞ   rª   s      r[   Ú_transform_get_responsez(CollectionCommon._transform_get_responseþ  sv   € ð �gÑØ×!Ñ!Ð-Ø˜Ñ Ð,à#×0Ñ0°¸&Ñ1AÓBˆH�VÑà˜7Ñ"Ü%'§X¡X¨h°|Ñ.DÓ%EˆH�\Ñ"ð ˜Ñ Ø#ˆH�VÑàˆr`   c                 ó  — d|v r6| j                   �*|d   �%|d   D �cg c]  }| j                  |«      ‘Œ c}|d<   d|v r.|d   �)|d   D �cg c]  }t        j                  |«      ‘Œ c}|d<   d|vrd |d<   |S c c}w c c}w rä   rå   )rP   rÞ   rª   rš   Ú	embeddings        r[   Ú_transform_query_responsez*CollectionCommon._transform_query_response  s¦   € ð �gÑØ×!Ñ!Ð-Ø˜Ñ Ð,àDLÈVÑDTÖU¸D × 1Ñ 1°$Õ 7ÒUˆH�VÑà˜7Ñ" x°Ñ'=Ð'Ià5=¸lÑ5Kö&Ø(1”—‘˜Õ#ò&ˆH�\Ñ"ð
 ˜Ñ Ø#ˆH�VÑàˆùò  Vùò&s   �A8ÁA=r|   c                 ó>   — |�t        |«       d|v rt        d«      ‚y y )Nz
hnsw:spacez]Changing the distance function of a collection once it is created is not supported currently.)r5   rµ   )rP   r|   s     r[   Ú_validate_modify_requestz)CollectionCommon._validate_modify_request&  s2   € ØÐÜ˜hÔ'Ø˜xÑ'Ü Øsóð ð (ð  r`   rK   ru   c                 óN  — |r|| j                   d<   |r|| j                   d<   |r�| j                   j                  t        | j                   j                  «       |«      «       | j                  r7ddlm}  || j                  |«      }|j                  «       | j                   d<   y y y )NrK   r|   r   )Ú+update_schema_from_collection_configurationry   )rd   Úset_configurationrA   Úget_configurationrz   Ú%chromadb.api.collection_configurationrí   Úserialize_to_json)rP   rK   r|   ru   rí   Úupdated_schemas         r[   Ú"_update_model_after_modify_successz3CollectionCommon._update_model_after_modify_success.  sž   € ñ Ø"&ˆD�K‰K˜ÑÙØ&.ˆD�K‰K˜
Ñ#ÙØ�K‰K×)Ñ)Ü2Ø—K‘K×1Ñ1Ó3°]óôð �{Š{õñ "MØ—K‘K ó"�ð 4B×3SÑ3SÓ3U�—‘Ð/Ò0ð ð r`   r   c                 ó&  — | j                   }|€i S i }|j                  j                  «       D ]a  \  }}|j                  €Œ|j                  j                  }|�|j
                  sŒ8|j                  }|j                  �|j                  €Œ]|||<   Œc |S ro   )	rz   ÚkeysÚitemsÚsparse_vectorÚsparse_vector_indexÚenabledÚconfigrj   Ú
source_key)rP   rz   ÚtargetsÚkeyÚvalue_typesÚsparse_indexrú   s          r[   Ú_get_sparse_embedding_targetsz.CollectionCommon._get_sparse_embedding_targetsJ  s¡   € Ø—‘ˆØˆ>ØˆIà8:ˆØ &§¡× 1Ñ 1Ó 3ò 		"ÑˆC�Ø×(Ñ(Ð0ØØ&×4Ñ4×HÑHˆLØÐ#¨<×+?Ò+?ØØ!×(Ñ(ˆFØ×(Ñ(Ð0°F×4EÑ4EÐ4MØØ!ˆG�CŠLð		"ð ˆr`   c                 ól  — | j                  «       }|s|S |€$|€y t        t        |«      «      D �cg c]  }i ‘Œ }}|D �cg c]  }|�t        |«      ni ‘Œ }}|�t	        |«      nd }|j                  «       D �]ã  \  }}	|	j                  }
|	j                  }|
�|€Œ$t        |t        «      st        t        t           |«      }t        |«       g }g }|
t        k(  rÄ|€Œft        |«      D ]Q  \  }}||v rŒ|t        |«      k  sŒ||   }t        |t        «      sŒ0|j!                  |«       |j!                  |«       ŒS t        |«      dk(  rŒÔ| j#                  ||¬«      }t        |«      t        |«      k7  rt%        d«      ‚t'        ||«      D ]  \  }}|||   |<   Œ �Œ't        |«      D ]N  \  }}||v rŒ|j)                  |
«      }t        |t        «      sŒ-|j!                  |«       |j!                  |«       ŒP t        |«      dk(  r�Œ“| j#                  ||¬«      }t        |«      t        |«      k7  rt%        d«      ‚t'        ||«      D ]  \  }}|||   |<   Œ �Œæ |D �cg c]  }|r|nd ‘Œ
 }}t+        t        t,        t.           |«      «       t        t,        t.           |«      S c c}w c c}w c c}w )Nr   )ÚinputÚsparse_embedding_functionzCSparse embedding function returned unexpected number of embeddings.)r   ÚrangeÚlenÚdictÚliströ   rû   rj   r„   r(   r   r   r8   r?   Ú	enumeraterX   r¶   Ú_sparse_embedrµ   Úzipr§   r6   r   r   )rP   r—   r˜   Úsparse_targetsÚ_r|   Úupdated_metadatasÚdocuments_listÚ
target_keyrú   rû   Úembedding_funcÚinputsÚ	positionsÚidxÚdocÚsparse_embeddingsÚpositionrè   Úsource_valueÚresult_metadatass                        r[   r¢   z6CollectionCommon._apply_sparse_embeddings_to_metadatas]  s5  € ð
 ×;Ñ;Ó=ˆÙØÐð ÐØÐ ØÜ%*¬3¨y«>Ó%:Ö; šÐ;ˆIÐ;ð LUö3
Ø?G˜hÐ2ŒD�ŒN¸Ñ:ð3
Ðð 3
ð -6Ð,Aœ˜iœÀtˆà"0×"6Ñ"6Ó"8ó M	DÑˆJ˜Ø×*Ñ*ˆJØ#×6Ñ6ˆNØÐ! ^Ð%;Øä˜nÔ.EÔFÜ!%Ô&=¼cÑ&BÀNÓ!S�Ü.¨~Ô>ð !#ˆFØ#%ˆIð œ\Ò)Ø!Ð)Øô &/Ð/@Ó%Aò 
2‘M�C˜à! XÑ-Ø ð œS Ó0Ó0Ø,¨SÑ1˜Ü% c¬3Õ/Ø"ŸM™M¨#Ô.Ø%×,Ñ,¨SÕ1ð
2ô �v“; !Ò#Øà$(×$6Ñ$6Ø Ø.<ð %7ó %Ð!ô
 Ð(Ó)¬S°«^Ò;Ü$Ø]óð ô ,/¨yÐ:KÓ+Lò HÑ'�H˜iØ>GÐ% hÑ/°
Ò;ðHñ ô "+Ð+<Ó!=ò 	&‘��XØ Ñ)Øà'Ÿ|™|¨JÓ7�Ü! ,´Ô4Øà—‘˜lÔ+Ø× Ñ  Õ%ð	&ô �6‹{˜aÒÙà $× 2Ñ 2ØØ*8ð !3ó !Ðô
 Ð$Ó%¬¨Y«Ò7Ü ØYóð ô (+¨9Ð6GÓ'Hò DÑ#�˜)Ø:CÐ! (Ñ+¨JÒ7òDðYM	Dðb <Mö6
Ø/7™‰H dÑ*ð6
Ðð 6
ô 	œ4¤¤X¡Ð0@ÓAÔBÜ”Dœ‘NÐ$4Ó5Ð5ùò} <ùò3
ùòl6
s   °	J'¿J,É!J1rž   rË   rÂ   c           
      ó(  — |€
t        «       }|D ]q  }||   €Œ	|dk(  rM| j                  €t        d«      ‚| j                  | j                  t	        t
        ||   «      ¬«      |¬«      c S | j                  ||   |¬«      c S  t        d|› d|› �«      ‚)Nrš   r´   )rš   ©r  rÂ   zTRecord does not contain any non-None fields that can be embedded.Embeddable Fields: zRecord Fields: )r-   rg   rµ   Ú_embedr   r   )rP   rž   rË   rÂ   Úfields        r[   r¡   z"CollectionCommon._embed_record_setÊ  sÑ   € ð Ð$Ü HÓ JÐà&ò 	ˆEØ˜%Ñ Ñ,à˜F’?Ø×(Ñ(Ð0Ü(Ø`óð ð  Ÿ;™;Ø"×/Ñ/´T¼$À
È5Ñ@QÓ5RÐ/ÓSØ!)ð 'ó ò ð
  Ÿ;™;Ø(¨Ñ/Ø!)ð 'ó ò ð	ô" ð"Ø"3Ð!4Ø˜j˜\ð+ó
ð 	
r`   r  c                 óì  — | j                   �Jt        | j                   t        «      s0|r| j                   j                  |¬«      S | j                  |¬«      S | j                  j                  d«      }|�|r|j                  |¬«      S  ||¬«      S | j                  }d }|��b|j                  j                  t        «      }|��|j                  ��|j                  j                  �k|j                  j                  j                  j                  	 �@t        t        t           |j                  j                  j                  j                  «      }n´|j                   j                  �ž|j                   j                  j                  �~|j                   j                  j                  j                  j                  	 �It        t        t           |j                   j                  j                  j                  j                  «      }|�)|rt#        |d«      r|j                  |¬«      S  ||¬«      S | j                   €t%        d«      ‚|r| j                   j                  |¬«      S | j                  |¬«      S )N©r  rj   Úembed_queryziYou must provide an embedding function to compute embeddings.https://docs.trychroma.com/guides/embeddings)rf   r„   r=   r  ru   r§   rz   rõ   r>   Ú
float_listÚvector_indexrú   rj   r   r'   r   ÚdefaultsÚhasattrrµ   )rP   r  rÂ   Ú	config_efrz   Úschema_embedding_functionÚoverrides          r[   r  zCollectionCommon._embedê  s9  € Ø×#Ñ#Ð/¼
Ø×$Ñ$Ô&>ô9
ñ Ø×/Ñ/×;Ñ;À%Ð;ÓHÐHà×/Ñ/°eÐ/Ó<Ð<à×&Ñ&×*Ñ*Ð+?Ó@ˆ	ØÐ ÙØ ×,Ñ,°5Ð,Ó9Ð9á  uÔ-Ð-Ø—‘ˆØMQÐ!ØÑØ—{‘{—‘¤}Ó5ˆHàÐ$Ø×'Ñ'Ð3Ø×'Ñ'×4Ñ4Ð@Ø×'Ñ'×4Ñ4×;Ñ;×NÑNØðô -1Ü%¤jÑ1Ø×'Ñ'×4Ñ4×;Ñ;×NÑNó-Ñ)ð
 —‘×*Ñ*Ð6Ø—O‘O×.Ñ.×;Ñ;ÐGØ—O‘O×.Ñ.×;Ñ;×BÑB×UÑUØðô -1Ü%¤jÑ1Ø—O‘O×.Ñ.×;Ñ;×BÑB×UÑUó-Ð)ð
 %Ð0ÙœGÐ$=¸}ÔMØ0×<Ñ<À5Ð<ÓIÐIÙ,°5Ô9Ð9Ø×#Ñ#Ð+Üð?óð ñ Ø×+Ñ+×7Ñ7¸eÐ7ÓDÐDà×+Ñ+°%Ð+Ó8Ð8r`   r  c                 ó<   — |r|j                  |¬«      S  ||¬«      S )Nr  )r  )rP   r  r  rÂ   s       r[   r	  zCollectionCommon._sparse_embed!  s&   € ñ Ø,×8Ñ8¸uÐ8ÓEÐEÙ(¨uÔ5Ð5r`   Úknnc                 óœ  — ddl m} t        ||«      s|S t        |j                  t        «      s|S |j                  }|j
                  }|t        k(  rg| j                  |gd¬«      }|rt        |«      dk7  rt        d«      ‚ ||d   |j
                  |j                  |j                  |j                  ¬«      S | j                  }|�||j                  vrt        d|› d	�«      ‚|j                  |   }|j                  �â|j                  j                   }|�Ê|j"                  r¾|j$                  }	|	j&                  �¦|	j&                  }
t        |
t(        «      st+        t(        t,           |
«      }
t/        |
«       | j1                  |g|
d¬
«      }|rt        |«      dk7  rt        d«      ‚ ||d   |j
                  |j                  |j                  |j                  ¬«      S |j2                  �º|j2                  j4                  }|�¢|j"                  r–|j$                  }|j&                  �~|j&                  }
t7        |
«       	 |
j9                  |g¬«      }|rt        |«      dk7  rt        d«      ‚ ||d   |j
                  |j                  |j                  |j                  ¬«      S t        d|› d�«      ‚# t:        $ r  |
|g«      }Y Œvw xY w)ac  Embed string queries in Knn objects using the appropriate embedding function.

        Args:
            knn: A Knn object that may have a string query

        Returns:
            A Knn object with the string query replaced by an embedding

        Raises:
            ValueError: If the query is a string but no embedding function is available
        r   )ÚKnnTr  rU   z;Embedding function returned unexpected number of embeddings)r»   rý   r×   ÚdefaultÚreturn_rankz#Cannot embed string query for key 'z|': key not found in schema. Please provide an embedded vector or configure an embedding function for this key in the schema.)r  r  rÂ   zBSparse embedding function returned unexpected number of embeddingsr  z…': no embedding function configured for this key in the schema. Please provide an embedded vector or configure an embedding function.)Ú&chromadb.execution.expression.operatorr*  r„   r»   rX   rý   r>   r  r  rµ   r×   r+  r,  rz   rõ   r÷   rø   rù   rú   rj   r(   r   r   r8   r	  r   r!  r7   r  ÚAttributeError)rP   r(  r*  Ú
query_textrý   rè   rz   Ú
value_typerÿ   Úsparse_configr  Úsparse_embeddingr!  Údense_configr–   s                  r[   Ú_embed_knn_string_queriesz*CollectionCommon._embed_knn_string_queries+  së  € õ 	?ä˜#˜sÔ#ØˆJô ˜#Ÿ)™)¤SÔ)ØˆJà—Y‘Yˆ
Ø�g‰gˆð ”-ÒàŸ™¨:¨,À˜ÓFˆIÙ¤ I£°!Ò 3Ü ØQóð ñ Ø ‘lØ—G‘GØ—i‘iØŸ™ØŸO™Oôð ð —‘ˆØˆ>˜S¨¯©Ñ3ÜØ5°c°Uð ;Nð Oóð ð —[‘[ Ñ%ˆ
ð ×#Ñ#Ð/Ø%×3Ñ3×GÑGˆLØÐ'¨L×,@Ò,@Ø ,× 3Ñ 3�Ø ×3Ñ3Ð?Ø%2×%EÑ%E�NÜ% nÔ6MÔNÜ)-Ü3´CÑ8¸.ó*˜ô 7°~ÔFð (,×'9Ñ'9Ø)˜lØ2@Ø!%ð (:ó (Ð$ñ ,¬sÐ3CÓ/DÈÒ/IÜ(Ø`óð ñ
 Ø.¨qÑ1ØŸG™GØ!Ÿi™iØ #§¡Ø$'§O¡Oôð ð × Ñ Ð,Ø%×0Ñ0×=Ñ=ˆLØÐ'¨L×,@Ò,@Ø+×2Ñ2�Ø×2Ñ2Ð>Ø%1×%DÑ%D�NÜ/°Ô?ðBØ%3×%?Ñ%?ÀzÀlÐ%?Ó%S˜
ñ
 &¬¨Z«¸AÒ)=Ü(ØYóð ñ
 Ø(¨™mØŸG™GØ!Ÿi™iØ #§¡Ø$'§O¡Oôð ô Ø1°#°ð 7Tð Uó
ð 	
øô% *ò Bá%3°Z°LÓ%Aš
ðBús   ÉJ6 Ê6KË
KÚrankc                 óˆ  — ddl m}m}m}m}m}m}m}m}	m	}
m
}m}m} |€yt        ||«      r| j                  |«      S t        ||«      r|S t        ||«      r! || j                  |j                   «      «      S t        ||«      r; || j                  |j"                  «      | j                  |j$                  «      «      S t        ||«      r! || j                  |j                   «      «      S t        ||«      r! || j                  |j                   «      «      S t        ||«      r/ ||j&                  D �cg c]  }| j                  |«      ‘Œ c}«      S t        ||«      r/ ||j&                  D �cg c]  }| j                  |«      ‘Œ c}«      S t        ||	«      r/ |	|j&                  D �cg c]  }| j                  |«      ‘Œ c}«      S t        ||
«      r; |
| j                  |j"                  «      | j                  |j$                  «      «      S t        ||«      r/ ||j&                  D �cg c]  }| j                  |«      ‘Œ c}«      S t        ||«      rQ ||j&                  D �cg c]  }| j                  |«      ‘Œ c}|j(                  |j*                  |j,                  ¬«      S |S c c}w c c}w c c}w c c}w c c}w )zóRecursively embed string queries in Rank expressions.

        Args:
            rank: A Rank expression that may contain Knn objects with string queries

        Returns:
            A Rank expression with all string queries embedded
        r   )r*  ÚAbsÚDivÚExpÚLogÚMaxÚMinÚMulÚSubÚSumÚValÚRrfN)ÚranksÚkÚweightsÚ	normalize)r-  r*  r7  r8  r9  r:  r;  r<  r=  r>  r?  r@  rA  r„   r4  Ú_embed_rank_string_queriesr5  ÚleftÚrightrB  rC  rD  rE  )rP   r5  r*  r7  r8  r9  r:  r;  r<  r=  r>  r?  r@  rA  Úrs                  r[   rF  z+CollectionCommon._embed_rank_string_queries¥  s`  € ÷	
÷ 	
÷ 	
ó 	
ð ˆ<Øô �d˜CÔ Ø×1Ñ1°$Ó7Ð7ô �d˜CÔ ØˆKô �d˜CÔ Ù�t×6Ñ6°t·y±yÓAÓBÐBä�d˜CÔ ÙØ×/Ñ/°·	±	Ó:Ø×/Ñ/°·
±
Ó;óð ô
 �d˜CÔ Ù�t×6Ñ6°t·y±yÓAÓBÐBä�d˜CÔ Ù�t×6Ñ6°t·y±yÓAÓBÐBä�d˜CÔ ÙÀDÇJÁJÖO¸q˜×7Ñ7¸Õ:ÒOÓPÐPä�d˜CÔ ÙÀDÇJÁJÖO¸q˜×7Ñ7¸Õ:ÒOÓPÐPä�d˜CÔ ÙÀDÇJÁJÖO¸q˜×7Ñ7¸Õ:ÒOÓPÐPä�d˜CÔ ÙØ×/Ñ/°·	±	Ó:Ø×/Ñ/°·
±
Ó;óð ô
 �d˜CÔ ÙÀDÇJÁJÖO¸q˜×7Ñ7¸Õ:ÒOÓPÐPä�d˜CÔ ÙØCGÇ:Á:ÖN¸a�t×6Ñ6°qÕ9ÒNØ—&‘&ØŸ™ØŸ.™.ô	ð ð ˆùò5 Pùò Pùò Pùò Pùò Os   Ä5J+Å0J0Æ+J5È-J:É(J?Úsearchc                 óÊ   — ddl m} t        ||«      s|S | j                  |j                  «      } ||j
                  ||j                  |j                  |j                  ¬«      S )zäEmbed string queries in a Search object.

        Args:
            search: A Search object that may contain Knn objects with string queries

        Returns:
            A Search object with all string queries embedded
        r   )ÚSearch)r¨   r5  Úgroup_byr×   Úselect)	Ú"chromadb.execution.expression.planrL  r„   rF  Ú_rankÚ_whereÚ	_group_byÚ_limitÚ_select)rP   rJ  rL  Úembedded_ranks       r[   Ú_embed_search_string_queriesz-CollectionCommon._embed_search_string_queriesö  s\   € õ 	>ä˜& &Ô)ØˆMð ×7Ñ7¸¿¹ÓEˆñ Ø—-‘-ØØ×%Ñ%Ø—-‘-Ø—>‘>ô
ð 	
r`   )NNNNNro   rƒ   )F)RÚ__name__Ú
__module__Ú__qualname__ÚCollectionModelÚ__annotations__rI   r   r'   r   r   r!   r=   rm   Úpropertyr   rp   rX   rK   rC   ru   r   r   rt   r   rz   r   r|   r~   r€   ÚobjectrÚ   rŽ   r‘   r“   ra   r*   r)   r   r   r   r   r"   r#   r   r   r¦   rE   rF   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	  r4  rF  rV  rV   r`   r[   rc   rc   t   sþ  … ØÓØÓØ!Ð"3°JÑ"?Ñ@Ó@Ø˜: hÑ/Ñ0Ó0ñ %Ó&Ø6:ñ(àð(ð ð(ð %Ø˜jÑ)ñ
ð	(ð ˜j¨Ñ2Ñ3ó(ð. ð�Dò ó ðð ð �cò  ó ð ð ðWÐ6ò Wó ðWð ð. D¨¨c¨¡Nò .ó ð.ð ð
˜ Ñ(ò 
ó ð
ð
 ð>Ð,ò >ó ð>ð ð"˜ò "ó ð"ð ð$˜#ò $ó ð$ð
˜Fð 
 tó 
ð0/˜#ó /ð˜?ó ñ ˜Óð-
à�r‰]ð-
ð ØØ˜)Ñ$Ø˜+Ñ&ð(ññ
ð-
ð ˜I hÑ/Ñ0ð-
ð ˜I hÑ/Ñ0ð-
ð ˜ 5Ñ)Ñ*ð-
ð �y ‘~Ñ&ð-
ð 
ò-
ó ð-
ñ^ ˜Óð"
à�i ‘mÑ$ð"
ð ˜‰ð"
ð ! Ñ/ð	"
ð
 ð"
ð 
ò"
ó ð"
ñH ˜Ó ð>
à"ØØ˜)Ñ$Ø˜+Ñ&ð(ññ
ð>
ð ˜i¨Ñ1Ñ2ð>
ð ˜y¨Ñ/Ñ0ð>
ð ˜Y s™^Ñ,ð>
ð �i ‘mÑ$ð>
ð ð>
ð ˜‰ð>
ð ! Ñ/ð>
ð ð>
ð  
ò!>
ó !ð>
ñ@ ˜Ó!ð5
à�r‰]ð5
ð ØØ˜)Ñ$Ø˜+Ñ&ð(ññ
ð5
ð ˜I hÑ/Ñ0ð5
ð ˜I hÑ/Ñ0ð5
ð ˜ 5Ñ)Ñ*ð5
ð �y ‘~Ñ&ð5
ð 
ò5
ó "ð5
ñn ˜Ó!ð Ø37Ø37Ø-1Ø)-ñ.
à�r‰]ð.
ð ØØ˜)Ñ$Ø˜+Ñ&ð(ññ
ð.
ð ˜I hÑ/Ñ0ð.
ð ˜I hÑ/Ñ0ð.
ð ˜ 5Ñ)Ñ*ð.
ð �y ‘~Ñ&ð.
ð 
ò.
ó "ð.
ñ` ˜Ó!ð  $ñ%
à�c‰]ð%
ð ˜‰ð%
ð ! Ñ/ð	%
ð
 ˜‰}ð%
ð 
ò%
ó "ð%
ðN°ð ¸yó ðØ!ðØ,3ðà	óð&Ø#ðØ.5ðà	óð*°Ð:LÑ1Mð ÐRVó ðVà�s‰mðVð Ð-Ñ.ðVð  Ð =Ñ>ð	Vð
 
óVð8¨t°CÐ9RÐ4RÑ/Só ð, /3ñk6à˜D ™NÑ+ðk6ð ˜D ™NÑ+ðk6ð 
�$�x‘.Ñ	!ó	k6ð` 15Øñ	
à!ð
ð $ C¨¡HÑ-ð
ð ð	
ð
 
ó
ñ@59˜Cð 59¨4ð 59¸Jó 59ðv ñ	6àð6ð $;¸3Ñ#?ð6ð ð	6ð
 
ó6ðx
¨Sð x
°Só x
ðtO¨sð O°só Oðb
°3ð 
¸3ô 
r`   rc   )Yr]   Útypingr   r   r   r   r   r   r	   r
   r   r   r   Úchromadb.typesr   Únumpyrà   Úuuidr   Ú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/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   rð   r@   rA   rB   rC   rD   rZ  rE   rF   ÚloggingÚ	getLoggerrW  ÚloggerÚchromadb.apirG   rH   rI   rJ   rX   ra   rc   rV   r`   r[   ú<module>rg     sõ   ðÛ ÷÷ ÷ ñ õ $Û Ý ÷1÷ 1÷ 1÷ 1÷ 1÷ 1÷ 1÷ 1÷ 1÷ 1÷ 1÷ 1ó 1÷dó ÷ OÑ NÛ à	ˆ×	Ñ	˜8Ó	$€áß6á
�)˜[Ð*:Ó
;€áˆCƒL€ð˜Sð  X¨x¸¸Q¸Ñ/?Ð.@À(È3ÐPQÈ6ÑBRÐ.RÑ%Só ô.[
�w˜wÑ'õ [
r`   