
    _j=Y                        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-m.Z. d dl/m0Z0m1Z1m2Z3 d dl4m5Z5 d dl6Z6d dl m7Z7m8Z8m9Z9m:Z:m;Z;m<Z< d dl=m>Z> d dl?m@Z@ d dlAZAd dlBZB eBjC                    dk    rd dlDZDn eBjC                    dk    rd dlEZE G d de          ZFd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)DeleteResult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
dQd            Ze
dQd	            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
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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/e0         deded-e-de1fd.            Z2e
eee-j.        fde$deded-e-def
d/            Z3e
d0eefde$d1ededede4f
d2            Z5e
ddddde6eefde$d3ee7         d4ee8         dee         dee         d5ee9         d6e:dedede4fd7            Z;e
dddeefd3e7de$d8e<d9ee=         d:ee>         d;ee?         dedede!fd<            Z@e
ddddeefde$d3e7d8ee<         d9ee=         d:ee>         d;ee?         dedede!fd=            ZAe
dddeefde$d3e7d8e<d9ee=         d:ee>         d;ee?         dedede!fd>            ZBe
dd0ddeCeefde$d?e<d3ee7         d@ed4ee8         d5ee9         d6e:dededeDfdA            ZEe
ddddeefde$d3ee7         d4ee8         d5ee9         dee         dededeFfdB            ZGe
de!fdC            ZHe
defdD            ZIe
deJfdE            ZKe
defdF            ZLe
deefdGed
edHe$dIedJeeMeeNf                  dededeOdKe!f         fdL            ZPe
eefd
edHe$dededdKf
dM            ZQe
deefd
edHe$dNe!dedede!fdO            ZRe
deSfdP            ZT xZUS )R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 )Nr4   r      )super__init__requirer   r9   platformr:   resource	getrlimitRLIMIT_NOFILEctypeswindllmsvcrt_getmaxstdior8   )selfr:   max_file_handles	__class__s      N/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/chromadb/api/rust.pyr>   zRustBindingsAPI.__init__O   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)rX   sqlite_db_configpersist_pathr8   )_systemsettingsr?   chromadb_rust_bindingsMigrationHashMD5SHA256MigrationModeApplyValidateSqliteDBConfigBindingsr8   r7   )rH   rZ   sqlite_persist_pathrU   hash_type_bindingsrV   migration_mode_bindingssqlite_configs           rK   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	
 
 
rL   c                 
    | ` d S N)r7   rH   s    rK   stopzRustBindingsAPI.stop   s    MMMrL   nametenantc                 8    | j                             ||          S rl   )r7   create_databaserH   ro   rp   s      rK   rr   zRustBindingsAPI.create_database       },,T6:::rL   c                 b    | j                             ||          }|j        |j        |j        dS )Nidro   rp   )r7   get_databaserw   ro   rp   rH   ro   rp   databases       rK   rx   zRustBindingsAPI.get_database   s7    =--dF;;+Mo
 
 	
rL   c                 8    | j                             ||          S rl   )r7   delete_databasers   s      rK   r|   zRustBindingsAPI.delete_database   rt   rL   limitoffsetc                 R    | j                             |||          }d |D             S )Nc                 8    g | ]}|j         |j        |j        d S )rv   rv   ).0rz   s     rK   
<listcomp>z2RustBindingsAPI.list_databases.<locals>.<listcomp>   s@     
 
 
 	 k "/ 
 
 
rL   )r7   list_databases)rH   r}   r~   rp   	databasess        rK   r   zRustBindingsAPI.list_databases   s@     M00GG	
 
 &
 
 
 	
rL   c                 6    | j                             |          S rl   )r7   create_tenant)rH   ro   s     rK   r   zRustBindingsAPI.create_tenant   s    }**4000rL   c                 `    | j                             |          }t          |j                  S )N)ro   )r7   
get_tenantr)   ro   rs   s      rK   r   zRustBindingsAPI.get_tenant   s*    ))$//6;''''rL   c                 4    | j                                         S rl   )r7   	heartbeatrm   s    rK   r   zRustBindingsAPI.heartbeat   s    }&&(((rL   rz   c                 8    | j                             ||          S rl   )r7   count_collections)rH   rp   rz   s      rK   r   z!RustBindingsAPI.count_collections   s     }..vx@@@rL   c                 T    | j                             ||||          }d |D             S )Nc                     g | ]A}t          |j        |j        |j        |j        |j        |j        |j        |j                   BS ))rw   ro   serialized_schemaconfiguration_jsonmetadata	dimensionrp   rz   )	CollectionModelrw   ro   schemaconfigurationr   r   rp   rz   )r   
collections     rK   r   z4RustBindingsAPI.list_collections.<locals>.<listcomp>   sg     
 
 
  =_","3#-#;#,$.!(#,	 	 	
 
 
