
    ZiA                     V   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* d dl+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6  G d dee          Z7 G d dee          Z8d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)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	 dAd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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	 	 	 dBd"e+d#ee         d$ee"         d%ee,         ddf
d&            Z-ededdfd'            Z.e	 	 	 dBd(e/d)e+d*e0d+ee1         d,ee2         d-ee3         de'fd.            Z4e	 	 	 	 dCd)e+d(e/d*ee0         d+ee1         d,ee2         d-ee3         de'fd/            Z5e	 	 	 dBd)e+d(e/d*e0d+ee1         d,ee2         d-ee3         de'fd0            Z6ed)e+defd1            Z7edDd)e+d3ede8fd4            Z9eddddde:fd)e+d(ee/         d5ee;         dee         dee         d6ee<         d7e=de8fd8            Z>	 	 dAd)e+d(ee/         d5ee;         d6ee<         ddf
d9Z?edd2dde@fd)e+d:e0d(ee/         d;ed5ee;         d6ee<         d7e=deAfd<            ZBede'fd=            ZCedefd>            ZDedefd?            ZEedefd@            ZFdS )E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r2   )4overwrite_singleton_tenant_database_access_from_authuser_provided_tenantuser_provided_databaser/   r0   )r   _populate_data_from_system_systemr/   r0   instancer   r1   get_user_identityr   ;chroma_overwrite_singleton_tenant_database_access_from_authAsyncAdminClientfrom_systemr.   _validate_tenant_database_submit_client_start_event)clsr/   r0   r2   selfuser_identitymaybe_tenantmaybe_databases           V/root/projects/butler/venv/lib64/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-   rI   r2   )rC   rK   r/   r0   s       rH   from_system_asynczAsyncClient.from_system_async`   s4       !''&/JJJJJJJJJrJ   r   c                      t          d           )zNAsyncClient cannot be created synchronously. Use .from_system_async() instead.)NotImplementedError)rC   rK   s     rH   r@   zAsyncClient.from_systemk   s     "\
 
 	
rJ   c                 D   K   | j                                          d {V S N)r1   r=   rD   s    rH   r=   zAsyncClient.get_user_identityv   s,      \33555555555rJ   Nc                 `   K   |                      ||           d {V  || _        || _        d S Nr9   rA   r/   r0   )rD   r/   r0   s      rH   
set_tenantzAsyncClient.set_tenantz   sC      ,,FX,NNNNNNNNN rJ   c                 \   K   |                      | j        |           d {V  || _        d S rT   rU   )rD   r0   s     rH   set_databasezAsyncClient.set_database   s>      ,,DK(,SSSSSSSSS rJ   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[   r/   )r.   
get_tenanthttpxConnectError
ValueErrorr'   	Exceptionget_database)rD   r/   r0   es       rH   rA   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 rQ   )r1   	heartbeatrR   s    rH   re   zAsyncClient.heartbeat   s,      \++---------rJ   limitoffsetc                     K    j                             || j         j                   d {V } fd|D             S )Nr9   c                 <    g | ]}t          j        |           S ))clientmodel)r   r1   ).0rk   rD   s     rH   
<listcomp>z0AsyncClient.list_collections.<locals>.<listcomp>   s(    VVVet|5AAAVVVrJ   )r1   list_collectionsr/   r0   )rD   rf   rg   modelss   `   rH   rn   zAsyncClient.list_collections   sm       |446$+ 5 
 
 
 
 
 
 
 
 WVVVvVVVVrJ   c                 ^   K   | j                             | j        | j                   d {V S rT   )r1   count_collectionsr/   r0   rR   s    rH   rq   zAsyncClient.count_collections   sL      \33; 4 
 
 
 
 
 
 
 
 	
rJ   Fr[   schemaconfigurationmetadataembedding_functiondata_loaderget_or_createc           	         K   |i }|                     d          }t          ||           ||||d<   | j                            ||||| j        | j        |           d {V }	t          | j        |	||          S )Nru   )r[   rr   rs   rt   r/   r0   rw   rj   rk   ru   rv   )getr   r1   create_collectionr/   r0   r   )
rD   r[   rr   rs   rt   ru   rv   rw   configuration_efrk   s
             rH   r{   zAsyncClient.create_collection   s        M(,,-ABB6 0	
 	
 	
 ).>.F2DM./l44';]' 5 
 
 
 
 
 
 
 
 <1#	
 
 
 	
rJ   c                    K   | j                             || j        | j                   d {V }|j                            d          }t          ||           t          | j         |||          S )Nr[   r/   r0   ru   ry   )r1   get_collectionr/   r0   configuration_jsonrz   r   r   )rD   r[   ru   rv   rk   persisted_ef_configs         rH   r   zAsyncClient.get_collection   s       l11;] 2 
 
 
 
 
 
 
 

 $6::;OPP3 3	
 	
 	
 <1#	
 
 
 	
