
    ui                         d dl mZ d dl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mZmZmZ d dlmZmZmZ  G d de          ZdS )	    )abstractmethod)OptionalSequenceTuple)UUID)	
CollectionDatabaseTenantMetadataSegmentSegmentScopeOptionalArgumentUnspecifiedUpdateMetadata)DEFAULT_DATABASEDEFAULT_TENANT	Componentc                      e Zd ZdZeefdedededdfd            Zeefdedede	fd            Z
ededdfd	            Zededefd
            Zededdfd            Zededdfd            Ze	 	 	 	 ddee         dee         dee         dee         dee         f
d            Ze e             e            fdedeee                  deee                  ddfd            Zedddeefdededee         dee         dedededeeef         fd            Zeeefdedededdfd            Z eddeeddfdee         dee         dededee         dee         dee         fd            Z!e e             e             e            fdedee         deee                  deee                  ddf
d            Z"dS )SysDBz+Data interface for Chroma's System databaseidnametenantreturnNc                     dS )zeCreate a new database in the System database. Raises an Error if the Database
        already exists.N )selfr   r   r   s       E/var/www/icac/venv/lib/python3.11/site-packages/chromadb/db/system.pycreate_databasezSysDB.create_database   	     	    c                     dS )zZGet a database by name and tenant. Raises an Error if the Database does not
        exist.Nr   )r   r   r   s      r   get_databasezSysDB.get_database   	     	r    c                     dS )zzCreate a new tenant in the System database. The name must be unique.
        Raises an Error if the Tenant already exists.Nr   r   r   s     r   create_tenantzSysDB.create_tenant#   r#   r    c                     dS )zCGet a tenant by name. Raises an Error if the Tenant does not exist.Nr   r%   s     r   
get_tenantzSysDB.get_tenant)   	     	r    segmentc                     dS )z^Create a new segment in the System database. Raises an Error if the ID
        already exists.Nr   )r   r*   s     r   create_segmentzSysDB.create_segment.   r#   r    c                     dS )z,Create a new segment in the System database.Nr   )r   r   s     r   delete_segmentzSysDB.delete_segment4   r)   r    typescope
collectionc                     dS )z/Find segments by id, type, scope or collection.Nr   )r   r   r/   r0   r1   s        r   get_segmentszSysDB.get_segments9   s	     	r    metadatac                     dS )zUpdate 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   )r   r   r1   r4   s       r   update_segmentzSysDB.update_segmentD   s	     	r    F	dimensionget_or_createdatabasec                     dS )a  Create a new collection any 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, a error will be raised.

        Returns a tuple of the created collection and a boolean indicating whether the
        collection was created or not.
        Nr   )r   r   r   r4   r7   r8   r   r9   s           r   create_collectionzSysDB.create_collectionP   s	    ( 	r    c                     dS )zDelete a collection, all associated segments and any associate resources (log stream)
        from the SysDB and the system at large.Nr   )r   r   r   r9   s       r   delete_collectionzSysDB.delete_collectionf   r   r    limitoffsetc                     dS )z_Find collections by id or name. If name is provided, tenant and database must also be provided.Nr   )r   r   r   r   r9   r>   r?   s          r   get_collectionszSysDB.get_collectionsn   	     	r    c                     dS )zUpdate 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   )r   r   r   r7   r4   s        r   update_collectionzSysDB.update_collection{   rB   r    )NNNN)#__name__
__module____qualname____doc__r   r   r   strr   r	   r"   r&   r
   r(   r   r,   r.   r   r   r   r3   r   r   r   r6   r   r   intboolr   r   r;   r=   rA   rD   r   r    r   r   r      s?       551? !+.	   ^ 4B   c x    ^
 # $    ^
 s v    ^ g $    ^
  $    ^  ""(,%) TN sm %	
 TN 
'	   ^  8C{}}?J{}}		 		 %Xd^4	 #8N#;<		
 
	 	 	 ^	 
 (,#'#$(   8$	
 C=    
z4	    ^* &4FV  #@C	   ^  ""$(# $
 
TN
 sm
 	

 
 }
 
 
*	
 
 
 ^
  '2kmm5@[]]?J{}}
 

 s#
 $HSM2	

 #8N#;<
 

 
 
 ^
 
 
r    r   N)abcr   typingr   r   r   uuidr   chromadb.typesr   r	   r
   r   r   r   r   r   r   chromadb.configr   r   r   r   r   r    r   <module>rQ      s         , , , , , , , , , ,      
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 H G G G G G G G G Gt t t t tI t t t t tr    