Ë
    lQêjmy  ã                   óÐ  — d dl Z d dlZd dlmZmZmZmZmZmZm	Z	 d dlm
Z
 d dlmZ d dlZd dlZd dl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 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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: d dl&m;Z;m<Z<m=Z=m>Z> d dl?m@Z@ d dl?mAZA d dlBmCZCmDZDmEZEmFZF d dlGmHZHmIZImJZJ d dlKmLZL  ejš                  eN«      ZO G d„ dee#«      ZPy)é    N)ÚAnyÚDictÚMappingÚOptionalÚcastÚTupleÚList)ÚSequence)ÚUUID)Úoverride)ÚAttachedFunction)ÚCreateCollectionConfigurationÚUpdateCollectionConfigurationÚ'update_collection_configuration_to_jsonÚ'create_collection_configuration_to_json)Ú__version__)ÚBaseHTTPClient)ÚDatabaseÚTenantÚ
Collection)Ú	ServerAPI)ÚSearch)ÚDeleteResultÚ	DocumentsÚ
EmbeddingsÚIDsÚIncludeÚIndexingStatusÚSchemaÚ	MetadatasÚ	ReadLevelÚURIsÚWhereÚWhereDocumentÚ	GetResultÚQueryResultÚSearchResultÚCollectionMetadataÚvalidate_batchÚconvert_np_embeddings_to_listÚIncludeMetadataDocumentsÚ!IncludeMetadataDocumentsDistances)Ú"IncludeMetadataDocumentsEmbeddingsÚ%optional_embeddings_to_base64_stringsÚserialize_metadataÚdeserialize_metadata)ÚUserIdentity)ÚClientAuthProvider)ÚDEFAULT_DATABASEÚDEFAULT_TENANTÚSettingsÚSystem)ÚOpenTelemetryClientÚOpenTelemetryGranularityÚtrace_method)ÚProductTelemetryClientc                   óZ  ‡ — e Zd Zdefˆ fd„Zedeeef   fd„«       Zedefd„«       Z	dedede
eef   defd	„Z ed
ej                  «      edefd„«       «       Z edej                  «      eefdededdfd„«       «       Z edej                  «      eefdededefd„«       «       Z edej                  «      eefdededdfd„«       «       Z edej                  «      eddefdee   dee   dedee   fd„«       «       Z edej                  «      ededdfd„«       «       Z edej                  «      ededefd„«       «       Z edej                  «      edefd„«       «       Z edej                  «      eddeefdee   dee   ded edee    f
d!„«       «       Z! ed"ej                  «      eeefded edefd#„«       «       Z" ed$ej                  «      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d+ej                  «      eeefdeded ede fd,„«       «       Z( ed-ej                  «      eeefd.e)ded ede fd/„«       «       Z* ed0ej                  «      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d1„«       «       Z+ ed2ej                  «      edddeefd3e)d4ee   d5ee%   d6ee,   ded eddfd7„«       «       Z- ed8ej                  «      eeefd.e)d4eded ede f
d9„«       «       Z. ed:ej                  «      eeefd.e)ded edefd;„«       «       Z/ ed<ej                  «      eeefd.e)ded ede0fd=„«       «       Z1 ed>ej                  «      eeee2jf                  fd.e)d?e4e5   ded ed@e2de6fdA„«       «       Z7 edBej                  «      eeefdeded eddfdC„«       «       Z8 edDej                  «      eeee2jf                  fd.e)ded ed@e2def
dE„«       «       Z9 edFej                  «      edGeefd.e)dHeded ede:f
dI„«       «       Z; edJej                  «      eddddde<eefd.e)dKee=   dLee>   dee   dee   dMee?   dNe@ded ede:fdO„«       «       ZA edPej                  «      eddddeefd.e)dKee=   dLee>   dMee?   dee   ded edeBfdQ„«       «       ZC edRejˆ                  «      dSeEe=eeF   eeG   eeH   eeI   f   dTeddfdU„«       ZJ edVejˆ                  «      edddeefdKe=d.e)dWeFdXeeG   dYeeH   dZeeI   ded ede&fd[„«       «       ZK ed\ejˆ                  «      eddddeefd.e)dKe=dWeeF   dXeeG   dYeeH   dZeeI   ded ede&fd]„«       «       ZL ed^ejˆ                  «      edddeefd.e)dKe=dWeFdXeeG   dYeeH   dZeeI   ded ede&fd_„«       «       ZM ed`ejˆ                  «      eddGddeNeefd.e)daeFdKee=   dbedLee>   dMee?   dNe@ded edeOfdc„«       «       ZP eddejˆ                  «      ede&fde„«       «       ZQ edfej                  «      edefdg„«       «       ZRedeSfdh„«       ZT ediej                  «      defdj„«       ZU edkej                  «      de&fdl„«       ZV edmej                  «      edefdn„«       «       ZW edoejˆ                  «      edeefdpededqe)dredsee
eef      ded edeEdte&f   fdu„«       «       ZX edvejˆ                  «      eeefdedqe)ded eddtf
dw„«       «       ZY edxejˆ                  «      ed%eefdedqe)dye&ded ede&fdz„«       «       ZZˆ xZ[S ){ÚFastAPIÚsystemc                 ó  •— t         ‰| �  |«       |j                  j                  d«       |j                  j                  d«       | j                  t        «      | _        | j                  t        «      | _        |j                  | _        t        j                  t        |j                  j                  «      |j                  j                  |j                  j                  |j                  j                  ¬«      | _        | j                  j"                  �<t%        j&                  d | j(                  | j                  j"                  ¬«      | _        n&t%        j&                  d | j(                  ¬«      | _        |j                  j,                  xs i | _        d| j.                  d<   dt0        z   d	z   | j.                  d
<   | j.                  �/| j*                  j2                  j5                  | j.                  «       |j                  j6                  rt| j                  t8        «      | _        | j:                  j=                  «       }|j?                  «       D ],  \  }}|jA                  «       | j*                  j2                  |<   Œ. y y )NÚchroma_server_hostÚchroma_server_http_port)r?   r@   Úchroma_server_ssl_enabledÚdefault_api_path)ÚtimeoutÚlimitsÚverify)rC   rD   zapplication/jsonzContent-TypezChroma Python Client vz( (https://github.com/chroma-core/chroma)z
User-Agent)!ÚsuperÚ__init__ÚsettingsÚrequirer7   Ú_opentelemetry_clientr:   Ú_product_telemetry_clientÚ	_settingsr<   Úresolve_urlÚstrr?   r@   rA   Úchroma_server_api_default_pathÚ_api_urlÚchroma_server_ssl_verifyÚhttpxÚClientÚhttp_limitsÚ_sessionÚchroma_server_headersÚ_headerr   ÚheadersÚupdateÚchroma_client_auth_providerr2   Ú_auth_providerÚauthenticateÚitemsÚget_secret_value)Úselfr=   Ú_headersÚheaderÚvalueÚ	__class__s        €úY/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/chromadb/api/fastapi.pyrG   zFastAPI.__init__E   sè  ø€ Ü‰Ñ˜Ô Ø�‰×ÑÐ 4Ô5Ø�‰×ÑÐ 9Ô:à%)§\¡\Ô2EÓ%FˆÔ"Ø)-¯©Ô6LÓ)MˆÔ&ØŸ™ˆŒä×+Ñ+Ü" 6§?¡?×#EÑ#EÓFØ$*§O¡O×$KÑ$KØ&,§o¡o×&OÑ&OØ#Ÿ_™_×KÑKð	 ,ó 
ˆŒð �>‰>×2Ñ2Ð>Ü!ŸL™LØØ×'Ñ'Ø—~‘~×>Ñ>ôˆD�Mô "ŸL™L°¸d×>NÑ>NÔOˆDŒMà—‘×<Ñ<ÒBÀˆŒØ'9ˆ�‰�^Ñ$à$Üñà8ñ9ð 	�‰�\Ñ"ð �<‰<Ð#Ø�M‰M×!Ñ!×(Ñ(¨¯©Ô6à�?‰?×6Ò6Ø"&§,¡,Ô/AÓ"BˆDÔØ×*Ñ*×7Ñ7Ó9ˆHØ!)§¡Ó!1ò I‘�˜Ø05×0FÑ0FÓ0H�—‘×%Ñ% fÒ-ñIð 7ó    Úreturnc                 ó@   — t        | j                  j                  «      S ©N)ÚdictrU   rX   ©r_   s    rd   Úget_request_headerszFastAPI.get_request_headerso   s   € ä�D—M‘M×)Ñ)Ó*Ð*re   c                 ó   — | j                   S rh   )rP   rj   s    rd   Úget_api_urlzFastAPI.get_api_urls   s   € à�}‰}Ðre   ÚmethodÚpathÚkwargsc                 ó   — d|v r9t        j                  |j                  d«      t         j                  ¬«      }||d<   t        j
                  j                  |dd d ¬«      }| j                  |z   } | j                  j                  ||fi t        t        |«      ¤Ž}t        j                  |«       t        j                  |j                  «      S )NÚjson)ÚoptionÚcontentú/)ÚsafeÚencodingÚerrors)ÚorjsonÚdumpsÚpopÚOPT_SERIALIZE_NUMPYÚurllibÚparseÚquoterP   rU   Úrequestr   r   r   Ú_raise_chroma_errorÚloadsÚtext)r_   rn   ro   rp   ÚdataÚescaped_pathÚurlÚresponses           rd   Ú_make_requestzFastAPI._make_requestw   s¨   € ð �VÑÜ—<‘< §
¡
¨6Ó 2¼6×;UÑ;UÔVˆDØ $ˆF�9Ñô —|‘|×)Ñ)¨$°SÀ4ÐPTÐ)ÓUˆØ�m‰m˜lÑ*ˆà(�4—=‘=×(Ñ(¨°ÑJ¼¼SÀ&Ó8IÑJˆÜ×*Ñ*¨8Ô4Ü�|‰|˜HŸM™MÓ*Ð*re   zFastAPI.heartbeatc                 óB   — | j                  dd«      }t        |d   «      S )zNReturns the current server time in nanoseconds to check if the server is aliveÚgetz
/heartbeatznanosecond heartbeat©rˆ   Úint©r_   Ú	resp_jsons     rd   Ú	heartbeatzFastAPI.heartbeat‡   s'   € ð ×&Ñ& u¨lÓ;ˆ	Ü�9Ð3Ñ4Ó5Ð5re   zFastAPI.create_databaseÚnameÚtenantNc                 ó8   — | j                  dd|› d�d|i¬«       y)zCreates a databaseÚpostú	/tenants/ú
/databasesr�   ©rr   N©rˆ   ©r_   r�   r‘   s      rd   Úcreate_databasezFastAPI.create_database�   s-   € ð 	×ÑØØ˜�x˜zÐ*Ø˜$�ð 	õ 	
re   zFastAPI.get_databasec                 ó`   — | j                  dd|› d|› �«      }t        |d   |d   |d   ¬«      S )zReturns a databaserŠ   r”   ú/databases/Úidr�   r‘   ©rœ   r�   r‘   )rˆ   r   )r_   r�   r‘   rŽ   s       rd   Úget_databasezFastAPI.get_databasež   sK   € ð ×&Ñ&ØØ˜�x˜{¨4¨&Ð1ó
ˆ	ô Ø˜‰ Y¨vÑ%6¸yÈÑ?Rô
ð 	
re   zFastAPI.delete_databasec                 ó4   — | j                  dd|› d|› �«       y)zDeletes a databaseÚdeleter”   r›   Nr—   r˜   s      rd   Údelete_databasezFastAPI.delete_database®   s%   € ð 	×ÑØØ˜�x˜{¨4¨&Ð1õ	
re   zFastAPI.list_databasesÚlimitÚoffsetc           	      ó´   — | j                  dd|› d�t        j                  ||dœ«      ¬«      }|D �cg c]  }t        |d   |d   |d   ¬	«      ‘Œ }}|S c c}w )
zReturns a list of all databasesrŠ   r”   r•   ©r¢   r£   ©Úparamsrœ   r�   r‘   r�   )rˆ   r   Ú_clean_paramsr   )r_   r¢   r£   r‘   Újson_databasesÚdbÚ	databasess          rd   Úlist_databaseszFastAPI.list_databases»   s‚   € ð ×+Ñ+ØØ˜�x˜zÐ*Ü!×/Ñ/à"Ø$ñóð ,ó 	
ˆð %ö
àô ˜˜4™ r¨&¡z¸"¸X¹,ÖGð
ˆ	ð 
ð Ðùò	
s   ³AzFastAPI.create_tenantc                 ó0   — | j                  ddd|i¬«       y )Nr“   z/tenantsr�   r–   r—   )r_   r�   s     rd   Úcreate_tenantzFastAPI.create_tenantÔ   s   € ð 	×Ñ˜6 :°V¸T°NÐÕCre   zFastAPI.get_tenantc                 óJ   — | j                  dd|z   «      }t        |d   ¬«      S )NrŠ   r”   r�   )r�   )rˆ   r   )r_   r�   rŽ   s      rd   Ú
get_tenantzFastAPI.get_tenantÙ   s+   € ð ×&Ñ& u¨k¸DÑ.@ÓAˆ	Ü˜9 VÑ,Ô-Ð-re   zFastAPI.get_user_identityc                 ó8   — t        di | j                  dd«      ¤ŽS )NrŠ   z/auth/identity© )r1   rˆ   rj   s    rd   Úget_user_identityzFastAPI.get_user_identityß   s    € ô ÑJ˜d×0Ñ0°Ð8HÓIÑJÐJre   zFastAPI.list_collectionsÚdatabasec           	      ó¶   — | j                  dd|› d|› d�t        j                  ||dœ«      ¬«      }|D �cg c]  }t        j                  |«      ‘Œ }}|S c c}w )z!Returns a list of all collectionsrŠ   r”   r›   ú/collectionsr¥   r¦   )rˆ   r   r¨   ÚCollectionModelÚ	from_json)r_   r¢   r£   r‘   r´   Újson_collectionsÚjson_collectionÚcollection_modelss           rd   Úlist_collectionszFastAPI.list_collectionsä   s€   € ð  ×-Ñ-ØØ˜�x˜{¨8¨*°LÐAÜ!×/Ñ/à"Ø$ñóð .ó 	
Ðð $4ö
àô ×%Ñ% oÕ6ð
Ðð 
ð
 !Ð ùò
s   ¶AzFastAPI.count_collectionsc                 óT   — | j                  dd|› d|› d�«      }t        t        |«      S )zReturns a count of collectionsrŠ   r”   r›   z/collections_count)rˆ   r   rŒ   )r_   r‘   r´   rŽ   s       rd   Úcount_collectionszFastAPI.count_collectionsÿ   s9   € ð ×&Ñ&ØØ˜�x˜{¨8¨*Ð4FÐGó
ˆ	ô ”C˜Ó#Ð#re   zFastAPI.create_collectionFÚschemaÚconfigurationÚmetadataÚget_or_createc           
      óº   — |rt        ||«      nd}|r|j                  «       nd}	| j                  dd|› d|› d�||||	|dœ¬«      }
