
    ti2                     (   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	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 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l*m+c m,Z-  G d dee
          Z. G d dee	          Z/dS )    N)OptionalSequence)UUID)override)AsyncAdminAPIAsyncClientAPIAsyncServerAPI)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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 ej                    ddfdedee         dee e!                  dee"e#                  de$defd            Z%ed ej                    dfdedee&         dee e!                  dee"e#                  def
d            Z'ed ej                    dfdedee         dee e!                  dee"e#                  def
d            Z(e	 	 dBde&d ee         d!ee         ddfd"            Z)ededdfd#            Z*e	 	 	 dCd$e+d%e&d&e,d'ee-         d(ee.         d)ee/         de$fd*            Z0e	 	 	 	 dDd%e&d$e+d&ee,         d'ee-         d(ee.         d)ee/         de$fd+            Z1e	 	 	 dCd%e&d$e+d&e,d'ee-         d(ee.         d)ee/         de$fd,            Z2ed%e&defd-            Z3edEd%e&d/ede4fd0            Z5edi dddddi g d1f	d%e&d$ee+         d2ee6         d3ee         dee         dee         d4ee         d5ee         d6ee7         d7e8de4fd8            Z9i i fd%e&d$ee+         d2ee6         d6ee7         de+f
d9Z:ed.i i g d:fd%e&d;e,d<ed2e6d6e7d7e8d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dA            Z@d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                 b  K    | |          }t          j        |j                   t                              |j                  |_        |                    ||           d {V  ||_        ||_        |j        	                    t                    |_        |                                 |S )Nr(   r%   r&   )r   _populate_data_from_system_systemAsyncAdminClientfrom_systemr$   _validate_tenant_databaser%   r&   instancer	   r'   _submit_client_start_event)clsr%   r&   r(   selfs        L/var/www/icac/venv/lib/python3.11/site-packages/chromadb/api/async_client.pycreatezAsyncClient.create/   s       sH%%%5dlCCC-99$,GG,,FX,NNNNNNNNN  |,,^<<'')))    systemc                 T   K   t                               |||j                   d{V S )zRCreate a client from an existing system. This is useful for testing and debugging.N)r#   r7   r(   )r4   r9   r%   r&   s       r6   from_system_asynczAsyncClient.from_system_asyncF   s4       !''&/JJJJJJJJJr8   r   c                      t          d           )zNAsyncClient cannot be created synchronously. Use .from_system_async() instead.)NotImplementedError)r4   r9   s     r6   r0   zAsyncClient.from_systemQ   s     "\
 
 	
r8   Nc                 `   K   |                      ||           d {V  || _        || _        d S Nr,   r1   r%   r&   )r5   r%   r&   s      r6   
set_tenantzAsyncClient.set_tenant\   sC      ,,FX,NNNNNNNNN r8   c                 \   K   |                      | j        |           d {V  || _        d S r?   r@   )r5   r&   s     r6   set_databasezAsyncClient.set_databaseb   s>      ,,DK(,SSSSSSSSS r8   c                   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          t          $ r t	          d| d| 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?rF   r%   zCould not connect to database z for tenant )r$   
get_tenanthttpxConnectError
ValueErrorr   	Exceptionget_database)r5   r%   r&   es       r6   r1   z%AsyncClient._validate_tenant_databaseg   sd     	$//V/<<<<<<<<<<! 	 	 	S    	 	 	G 	 	 	PvPPP  	
		$11x1OOOOOOOOOOO! 	 	 	S    	 	 	hhhvhhh  	s!   !& 'A0A!A04"B >Cc                 D   K   | j                                          d {V S N)r'   	heartbeatr5   s    r6   rQ   zAsyncClient.heartbeat   s,      \++---------r8   limitoffsetc                 b   K   | j                             ||| j        | j                   d {V S r?   )r'   list_collectionsr%   r&   )r5   rS   rT   s      r6   rV   zAsyncClient.list_collections   sR       \226$+ 3 
 
 
 
 
 
 
 
 	
r8   c                 ^   K   | j                             | j        | j                   d {V S r?   )r'   count_collectionsr%   r&   rR   s    r6   rX   zAsyncClient.count_collections   sL      \33; 4 
 
 
 
 
 
 
 
 	
r8   FrF   metadataembedding_functiondata_loaderget_or_createc           	      h   K   | j                             ||||| j        | j        |           d {V S )N)rF   rY   rZ   r[   r%   r&   r\   )r'   create_collectionr%   r&   )r5   rF   rY   rZ   r[   r\   s         r6   r^   zAsyncClient.create_collection   s^       \331#;]' 4 
 
 
 
 
 
 
 
 	
r8   idc                 f   K   | j                             ||||| j        | j                   d {V S )N)r_   rF   rZ   r[   r%   r&   )r'   get_collectionr%   r&   )r5   rF   r_   rZ   r[   s        r6   ra   zAsyncClient.get_collection   s[       \001#;] 1 
 
 
 
 
 
 
 
 	
r8   c                 f   K   | j                             ||||| j        | j                   d {V S )N)rF   rY   rZ   r[   r%   r&   )r'   get_or_create_collectionr%   r&   )r5   rF   rY   rZ   r[   s        r6   rc   z$AsyncClient.get_or_create_collection   s[       \::1#;] ; 
 
 
 
 
 
 
 
 	
r8   new_namenew_metadatac                 L   K   | j                             |||           d {V S )N)r_   rd   re   )r'   _modify)r5   r_   rd   re   s       r6   rg   zAsyncClient._modify   sN       \))% * 
 
 
 
 
 
 
 
 	
r8   c                 `   K   | j                             || j        | j                   d {V S )N)rF   r%   r&   )r'   delete_collectionr%   r&   r5   rF   s     r6   ri   zAsyncClient.delete_collection   sR      
 \33;] 4 
 
 
 
 
 
 
 
 	
