
    Zi]U                        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 d dlmZ erd dl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Z d d	l m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& d d
l'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- d dl.m/Z/m0Z0m1Z2 d dl3m4Z4 d dl5Z5d dl m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; d dl<m=Z= d dl>m?Z? d dl@Z@d dlAZA eAjB                    dk    rd dlCZCn eAjB                    dk    rd dlDZD G d de          ZEdS )    )TYPE_CHECKING)CollectionMetadata
Embeddings	GetResultIDsWhereWhereDocumentInclude	Documents	MetadatasQueryResultURIs)	ServerAPI)AttachedFunction)CreateCollectionConfigurationUpdateCollectionConfiguration+create_collection_configuration_to_json_str+update_collection_configuration_to_json_str)UserIdentity)DEFAULT_DATABASEDEFAULT_TENANTSettingsSystem)ProductTelemetryClient)CollectionAddEventCollectionDeleteEventCollectionGetEventCollectionUpdateEventCollectionQueryEventClientCreateCollectionEvent)IncludeMetadataDocuments!IncludeMetadataDocumentsDistances"IncludeMetadataDocumentsEmbeddings	ReadLevelSchemaSearchResult)DatabaseTenant
Collection)SearchN)OptionalSequenceListDictAnyTuple)override)UUIDWindowsc                       e Zd ZU ej        ed<   eed<   eed<   def fdZ	e
dOd            Ze
dOd	            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
defd            Ze
eefdededefd            Ze
ddeefdee         dee         dededee         f
d            Ze
ddddeefd
edee         dee         dee          de!dededefd            Z"e
eefd
edededefd            Z#e
dddeefd
edee         dee         dee          dededefd            Z$e
eefd
edededdfd             Z%e
dddeefd!e&d"ee         d#ee          d$ee'         dededdfd%            Z(e
eefd&e&d"edededef
d'            Z)e
eefd&e&dededd(fd)            Z*e
eee+j,        fd&e&d*e-e.         deded+e+de/fd,            Z0e
eefd&e&dededefd-            Z1e
d.eefd&e&d/ededede2f
d0            Z3e
ddddde4eefd&e&d1ee5         d2ee6         dee         dee         d3ee7         d4e8dedede2fd5            Z9e
dddeefd1e5d&e&d6e:d7ee;         d8ee<         d9ee=         dedede!fd:            Z>e
ddddeefd&e&d1e5d6ee:         d7ee;         d8ee<         d9ee=         dedede!fd;            Z?e
dddeefd&e&d1e5d6e:d7ee;         d8ee<         d9ee=         dedede!fd<            Z@e
dd.ddeAeefd&e&d=e:d1ee5         d>ed2ee6         d3ee7         d4e8dededeBfd?            ZCe
dddeefd&e&d1ee5         d2ee6         d3ee7         dededdfd@            ZDe
de!fdA            ZEe
defdB            ZFe
deGfdC            ZHe
defdD            ZIe
deefdEed
edFe&dGedHeeJeeKf                  dededeLdIe!f         fdJ            ZMe
eefd
edFe&dededdIf
dK            ZNe
deefd
edFe&dLe!dedede!fdM            ZOe
dePfdN            ZQ xZRS )PRustBindingsAPIbindingshnsw_cache_sizeproduct_telemetry_clientsystemc                 Z   t                                          |           |                     t                    | _        t          j                    dk    r%t          j        t          j	                  d         }n#t          j        j                                        }|dz  | _        d S )Nr3   r      )super__init__requirer   r8   platformr9   resource	getrlimitRLIMIT_NOFILEctypeswindllmsvcrt_getmaxstdior7   )selfr9   max_file_handles	__class__s      N/root/projects/butler/venv/lib64/python3.11/site-packages/chromadb/api/rust.pyr=   zRustBindingsAPI.__init__N   s       (,5K(L(L%?	))'1(2HII!L%}3@@BB  	    returnNc                 ^   | j         j                            d          r%| j         j                            d          }|dz   }nd }d }| j         j                            d          }|dk    rt          j        j        nt          j        j        }| j         j                            d          }|dk    rt          j        j        nt          j        j	        }t          j
        |||          }t          j        | j         j                            d	          ||| j        
          | _        d S )Nis_persistentpersist_directoryz/chroma.sqlite3migrations_hash_algorithmmd5