t        j                  |
«      }|S )zCreates a collectionNr“   r”   r›   r¶   )r�   rÁ   rÀ   r¿   rÂ   r–   )r   Úserialize_to_jsonrˆ   r·   r¸   )r_   r�   r¿   rÀ   rÁ   rÂ   r‘   r´   Úconfig_jsonÚserialized_schemarŽ   Úmodels               rd   Úcreate_collectionzFastAPI.create_collection  s†   € ñ ô 4°MÀ8ÔLàð 	ñ
 ;A˜F×4Ñ4Ô6ÀdÐØ×&Ñ&ØØ˜�x˜{¨8¨*°LÐAàØ$Ø!,Ø+Ø!.ñð 'ó 

ˆ	ô  ×)Ñ)¨)Ó4ˆàˆre   zFastAPI.get_collectionc           	      óf   — | j                  dd|› d|› d|› �«      }t        j                  |«      }|S )zReturns a collectionrŠ   r”   r›   ú/collections/©rˆ   r·   r¸   )r_   r�   r‘   r´   rŽ   rÇ   s         rd   Úget_collectionzFastAPI.get_collection-  sD   € ð ×&Ñ&ØØ˜�x˜{¨8¨*°MÀ$ÀÐHó
ˆ	ô
  ×)Ñ)¨)Ó4ˆØˆre   zFastAPI.get_collection_by_idÚcollection_idc           	      óf   — | j                  dd|› d|› d|› �«      }t        j                  |«      }|S )zReturns a collection by its IDrŠ   r”   r›   z/collections/by-id/rË   )r_   rÍ   r‘   r´   rŽ   rÇ   s         rd   Úget_collection_by_idzFastAPI.get_collection_by_id>  sE   € ð ×&Ñ&ØØ˜�x˜{¨8¨*Ð4GÈÀÐWó
ˆ	ô
  ×)Ñ)¨)Ó4ˆØˆre   z FastAPI.get_or_create_collectionc           	      ó2   — | j                  ||||d||¬«      S )NT)r�   rÁ   rÀ   r¿   rÂ   r‘   r´   )rÈ   )r_   r�   r¿   rÀ   rÁ   r‘   r´   s          rd   Úget_or_create_collectionz FastAPI.get_or_create_collectionO  s1   € ð ×%Ñ%ØØØ'ØØØØð &ó 
