
    Ig9                     >   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 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# d dl$m%Z%m&Z&m'Z'm(Z( d dl)m*Z* d dl+m,Z,m-Z-m.Z.m/Z/ d dl0m1c m2Z3  G d dee      Z4 G d dee      Z5y)    N)OptionalSequence)UUID)override)UserIdentity)maybe_set_tenant_and_database)AsyncAdminAPIAsyncClientAPIAsyncServerAPI)CollectionConfiguration)AsyncCollection)SharedSystemClient)CollectionMetadata
DataLoader	Documents
EmbeddableEmbeddingFunction
Embeddings	GetResultIDsIncludeLoadable	MetadatasQueryResultURIs)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	 dDdee   dee   dee   fd       Zedefd       Zedd ej@                         ddfdedee!   dee"   dee#e$      dee%e&      de'defd       Z(e ej@                         dfdedee#e$      dee%e&      defd       Z)edd ej@                         dfdedee!   dee"   dee#e$      dee%e&      defd        Z*e	 	 dDd!e+d"ee   d#ee"   ddfd$       Z,ededdfd%       Z-e	 	 	 dEd&e.d'e+d(e/d)ee0   d*ee1   d+ee2   de'fd,       Z3e	 	 	 	 dFd'e+d&e.d(ee/   d)ee0   d*ee1   d+ee2   de'fd-       Z4e	 	 	 dEd'e+d&e.d(e/d)ee0   d*ee1   d+ee2   de'fd.       Z5ed'e+defd/       Z6edGd'e+d1ede7fd2       Z8eddddddddg d3f	d'e+d&ee.   d4ee9   d5ee   dee   dee   d6ee   d7ee   d8ee:   d9e;de7fd:       Z<	 	 dDd'e+d&ee.   d4ee9   d8ee:   ddf
d;Z=ed0ddg d<fd'e+d=e/d>ed4ee9   d8ee:   d9e;de>fd?       Z?ede'fd@       Z@edefdA       ZAedefdB       ZBedefdC       ZCy)H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                  j                  t              |_        |j                          d {   }t        ||j                  ||      \  }}|r||_        |r||_        t        j                  |j                        |_        |j                  |j                  |j                         d {    |j                          |S 7 7 w)Nr+   )4overwrite_singleton_tenant_database_access_from_authuser_provided_tenantuser_provided_databaser(   r)   )r   _populate_data_from_system_systemr(   r)   instancer   r*   get_user_identityr   ;chroma_overwrite_singleton_tenant_database_access_from_authAsyncAdminClientfrom_systemr'   _validate_tenant_database_submit_client_start_event)clsr(   r)   r+   selfuser_identitymaybe_tenantmaybe_databases           V/var/www/html/answerous/venv/lib/python3.12/site-packages/chromadb/api/async_client.pycreatezAsyncClient.create2   s      H%55dllC  ||,,^<"4466'DAI  BF  BF!'#+	(
$n &DK*DM-99$,,G,,DKK$--,XXX'')% 7 	Ys%   A.D0D1B D1D
2D
Dsystemc                 `   K   t         j                  |||j                         d{   S 7 w)zRCreate a client from an existing system. This is useful for testing and debugging.N)r&   rB   r+   )r<   rC   r(   r)   s       rA   from_system_asynczAsyncClient.from_system_asyncW   s'      !''&//JJJJs   %.,.r   c                     t        d       )zNAsyncClient cannot be created synchronously. Use .from_system_async() instead.)NotImplementedError)r<   rC   s     rA   r9   zAsyncClient.from_systemb   s     "\
 	
    c                 R   K   | j                   j                          d {   S 7 wN)r*   r6   r=   s    rA   r6   zAsyncClient.get_user_identitym   s     \\335555   '%'Nc                 b   K   | j                  ||       d {    || _        || _        y 7 wNr2   r:   r(   r)   )r=   r(   r)   s      rA   
set_tenantzAsyncClient.set_tenantq   s3     ,,FX,NNN  	Os   /-/c                 h   K   | j                  | j                  |       d {    || _        y 7 wrN   rO   )r=   r)   s     rA   set_databasezAsyncClient.set_databasew   s0     ,,DKK(,SSS  	Ts   !202c                 |  K   	 | j                   j                  |       d {    	 | j                   j                  ||       d {    y 7 +# t        j                  $ r t	        d      t
        $ r}|d }~wt        $ r t	        d| d      w xY w7 N# t        j                  $ r t	        d      w xY w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?rU   r(   )r'   
get_tenanthttpxConnectError
ValueErrorr    	Exceptionget_database)r=   r(   r)   es       rA   r:   z%AsyncClient._validate_tenant_database|   s     	$$//V/<<<	$$11x1OOO =!! 	S   	G 	.vh6OP 	 P!! 	S 	s[   B<A AA  B 	B
B B<A &B7A99BB<B B99B<c                 R   K   | j                   j                          d {   S 7 wrJ   )r*   	heartbeatrK   s    rA   r_   zAsyncClient.heartbeat   s     \\++----rL   limitoffsetc                    K   | j                   j                  ||| j                  | j                         d {   }|D cg c]  }t	        | j                   |       c}S 7 )c c}w w)Nr2   )clientmodel)r*   list_collectionsr(   r)   r   )r=   r`   ra   modelsrd   s        rA   re   zAsyncClient.list_collections   so      ||446$++ 5 
 
  

 	 ||
 	