migrationsapply)	hash_typemigration_modeurlallow_reset)rW   sqlite_db_configpersist_pathr7   )_systemsettingsr>   chromadb_rust_bindingsMigrationHashMD5SHA256MigrationModeApplyValidateSqliteDBConfigBindingsr7   r6   )rG   rY   sqlite_persist_pathrT   hash_type_bindingsrU   migration_mode_bindingssqlite_configs           rJ   startzRustBindingsAPI.start]   s:    < ((99 	'<0889LMML".1B"BL"&L)112MNN	 E!! #044'5< 	
 .66|DD (( #066'5> 	 
 /=(2#
 
 
 /7-55mDD*% 0	
 
 
rK   c                 
    | ` d S N)r6   rG   s    rJ   stopzRustBindingsAPI.stop   s    MMMrK   nametenantc                 8    | j                             ||          S rk   )r6   create_databaserG   rn   ro   s      rJ   rq   zRustBindingsAPI.create_database       },,T6:::rK   c                 b    | j                             ||          }|j        |j        |j        dS )Nidrn   ro   )r6   get_databaserv   rn   ro   rG   rn   ro   databases       rJ   rw   zRustBindingsAPI.get_database   s7    =--dF;;+Mo
 
 	
rK   c                 8    | j                             ||          S rk   )r6   delete_databaserr   s      rJ   r{   zRustBindingsAPI.delete_database   rs   rK   limitoffsetc                 R    | j                             |||          }d |D             S )Nc                 8    g | ]}|j         |j        |j        d S )ru   ru   ).0ry   s     rJ   
<listcomp>z2RustBindingsAPI.list_databases.<locals>.<listcomp>   s@     
 
 
 	 k "/ 
 
 
rK   )r6   list_databases)rG   r|   r}   ro   	databasess        rJ   r   zRustBindingsAPI.list_databases   s@     M00GG	
 
 &
 
 
 	
rK   c                 6    | j                             |          S rk   )r6   create_tenant)rG   rn   s     rJ   r   zRustBindingsAPI.create_tenant   s    }**4000rK   c                 `    | j                             |          }t          |j                  S )N)rn   )r6   
get_tenantr(   rn   rr   s      rJ   r   zRustBindingsAPI.get_tenant   s*    ))$//6;''''rK   c                 4    | j                                         S rk   )r6   	heartbeatrl   s    rJ   r   zRustBindingsAPI.heartbeat   s    }&&(((rK   ry   c                 8    | j                             ||          S rk   )r6   count_collections)rG   ro   ry   s      rJ   r   z!RustBindingsAPI.count_collections   s     }..vx@@@rK   c                 T    | j                             ||||          }d |D             S )Nc                     g | ]A}t          |j        |j        |j        |j        |j        |j        |j        |j                   BS ))rv   rn   serialized_schemaconfiguration_jsonmetadata	dimensionro   ry   )	CollectionModelrv   rn   schemaconfigurationr   r   ro   ry   )r   
collections     rJ   r   z4RustBindingsAPI.list_collections.<locals>.<listcomp>   sg     
 
 
  =_","3#-#;#,$.!(#,	 	 	
 
 
rK   )r6   list_collections)rG   r|   r}   ro   ry   collectionss         rJ   r   z RustBindingsAPI.list_collections   sB     m44UFFHUU
 
 *
 
 
 	
rK   Fr   r   r   get_or_createc           
         | j                             t          t          t                                         |rt          ||          }nd }|r't          j        |                                          }	nd }	| j	        
                    |||	||||          }