ð 	
re   zFastAPI._modifyrœ   Únew_nameÚnew_metadataÚnew_configurationc           	      ó`   — | j                  dd|› d|› d|› �|||rt        |«      nddœ¬«       y)zUpdates a collectionÚputr”   r›   rÊ   N)rÓ   rÒ   rÔ   r–   )rˆ   r   )r_   rœ   rÒ   rÓ   rÔ   r‘   r´   s          rd   Ú_modifyzFastAPI._modifyf  sS   € ð 	×ÑØØ˜�x˜{¨8¨*°MÀ"ÀÐFà ,Ø$ñ %ô &MØ%ô&ð ñð 	õ 	
re   zFastAPI._forkc           
      óp   — | j                  dd|› d|› d|› d�d|i¬«      }t        j                  |«      }|S )zForks a collectionr“   r”   r›   rÊ   z/forkrÒ   r–   rË   )r_   rÍ   rÒ   r‘   r´   rŽ   rÇ   s          rd   Ú_forkzFastAPI._fork€  sT   € ð ×&Ñ&ØØ˜�x˜{¨8¨*°MÀ-ÀÐPUÐVØ˜hÐ'ð 'ó 
ˆ	ô
  ×)Ñ)¨)Ó4ˆØˆre   zFastAPI._fork_countc           
      óV   — | j                  dd|› d|› d|› d�«      }t        |d   «      S )z)Gets the number of forks for a collectionrŠ   r”   r›   rÊ   z/fork_countÚcountr‹   ©r_   rÍ   r‘   r´   rŽ   s        rd   Ú_fork_countzFastAPI._fork_count’  sB   € ð ×&Ñ&ØØ˜�x˜{¨8¨*°MÀ-ÀÐP[Ð\ó
ˆ	ô �9˜WÑ%Ó&Ð&re   zFastAPI._get_indexing_statusc           
      óp   — | j                  dd|› d|› d|› d�«      }t        |d   |d   |d   |d	   ¬
«      S )NrŠ   r”   r›   rÊ   z/indexing_statusÚnum_indexed_opsÚnum_unindexed_opsÚ	total_opsÚop_indexing_progress)rß   rà   rá   râ   )rˆ   r   rÜ   s        rd   Ú_get_indexing_statuszFastAPI._get_indexing_status¡  sb   € ð ×&Ñ&ØØ˜�x˜{¨8¨*°MÀ-ÀÐP`Ðaó
ˆ	ô Ø%Ð&7Ñ8Ø'Ð(;Ñ<Ø Ñ,Ø!*Ð+AÑ!Bô	
ð 	
re   zFastAPI._searchÚsearchesÚ
read_levelc           
      óF  — |D �cg c]  }|j                  «       ‘Œ c}|dœ}| j                  dd|› d|› d|› d�|¬«      }|j                  dd	«      }	|	�4|	D �
