
    _jG                     Z   d dl 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 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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+ d dl,m-Z-m.Z.m/Z/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7  G d dee          Z8 G d dee          Z9dS )    N)OptionalSequence)UUID)override)UserIdentity)maybe_set_tenant_and_database)AsyncAdminAPIAsyncClientAPIAsyncServerAPI)CreateCollectionConfigurationUpdateCollectionConfiguration.validate_embedding_function_conflict_on_create+validate_embedding_function_conflict_on_get)AsyncCollection)SharedSystemClient)CollectionMetadata
DataLoader	Documents
EmbeddableEmbeddingFunction
Embeddings	GetResultIDsIncludeIncludeMetadataDocuments!IncludeMetadataDocumentsDistancesLoadable	MetadatasQueryResultSchemaURIsDefaultEmbeddingFunctionDeleteResult)DEFAULT_DATABASEDEFAULT_TENANTSettingsSystem)ChromaError)DatabaseTenantWhereWhereDocumentc                      e Zd ZU dZeed<   eZeed<   e	Z
eed<   eed<   eee	 e            fdedededd fd            Zeee	fd	edededd fd
            Zeed	eddfd                        Zedefd            Zee	fdededdfd            Zededdfd            ZdededdfdZedefd            Ze	 dBdee         dee         dee         fd            Zedefd            Zeddd e            ddfdedee          dee!         dee"         dee#e$                  dee%e&                  de'defd            Z(e e            dfdedee#e$                  dee%e&                  defd             Z)e e            dfd!e*dee#e$                  dee%e&                  defd"            Z+eddd e            dfdedee          dee!         dee"         dee#e$                  dee%e&                  defd#            Z,e	 	 	 dCd!e*d$ee         d%ee"         d&ee-         ddf