t          |
j        |
j        |
j        |
j        |
j        |
j        |
j        |
j                  }|S )N)collection_uuidrv   rn   r   r   r   r   ro   ry   )r8   capturer    strrv   r   jsondumpsserialize_to_jsonr6   create_collectionr   rn   r   r   r   r   ro   ry   )rG   rn   r   r   r   r   ro   ry   configuration_json_str
schema_strr   collection_models               rJ   r   z!RustBindingsAPI.create_collection   s    	%--' #B  	
 	
 	
  	*%Px& &"" &*" 	F$<$<$>$>??JJJ]44"
 

 +})7(/( *$(	
 	
 	
  rK   c           
          | j                             |||          }t          |j        |j        |j        |j        |j        |j        |j	        |j
                  S )Nr   )r6   get_collectionr   rv   rn   r   r   r   r   ro   ry   )rG   rn   ro   ry   r   s        rJ   r   zRustBindingsAPI.get_collection  sb     ]11$II
})7(/( *$(	
 	
 	
 		
rK   c           	      8    |                      ||||d||          S )NT)r   )rG   rn   r   r   r   ro   ry   s          rJ   get_or_create_collectionz(RustBindingsAPI.get_or_create_collection  s+     %%&-4
 
 	
rK   c                 >    | j                             |||           d S rk   )r6   delete_collectionrx   s       rJ   r   z!RustBindingsAPI.delete_collection)  s$     	''fh?????rK   rv   new_namenew_metadatanew_configurationc                     |rt          |          }nd }| j                            t          |          |||           d S rk   )r   r6   update_collectionr   )rG   rv   r   r   r   ro   ry   new_configuration_json_strs           rJ   _modifyzRustBindingsAPI._modify2  s^      	.)T!* *&& *.&''GGX|-G	
 	
 	
 	
 	
rK   collection_idc                      t          d          )Nz6Collection forking is not implemented for Local ChromaNotImplementedError)rG   r   r   ro   ry   s        rJ   _forkzRustBindingsAPI._forkF  s     "D
 
 	
rK   IndexingStatusc                      t          d          )Nz3Indexing status is not implemented for Local Chromar   rG   r   ro   ry   s       rJ   _get_indexing_statusz$RustBindingsAPI._get_indexing_statusR  s     ""WXXXrK   searches
read_levelc                      t          d          )Nz*Search is not implemented for Local Chromar   )rG   r   r   ro   ry   r   s         rJ   _searchzRustBindingsAPI._search[  s     ""NOOOrK   c                 T    | j                             t          |          ||          S rk   )r6   countr   r   s       rJ   _countzRustBindingsAPI._countf  s&     }""3}#5#5vxHHHrK   
   nc                 @    |                      ||||t                    S )N)r|   ro   ry   include)_getr#   )rG   r   r   ro   ry   s        rJ   _peekzRustBindingsAPI._peeko  s.     yy6  
 
 	
rK   idswherewhere_documentr   c
                    |rt          |          nd}
| j                            t          t	          |          |
|r|ndd|v r|
ndd|v r|
ndd|v r|
nd                     | j                            t	          |          ||rt          j        |          nd ||pd|rt          j        |          nd |||		  	        }t          |j
        |j        |j        |j        |d |j                  S )Nr   	metadatas	documentsuris)r   	ids_countr|   include_metadatainclude_documentsinclude_uris)r   
embeddingsr   r   includeddatar   )lenr8   r   r   r   r6   getr   r   r   r   r   r   r   r   )rG   r   r   r   r|   r}   r   r   ro   ry   
ids_amountrust_responses               rJ   r   zRustBindingsAPI._get  s7    "%+SXXX!
%-- #M 2 2$$+ee!/:g/E/E10;w0F0F**A+1W+<+<ZZ!  		
 		
 		
 ))!&0DJuDKa*8BDJ~&&&d

 

 !$/#-##-
 
 
 	