�cg c]#  }
|
�|
D �cg c]  }|�t        |«      nd	‘Œ c}nd	‘Œ% c}}
|d<   t	        |«      S c c}w c c}w c c}}
w )
z&Performs hybrid search on a collection)rä   rå   r“   r”   r›   rÊ   z/searchr–   Ú	metadatasN)Úto_dictrˆ   rŠ   r0   r'   )r_   rÍ   rä   r‘   r´   rå   ÚsÚpayloadrŽ   Úmetadata_batchesrç   rÁ   s               rd   Ú_searchzFastAPI._search´  sä   € ð /7Ö7¨˜Ÿ™�Ò7Ø$ñ
ˆð
 ×&Ñ&ØØ˜�x˜{¨8¨*°MÀ-ÀÐPWÐXØð 'ó 
ˆ	ð %Ÿ=™=¨°dÓ;ÐØÐ'ð "2÷&ð ð Ð(ð %.öà ð 7?Ð6JÔ(¨Ô2ÐPTÑTóð
 ñó&ˆI�kÑ"ô ˜IÓ&Ð&ùò1 8ùòùó&s   …BÁBÁ$BÁ:BÂBzFastAPI.delete_collectionc           	      ó:   — | j                  dd|› d|› d|› �«       y)zDeletes a collectionr    r”   r›   rÊ   Nr—   )r_   r�   r‘   r´   s       rd   Údelete_collectionzFastAPI.delete_collectionÛ  s+   € ð 	×ÑØØ˜�x˜{¨8¨*°MÀ$ÀÐHõ	
re   zFastAPI._countc           
      óv   — | j                  dd|› d|› d|› d�d|j                  i¬«      }t        t        |«      S )z0Returns the number of embeddings in the databaserŠ   r”   r›   rÊ   z/countrå   r¦   )rˆ   rb   r   rŒ   )r_   rÍ   r‘   r´   rå   rŽ   s         rd   Ú_countzFastAPI._counté  sR   € ð ×&Ñ&ØØ˜�x˜{¨8¨*°MÀ-ÀÐPVÐWØ  *×"2Ñ"2Ð3ð 'ó 
ˆ	ô
 ”C˜Ó#Ð#re   zFastAPI._peeké
   Únc           
      óR   — t        t        | j                  ||||t        ¬«      «      S )N)r‘   r´   r¢   Úinclude)r   r%   Ú_getr-   )r_   rÍ   rò   r‘   r´   s        rd   Ú_peekzFastAPI._peekú  s4   € ô ÜØ�I‰IØØØ!ØÜ:ð ó ó	