d'            Z.ededdfd(            Z/e	 	 	 dCd)e0d*e*d+e1d,ee2         d-ee3         d.ee4         de'fd/            Z5e	 	 	 	 dDd*e*d)e0d+ee1         d,ee2         d-ee3         d.ee4         de'fd0            Z6e	 	 	 dCd*e*d)e0d+e1d,ee2         d-ee3         d.ee4         de'fd1            Z7ed*e*defd2            Z8edEd*e*d4ede9fd5            Z:eddddde;fd*e*d)ee0         d6ee<         dee         dee         d7ee=         d8e>de9fd9            Z?	 	 	 dCd*e*d)ee0         d6ee<         d7ee=         dee         de@fd:ZAedd3ddeBfd*e*d;e1d)ee0         d<ed6ee<         d7ee=         d8e>deCfd=            ZDede'fd>            ZEedefd?            ZFedefd@            ZGedefdA            ZHdS )FAsyncClienta  A client for Chroma. This is the main entrypoint for interacting with Chroma.
    A client internally stores its tenant and database and proxies calls to a
    Server API instance of Chroma. It treats the Server API and corresponding System
    as a singleton, so multiple clients connecting to the same resource will share the
    same API instance.

    Client implementations should be implement their own API-caching strategies.
    _admin_clienttenantdatabase_serversettingsreturnc                   K    | |          }t          j        |j                   ||_        ||_        |j                            t                    |_        |                                 d {V }t          ||j
        ||          \  }}|r||_        |r||_        t                              |j                  |_        |                    |j        |j                   d {V  |                                 |S )Nr3   )4overwrite_singleton_tenant_database_access_from_authuser_provided_tenantuser_provided_databaser0   r1   )r   _populate_data_from_system_systemr0   r1   instancer   r2   get_user_identityr   ;chroma_overwrite_singleton_tenant_database_access_from_authAsyncAdminClientfrom_systemr/   _validate_tenant_database_submit_client_start_event)clsr0   r1   r3   selfuser_identitymaybe_tenantmaybe_databases           V/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/chromadb/api/async_client.pycreatezAsyncClient.create<   s!      sH%%%5dlCCC  |,,^<<"4466666666'DAI  BF!'#+	(
 (
 (
$n  	'&DK 	+*DM-99$,GG,,DK$-,XXXXXXXXX'')))    systemc                 T   K   t                               |||j                   d{V S )zRCreate a client from an existing system. This is useful for testing and debugging.N)r.   rJ   r3   )rD   rL   r0   r1   s       rI   from_system_asynczAsyncClient.from_system_asynca   s4       !''&/JJJJJJJJJrK   r   c                      t          d           )zNAsyncClient cannot be created synchronously. Use .from_system_async() instead.)NotImplementedError)rD   rL   s     rI   rA   zAsyncClient.from_systeml   s     "\
 
 	
rK   c                 D   K   | j                                          d {V S N)r2   r>   rE   s    rI   r>   zAsyncClient.get_user_identityw   s,      \33555555555rK   Nc                 `   K   |                      ||           d {V  || _        || _        d S Nr:   rB   r0   r1   )rE   r0   r1   s      rI   
set_tenantzAsyncClient.set_tenant{   sC      ,,FX,NNNNNNNNN rK   c                 \   K   |                      | j        |           d {V  || _        d S rU   rV   )rE   r1   s     rI   set_databasezAsyncClient.set_database   s>      ,,DK(,SSSSSSSSS rK   c                 t  K   	 | j                             |           d {V  nM# t          j        $ r t	          d          t
          $ r}|d }~wt          $ r t	          d| d          w xY w	 | j                             ||           d {V  d S # t          j        $ r t	          d          w xY w)NnamezACould not connect to a Chroma server. Are you sure it is running?zCould not connect to tenant z. Are you sure it exists?r\   r0   )r/   
get_tenanthttpxConnectError
ValueErrorr(   	Exceptionget_database)rE   r0   r1   es       rI   rB   z%AsyncClient._validate_tenant_database   s(     	$//V/<<<<<<<<<<! 	 	 	S    	 	 	G 	 	 	PvPPP  	
	$11x1OOOOOOOOOOO! 	 	 	S  	s!   !& 'A0A!A04"B B7c                 D   K   | j                                          d {V S rR   )r2   	heartbeatrS   s    rI   rf   zAsyncClient.heartbeat   s,      \++---------rK   limitoffsetc                     K    j                             || j         j                   d {V } fd|D             S )Nr:   c                 <    g | ]}t          j        |           S ))clientmodel)r   r2   ).0rl   rE   s     rI   
<listcomp>z0AsyncClient.list_collections.<locals>.<listcomp>   s(    VVVet|5AAAVVVrK   )r2   list_collectionsr0   r1   )rE   rg   rh   modelss   `   rI   ro   zAsyncClient.list_collections   sm       |446$+ 5 
 
 
 
 
 
 
 
 WVVVvVVVVrK   c                 ^   K   | j                             | j        | j                   d {V S rU   )r2   count_collectionsr0   r1   rS   s    rI   rr   zAsyncClient.count_collections   sL      \33; 4 
 
 
 
 
 
 
 
 	
rK   Fr\   schemaconfigurationmetadataembedding_functiondata_loaderget_or_createc           	         K   |i }|                     d          }t          ||           ||||d<   | j                            ||||| j        | j        |           d {V }	t          | j        |	||          S )Nrv   )r\   rs   rt   ru   r0   r1   rx   rk   rl   rv   rw   )getr   r2   create_collectionr0   r1   r   )
rE   r\   rs   rt   ru   rv   rw   rx   configuration_efrl   s
             rI   r|   zAsyncClient.create_collection   s        M(,,-ABB6 0	
 	
 	
 ).>.F2DM./l44';]' 5 
 
 
 
 
 
 
 
 <1#	
 
 
 	
rK   c                    K   | j                             || j        | j                   d {V }|j                            d          }t          ||           t          | j         |||          S )Nr\   r0   r1   rv   rz   )r2   get_collectionr0   r1   configuration_jsonr{   r   r   )rE   r\   rv   rw   rl   persisted_ef_configs         rI   r   zAsyncClient.get_collection   s       l11;] 2 
 
 
 
 
 
 
 

 $6::;OPP3 3	
 	
 	
 <1#	
 
 
 	
rK   idc                    K   | j                             || j        | j                   d{V }|j                            d          }t          ||           t          | j         |||          S )a  Get a collection by its ID.

        Args:
            id: The UUID of the collection.
            embedding_function: Optional embedding function for the collection.
            data_loader: Optional data loader for documents with URIs.

        Returns:
            AsyncCollection: The requested collection.

        Raises:
            ValueError: If the embedding function conflicts with configuration.
        )collection_idr0   r1   Nrv   rz   )r2   get_collection_by_idr0   r1   r   r{   r   r   )rE   r   rv   rw   rl   r   s         rI   r   z AsyncClient.get_collection_by_id   s      , l77;] 8 
 
 
 
 
 
 
 

 $6::;OPP3 3	
 	
 	
 <1#	
 
 
 	
rK   c                 N  K   |i }|                     d          }t          ||           ||||d<   | j                            ||||| j        | j                   d {V }|j                             d          }	t          ||	           t          | j        |||          S )Nrv   )r\   rs   rt   ru   r0   r1   rz   )	r{   r   r2   get_or_create_collectionr0   r1   r   r   r   )
rE   r\   rs   rt   ru   rv   rw   r}   rl   r   s
             rI   r   z$AsyncClient.get_or_create_collection  s       M(,,-ABB6 0	
 	
 	
 ).>.F2DM./l;;';] < 
 
 
 
 
 
 
 
 $6::;OPP3 3	
 	
 	
 <1#	
 
 
 	