r8   idscollection_id
embeddings	metadatas	documentsurisc                 R   K   | j                             ||||||           d {V S )N)rk   rl   rm   rn   ro   rp   )r'   _add)r5   rk   rl   rm   rn   ro   rp   s          r6   rr   zAsyncClient._add   sW       \&&'! ' 
 
 
 
 
 
 
 
 	
r8   c                 R   K   | j                             ||||||           d {V S N)rl   rk   rm   rn   ro   rp   )r'   _updater5   rl   rk   rm   rn   ro   rp   s          r6   ru   zAsyncClient._update   W       \))'! * 
 
 
 
 
 
 
 
 	
r8   c                 R   K   | j                             ||||||           d {V S rt   )r'   _upsertrv   s          r6   ry   zAsyncClient._upsert  rw   r8   c                 H   K   | j                             |           d {V S )N)rl   )r'   _count)r5   rl   s     r6   r{   zAsyncClient._count%  sF      \((' ) 
 
 
 
 
 
 
 
 	
r8   
   nc                 J   K   | j                             ||           d {V S )N)rl   r}   )r'   _peek)r5   rl   r}   s      r6   r   zAsyncClient._peek+  sI      \''' ( 
 
 
 
 
 
 
 
 	
r8   )rm   rn   ro   wheresortpage	page_sizewhere_documentincludec                 Z   K   | j                             |||||||||	|

  
         d {V S )N)