ð 		
re   zFastAPI._getÚidsÚwhereÚwhere_documentrô   c
                 ót  — |D �
cg c]
  }
|
dk7  sŒ	|
‘Œ }}
| j                  dd|› d|	› d|› d�||||||dœ¬«      }|j                  d	d «      }|�|D �cg c]  }|�t        |«      nd ‘Œ }}t        |d
   |j                  dd «      ||j                  dd «      d |j                  dd «      |¬«      S c c}
w c c}w )Nr„   r“   r”   r›   rÊ   z/get)r÷   rø   r¢   r£   rù   rô   r–   rç   r÷   Ú
embeddingsÚ	documentsÚuris)r÷   rû   rç   rü   r„   rý   Úincluded)rˆ   rŠ   r0   r%   )r_   rÍ   r÷   rø   r¢   r£   rù   rô   r‘   r´   ÚiÚfiltered_includerŽ   rç   rÁ   s                  rd   rõ   zFastAPI._get  s  € ð (/Ö> !°!°v³+šAÐ>ÐÐ>à×&Ñ&ØØ˜�x˜{¨8¨*°MÀ-ÀÐPTÐUàØØØ Ø"0Ø+ñð 'ó 
ˆ	ð —M‘M +¨tÓ4ˆ	ØÐ ð !*öàð 3;Ð2FÔ$ XÔ.ÈDÑPðˆIð ô
 Ø˜%Ñ Ø —}‘} \°4Ó8ØØ—m‘m K°Ó6ØØ—‘˜v tÓ,Øô
ð 	
ùò/ ?ùò$s   …
B0�B0ÁB5zFastAPI._deletec           
      ó¢   — |||dœ}|�||d<   | j                  dd|› d|› d|› d�|¬«      }	t        |	r|	j                  d	d
«      ¬«      S d
¬«      S )z$Deletes embeddings from the database)r÷   rø   rù   r¢   r“   r”   r›   rÊ   z/deleter–   Údeletedr   )r  )rˆ   r   rŠ   )
r_   rÍ   r÷   rø   rù   r¢   r‘   r´   ÚbodyÚresps
             rd   Ú_deletezFastAPI._delete>  s{   € ð ØØ,ñ
ˆð
 ÐØ!ˆD�‰MØ×!Ñ!ØØ˜�x˜{¨8¨*°MÀ-ÀÐPWÐXØð "ó 
ˆô
 ¹d D§H¡H¨Y¸Ó$:ÔJÐJÈÔJÐJre   zFastAPI._submit_batchÚbatchr†   c                 óæ   — d}|d   �|d   D �cg c]  }|�t        |«      nd‘Œ }}|d   | j                  «       rt        |d   «      n|d   ||d   |d   dœ}| j                  d||¬	«       yc c}w )
z?
        Submits a batch of embeddings to the database
        Né   r   é   é   é   )r÷   rû   rç   rü   rý   r“   r–   )r/   Úsupports_base64_encodingr.   rˆ   )r_   r  r†   Úserialized_metadatasrÁ   r„   s         rd   Ú_submit_batchzFastAPI._submit_batchY  s§   € ð   $ÐØ�‰8Ðð !& a¡ö$àð 19Ð0DÔ" 8Ô,È$ÑNð$Ð ð $ð ˜‘8à×,Ñ,Ô.ô @ÀÀaÁÔIà�q‘Ø-Ø˜q™Ø˜!‘Hñ
ˆð 	×Ñ˜6 3¨TÐÕ2ùò$s   �A.zFastAPI._addrû   rç   rü   rý   c	                 ó”   — |||||f}	t        |	d| j                  «       i«       | j                  |	d|› d|› dt        |«      › d�«       y)zi
        Adds a batch of embeddings to the database
        - pass in column oriented data lists
        Úmax_batch_sizer”   r›   rÊ   z/addT©r)   Úget_max_batch_sizer  rN   )
r_   r÷   rÍ   rû   rç   rü   rý   r‘   r´   r  s
             rd   Ú_addzFastAPI._add|  sj   € ð$ ØØØØð
ˆô 	�uÐ/°×1HÑ1HÓ1JÐKÔLØ×ÑØØ˜�x˜{¨8¨*°MÄ#ÀmÓBTÐAUÐUYÐZô	
ð re   zFastAPI._updatec	                 óœ   — ||�|nd|||f}	t        |	d| j                  «       i«       | j                  |	d|› d|› dt        |«      › d�«       y)zl
        Updates a batch of embeddings in the database
        - pass in column oriented data lists
        Nr  r”   r›   rÊ   z/updateTr  ©
r_   rÍ   r÷   rû   rç   rü   rý   r‘   r´   r  s
             rd   Ú_updatezFastAPI._update›  sq   € ð$ Ø$Ð0‰J°dØØØð
