
    ei]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 eAj                         dk7  rd dlCZCn eAj                         dk(  rd dlDZD G d de      ZEy)    )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                   4    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+jX                  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                 8   t         |   |       | j                  t              | _        t        j                         dk7  r't        j                  t        j                        d   }n(t        j                  j                  j                         }|dz  | _        y )Nr3   r      )super__init__requirer   r8   platformr9   resource	getrlimitRLIMIT_NOFILEctypeswindllmsvcrt_getmaxstdior7   )selfr9   max_file_handles	__class__s      [/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/chromadb/api/rust.pyr=   zRustBindingsAPI.__init__N   s{     (,5K(L%??	)'11(2H2HI!L%}}33@@B  	    returnNc                    | j                   j                  j                  d      r+| j                   j                  j                  d      }|dz   }nd }d }| j                   j                  j                  d      }|dk(  rt        j                  j
                  nt        j                  j                  }| j                   j                  j                  d      }|dk(  rt        j                  j                  nt        j                  j                  }t        j                  |||      }t        j                  | j                   j                  j                  d	      ||| j                  
      | _        y )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]   s9    <<  ((9<<00889LML".1B"BL"&LL))112MN	 E! #0044'55<< 	
 ..66|D ( #0066'55>> 	 
 /==(2#
 /77--55mD*% 00	
rK   c                     | ` y N)r6   rG   s    rJ   stopzRustBindingsAPI.stop   s    MrK   nametenantc                 :    | j                   j                  ||      S rk   )r6   create_databaserG   rn   ro   s      rJ   rq   zRustBindingsAPI.create_database       }},,T6::rK   c                     | j                   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;++MMoo
 	
rK   c                 :    | j                   j                  ||      S rk   )r6   delete_databaserr   s      rJ   r{   zRustBindingsAPI.delete_database   rs   rK   limitoffsetc                     | j                   j                  |||      }|D cg c]&  }|j                  |j                  |j                  d( c}S c c}w ru   )r6   list_databasesrv   rn   ro   )rG   r|   r}   ro   	databasesry   s         rJ   r   zRustBindingsAPI.list_databases   sW     MM00G	 &
 	 kk "//
 	
 
s   +Ac                 8    | j                   j                  |      S rk   )r6   create_tenant)rG   rn   s     rJ   r   zRustBindingsAPI.create_tenant   s    }}**400rK   c                 d    | j                   j                  |      }t        |j                        S )N)rn   )r6   
get_tenantr(   rn   rr   s      rJ   r   zRustBindingsAPI.get_tenant   s%    ))$/6;;''rK   c                 6    | j                   j                         S rk   )r6   	heartbeatrl   s    rJ   r   zRustBindingsAPI.heartbeat   s    }}&&((rK   ry   c                 :    | j                   j                  ||      S rk   )r6   count_collections)rG   ro   ry   s      rJ   r   z!RustBindingsAPI.count_collections   s     }}..vx@@rK   c                 *   | j                   j                  ||||      }|D cg c]e  }t        |j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                        g c}S c c}w )N)rv   rn   serialized_schemaconfiguration_jsonmetadata	dimensionro   ry   )r6   list_collectionsCollectionModelrv   rn   schemaconfigurationr   r   ro   ry   )rG   r|   r}   ro   ry   collections
collections          rJ   r   z RustBindingsAPI.list_collections   s     mm44UFFHU *
  ==__","3"3#-#;#;#,,$..!((#,,	
 	
 
s   A*BFr   r   r   get_or_createc           
         | j                   j                  t        t        t                           |rt        ||      }nd }|r$t        j                  |j                               }	nd }	| j                  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$<$<$>?JJ]]44"

 +}})77(//(( **$$((	
  rK   c           
         | j                   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  sm     ]]11$I
}})77(//(( **$$((	
 		
rK   c           	      0    | j                  ||||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                   j                  |||       y rk   )r6   delete_collectionrx   s       rJ   r   z!RustBindingsAPI.delete_collection)  s     	''fh?rK   rv   new_namenew_metadatanew_configurationc                 r    |rt        |      }nd }| j                  j                  t        |      |||       y rk   )r   r6   update_collectionr   )rG   rv   r   r   r   ro   ry   new_configuration_json_strs           rJ   _modifyzRustBindingsAPI._modify2  s=     )T!*& *.&''GX|-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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OrK   c                 N    | j                   j                  t        |      ||      S rk   )r6   countr   r   s       rJ   _countzRustBindingsAPI._countf  s"     }}""3}#5vxHHrK   
   nc                 6    | j                  ||||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                  j                  t        t	        |      |
|r|ndd|v r|
ndd|v r|
ndd|v r|
nd             | j
                  j                  t	        |      ||rt        j                  |      nd ||xs 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  s     "%SX!
%%-- #M 2$$e!/:g/E10;w0F*A+1W+<Z!		
 ))!&DJJuDKa*8DJJ~&d

 !!$//#--###--
 	
rK   r   r   r   r   c	                    | j                   j                  t        t        |      t	        |      |t	        |      nd|t	        |      nd|t	        |      nd             | j
                  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s8*3*?c#hQ+4+@s3xa&*&6#c(A	
 }}  	
 		
rK   c	                 8   | j                   j                  t        t        |      t	        |      |rt	        |      nd|rt	        |      nd|rt	        |      nd|rt	        |      nd             | j
                  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!#h3=J109c)nq1:s9~'+#d)		
 }}##	
 		
rK   c	           
      X    | j                   j                  t        |      |||||||      S rk   )r6   upsertr   r   s	            rJ   _upsertzRustBindingsAPI._upsert  s8     }}##	
 		
rK   query_embeddings	n_resultsc
                 6   t        |      }
|rt        |      nd}| j                  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
                  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  s*    +,*-c#h1%%--  #M 2)$7#5:5F\A5C5O\UV2=2H,a2=2H,a-3w->\A2=2H,a	
 ++!&DJJuD*8DJJ~&d

 !!$//#--###--#--	
 		
rK   c                    | j                   j                  t        t        |      d             | j                  j                  t        |      ||rt        j                  |      nd |rt        j                  |      ||      S 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		
 }}##!&DJJuD*8DJJ~&
 	
 ?C
 	
rK   c                 6    | j                   j                         S rk   )r6   resetrl   s    rJ   r   zRustBindingsAPI.resetY  s    }}""$$rK   c                 6    | j                   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                 6    | j                   j                         S rk   )r6   get_max_batch_sizerl   s    rJ   r   z"RustBindingsAPI.get_max_batch_sizee  s    }}//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                 0    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
v 
  
  
D  
 7E ;C ; ;$ ; ; 4B 
 
c 
x 
 
 7E ;C ; ;$ ; ;   $ $$	
}
 
 	

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 
 
 

 
 
< 
 
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         #E  ' N N =   K J 5  > =    8??	!X__)#U	
i U	
rK   