
    ug                          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c mc 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e      Z"de jF                  deddfdZ$y)    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                       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Z e       dd       Z ee ej                               d	ej                  deej                     fd
       Z ee      d	ej                  ddfd       Z ee      d	ej                  ddfd       Z e ee            d	ej                  ddfd       Z xZS )SysDBStateMachinecollectionscreated_collectionssysdbc                 0    t         |           || _        y N)super__init__r   )selfr   	__class__s     V/var/www/openai/venv/lib/python3.12/site-packages/chromadb/test/property/test_sysdb.pyr   zSysDBStateMachine.__init__   s    
    returnNc                 F    | j                   j                          i | _        y r   )r   reset_stater   )r   s    r!   r   zSysDBStateMachine.initialize!   s    

 #% r"   )targetcollr'   c           
         t         rt        t               t        j                  j
                  t        j                  |j                  i i       t        t               t        j                  j
                  t        j                  |j                  i i       gnt        t               t        j                  j
                  t        j                  |j                  i i       t        t               t        j                  j
                  t        j                  |j                  i i       t        t               t        j                  j
                  t        j                  |j                  i i       g}|j                  | j                   v rgt#        j$                  t&              5  | j(                  j+                  |j                  |j                  t-               |       d d d        t/        |      S | j(                  j+                  |j                  |j                  t-               |       || j                   |j                  <   t/        |      S # 1 sw Y   t/        |      S xY w)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'   segmentss      r!   r<   z#SysDBStateMachine.create_collection&   s   0  # w$++11&//#ww! w$66<<&--#ww!( w$77==&//#ww! w$55;;&--#ww! w$55;;&--#ww!#) 	^ 99000y)

,,GGTYY(G(I8 * ~	 JJ(($C$Ex 37D$$TYY/~ * ~s   $;II#)r'   c                    |j                   | j                  v r|j                  | j                  |j                      j                  k(  rU| j                  j	                  |j                        }t        |      dk(  sJ |d   j                   |j                   k(  sJ y t        | j                  j	                  |j                              dk(  sJ y )Nr)      r   )r8   r   r)   r   get_collectionslen)r   r'   fetched_collectionss      r!   get_collectionz SysDBStateMachine.get_collectionf   s     II111433DII>AAA"&**"<"<"<"H*+q000&q)..$));;;tzz11TWW1=>!CCCr"   c                 V   |j                   | j                  v r<|j                  | j                  |j                      j                  k(  r| j                  j	                  |j                        }|d   j                   |j                   k(  sJ g }|d   D ]*  }|d   |j                  k(  sJ |j                  |d          , t        r>t        |      dk(  sJ t        |      t        j                  t        j                  hk(  sPJ t        |      dk(  sJ t        |      t        j                  t        j                  t        j                  hk(  sJ y y t        j                  t              5  | j                  j	                  |j                         d d d        y # 1 sw Y   y xY w)N)collection_idr,   r=   r+         )r8   r   r)   r   get_collection_with_segmentsappendr   rB   setr   r1   r3   r6   r9   r:   r;   )r   r'   fetched_collection_and_segmentsscopessegments        r!   rI   z.SysDBStateMachine.get_collection_with_segmentsr   sp    II111433DII>AAA.2jj.U.U"gg /V /+ 3<@EERRRF::F|,777gg./ G  6{a'''6{|'<'<l>Q>Q&RRRR6{a'''6{ )) '' '''    S y)

77dgg7N *))s   /'FF(c                    |j                   | j                  v r{|j                  | j                  |j                      j                  k(  rK| j                  j	                  |j                         | j                  j                  |j                          y t        j                  t              5  | j                  j	                  |j                         d d d        y # 1 sw Y   y xY w)Nr?   )	r8   r   r)   r   delete_collectionpopr9   r:   r;   )r   r'   s     r!   rP   z#SysDBStateMachine.delete_collection   s     II111433DII>AAA JJ((1$$((3y)

,,,8 *))s   -'CC&)r#   N)__name__
__module____qualname__r   r   
strategies
Collection__annotations__r   strr   r   r   r   r
   r<   rD   rI   r   rP   __classcell__)r    s   @r!   r   r      s2   171FK
--.Fc:#8#8899e  \& & 
#9:#9#9#;<=))=	..	/= ==~ 
{	D:#8#8 	DT 	D 	D 
{O1F1F O4 O O6 
x$%
9j&;&; 
9 
9 &
9r"   r   caplogsystemr#   c                 z    t         rt        t                     nt        t                     t	        fd       y )Nc                      t               S )Nr   )r   r^   s   r!   <lambda>ztest_sysdb.<locals>.<lambda>   s    &7e&Dr"   )r   nextr   r   r	   )rZ   r[   r   s     @r!   
test_sysdbra      s$    .DND9N9P4QEDEr"   )%r9   hypothesis.statefulr   r   r   r   r   r   r	   r
   typingr   uuidr   !chromadb.test.property.strategiestestpropertyrU   chromadb.api.configurationr   chromadb.configr   chromadb.db.systemr   chromadb.segmentr   chromadb.test.conftestr   chromadb.test.db.test_systemr   r   chromadb.typesr   r   r   LogCaptureFixturera    r"   r!   <module>rq      sn    	 	 	   6 6 F " $ ( 3 F 0@9- @9FFv// F FD Fr"   