ˆô 	�uÐ/°×1HÑ1HÓ1JÐKÔLØ×ÑØØ˜�x˜{¨8¨*°MÄ#ÀmÓBTÐAUÐU\Ð]ô	
ð re   zFastAPI._upsertc	                 ó”   — |||||f}	t        |	d| j                  «       i«       | j                  |	d|› d|› dt        |«      › d�«       y)zl
        Upserts a batch of embeddings in the database
        - pass in column oriented data lists
        r  r”   r›   rÊ   z/upsertTr  r  s
             rd   Ú_upsertzFastAPI._upsertº  sj   € ð$ ØØØØð
ˆô 	�uÐ/°×1HÑ1HÓ1JÐKÔLØ×ÑØØ˜�x˜{¨8¨*°MÄ#ÀmÓBTÐAUÐU\Ð]ô	
ð re   zFastAPI._queryÚquery_embeddingsÚ	n_resultsc
                 óæ  — |D �
cg c]
  }
|
dk7  sŒ	|
‘Œ }}
	 | j                  dd|› d|	› d|› d�||�t        |«      nd ||||dœ¬«      }|j                  d	d «      }|�0|D ��cg c]#  }|�|D �cg c]  }|�t        |«      nd ‘Œ c}nd ‘Œ% }}}t	        |d
   |j                  dd «      |j                  dd «      ||j                  dd «      |j                  dd «      d |¬«      S c c}
w c c}w c c}}w )Nr„   r“   r”   r›   rÊ   z/query)r÷   r  r  rø   rù   rô   r–   rç   r÷   Ú	distancesrû   rü   rý   )r÷   r  rû   rç   rü   rý   r„   rþ   )rˆ   r*   rŠ   r0   r&   )r_   rÍ   r  r÷   r  rø   rù   rô   r‘   r´   rÿ   r   rŽ   rë   rç   rÁ   s                   rd   Ú_queryzFastAPI._queryÙ  sS  € ð (/Ö> !°!°v³+šAÐ>ÐÐ>à>Ø×&Ñ&ØØ˜�x˜{¨8¨*°MÀ-ÀÐPVÐWàà#Ð/ô %BÐBRÔ$SàØ&ØØ"0Ø+ñ	ð 'ó 
ˆ	ð  %Ÿ=™=¨°dÓ;ÐØÐ'ð "2÷ ð ð Ð(ð %.öà ð 7?Ð6JÔ(¨Ô2ÐPTÑTóð
 ñð Ðñ  ô Ø˜%Ñ Ø—m‘m K°Ó6Ø —}‘} \°4Ó8Ø&Ø—m‘m K°Ó6Ø—‘˜v tÓ,ØØô	
ð 		
ùò? ?ùò,ùó s"   …
C#�C#Á"C-Á-C(ÂC-Ã(C-zFastAPI.resetc                 óF   — | j                  dd«      }t        t        |«      S )zResets the databaser“   z/reset©rˆ   r   Úboolr�   s     rd   ÚresetzFastAPI.reset  s#   € ð ×&Ñ& v¨xÓ8ˆ	Ü”D˜)Ó$Ð$re   zFastAPI.get_versionc                 óF   — | j                  dd«      }t        t        |«      S )z!Returns the version of the serverrŠ   z/version)rˆ   r   rN   r�   s     rd   Úget_versionzFastAPI.get_version  s#   € ð ×&Ñ& u¨jÓ9ˆ	Ü”C˜Ó#Ð#re   c                 ó   — | j                   S )z"Returns the settings of the client)rL   rj   s    rd   Úget_settingszFastAPI.get_settings   s   € ð �~‰~Ðre   zFastAPI.get_pre_flight_checksc                 ód   — | j                   €| j                  dd«      }|| _         | j                   S )NrŠ   z/pre-flight-checks)Úpre_flight_checksrˆ   r�   s     rd   Úget_pre_flight_checkszFastAPI.get_pre_flight_checks%  s5   € à×!Ñ!Ð)Ø×*Ñ*¨5Ð2FÓGˆIØ%.ˆDÔ"Ø×%Ñ%Ð%re   z FastAPI.supports_base64_encodingc                 óf   — | j                  «       }t        t        |j                  dd«      «      }|S )Nr  F)r(  r   r   rŠ   )r_   r'  Úb64_encoding_enableds      rd   r  z FastAPI.supports_base64_encoding,  s:   € ð !×6Ñ6Ó8ÐÜ#ÜÐ#×'Ñ'Ð(BÀEÓJó 
Ðð $Ð#re   zFastAPI.get_max_batch_sizec                 óf   — | j                  «       }t        t        |j                  dd«      «      }|S )Nr  éÿÿÿÿ)r(  r   rŒ   rŠ   )r_   r'  r  s      rd   r  zFastAPI.get_max_batch_size6  s4   € ð !×6Ñ6Ó8ÐÜœcÐ#4×#8Ñ#8Ð9IÈ2Ó#NÓOˆØÐre   zFastAPI.attach_functionÚfunction_idÚinput_collection_idÚoutput_collectionr§   r   c                 óÒ   — | j                  dd|› d|› d|› d�||||dœ¬«      }t        | t        |d   d	   «      |d   d
   |d   d   |||||¬«	      }	|j                  dd«      }
|	|
fS )z"Attach a function to a collection.r“   r”   r›   rÊ   z/functions/attach)r�   r-  r/  r§   r–   Úattached_functionrœ   r�   Úfunction_name©	Úclientrœ   r�   r2  r.  r/  r§   r‘   r´   ÚcreatedT©rˆ   r   r   rŠ   )r_   r-  r�   r.  r/  r§   r‘   r´   rŽ   r1  r5  s              rd   Úattach_functionzFastAPI.attach_function=  s¸   € ð ×&Ñ&ØØ˜�x˜{¨8¨*°MÐBUÐAVÐVgÐhàØ*Ø%6Ø ñ	ð 'ó 	
ˆ	ô -ØÜ�IÐ1Ñ2°4Ñ8Ó9ØÐ.Ñ/°Ñ7Ø#Ð$7Ñ8¸ÑIØ 3Ø/ØØØô

