� ���g�9��X�ddlmZmZddlmZddlmZddlZddlm Z m Z m Z ddl m Z ddlmZddlmZmZmZmZmZmZmZmZmZmZmZmZmZdd lmZdd l m!Z!dd l"m#Z#m$Z$dd l"m%Z%m&Z&dd l'm(Z(m)Z)ddl*m+Z+ddl,m-Z-m.Z.m/Z/m0Z0ddl1m2cm3Z4Gd�dee ��Z5Gd�dee ��Z6dS)�)�Optional�Sequence)�UUID)�overrideN)�AdminAPI� ClientAPI� ServerAPI)�CollectionConfiguration)�SharedSystemClient) �CollectionMetadata� DataLoader� Documents� Embeddable�EmbeddingFunction� Embeddings� GetResult�IDs�Include�Loadable� Metadatas� QueryResult�URIs)� UserIdentity)�maybe_set_tenant_and_database)�Settings�System)�DEFAULT_TENANT�DEFAULT_DATABASE)� Collection�CollectionName)� ChromaError)�Database�Tenant�Where� WhereDocumentc���eZdZUdZeZeed<eZ eed<e ed<e ed<eee ��fdedede ddf�fd � Z eeeefd edededdfd �����Zedefd ���Zedefd ���Ze dBdeedeedeefd���Zedefd���Zeddej��ddfdedeedeedeee dee!e"de#de$fd���Z%eej��dfdedeee dee!e"de$fd���Z&eddej��dfdedeedeedeee dee!e"de$f d���Z'e dBde(deedeeddfd���Z)ededdfd ���Z*e dCd!e+d"e(d#e,d$ee-d%ee.d&ee/de#fd'���Z0e dDd"e(d!e+d#ee,d$ee-d%ee.d&ee/de#fd(���Z1e dCd"e(d!e+d#e,d$ee-d%ee.d&ee/de#fd)���Z2ed"e(defd*���Z3edEd"e(d,ede4fd-���Z5eddddddddgd.�f d"e(d!ee+d/ee6d0eedeedeed1eed2eed3ee7d4e8de4fd5���Z9 dBd"e(d!ee+d/ee6d3ee7ddf d6�Z:ed+ddgd7�fd"e(d8e,d9ed/ee6d3ee7d4e8de;fd:���Z<ede#fd;���Z=edefd<���Z>ede fd=���Z?edefd>���Z@eefdededdfd?���ZAededdfd@���ZBdededdfdA�ZC�xZDS)F�Clienta�A client for Chroma. This is the main entrypoint for interacting with Chroma. A client internally stores its tenant and database and proxies calls to a Server API instance of Chroma. It treats the Server API and corresponding System as a singleton, so multiple clients connecting to the same resource will share the same API instance. Client implementations should be implement their own API-caching strategies. �tenant�database�_server� _admin_client�settings�returnNc����t���|���||_||_|j�t ��|_|���}t||j ||���\}}|r||_|r||_t� |j��|_ |�|j|j���|���dS)N�r,)�4overwrite_singleton_tenant_database_access_from_auth�user_provided_tenant�user_provided_database�r(r))�super�__init__r(r)�_system�instancer r*�get_user_identityr�;chroma_overwrite_singleton_tenant_database_access_from_auth� AdminClient� from_systemr+�_validate_tenant_database�_submit_client_start_event)�selfr(r)r,� user_identity� maybe_tenant�maybe_database� __class__s ��c/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/chromadb/api/client.pyr5zClient.__init__4s���� �����(��+�+�+��� � �� ��|�,�,�Y�7�7�� ��.�.�0�0� �'D� �AI�BF�!'�#+� ( �( �( �$� �n� � '�&�D�K� � +�*�D�M�)�4�4�T�\�B�B��� �&�&�d�k�D�M�&�R�R�R� �'�'�)�)�)�)�)��systemc�T�tj|��||||j���}|S)N)r(r)r,�r �_populate_data_from_systemr,)�clsrEr(r)r7s rCr;zClient.from_systemTs2�� �5�f�=�=�=��3�f�x�&�/�R�R�R���rDc��� |j���S#tj$rt d���t $r}|�d}~wt $r!}t t|�����d}~wwxYw)N�ACould not connect to a Chroma server. Are you sure it is running?)r*r8�httpx� ConnectError� ValueErrorr!� Exception�str)r>�es rCr8zClient.get_user_identitybs��� %��<�1�1�3�3� 3���!� � � ��S��� �� � � ��G������ %� %� %��S��V�V�$�$� $����� %���s!��'A2�A� A2�A-�-A2c�4�|j���S�N)r*� heartbeat�r>s rCrTzClient.heartbeatrs���|�%�%�'�'�'rD�limit�offsetc�f�d�|j�|||j|j���D��S)Nc�6�g|]}t|j����S�)r �name)�.0�models rC� <listcomp>z+Client.list_collections.<locals>.<listcomp>zs2�� � � �� �5�:� &� &� � � rDr3)r*�list_collectionsr(r))r>rVrWs rCr_zClient.list_collectionsvsG�� � ���6�6��v�d�k�D�M�7��� � � � rDc�N�|j�|j|j���S�Nr3)r*�count_collectionsr(r)rUs rCrbzClient.count_collections�s*���|�-�-��;���.� � � rDFr[� configuration�metadata�embedding_function� data_loader� get_or_createc��|j�|||j|j||���}t |j|||���S)N)r[rdr(r)rgrc��clientr]rerf)r*�create_collectionr(r)r)r>r[rcrdrerfrgr]s rCrkzClient.create_collection�s]��� �.�.����;��]�'�'� /� � ����<��1�#�  � � � rDc��|j�||j|j���}t |j|||���S)N�r[r(r)ri)r*�get_collectionr(r)r)r>r[rerfr]s rCrnzClient.get_collection�sT��� �+�+���;��]�,� � �� ��<��1�#�  � � � rDc��|j�|||j|j|���}t |j|||���S)N)r[rdr(r)rcri)r*�get_or_create_collectionr(r)r)r>r[rcrdrerfr]s rCrpzClient.get_or_create_collection�sZ��� �5�5����;��]�'� 6� � ����<��1�#�  � � � rD�id�new_name� new_metadatac�T�|j�||j|j||���S)N)rqr(r)rrrs)r*�_modifyr(r))r>rqrrrss rCruzClient._modify�s6���|�#�#���;��]��%� $� � � rDc�P�|j�||j|j���S)Nrm)r*�delete_collectionr(r)�r>r[s rCrwzClient.delete_collection�s0�� �|�-�-���;��]�.� � � rD�ids� collection_id� embeddings� metadatas� documents�urisc �Z�|j�||j|j|||||���S)N)ryr(r)rzr{r|r}r~)r*�_addr(r))r>ryrzr{r|r}r~s rCr�z Client._add�s?���|� � ���;��]�'�!����!�  �  � rDc �Z�|j�||j|j|||||���S�N)rzr(r)ryr{r|r}r~)r*�_updater(r)�r>rzryr{r|r}r~s rCr�zClient._update�?���|�#�#�'��;��]��!����$�  �  � rDc �Z�|j�||j|j|||||���Sr�)r*�_upsertr(r)r�s rCr�zClient._upsertr�rDc�P�|j�||j|j���S)N)rzr(r))r*�_countr(r))r>rzs rCr�z Client._count-s.���|�"�"�'��;��]�#� � � rD� �nc�R�|j�|||j|j���S)N)rzr�r(r))r*�_peekr(r))r>rzr�s rCr�z Client._peek5s1���|�!�!�'���;��]� "� � � rD)r{r|r}�where�sort�page� page_size�where_document�includec �b�|j�||j|j|||||||| | �� � S)N) rzr(r)ryr�r�rVrWr�r�r�r�)r*�_getr(r)) r>rzryr�r�rVrWr�r�r�r�s rCr�z Client._get>sK���|� � �'��;��]��������)��!�  �  � rDc�Z�|j�||j|j|||���dS)N)rzr(r)ryr�r�)r*�_deleter(r))r>rzryr�r�s rCr�zClient._delete[sC�� � ���'��;��]���)� � � � � � rD)r{r|r}� distances�query_embeddings� n_resultsc �Z�|j�||j|j|||||���S)N)rzr(r)r�r�r�r�r�)r*�_queryr(r))r>rzr�r�r�r�r�s rCr�z Client._queryks?���|�"�"�'��;��]�-���)��#�  �  � rDc�4�|j���SrS)r*�resetrUs rCr�z Client.reset�s���|�!�!�#�#�#rDc�4�|j���SrS)r*� get_versionrUs rCr�zClient.get_version�s���|�'�'�)�)�)rDc�4�|j���SrS)r*� get_settingsrUs rCr�zClient.get_settings�s���|�(�(�*�*�*rDc�4�|j���SrS)r*�get_max_batch_sizerUs rCr�zClient.get_max_batch_size�s���|�.�.�0�0�0rDc�P�|�||���||_||_dSra�r<r(r))r>r(r)s rC� set_tenantzClient.set_tenant�s-�� �&�&�f�x�&�H�H�H��� � �� � � rDc�L�|�|j|���||_dSrar�)r>r)s rC� set_databasezClient.set_database�s(�� �&�&�d�k�H�&�M�M�M� �� � � rDc�X� |j�|���nM#tj$rt d���t $r}|�d}~wt $rt d|�d����wxYw |j�||���dS#tj$rt d���wxYw)N�r[rKzCould not connect to tenant z. Are you sure it exists?�r[r()r+� get_tenantrLrMrNr!rO� get_database)r>r(r)rQs rCr<z Client._validate_tenant_database�s�� � � � )� )�v� )� 6� 6� 6� 6���!� � � ��S��� �� � � ��G������ � � ��P�v�P�P�P��� � ����  � � � +� +��&� +� I� I� I� I� I���!� � � ��S��� � ���s!��'A(�A�!A(�,B � B))NN)NNN)NNNN)r�)E�__name__� __module__� __qualname__�__doc__rr(rP�__annotations__rr)r rrr5� classmethodrrr;rr8�intrTrrr r_rb�ef�DefaultEmbeddingFunctionr r rrr r�boolrrkrnrprrurwrrrrrr�r�r�r�rr�r$r%rr�r�rr�r�r�r�r�r�r�r<� __classcell__�rBs@rCr'r'"s ����������!�F�C� � � �$�H�c�$�$�$� �������� %�(�%�X�Z�Z� *�*��*��*�� *� � *�*�*�*�*�*�@� �%�(� ������� � � ����X��[��� %�<� %� %� %��X� %��(�3�(�(�(��X�(��CG� � ��c�]� �3;�C�=� � �.� !� � � ��X� �� �3� � � ��X� � �<@�15� (�B� '� )� )�6:�#� � �� � � 7�8� ��-�.�  � %� �j� )� �  ��j��2�3� �� � � � � ��X� �4� (�B� '� )� )�6:�  � �� �%� �j� )� � � �j��2�3�  � � � � ��X� �(�<@�15� (�B� '� )� )�6:� � �� � � 7�8� ��-�.�  � %� �j� )� �  ��j��2�3� � � � � ��X� �0�#'�59�  �  � �  ��3�-�  ��1�2�  � �  �  �  ��X�  �� �� � � � � ��X� �� *.�)-�#� � � � �� ��  � �I�&�  � �I�&�  ��t�n� � � � � ��X� �(� ,0�)-�)-�#� � �� �� ��Z�(�  � �I�&�  � �I�&�  ��t�n� � � � � ��X� �(� *.�)-�#� � �� �� ��  � �I�&�  � �I�&�  ��t�n� � � � � ��X� �(� �D� �S� � � ��X� �� � �4� �C� �� � � ��X� ��"�!%�"�#� $�"�#'�26�C�C�C� � �� ��c�]� ����  � �s�m�  � ��}�  ��� � ��s�m� ��C�=� �!��/� �� � � � � ��X� �@"&�26�  � �� ��c�]� ����  � !��/�  � �  � � � � � �!%�26�P�P�P� � �� �%� ��  � ���  � !��/�  �� � � � � ��X� �(�$�t�$�$�$��X�$��*�S�*�*�*��X�*��+�h�+�+�+��X�+��1�C�1�1�1��X�1��6F�!�!��!��!�4�!�!�!��X�!� �!�S�!�T�!�!�!��X�!����s��t��������rDr'c ���eZdZUeed<e��fdeddf�fd� Zeefde de ddfd���Z eefde de de fd ���Z eefde de ddfd ���Z eddefd eed eede dee fd ���Zede ddfd���Zede defd���Zeededdfd�����Z�xZS)r:r*r,r-Nc���t���|��|j�t��|_dSrS)r4r5r6r7r r*)r>r,rBs �rCr5zAdminClient.__init__�s6��� ������"�"�"��|�,�,�Y�7�7�� � � rDr[r(c�:�|j�||���S�Nr�)r*�create_database�r>r[r(s rCr�zAdminClient.create_database�����|�+�+��f�+�E�E�ErDc�:�|j�||���Sr�)r*r�r�s rCr�zAdminClient.get_database�s���|�(�(�d�6�(�B�B�BrDc�:�|j�||���Sr�)r*�delete_databaser�s rCr�zAdminClient.delete_database�r�rDrVrWc�<�|j�|||���S)N)r()r*�list_databases)r>rVrWr(s rCr�zAdminClient.list_databases�s!���|�*�*�5�&��*�H�H�HrDc�8�|j�|���S�Nr�)r*� create_tenantrxs rCr�zAdminClient.create_tenant�s���|�)�)�t�)�4�4�4rDc�8�|j�|���Sr�)r*r�rxs rCr�zAdminClient.get_tenant�s���|�&�&�D�&�1�1�1rDrEc�P�tj|��||j���}|S)Nr/rG)rIrEr7s rCr;zAdminClient.from_system�s.�� �5�f�=�=�=��3���0�0�0���rD)r�r�r�r r�rr5rrrPr�r"r�r�rr�rr�r�r#r�r�rr;r�r�s@rCr:r:�s:�������� ����,4�H�J�J�8�8��8�4�8�8�8�8�8�8��7E�F�F�C�F��F�$�F�F�F��X�F��4B�C�C��C�c�C�x�C�C�C��X�C��7E�F�F�C�F��F�$�F�F�F��X�F�� $� $�$� I�I���}�I��� �I�� I� �(� � I�I�I��X�I��5�#�5�$�5�5�5��X�5��2�s�2�v�2�2�2��X�2�� ���� �����X��[�����rDr:)7�typingrr�uuidr� overridesrrL� chromadb.apirrr �chromadb.api.configurationr �!chromadb.api.shared_system_clientr �chromadb.api.typesr r rrrrrrrrrrr� chromadb.authr�chromadb.auth.utilsr�chromadb.configrrrr�chromadb.api.models.Collectionrr �chromadb.errorsr!�chromadb.typesr"r#r$r%�"chromadb.utils.embedding_functions�utils�embedding_functionsr�r'r:rZrDrC�<module>r�sN��%�%�%�%�%�%�%�%������������� � � � �7�7�7�7�7�7�7�7�7�7�>�>�>�>�>�>�@�@�@�@�@�@�������������������������������'�&�&�&�&�&�=�=�=�=�=�=�,�,�,�,�,�,�,�,�<�<�<�<�<�<�<�<�E�E�E�E�E�E�E�E�'�'�'�'�'�'�A�A�A�A�A�A�A�A�A�A�A�A�/�/�/�/�/�/�/�/�/�Q�Q�Q�Q�Q� ��Q�Q�Q�l ,�,�,�,�,�$�h�,�,�,�,�,rD
Memory