o
    g                      @   s   d dl Z d dlmZ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m  m  mZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZ d dlm Z m!Z! G dd deZ"de j#deddfddZ$dS )    N)BundleRuleBasedStateMachinerule
initializemultipleconsumesrun_state_machine_as_testMultipleResults)Dict)uuid4)CollectionConfigurationInternal)System)SysDB)SegmentType)NOT_CLUSTER_ONLY)sqlitegrpc_with_real_server)SegmentSegmentScopec                       s   e Zd ZU edZeej ed< ee	ejf ed< de
f fddZe ddd	Zeee d
dejdeej fddZeeddejddfddZeeddejddfddZeeeddejddfddZ  ZS )SysDBStateMachinecollectionscreated_collectionssysdbc                    s   t    || _d S N)super__init__r   )selfr   	__class__ X/var/www/visachat/venv/lib/python3.10/site-packages/chromadb/test/property/test_sysdb.pyr      s   

zSysDBStateMachine.__init__returnNc                 C   s   | j   i | _d S r   )r   reset_stater   )r   r   r   r    r   !   s   

zSysDBStateMachine.initialize)targetcollr$   c              
   C   s   t r tt tjjtj|ji i dtt tj	jtj
|ji i dgn+tt tjjtj|ji i dtt tjjtj|ji i dtt tjjtj
|ji i dg}|j| jv rztt | j|j|jt | W d    t|S 1 sqw   Y  t|S | j|j|jt | || j|j< t|S )N)idtypescope
collectionmetadata
file_paths)r   r   r   r   SQLITEvaluer   METADATAr%   HNSW_LOCAL_MEMORYVECTORBLOCKFILE_METADATABLOCKFILE_RECORDRECORDHNSW_DISTRIBUTEDnamer   pytestraises	Exceptionr   create_collectionr   r   )r   r$   segmentsr   r   r    r8   &   sv   /
		z#SysDBStateMachine.create_collection)r$   c                 C   sx   |j | jv r,|j| j|j  jkr,| jj|jd}t|dks J |d j |j ks*J d S t| jj|jddks:J d S )Nr%      r   )r4   r   r%   r   get_collectionslen)r   r$   fetched_collectionsr   r   r    get_collectionf   s    z SysDBStateMachine.get_collectionc                 C   s  |j | jv rk|j| j|j  jkrk| jj|jd}|d j |j ks"J g }|d D ]}|d |jks3J ||d  q(trSt|dksEJ t|t	j
t	jhksQJ d S t|dks[J t|t	j
t	jt	jhksiJ d S tt | jj|jd W d    d S 1 sw   Y  d S )N)collection_idr(   r9   r'         )r4   r   r%   r   get_collection_with_segmentsappendr   r=   setr   r-   r/   r2   r5   r6   r7   )r   r$   fetched_collection_and_segmentsscopessegmentr   r   r    rC   r   s,   "z.SysDBStateMachine.get_collection_with_segmentsc                 C   s   |j | jv r |j| j|j  jkr | j|j | j|j  d S tt | jj|jd W d    d S 1 s9w   Y  d S )Nr:   )	r4   r   r%   r   delete_collectionpopr5   r6   r7   )r   r$   r   r   r    rI      s   "z#SysDBStateMachine.delete_collection)r!   N)__name__
__module____qualname__r   r   
strategies
Collection__annotations__r
   strr   r   r   r   r	   r8   r?   rC   r   rI   __classcell__r   r   r   r    r      s$   
 ?r   caplogsystemr!   c                    s,   t rtt ntt  t fdd d S )Nc                      s
   t  dS )Nr   )r   r   rU   r   r    <lambda>   s   
 ztest_sysdb.<locals>.<lambda>)r   nextr   r   r   )rS   rT   r   rU   r    
test_sysdb   s   rX   )%r5   hypothesis.statefulr   r   r   r   r   r   r   r	   typingr
   uuidr   !chromadb.test.property.strategiestestpropertyrN   chromadb.api.configurationr   chromadb.configr   chromadb.db.systemr   chromadb.segmentr   chromadb.test.conftestr   chromadb.test.db.test_systemr   r   chromadb.typesr   r   r   LogCaptureFixturerX   r   r   r   r    <module>   s    (
 