s!   7A*A#A*A% A*%A*c                    K   | j                   j                  | j                  | j                         d {   S 7 wrN   )r*   count_collectionsr(   r)   rK   s    rA   rh   zAsyncClient.count_collections   s9     \\33;; 4 
 
 	
 
s   5><>FrU   configurationmetadataembedding_functiondata_loaderget_or_createc                    K   | j                   j                  |||| j                  | j                  |       d {   }t	        | j                   |||      S 7 w)N)rU   ri   rj   r(   r)   rm   rc   rd   rk   rl   )r*   create_collectionr(   r)   r   )r=   rU   ri   rj   rk   rl   rm   rd   s           rA   rp   zAsyncClient.create_collection   sd      ll44';;]]' 5 
 
 <<1#	
 	

s   9AAAc                    K   | j                   j                  || j                  | j                         d {   }t	        | j                   |||      S 7 w)NrU   r(   r)   ro   )r*   get_collectionr(   r)   r   )r=   rU   rk   rl   rd   s        rA   rs   zAsyncClient.get_collection   s[      ll11;;]] 2 
 

 <<1#	
 	

s   6AAAc                    K   | j                   j                  |||| j                  | j                         d {   }t	        | j                   |||      S 7 w)N)rU   ri   rj   r(   r)   ro   )r*   get_or_create_collectionr(   r)   r   )r=   rU   ri   rj   rk   rl   rd   s          rA   ru   z$AsyncClient.get_or_create_collection   sa      ll;;';;]] < 
 
 <<1#	
 	

s   8AAAidnew_namenew_metadatac                    K   | j                   j                  |||| j                  | j                         d {   S 7 w)N)rv   rw   rx   r(   r)   )r*   _modifyr(   r)   )r=   rv   rw   rx   s       rA   rz   zAsyncClient._modify   sE      \\))%;;]] * 
 
 	
 
s   8A?Ac                    K   | j                   j                  || j                  | j                         d {   S 7 w)Nrr   )r*   delete_collectionr(   r)   r=   rU   s     rA   r|   zAsyncClient.delete_collection  s?     
 \\33;;]] 4 
 
 	
 
s   6?=?idscollection_id
embeddings	metadatas	documentsurisc           
         K   | j                   j                  ||||||| j                  | j                         d {   S 7 w)N)r~   r   r   r   r   r   r(   r)   )r*   _addr(   r)   )r=   r~   r   r   r   r   r   s          rA   r   zAsyncClient._add  sN      \\&&'!;;]] ' 	
 	
 		
 	
   ;AAAc           
         K   | j                   j                  ||||||| j                  | j                         d {   S 7 wN)r   r~   r   r   r   r   r(   r)   )r*   _updater(   r)   r=   r   r~   r   r   r   r   s          rA   r   zAsyncClient._update)  N      \\))'!;;]] * 	
 	
 		
 	