Ðð —-‘-Ø�tó
ˆð " 7Ð+Ð+re   zFastAPI.get_attached_functionc                 ó¸   — | j                  dd|› d|› d|› d|› �«      }|d   }t        | t        |d   «      |d   |d	   ||d
   |j                  d«      ||¬«	      S )z;Get an attached function by name for a specific collection.rŠ   r”   r›   rÊ   z/functions/r1  rœ   r�   r2  r/  r§   r3  r6  )r_   r�   r.  r‘   r´   rŽ   Úafs          rd   Úget_attached_functionzFastAPI.get_attached_functione  s�   € ð ×&Ñ&ØØ˜�x˜{¨8¨*°MÐBUÐAVÐVaÐbfÐagÐhó
ˆ	ð
 Ð*Ñ+ˆÜØÜ�B�t‘H‹~Ø�F‘Ø˜_Ñ-Ø 3Ø Ð!4Ñ5Ø—6‘6˜(Ó#ØØô

ð 
	
re   zFastAPI.detach_functionÚdelete_outputc                 ón   — | j                  dd|› d|› d|› d|› d�	d|i¬«      }t        t        |d	   «      S )
z/Detach a function and prevent any further runs.r“   r”   r›   rÊ   z/attached_functions/z/detachr;  r–   Úsuccessr  )r_   r�   r.  r;  r‘   r´   rŽ   s          rd   Údetach_functionzFastAPI.detach_function�  s^   € ð ×&Ñ&ØØ˜�x˜{¨8¨*°MÐBUÐAVÐVjÐkoÐjpÐpwÐxà ðð 'ó 
ˆ	ô ”D˜) IÑ.Ó/Ð/re   )\Ú__name__Ú
__module__Ú__qualname__r6   rG   r   r   rN   rk   rm   r   r   rˆ   r9   r8   Ú	OPERATIONrŒ   r�   r4   r™   r   rž   r¡   r   r
   r¬   r®   r   r°   r1   r³   r3   r·   r¼   r¾   r   r   r(   r   rÈ   rÌ   r   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  ÚALLr   r   r    r   r"   r  r  r  r  r,   r&   r  r!  r#  r5   r%  r(  r  r  r7  r:  r>  Ú__classcell__)rc   s   @rd   r<   r<   D   s›  ø„ ð(I˜võ (IðT ð+ W¨S°#¨XÑ%6ò +ó ð+ð ð˜Sò ó ðð+ Cð +¨sð +¸dÀ3ÈÀ8¹nð +ÐQTó +ñ  Ð%Ð'?×'IÑ'IÓJØð6˜3ò 6ó ó Kð6ñ Ð+Ð-E×-OÑ-OÓPØð %ñ

àð

ð ð

ð 
ò	

ó ó Qð

ñ Ð(Ð*B×*LÑ*LÓMØð %ñ
àð
ð ð
ð 
ò	
ó ó Nð
ñ Ð+Ð-E×-OÑ-OÓPØð %ñ	
àð	
ð ð	
ð 
ò		
ó ó Qð	
ñ Ð*Ð,D×,NÑ,NÓOØð  $Ø $Ø$ñ	à˜‰}ðð ˜‘ðð ð	ð
 
�(Ñ	òó ó Pðñ. Ð)Ð+C×+MÑ+MÓNØðD #ð D¨$ò Dó ó OðDñ Ð&Ð(@×(JÑ(JÓKØð.˜sð . vò .ó ó Lð.ñ Ð-Ð/G×/QÑ/QÓRØðK <ò Kó ó SðKñ Ð,Ð.F×.PÑ.PÓQØð  $Ø $Ø$Ø(ñ!à˜‰}ð!ð ˜‘ð!ð ð	!ð
 ð!ð 
�/Ñ	"ò!ó ó Rð!ñ2 Ð-Ð/G×/QÑ/QÓRØà*Ð<Lñ$Øð$Ø69ð$à	ò$ó ó Sð$ñ Ð-Ð/G×/QÑ/QÓRØð $(ØAEØ15Ø#Ø$Ø(ñàðð ˜Ñ ðð  Ð =Ñ>ð	ð
 Ð-Ñ.ðð ðð ðð ðð 
òó ó Sðñ@ Ð*Ð,D×,NÑ,NÓOØð %Ø(ñ	àðð ðð ð	ð
 
òó ó Pðñ Ð0Ð2J×2TÑ2TÓUØð %Ø(ñ	àðð ðð ð	ð
 
òó ó Vðñ Ø*Ð,D×,NÑ,Nóð ð $(ØAEØ15Ø$Ø(ñ
àð
ð ˜Ñ ð
ð  Ð =Ñ>ð	
ð
 Ð-Ñ.ð
ð ð
ð ð
ð 
ò
ó óð
ñ& Ð#Ð%=×%GÑ%GÓHØð #'Ø59ØEIØ$Ø(ñ
àð
ð ˜3‘-ð
ð Ð1Ñ2ð	
ð
 $Ð$AÑBð
ð ð
ð ð
ð 
ò
ó ó Ið
ñ0 �/Ð#;×#EÑ#EÓFØð
 %Ø(ñàðð ðð ð	ð
 ðð 
òó ó Gðñ  Ð'Ð)A×)KÑ)KÓLØð %Ø(ñ	'àð'ð ð'ð ð	'ð
 
ò'ó ó Mð'ñ Ð0Ð2J×2TÑ2TÓUØð %Ø(ñ	
àð
ð ð
ð ð	
ð
 
ò
ó ó Vð
ñ" Ð#Ð%=×%GÑ%GÓHØð
 %Ø(Ø )× 7Ñ 7ñ#'àð#'ð �v‘,ð#'ð ð	#'ð
 ð#'ð ð#'ð 
ò#'ó ó Ið#'ñJ Ð-Ð/G×/QÑ/QÓRØð %Ø(ñ	

àð

ð ð

ð ð	

ð
 
ò

ó ó Sð

ñ Ð"Ð$<×$FÑ$FÓGØð %Ø(Ø )× 7Ñ 7ñ$àð$ð ð$ð ð	$ð
 ð$ð 
ò$ó ó Hð$ñ �/Ð#;×#EÑ#EÓFØð Ø$Ø(ñ
àð
ð ð
ð ð	
ð
 ð
ð 
ò
ó ó Gð
ñ$ �.Ð":×"DÑ"DÓEØð "Ø!%Ø#Ø $Ø26Ø3Ø$Ø(ñ,
àð,
ð �c‰]ð,
ð ˜‰ð	,
ð
 ˜‰}ð,
ð ˜‘ð,
ð ! Ñ/ð,
ð ð,
ð ð,
ð ð,
ð 
ò,
ó ó Fð,
ñ\ Ð#Ð%=×%GÑ%GÓHØð "Ø!%Ø26Ø#Ø$Ø(ñKàðKð �c‰]ðKð ˜‰ð	Kð
 ! Ñ/ðKð ˜‰}ðKð ðKð ðKð 
òKó ó IðKñ2 Ð)Ð+C×+GÑ+GÓHð 3àØØ�ZÑ Ø�YÑØ�YÑØ�T‰Nð	ñ
ð 3ð ð 3ð 
ò 3ó Ið 3ñD �.Ð":×">Ñ">Ó?Øð *.Ø)-Ø#Ø$Ø(ñàðð ðð ð	ð
 ˜IÑ&ðð ˜IÑ&ðð �t‰nðð ðð ðð 
òó ó @ðñ: Ð#Ð%=×%AÑ%AÓBØð
 ,0Ø)-Ø)-Ø#Ø$Ø(ñàðð ðð ˜ZÑ(ð	ð
 ˜IÑ&ðð ˜IÑ&ðð �t‰nðð ðð ðð 
òó ó Cðñ: Ð#Ð%=×%AÑ%AÓBØð *.Ø)-Ø#Ø$Ø(ñàðð ðð ð	ð
 ˜IÑ&ðð ˜IÑ&ðð �t‰nðð ðð ðð 
òó ó Cðñ: Ð"Ð$<×$@Ñ$@ÓAØð
 "ØØ!%Ø26Ø<Ø$Ø(ñ5
àð5
ð %ð5
ð �c‰]ð	5
ð
 ð5