rL   )r7   list_collections)rH   r}   r~   rp   rz   collectionss         rK   r   z RustBindingsAPI.list_collections   sB     m44UFFHUU
 
 *
 
 
 	
rL   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rw   ro   r   r   r   r   rp   rz   )r9   capturer    strrw   r   jsondumpsserialize_to_jsonr7   create_collectionr   ro   r   r   r   r   rp   rz   )rH   ro   r   r   r   r   rp   rz   configuration_json_str
schema_strr   collection_models               rK   r   z!RustBindingsAPI.create_collection   s    	%--' #B  	
 	
 	
  	*%Px& &"" &*" 	F$<$<$>$>??JJJ]44"
 

 +})7(/( *$(	
 	
 	
  rL   c           
          | j                             |||          }t          |j        |j        |j        |j        |j        |j        |j	        |j
                  S Nr   )r7   get_collectionr   rw   ro   r   r   r   r   rp   rz   )rH   ro   rp   rz   r   s        rK   r   zRustBindingsAPI.get_collection	  sb     ]11$II
})7(/( *$(	
 	
 	
 		
rL   collection_idc           
          | j                             t          |          ||          }t          |j        |j        |j        |j        |j        |j	        |j
        |j                  S r   )r7   get_collection_by_idr   r   rw   ro   r   r   r   r   rp   rz   )rH   r   rp   rz   r   s        rK   r   z$RustBindingsAPI.get_collection_by_id  sk     ]77M8J8JFT\]]
})7(/( *$(	
 	
 	
 		
rL   c           	      8    |                      ||||d||          S )NT)r   )rH   ro   r   r   r   rp   rz   s          rK   get_or_create_collectionz(RustBindingsAPI.get_or_create_collection/  s+     %%&-4
 
 	
rL   c                 >    | j                             |||           d S rl   )r7   delete_collectionry   s       rK   r   z!RustBindingsAPI.delete_collection=  s$     	''fh?????rL   rw   new_namenew_metadatanew_configurationc                     |rt          |          }nd }| j                            t          |          |||           d S rl   )r   r7   update_collectionr   )rH   rw   r   r   r   rp   rz   new_configuration_json_strs           rK   _modifyzRustBindingsAPI._modifyF  s^      	.)T!* *&& *.&''GGX|-G	
 	
 	
 	
 	
rL   c                      t          d          )Nz6Collection forking is not implemented for Local ChromaNotImplementedError)rH   r   r   rp   rz   s        rK   _forkzRustBindingsAPI._forkZ  s     "D
 
 	
rL   c                      t          d          )Nz.Fork count is not implemented for Local Chromar   rH   r   rp   rz   s       rK   _fork_countzRustBindingsAPI._fork_countf  s     "<
 
 	
rL   IndexingStatusc                      t          d          )Nz3Indexing status is not implemented for Local Chromar   r   s       rK   _get_indexing_statusz$RustBindingsAPI._get_indexing_statusq  s     ""WXXXrL   searches
read_levelc                      t          d          )Nz*Search is not implemented for Local Chromar   )rH   r   r   rp   rz   r   s         rK   _searchzRustBindingsAPI._searchz  s     ""NOOOrL   c                 T    | j                             t          |          ||          S rl   )r7   countr   )rH   r   rp   rz   r   s        rK   _countzRustBindingsAPI._count  s&     }""3}#5#5vxHHHrL   
   nc                 @    |                      ||||t                    S )N)r}   rp   rz   include)_getr$   )rH   r   r   rp   rz   s        rK   _peekzRustBindingsAPI._peek  s.     yy6  
 
 	