r   c           
         K   | j                   j                  ||||||| j                  | j                         d {   S 7 wr   )r*   _upsertr(   r)   r   s          rA   r   zAsyncClient._upsert>  r   r   c                 V   K   | j                   j                  |       d {   S 7 w)N)r   )r*   _count)r=   r   s     rA   r   zAsyncClient._countS  s/     \\((' ) 
 
 	
 
    )')
   nc                 X   K   | j                   j                  ||       d {   S 7 w)N)r   r   )r*   _peek)r=   r   r   s      rA   r   zAsyncClient._peekY  s2     \\''' ( 
 
 	
 
   !*(*)r   r   r   wheresortpage	page_sizewhere_documentincludec                    K   | j                   j                  |||||||||	|
| j                  | j                         d {   S 7 w)N)r   r~   r   r   r`   ra   r   r   r   r   r(   r)   )r*   _getr(   r)   )r=   r   r~   r   r   r`   ra   r   r   r   r   s              rA   r   zAsyncClient._get`  sZ      \\&&');;]] ' 
 
 	
 
s   ?AAAc                    K   | j                   j                  ||||| j                  | j                         d {    y 7 w)N)r   r~   r   r   r(   r)   )r*   _deleter(   r)   )r=   r   r~   r   r   s        rA   r   zAsyncClient._delete}  sC      ll""');;]] # 
 	
 	
s   9AAA)r   r   r   	distancesquery_embeddings	n_resultsc           
         K   | j                   j                  ||||||| j                  | j                         d {   S 7 w)N)r   r   r   r   r   r   r(   r)   )r*   _queryr(   r)   )r=   r   r   r   r   r   r   s          rA   r   zAsyncClient._query  sN      \\(('-);;]] ) 	
 	
 		
 	
r   c                 R   K   | j                   j                          d {   S 7 wrJ   )r*   resetrK   s    rA   r   zAsyncClient.reset  s     \\''))))rL   c                 R   K   | j                   j                          d {   S 7 wrJ   )r*   get_versionrK   s    rA   r   zAsyncClient.get_version  s     \\--////rL   c                 6    | j                   j                         S rJ   )r*   get_settingsrK   s    rA   r   zAsyncClient.get_settings  s    ||((**rH   c                 R   K   | j                   j                          d {   S 7 wrJ   )r*   get_max_batch_sizerK   s    rA   r   zAsyncClient.get_max_batch_size  s     \\446666rL   )NN)NNN)NNNN)r   )D__name__
__module____qualname____doc__r	   __annotations__r   r(   strr   r)   r   classmethodr   rB   r   rE   r   r9   r   r6   rP   rR   r:   intr_   r   r   r   re   rh   efDefaultEmbeddingFunctionr   r   r   r   r   r   boolrp   rs   ru   r   rz   r|   r   r   r   r   r   r   r   r   r   r   r   r#   r$   r   r   r   r   r   r   r   r   r    rH   rA   r&   r&       sb    !  FC $Hc$ %(%Z	"" " 	"
 
" "H 
 %(	KK K 	K
 
K K 

 

  
 6 6 6 <L !s !c !QU ! !
 !3 !4 ! !c S T 0 . . . CG
c]
3;C=
	/	"
 
 
 
 

  <@15 (B'')6:#

   78
 -.	

 %j)

 j23
 
 

 
4  (B'')6:

 %j)

 j23
 

 
(  <@15 (B'')6:

   78
 -.	

 %j)

 j23
 

 
0  #'59	

 3-
 12	

 

 
 

 

 
  *.)-#

 
 	

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

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

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

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

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

 !/
 

  
 !%26P

 %
 	

 
 !/
 
 

 
( *T * * 03 0 0 +h + + 7# 7 7rH   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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 )r8   r*   r+   r,   Nc                 l    t         |   |       | j                  j                  t              | _        y rJ   )super__init__r4   r5   r   r*   )r=   r+   	__class__s     rA   r   zAsyncAdminClient.__init__  s&    "||,,^<rH   rU   r(   c                 X   K   | j                   j                  ||       d {   S 7 wNrV   )r*   create_databaser=   rU   r(   s      rA   r   z AsyncAdminClient.create_database  s&     \\11tF1KKKKr   c                 X   K   | j                   j                  ||       d {   S 7 wr   )r*   r\   r   s      rA   r\   zAsyncAdminClient.get_database  s&     \\..D.HHHHr   c                 V   K   | j                   j                  |       d {   S 7 wNrT   )r*   create_tenantr}   s     rA   r   zAsyncAdminClient.create_tenant  s$     \\//T/::::r   c                 V   K   | j                   j                  |       d {   S 7 wr   )r*   rW   r}   s     rA   rW   zAsyncAdminClient.get_tenant  s$     \\,,$,7777r   rC   c                 V    t        j                  |        | |j                        }|S )Nr.   )r   r3   r+   )r<   rC   r5   s      rA   r9   zAsyncAdminClient.from_system  s%     	55f=0rH   )r   r   r   r   r   r   r   r   r   r   r   r!   r\   r   r"   rW   r   r   r9   __classcell__)r   s   @rA   r8   r8     s    ,4J = =4 = =K L# Ls LPT L L :H Is IC IX I I ; ; ; ; 8S 8V 8 8  
  rH   r8   )6rX   typingr   r   uuidr   	overridesr   chromadb.authr   chromadb.auth.utilsr   chromadb.apir	   r
   r   chromadb.api.configurationr   #chromadb.api.models.AsyncCollectionr   !chromadb.api.shared_system_clientr   chromadb.api.typesr   r   r   r   r   r   r   r   r   r   r   r   r   chromadb.configr   r   r   r   chromadb.errorsr    chromadb.typesr!   r"   r#   r$   "chromadb.utils.embedding_functionsutilsembedding_functionsr   r&   r8   r   rH   rA   <module>r      ss     %   & = F F > ? @    O N ' A A / /P7$n P7j)= rH   