� ���g����ddlmZddlmZmZmZddlmZddlm Z ddl m Z m Z m Z mZmZmZmZmZmZmZddlmZmZmZGd�de��Zd S) �)�abstractmethod)�Optional�Sequence�Tuple)�UUID)�CollectionConfigurationInternal) � Collection�CollectionAndSegments�Database�Tenant�Metadata�Segment� SegmentScope�OptionalArgument� Unspecified�UpdateMetadata)�DEFAULT_DATABASE�DEFAULT_TENANT� Componentc� �eZdZdZeefdedededdfd���Zeefdedede fd���Z eefdededdfd ���Z eddefd e e d e e dedee fd ���Zededdfd ���Zededefd���Zededdfd���Zedededdfd���Ze d$dede ede ede edeef d���Zee��fdededee eddfd���Zedddeefdedededeede ede e dededede e!effd���Z"eeefdedededdfd���Z#eddeeddfde ede ededed e e d e e dee!fd ���Z$ed!ede%fd"���Z&ee��e��e��fdedeedee e dee eddf d#���Z'dS)%�SysDBz+Data interface for Chroma's System database�id�name�tenant�returnNc��dS)zeCreate a new database in the System database. Raises an Error if the Database already exists.N�)�selfrrrs �b/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/chromadb/db/system.py�create_databasezSysDB.create_databases �� ��c��dS)zZGet a database by name and tenant. Raises an Error if the Database does not exist.Nr�rrrs r� get_databasezSysDB.get_database� �� �r!c��dS)zDelete a database.Nrr#s r�delete_databasezSysDB.delete_database%� �� �r!�limit�offsetc��dS)z List all databases for a tenant.Nr)rr)r*rs r�list_databaseszSysDB.list_databases*s �� �r!c��dS)zzCreate a new tenant in the System database. The name must be unique. Raises an Error if the Tenant already exists.Nr�rrs r� create_tenantzSysDB.create_tenant4r%r!c��dS)zCGet a tenant by name. Raises an Error if the Tenant does not exist.Nrr.s r� get_tenantzSysDB.get_tenant:r(r!�segmentc��dS)z^Create a new segment in the System database. Raises an Error if the ID already exists.Nr)rr2s r�create_segmentzSysDB.create_segmentAr%r!� collectionc��dS)z*Delete a segment from the System database.Nr)rr5rs r�delete_segmentzSysDB.delete_segmentGr(r!�type�scopec��dS)z/Find segments by id, type, scope or collection.Nr)rr5rr8r9s r� get_segmentszSysDB.get_segmentsL� �� �r!�metadatac��dS)z�Update a segment. Unspecified fields will be left unchanged. For the metadata, keys with None values will be removed and keys not present in the UpdateMetadata dict will be left unchanged.Nr)rr5rr=s r�update_segmentzSysDB.update_segmentWs �� �r!F� configuration�segments� dimension� get_or_create�databasec ��dS)a�Create a new collection and associated resources in the SysDB. If get_or_create is True, the collection will be created if one with the same name does not exist. The metadata will be updated using the same protocol as update_collection. If get_or_create is False and the collection already exists, an error will be raised. Returns a tuple of the created collection and a boolean indicating whether the collection was created or not. Nr) rrrr@rAr=rBrCrrDs r�create_collectionzSysDB.create_collectioncs ��, �r!c��dS)z�Delete a collection, all associated segments and any associate resources (log stream) from the SysDB and the system at large.Nr)rrrrDs r�delete_collectionzSysDB.delete_collection{r<r!c��dS)z_Find collections by id or name. If name is provided, tenant and database must also be provided.Nr)rrrrrDr)r*s r�get_collectionszSysDB.get_collections�� �� �r!� collection_idc��dS)z�Get a consistent snapshot of a collection by id. This will return a collection with segment information that matches the collection version and log position. Nr)rrLs r�get_collection_with_segmentsz"SysDB.get_collection_with_segments�s �� �r!c��dS)z�Update a collection. Unspecified fields will be left unchanged. For metadata, keys with None values will be removed and keys not present in the UpdateMetadata dict will be left unchanged.Nr)rrrrBr=s r�update_collectionzSysDB.update_collection�rKr!)NNN)(�__name__� __module__� __qualname__�__doc__rrr�strr r r$r'r�intrr,r/r r1rr4r7rr;rrrr?rrr �boolrr rFrHrJr rNrPrr!rrrs������5�5��1?� � �� �!� �+.� � � � � ��^� ��4B� � �� �c� �x� � � ��^� � �7E� � �C� �� �$� � � ��^� �� $� $�$�  � ���}� ��� � ��  � �(� �  � � ��^� �� �#� �$� � � ��^� � � �s� �v� � � ��^� � � �g� �$� � � ��^� � � �� �4� �D� � � ��^� ��"�"�(,�  � �� � �T�N� ��s�m�  � � �%�  � �'� �  � � ��^� �� @K�{�}�}�  �  ��  � �  �#�8�N�#;�<�  � �  �  �  ��^�  ��(,�#'�#�$�(� � � � �� �7�  � �7�#�  � �8�$�  ��C�=� �� �� �� � �z�4�� � � � ��^� �.�%�(�  � � � �� ��  � �  � � ��^� ��"�"�$�(�#� $�  �  � �T�N�  ��s�m�  ��  � �  � ��}�  ��� �  � �*� �  �  �  ��^�  �� �!� � � � � ��^� ��'2�k�m�m�5@�[�]�]�?J�{�}�}�  �  � �  ��s�#�  �$�H�S�M�2�  � #�8�N�#;�<�  � �  �  �  ��^�  �  �  r!rN)�abcr�typingrrr�uuidr�chromadb.api.configurationr�chromadb.typesr r r r r rrrrr�chromadb.configrrrrrr!r�<module>r^s0��������,�,�,�,�,�,�,�,�,�,�������F�F�F�F�F�F� � � � � � � � � � � � � � � � � � � � � � � � �H�G�G�G�G�G�G�G�G�G�S �S �S �S �S �I�S �S �S �S �S r!
Memory