rL   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   )lenr9   r   r   r   r7   getr   r   r   r   r   r   r   r   )rH   r   r   r   r}   r~   r   r   rp   rz   
ids_amountrust_responses               rK   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

 

 !$/#-##-
 
 
 	
rL   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)r9   r   r   r   r   r7   add)	rH   r   r   r   r   r   r   rp   rz   s	            rK   _addzRustBindingsAPI._add  s     	%-- #M 2 2s88*3*?c#hhhQ+4+@s3xxxa&*&6#c(((A  	
 	
 	
 }  	
 	
 		
rL   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   )r9   r   r   r   r   r7   update	rH   r   r   r   r   r   r   rp   rz   s	            rK   _updatezRustBindingsAPI._update  s     	%--! #M 2 2!#hh3= DJ109@c)nnnq1:As9~~~'+2#d)))  		
 		
 		
 }##	
 	
 		
rL   c	           
      ^    | j                             t          |          |||||||          S rl   )r7   upsertr   r   s	            rK   _upsertzRustBindingsAPI._upsert  s>     }##	
 	
 		
rL   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   r9   r   r   r   r7   queryr   r   r   r   r   r   r   r   r   )rH   r   r   r   r   r   r   r   rp   rz   r   r   r   s                rK   _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

 

 !$/#-##-#-	
 	
 	
 		
rL   c           	      @   | j                             t          |          ||rt          j        |          nd |rt          j        |          nd |||          }| j                            t          t          |          |                     t          |          S )N)r   delete_amount)deleted)	r7   deleter   r   r   r9   r   r   r!   )	rH   r   r   r   r   r}   rp   rz   r   s	            rK   _deletezRustBindingsAPI._delete]  s     -&&!&0DJuD*8BDJ~&&&d
 
 	%--! #M 2 2%  	
 	
 	
 G,,,,rL   c                 4    | j                                         S rl   )r7   resetrm   s    rK   r  zRustBindingsAPI.reset{  s    }""$$$rL   c                 4    | j                                         S rl   )r7   get_versionrm   s    rK   r  zRustBindingsAPI.get_version  s    }((***rL   c                     | j         j        S rl   )r[   r\   rm   s    rK   get_settingszRustBindingsAPI.get_settings  s    |$$rL   c                 4    | j                                         S rl   )r7   get_max_batch_sizerm   s    rK   r  z"RustBindingsAPI.get_max_batch_size  s    }//111rL   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   )rH   r	  ro   r
  r  r  rp   rz   s           rK   attach_functionzRustBindingsAPI.attach_function  s     "]
 
 	
rL   c                      t          d          r  r   )rH   ro   r
  rp   rz   s        rK   get_attached_functionz%RustBindingsAPI.get_attached_function  s     "]
 
 	
rL   delete_outputc                      t          d          r  r   )rH   ro   r
  r  rp   rz   s         rK   detach_functionzRustBindingsAPI.detach_function  s     "]
 
 	
rL   c                 <    t          dt          t          g          S )N )user_idrp   r   )r   r   r   rm   s    rK   get_user_identityz!RustBindingsAPI.get_user_identity  s%    !'(
 
 
 	
rL   )rM   N)V__name__
__module____qualname__r]   re   __annotations__intr   r   r>   r2   rj   rn   r   r   rr   r(   rx   r|   r,   r-   r   r   r)   r   r   r   r   r   r   r&   r   r   boolr   r   r3   r   r   r   r   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   r1   r  r  r  r   r  __classcell__)rJ   s   @rK   r6   r6   J   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
$  %(	
 

 
 	

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

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

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

 	
 
	
 	
 	
 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  %( ) 7I 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-: %t % % % X% +S + + + X+ %h % % % X% 2C 2 2 2 X2  ,0$(
 

 
 "	

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

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

 
 
 

 
 
 X
 
< 
 
 
 X
 
 
 
 
rL   r6   )G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&   r'   chromadb.typesr(   r)   r*   r   "chromadb.execution.expression.planr+   r]   r,   r-   r.   r/   r0   r1   	overridesr2   uuidr3   r   r@   r:   rA   rD   r6    rL   rK   <module>r0     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v	
 v	
 v	
 v	
 v	
i v	
 v	
 v	
 v	
 v	
rL   