rl   rk   r   r   rS   rT   r   r   r   r   )r'   _get)r5   rl   rk   r   r   rS   rT   r   r   r   r   s              r6   r   zAsyncClient._get2  sc       \&&') ' 
 
 
 
 
 
 
 
 	
r8   c                 N   K   | j                             ||||           d {V S )N)rl   rk   r   r   )r'   _delete)r5   rl   rk   r   r   s        r6   r   zAsyncClient._deleteM  sQ       \))')	 * 
 
 
 
 
 
 
 
 	
r8   )rm   rn   ro   	distancesquery_embeddings	n_resultsc                 R   K   | j                             ||||||           d {V S )N)rl   r   r   r   r   r   )r'   _query)r5   rl   r   r   r   r   r   s          r6   r   zAsyncClient._query[  sW       \(('-) ) 
 
 
 
 
 
 
 
 	
r8   c                 D   K   | j                                          d {V S rP   )r'   resetrR   s    r6   r   zAsyncClient.resetn  s,      \'')))))))))r8   c                 D   K   | j                                          d {V S rP   )r'   get_versionrR   s    r6   r   zAsyncClient.get_versionr  s,      \--/////////r8   c                 4    | j                                         S rP   )r'   get_settingsrR   s    r6   r   zAsyncClient.get_settingsv  s    |((***r8   c                 D   K   | j                                          d {V S rP   )r'   get_max_batch_sizerR   s    r6   r   zAsyncClient.get_max_batch_sizez  s,      \44666666666r8   )NN)NNN)NNNN)r|   )A__name__
__module____qualname____doc__r   __annotations__r   r%   strr   r&   r	   classmethodr   r7   r   r;   r   r0   rA   rC   r1   intrQ   r   r   r
   rV   rX   efDefaultEmbeddingFunctionr   r   r   r   r   boolr^   r   ra   rc   rg   ri   r   r   r   r   r   rr   ru   ry   r{   r   r   r    r!   r   r   r   r   r   r   r   r   r    r8   r6   r#   r#      s          !    FC   $Hc$$$ %(%XZZ	   	
 
   [, 
 %(	K KK K 	K
 
K K K [K 

 

 
 
 X [
 <L ! !s !c !QU ! ! ! X!
 !3 !4 ! ! ! X!c S T    8 . . . . X. CG
 
c]
3;C=
	/	"
 
 
 X
 
 
 
 
 X

  26 (B'))6:#
 

 -.
 %j)
	
 j23
 
 

 
 
 X
(  " (B'))6:
 

 TN
 %j)
	
 j23
 

 
 
 X
$  26 (B'))6:
 

 -.
 %j)
	
 j23
 

 
 
 X
$  #'59	

 



 3-

 12	


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

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

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

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

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

 sm
 }
 
 sm
 C=
 !/
 
 

 
 
 X
< "$24
 

 c]
 	

 !/
 

 
 
 
 
 (*PPP
 

 %
 	

 
 &
 
 

 
 
 X
$ *T * * * X* 03 0 0 0 X0 +h + + + X+ 7# 7 7 7 X7 7 7r8   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 )r/   r'   r(   r)   Nc                     t                                          |           | j                            t                    | _        d S rP   )super__init__r.   r2   r	   r'   )r5   r(   	__class__s     r6   r   zAsyncAdminClient.__init__  s6    """|,,^<<r8   rF   r%   c                 J   K   | j                             ||           d {V S NrG   )r'   create_databaser5   rF   r%   s      r6   r   z AsyncAdminClient.create_database  s3      \11tF1KKKKKKKKKr8   c                 J   K   | j                             ||           d {V S r   )r'   rM   r   s      r6   rM   zAsyncAdminClient.get_database  s3      \..D.HHHHHHHHHr8   c                 H   K   | j                             |           d {V S NrE   )r'   create_tenantrj   s     r6   r   zAsyncAdminClient.create_tenant  s1      \//T/:::::::::r8   c                 H   K   | j                             |           d {V S r   )r'   rH   rj   s     r6   rH   zAsyncAdminClient.get_tenant  s1      \,,$,777777777r8   r9   c                 P    t          j        |            | |j                  }|S )Nr+   )r   r-   r(   )r4   r9   r2   s      r6   r0   zAsyncAdminClient.from_system  s.     	5f===3000r8   )r   r   r   r	   r   r   r   r   r   r   r   r   rM   r   r   rH   r   r   r0   __classcell__)r   s   @r6   r/   r/     s        ,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 ; ; ; ; ; X; 8S 8V 8 8 8 X8  
   X [    r8   r/   )0rI   typingr   r   uuidr   	overridesr   chromadb.apir   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   chromadb.configr   r   r   r   chromadb.errorsr   chromadb.typesr   r   r    r!   "chromadb.utils.embedding_functionsutilsembedding_functionsr   r#   r/   r   r8   r6   <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 _7H    )=     r8   