rK   r   r   r   r   c	                 P   | j                             t          t          |          t	          |          |t	          |          nd|t	          |          nd|t	          |          nd                     | j                            |t          |          ||||||          S )Nr   )r   
add_amountwith_metadatawith_documents	with_uris)r8   r   r   r   r   r6   add)	rG   r   r   r   r   r   r   ro   ry   s	            rJ   _addzRustBindingsAPI._add  s     	%-- #M 2 2s88*3*?c#hhhQ+4+@s3xxxa&*&6#c(((A  	
 	
 	
 }  	
 	
 		
rK   c	                 t   | j                             t          t          |          t	          |          |rt	          |          nd|rt	          |          nd|rt	          |          nd|rt	          |          nd                     | j                            t          |          |||||||          S )Nr   )r   update_amountwith_embeddingsr   r   r   )r8   r   r   r   r   r6   update	rG   r   r   r   r   r   r   ro   ry   s	            rJ   _updatezRustBindingsAPI._update  s     	%--! #M 2 2!#hh3= DJ109@c)nnnq1:As9~~~'+2#d)))  		
 		
 		
 }##	
 	
 		
rK   c	           
      ^    | j                             t          |          |||||||          S rk   )r6   upsertr   r   s	            rJ   _upsertzRustBindingsAPI._upsert  s>     }##	
 	
 		
rK   query_embeddings	n_resultsc
                 "   t          |          }
|rt          |          nd}| j                            t          t	          |          |
||||
nd||
ndd|v r|
ndd|v r|
ndd|v r|
ndd|v r|
nd
  
                   | j                            t	          |          ||||rt          j        |          nd |rt          j        |          nd |||		  	        }t          |j
        |j        |j        |j        |d |j        |j                  S )Nr   r   r   r   	distances)
r   query_amountfiltered_ids_amountr   with_metadata_filterwith_document_filterinclude_metadatasr   r   include_distances)r   r   r   r   r   r   r   r   )r   r8   r   r   r   r6   queryr   r   r   r   r   r   r   r   r   )rG   r   r   r   r   r   r   r   ro   ry   r   r   r   s                rJ   _queryzRustBindingsAPI._query  sl    +,,*-4c#hhh1%--  #M 2 2)$7#5:5F\\A5C5O\\UV2=2H2H,,a2=2H2H,,a-3w->->\\A2=2H2H,,a  	
 	
 	
 ++!&0DJuD*8BDJ~&&&d

 

 !$/#-##-#-	
 	
 	
 		
rK   c                    | j                             t          t          |          d                     | j                            t          |          ||rt          j        |          nd |rt          j        |          nd ||          S )Nr   )r   delete_amount)r8   r   r   r   r6   deleter   r   )rG   r   r   r   r   ro   ry   s          rJ   _deletezRustBindingsAPI._delete=  s     	%--! !$M 2 2	  	
 	
 	
 }##!&0DJuD*8BDJ~&&&d
 
 	
rK   c                 4    | j                                         S rk   )r6   resetrl   s    rJ   r   zRustBindingsAPI.resetY  s    }""$$$rK   c                 4    | j                                         S rk   )r6   get_versionrl   s    rJ   r   zRustBindingsAPI.get_version]  s    }((***rK   c                     | j         j        S rk   )rZ   r[   rl   s    rJ   get_settingszRustBindingsAPI.get_settingsa  s    |$$rK   c                 4    | j                                         S rk   )r6   get_max_batch_sizerl   s    rJ   r  z"RustBindingsAPI.get_max_batch_sizee  s    }//111rK   function_idinput_collection_idoutput_collectionparamsr   c                      t          d          zPAttached functions are not supported in the Rust bindings (local embedded mode).zAttached functions are only supported when connecting to a Chroma server via HttpClient. The Rust bindings (embedded mode) do not support attached function operations.r   )rG   r  rn   r  r  r  ro   ry   s           rJ   attach_functionzRustBindingsAPI.attach_functioni  s     "]
 
 	
rK   c                      t          d          r  r   )rG   rn   r  ro   ry   s        rJ   get_attached_functionz%RustBindingsAPI.get_attached_functionz  s     "]
 
 	
rK   delete_outputc                      t          d          r  r   )rG   rn   r  r  ro   ry   s         rJ   detach_functionzRustBindingsAPI.detach_function  s     "]
 
 	
rK   c                 <    t          dt          t          g          S )N )user_idro   r   )r   r   r   rl   s    rJ   get_user_identityz!RustBindingsAPI.get_user_identity  s%    !'(
 
 
 	