rJ   c                 N  K   |i }|                     d          }t          ||           ||||d<   | j                            ||||| j        | j                   d {V }|j                             d          }	t          ||	           t          | j        |||          S )Nru   )r[   rr   rs   rt   r/   r0   ry   )	rz   r   r1   get_or_create_collectionr/   r0   r   r   r   )
rD   r[   rr   rs   rt   ru   rv   r|   rk   r   s
             rH   r   z$AsyncClient.get_or_create_collection   s       M(,,-ABB6 0	
 	
 	
 ).>.F2DM./l;;';] < 
 
 
 
 
 
 
 
 $6::;OPP3 3	
 	
 	
 <1#	
 
 
 	
rJ   idnew_namenew_metadatanew_configurationc                 f   K   | j                             ||||| j        | j                   d {V S )N)r   r   r   r   r/   r0   )r1   _modifyr/   r0   )rD   r   r   r   r   s        rH   r   zAsyncClient._modify#  s[       \))%/;] * 
 
 
 
 
 
 
 
 	
rJ   c                 `   K   | j                             || j        | j                   d {V S )Nr~   )r1   delete_collectionr/   r0   rD   r[   s     rH   r   zAsyncClient.delete_collection4  sR      
 \33;] 4 
 
 
 
 
 
 
 
 	
rJ   idscollection_id
embeddings	metadatas	documentsurisc           
      j   K   | j                             ||||||| j        | j                   d {V S )N)r   r   r   r   r   r   r/   r0   )r1   _addr/   r0   )rD   r   r   r   r   r   r   s          rH   r   zAsyncClient._addC  sa       \&&'!;] ' 	
 	
 	
 	
 	
 	
 	
 	
 		
rJ   c           
      j   K   | j                             ||||||| j        | j                   d {V S N)r   r   r   r   r   r   r/   r0   )r1   _updater/   r0   rD   r   r   r   r   r   r   s          rH   r   zAsyncClient._updateX  a       \))'!;] * 	
 	
 	
 	
 	
 	
 	
 	
 		
rJ   c           
      j   K   | j                             ||||||| j        | j                   d {V S r   )r1   _upsertr/   r0   r   s          rH   r   zAsyncClient._upsertm  r   rJ   c                 H   K   | j                             |           d {V S )N)r   )r1   _count)rD   r   s     rH   r   zAsyncClient._count  sF      \((' ) 
 
 
 
 
 
 
 
 	
rJ   
   nc                 J   K   | j                             ||           d {V S )N)r   r   )r1   _peek)rD   r   r   s      rH   r   zAsyncClient._peek  sI      \''' ( 
 
 
 
 
 
 
 
 	
rJ   wherewhere_documentincludec                 l   K   | j                             |||||||| j        | j        	  	         d {V S )N)	r   r   r   rf   rg   r   r   r/   r0   )r1   _getr/   r0   )rD   r   r   r   rf   rg   r   r   s           rH   r   zAsyncClient._get  sd       \&&');] ' 

 

 

 

 

 

 

 

 
	
rJ   c                 j   K   | j                             ||||| j        | j                   d {V  d S )N)r   r   r   r   r/   r0   )r1   _deleter/   r0   )rD   r   r   r   r   s        rH   r   zAsyncClient._delete  se       l""');] # 
 
 	
 	
 	
 	
 	
 	
 	
 	
 	
rJ   query_embeddings	n_resultsc                 l   K   | j                             |||||||| j        | j        	  	         d {V S )N)	r   r   r   r   r   r   r   r/   r0   )r1   _queryr/   r0   )rD   r   r   r   r   r   r   r   s           rH   r   zAsyncClient._query  sd       \(('-);] ) 

 

 

 

 

 

 

 

 
	
rJ   c                 D   K   | j                                          d {V S rQ   )r1   resetrR   s    rH   r   zAsyncClient.reset  s,      \'')))))))))rJ   c                 D   K   | j                                          d {V S rQ   )r1   get_versionrR   s    rH   r   zAsyncClient.get_version  s,      \--/////////rJ   c                 4    | j                                         S rQ   )r1   get_settingsrR   s    rH   r   zAsyncClient.get_settings  s    |((***rJ   c                 D   K   | j                                          d {V S rQ   )r1   get_max_batch_sizerR   s    rH   r   zAsyncClient.get_max_batch_size  s,      \44666666666rJ   )NN)NNN)NNNN)r   )G__name__
__module____qualname____doc__r	   __annotations__r$   r/   strr#   r0   r   classmethodr%   rI   r&   rM   r   r@   r   r=   rV   rX   rA   intre   r   r   r   rn   rq   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    rJ   rH   r-   r-   )   sG	          !    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  $(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 7rJ   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?   r1   r2   r3   Nc                     t                                          |           | j                            t                    | _        d S rQ   )super__init__r;   r<   r   r1   )rD   r2   	__class__s     rH   r   zAsyncAdminClient.__init__  s6    """|,,^<<rJ   r[   r/   c                 J   K   | j                             ||           d {V S Nr\   )r1   create_databaserD   r[   r/   s      rH   r   z AsyncAdminClient.create_database  3      \11tF1KKKKKKKKKrJ   c                 J   K   | j                             ||           d {V S r   )r1   rb   r   s      rH   rb   zAsyncAdminClient.get_database  s3      \..D.HHHHHHHHHrJ   c                 J   K   | j                             ||           d {V S r   )r1   delete_databaser   s      rH   r   z AsyncAdminClient.delete_database  r   rJ   rf   rg   c                 L   K   | j                             |||           d {V S )N)rf   rg   r/   )r1   list_databases)rD   rf   rg   r/   s       rH   r   zAsyncAdminClient.list_databases  sL       \00v 1 
 
 
 
 
 
 
 
 	
rJ   c                 H   K   | j                             |           d {V S NrZ   )r1   create_tenantr   s     rH   r   zAsyncAdminClient.create_tenant  s1      \//T/:::::::::rJ   c                 H   K   | j                             |           d {V S r   )r1   r]   r   s     rH   r]   zAsyncAdminClient.get_tenant  s1      \,,$,777777777rJ   rK   c                 P    t          j        |            | |j                  }|S )Nr5   )r   r:   r2   )rC   rK   r<   s      rH   r@   zAsyncAdminClient.from_system  s.     	5f===3000rJ   )r   r   r   r   r   r%   r   r   r$   r   r   r(   rb   r   r   r   r   r   r   r)   r]   r   r&   r@   __classcell__)r   s   @rH   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 [    rJ   r?   )9r^   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"   chromadb.configr#   r$   r%   r&   chromadb.errorsr'   chromadb.typesr(   r)   r*   r+   r-   r?   r   rJ   rH   <module>r      sw    % % % % % % % %             & & & & & & = = = = = = 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r7 r7 r7 r7 r7$n r7 r7 r7n. . . . .)= . . . . .rJ   