rK   new_namenew_metadatanew_configurationc                 f   K   | j                             ||||| j        | j                   d {V S )N)r   r   r   r   r0   r1   )r2   _modifyr0   r1   )rE   r   r   r   r   s        rI   r   zAsyncClient._modifyL  s[       \))%/;] * 
 
 
 
 
 
 
 
 	
rK   c                 `   K   | j                             || j        | j                   d {V S )Nr   )r2   delete_collectionr0   r1   rE   r\   s     rI   r   zAsyncClient.delete_collection]  sR      
 \33;] 4 
 
 
 
 
 
 
 
 	
rK   idsr   
embeddings	metadatas	documentsurisc           
      j   K   | j                             ||||||| j        | j                   d {V S )N)r   r   r   r   r   r   r0   r1   )r2   _addr0   r1   )rE   r   r   r   r   r   r   s          rI   r   zAsyncClient._addl  sa       \&&'!;] ' 	
 	
 	
 	
 	
 	
 	
 	
 		
rK   c           
      j   K   | j                             ||||||| j        | j                   d {V S N)r   r   r   r   r   r   r0   r1   )r2   _updater0   r1   rE   r   r   r   r   r   r   s          rI   r   zAsyncClient._update  a       \))'!;] * 	
 	
 	
 	
 	
 	
 	
 	
 		
rK   c           
      j   K   | j                             ||||||| j        | j                   d {V S r   )r2   _upsertr0   r1   r   s          rI   r   zAsyncClient._upsert  r   rK   c                 H   K   | j                             |           d {V S )N)r   )r2   _count)rE   r   s     rI   r   zAsyncClient._count  sF      \((' ) 
 
 
 
 
 
 
 
 	
rK   
   nc                 J   K   | j                             ||           d {V S )N)r   r   )r2   _peek)rE   r   r   s      rI   r   zAsyncClient._peek  sI      \''' ( 
 
 
 
 
 
 
 
 	
rK   wherewhere_documentincludec                 l   K   | j                             |||||||| j        | j        	  	         d {V S )N)	r   r   r   rg   rh   r   r   r0   r1   )r2   _getr0   r1   )rE   r   r   r   rg   rh   r   r   s           rI   r   zAsyncClient._get  sd       \&&');] ' 

 

 

 

 

 

 

 

 
	
rK   c           	      h   K   | j                             |||||| j        | j                   d {V S )N)r   r   r   r   rg   r0   r1   )r2   _deleter0   r1   )rE   r   r   r   r   rg   s         rI   r   zAsyncClient._delete  s^       \))');] * 
 
 
 
 
 
 
 
 	
rK   query_embeddings	n_resultsc                 l   K   | j                             |||||||| j        | j        	  	         d {V S )N)	r   r   r   r   r   r   r   r0   r1   )r2   _queryr0   r1   )rE   r   r   r   r   r   r   r   s           rI   r   zAsyncClient._query  sd       \(('-);] ) 

 

 

 

 

 

 

 

 
	
rK   c                 D   K   | j                                          d {V S rR   )r2   resetrS   s    rI   r   zAsyncClient.reset  s,      \'')))))))))rK   c                 D   K   | j                                          d {V S rR   )r2   get_versionrS   s    rI   r   zAsyncClient.get_version  s,      \--/////////rK   c                 4    | j                                         S rR   )r2   get_settingsrS   s    rI   r   zAsyncClient.get_settings   s    |((***rK   c                 D   K   | j                                          d {V S rR   )r2   get_max_batch_sizerS   s    rI   r   zAsyncClient.get_max_batch_size  s,      \44666666666rK   )NN)NNN)NNNN)r   )I__name__
__module____qualname____doc__r	   __annotations__r%   r0   strr$   r1   r   classmethodr&   rJ   r'   rN   r   rA   r   r>   rW   rY   rB   intrf   r   r   r   ro   rr   r"   r    r   r   r   r   r   r   boolr|   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    rK   rI   r.   r.   *   s	          !    FC   $Hc$$$ %(%XZZ	" "" " 	"
 
" " " ["H 
 %(	K KK K 	K
 
K K K [K 

 

 
 
 X [
 6 6 6 6 X6 <L ! !s !c !QU ! ! ! X!
 !3 !4 ! ! ! X!c S T    0 . . . . X. CGW Wc]W3;C=W	/	"W W W XW 
 
 
 
 X

  $(AE15 %$&&6:#(
 (
(
  (
   =>	(

 -.(
 %j)
(
 j23(
 (
 
(
 (
 (
 X(
T  %$&&6:
 

 %j)

 j23
 

 
 
 X
4  %$&&6:%
 %
%
 %j)
%
 j23%
 
%
 %
 %
 X%
N  $(AE15 %$&&6:*
 *
*
  *
   =>	*

 -.*
 %j)
*
 j23*
 
*
 *
 *
 X*
X  #'59EI
 

 3-
 12	

 $$AB
 

 
 
 X
  

 

 
 
 X
  *.)-#
 

 
 	

 I&
 I&
 tn
 

 
 
 X
( 
 ,0)-)-#
 

 
 Z(	

 I&
 I&
 tn
 

 
 
 X
(  *.)-#
 

 
 	

 I&
 I&
 tn
 

 
 
 X
( 
$ 
3 
 
 
 X

 
 
 
# 
y 
 
 
 X
  "!%# $263
 

 c]
 	

 }
 
 !/
 
 

 
 
 X
4 "&26#
 

 c]
 	

 !/
 }
 

 
 
 
$ 
 "!%26<
 

 %
 c]	

 
 
 !/
 
 

 
 
 X
, *T * * * X* 03 0 0 0 X0 +h + + + X+ 7# 7 7 7 X7 7 7rK   r.   c                       e Zd ZU eed<    e            fdeddf fdZeefde	de	ddfd            Z
eefde	de	defd	            Zeefde	de	ddfd
            Zeddefdee         dee         de	dee         fd            Zede	ddfd            Zede	defd            Zeededd fd                        Z xZS )r@   r2   r3   r4   Nc                     t                                          |           | j                            t                    | _        d S rR   )super__init__r<   r=   r   r2   )rE   r3   	__class__s     rI   r   zAsyncAdminClient.__init__  s6    """|,,^<<rK   r\   r0   c                 J   K   | j                             ||           d {V S Nr]   )r2   create_databaserE   r\   r0   s      rI   r   z AsyncAdminClient.create_database  3      \11tF1KKKKKKKKKrK   c                 J   K   | j                             ||           d {V S r   )r2   rc   r   s      rI   rc   zAsyncAdminClient.get_database  s3      \..D.HHHHHHHHHrK   c                 J   K   | j                             ||           d {V S r   )r2   delete_databaser   s      rI   r   z AsyncAdminClient.delete_database  r   rK   rg   rh   c                 L   K   | j                             |||           d {V S )N)rg   rh   r0   )r2   list_databases)rE   rg   rh   r0   s       rI   r   zAsyncAdminClient.list_databases  sL       \00v 1 
 
 
 
 
 
 
 
 	
rK   c                 H   K   | j                             |           d {V S Nr[   )r2   create_tenantr   s     rI   r   zAsyncAdminClient.create_tenant)  s1      \//T/:::::::::rK   c                 H   K   | j                             |           d {V S r   )r2   r^   r   s     rI   r^   zAsyncAdminClient.get_tenant-  s1      \,,$,777777777rK   rL   c                 P    t          j        |            | |j                  }|S )Nr6   )r   r;   r3   )rD   rL   r=   s      rI   rA   zAsyncAdminClient.from_system1  s.     	5f===3000rK   )r   r   r   r   r   r&   r   r   r%   r   r   r)   rc   r   r   r   r   r   r   r*   r^   r   r'   rA   __classcell__)r   s   @rI   r@   r@     s3        ,4HJJ = = =4 = = = = = = =K L L# Ls LPT L L L XL :H I Is IC IX I I I XI =K L L# Ls LPT L L L XL   $ $$	
 
}
 
 	

 
(	
 
 
 X
 ; ; ; ; ; X; 8S 8V 8 8 8 X8  
   X [    rK   r@   ):r_   typingr   r   uuidr   	overridesr   chromadb.authr   chromadb.auth.utilsr   chromadb.apir	   r
   r   %chromadb.api.collection_configurationr   r   r   r   #chromadb.api.models.AsyncCollectionr   !chromadb.api.shared_system_clientr   chromadb.api.typesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   chromadb.configr$   r%   r&   r'   chromadb.errorsr(   chromadb.typesr)   r*   r+   r,   r.   r@   r   rK   rI   <module>r      s    % % % % % % % %             & & & & & & = = = = = = F F F F F F F F F F            @ ? ? ? ? ? @ @ @ @ @ @                                       ( O N N N N N N N N N N N ' ' ' ' ' ' A A A A A A A A A A A A\7 \7 \7 \7 \7$n \7 \7 \7B. . . . .)= . . . . .rK   