ð ˜‰ð5
ð ! Ñ/ð5
ð ð5
ð ð5
ð ð5
ð 
ò5
ó ó Bð5
ñn �/Ð#;×#?Ñ#?Ó@Øð%�tò %ó ó Að%ñ
 Ð'Ð)A×)KÑ)KÓLØð$˜Sò $ó ó Mð$ð
 ð˜hò ó ðñ Ð1Ð3K×3UÑ3UÓVð& sò &ó Wð&ñ Ø*Ð,D×,NÑ,Nóð$¨$ò $óð$ñ Ð.Ð0H×0RÑ0RÓSØð Cò ó ó Tðñ
 Ð+Ð-E×-IÑ-IÓJØð ,0Ø$Ø(ñ$,àð$,ð ð$,ð "ð	$,ð
 ð$,ð ˜˜c 3˜h™Ñ(ð$,ð ð$,ð ð$,ð 
Ð! 4Ð'Ñ	(ò$,ó ó Kð$,ñL Ð1Ð3K×3OÑ3OÓPØð
 %Ø(ñ
àð
ð "ð
ð ð	
ð
 ð
ð 
ò
ó ó Qð
ñ4 Ð+Ð-E×-IÑ-IÓJØð
 $Ø$Ø(ñ0àð0ð "ð0ð ð	0ð
 ð0ð ð0ð 
ò0ó ó Kô0re   r<   )Qry   ÚloggingÚtypingr   r   r   r   r   r   r	   r
   Úuuidr   rR   Úurllib.parser}   Ú	overridesr   Ú$chromadb.api.models.AttachedFunctionr   Ú%chromadb.api.collection_configurationr   r   r   r   Úchromadbr   Úchromadb.api.base_http_clientr   Úchromadb.typesr   r   r   r·   Úchromadb.apir   Ú"chromadb.execution.expression.planr   Úchromadb.api.typesr   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   Úchromadb.authr1   r2   Úchromadb.configr3   r4   r5   r6   Ú chromadb.telemetry.opentelemetryr7   r8   r9   Úchromadb.telemetry.productr:   Ú	getLoggerr?  Úloggerr<   r²   re   rd   ú<module>rY     s°   ðÛ Û ß B× BÑ BÝ Ý Û Û Ý å A÷ó õ !Ý 8ß JÑ JÝ "Ý 5÷÷ ÷ ÷ ÷ ó ÷.ó õ 'õ÷ OÓ N÷ñ õ
 >à	ˆ×	Ñ	˜8Ó	$€ôO0ˆn˜iõ O0re   