
    Ig                         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 d dlmZmZmZ  G d de      Zy	)
    )abstractmethod)OptionalSequenceTuple)UUID)CollectionConfigurationInternal)	
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eddfd       Ze	 	 	 d dedee   dee   dee   dee   f
d       Ze e       fdededeee      ddfd       Zedddeefdededede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#y)!SysDBz+Data interface for Chroma's System databaseidnametenantreturnNc                      y)zeCreate a new database in the System database. Raises an Error if the Database
        already exists.N )selfr   r   r   s       O/var/www/html/answerous/venv/lib/python3.12/site-packages/chromadb/db/system.pycreate_databasezSysDB.create_database        	    c                      y)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                      y)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                      y)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                      y)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_segment1   r$   r!   
collectionc                      y)z*Delete a segment from the System database.Nr   )r   r.   r   s      r   delete_segmentzSysDB.delete_segment7   r*   r!   typescopec                      y)z/Find segments by id, type, scope or collection.Nr   )r   r.   r   r1   r2   s        r   get_segmentszSysDB.get_segments<   s     	r!   metadatac                      y)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.   r   r5   s       r   update_segmentzSysDB.update_segmentG   s     	r!   Fconfigurationsegments	dimensionget_or_createdatabasec
                      y)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   )
r   r   r   r8   r9   r5   r:   r;   r   r<   s
             r   create_collectionzSysDB.create_collectionS   s    , 	r!   c                      y)zDelete a collection, all associated segments and any associate resources (log stream)
        from the SysDB and the system at large.Nr   )r   r   r   r<   s       r   delete_collectionzSysDB.delete_collectionk   r    r!   limitoffsetc                      y)z_Find collections by id or name. If name is provided, tenant and database must also be provided.Nr   )r   r   r   r   r<   rA   rB   s          r   get_collectionszSysDB.get_collectionss        	r!   c                      y)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   r:   r5   s        r   update_collectionzSysDB.update_collection   rE   r!   )NNN)$__name__
__module____qualname____doc__r   r   r   strr   r
   r#   r'   r   r)   r   r-   r0   r   r   r   r4   r   r   r   r7   r   r   r   intboolr   r	   r>   r@   rD   rG   r   r!   r   r   r      sj   51?!+.	  4B  c x  
 # $  
 s v   g $  
  4 D    ""(, TN sm	
 % 
'	  
 @K}			 	 #8N#;<		
 
	 	  (,#'#$(  7	
 7# 8$ C=    
z4	  . &4FV #@C	   ""$(# $
TN
 sm
 	

 
 }
 
 
*	
 
  '2m5@]?J}

 s#
 $HSM2	

 #8N#;<
 

 
r!   r   N)abcr   typingr   r   r   uuidr   chromadb.api.configurationr   chromadb.typesr	   r
   r   r   r   r   r   r   r   chromadb.configr   r   r   r   r   r!   r   <module>rU      s:     , ,  F
 
 
 H GxI xr!   