rK   )rL   N)S__name__
__module____qualname__r\   rd   __annotations__intr   r   r=   r1   ri   rm   r   r   rq   r'   rw   r{   r+   r,   r   r   r(   r   r   r   r   r   r   r%   r   r   boolr   r   r   r   r2   r   r   r   r   r$   INDEX_AND_WALr-   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   r  r
  r  r   r  __classcell__)rI   s   @rJ   r5   r5   I   s<        $----4444
v 
 
 
 
 
 
  
  
  
 X 
D    X
 7E ; ;C ; ;$ ; ; ; X; 4B 
 
 
c 
x 
 
 
 X
 7E ; ;C ; ;$ ; ; ; X;   $ $$	
 
}
 
 	

 
(	
 
 
 X
  1# 1$ 1 1 1 X1 (s (v ( ( ( X( )3 ) ) ) X) *<LA AA69A	A A A XA
   $ $$(
 
}
 
 	

 
 
/	"
 
 
 X
,  $(AE15#$(1  1 1   1    =>	1 
 -.1  1  1  1  
1  1  1  X1 f  %(	
 

 
 	

 

 
 
 X
$  $(AE15$(
 

  
   =>	

 -.
 
 
 

 
 
 X
  %(	@ @@ @ 	@
 
@ @ @ X@  #'59EI$(
 

 3-
 12	

 $$AB
 
 
 

 
 
 X
& 
 %(	
 	
	
 	
 		

 	
 
	
 	
 	
 X	
  %(	Y YY Y 	Y
 
Y Y Y XY 
 %( ) 7P PP v,P 	P
 P P 
P P P XP  %(	I II I 	I
 
I I I XI  $(
 

 
 	

 
 

 
 
 X
  "!%# $263$(,
 ,
,
 c],
 	,

 },
 ,
 !/,
 ,
 ,
 ,
 
,
 ,
 ,
 X,
\  *.)-#$(
 

 
 	

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

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

 I&
 I&
 tn
 
 
 

 
 
 X
, 
 "!%26<$(2
 2
2
 %2
 c]	2

 2
 2
 !/2
 2
 2
 2
 
2
 2
 2
 X2
h  "!%26$(
 

 c]
 	

 !/
 
 
 

 
 
 X
6 %t % % % X% +S + + + X+ %h % % % X% 2C 2 2 2 X2  ,0$(
 

 
 "	

 
 c3h(
 
 
 
!4'	(
 
 
 X
  
 %(
 

 "
 	

 
 

 
 
 X
 
 $$(
 

 "
 	

 
 
 

 
 
 X
 
< 
 
 
 X
 
 
 
 
rK   r5   )Ftypingr   chromadbr   r   r   r   r   r	   r
   r   r   r   r   chromadb.apir   $chromadb.api.models.AttachedFunctionr   %chromadb.api.collection_configurationr   r   r   r   chromadb.authr   chromadb.configr   r   r   r   chromadb.telemetry.productr   !chromadb.telemetry.product.eventsr   r   r   r   r   r    chromadb.api.typesr!   r"   r#   r$   r%   r&   chromadb.typesr'   r(   r)   r   "chromadb.execution.expression.planr*   r\   r+   r,   r-   r.   r/   r0   	overridesr1   uuidr2   r   r?   r9   r@   rC   r5    rK   rJ   <module>r)     s                                        # " " " " " FEEEEEE            ' & & & & & N N N N N N N N N N N N = = = = = =                               K J J J J J J J J J 5 5 5 5 5 5     > = = = = = = = = = = = = = = =              8?	!!OOOOX_)##MMMU	
 U	
 U	
 U	
 U	
i U	
 U	
 U	
 U	
 U	
rK   