
    _j                     ~   d dl Z d dlmc mc mZ d dlmc mc mZ d dlZd dlmZ	 d dl
Z
d dlZd dlmZ d dlmZm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mZmZmZm Z   e	j!         ej"        d          d	
          Z# G d de          Z$ e            dej%        de j&        j'        ddfd            Z(dS )    N)
Collection)resetskip_if_not_cluster)BundleRuleBasedStateMachinerule
initializemultipleconsumesrun_state_machine_as_testMultipleResults)	overrides)DictcastUnionTupleSetT)with_hnsw_paramssource)keyc            
       h    e Zd ZU  ed          Zeeeej        f                  e	d<    ed          Z
eeeej        f                  e	d<   ee         e	d<   dej        j        f fdZ eee          d	ej        d
eeej        f         fd            Zedd            Z e ee           ej                    e
          deeej        f         ded
eeeej        f                  fd            Z e ee
           ej        e          e          deeej        f         dej        d
eeej        f         fd            Z e ee
          e          deeej        f         d
eeej        f         fd            Z ee
          deeej        f         d
dfd            Z xZS )ForkStateMachinechanging_collectionsupdated_collectionscollectionsforked_collectionscollection_namesclientc                 |    t                                                       || _        t                      | _        d S N)super__init__r   setr   )selfr   	__class__s     ]/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/chromadb/test/property/test_fork.pyr"   zForkStateMachine.__init__'   s2     #    )
collectiontargetr(   returnc                     | j                             |j        |j        |j                  }| j                            |j                   |t          j        g g g g           fS )N)namemetadataembedding_function)ids	metadatas	documents
embeddings)	r   create_collectionr,   r-   r.   r   add
strategiesStateMachineRecordSet)r$   r(   r   s      r&   r	   zForkStateMachine.initialize,   sv     ..()< / 
 

 	!!&+...z7bB2
 
 
 
 	
r'   Nc                 .    t          | j                   d S r    )r   r   )r$   s    r&   teardownzForkStateMachine.teardown:   s    dkr'   )r   new_namer)   r   r9   c                 x   |\  }}|| j         v rUt          j        t                    5  |                    |           d d d            n# 1 swxY w Y   t          |          S |                    |          }| j                             |j                   t          ||t          j	        |          f          S r    )
r   pytestraises	Exceptionforkr
   r4   r,   copydeepcopy)r$   r   r9   r(   
record_setr)   s         r&   r>   zForkStateMachine.fork>   s     "(
Jt,,,y)) * *)))* * * * * * * * * * * * * * *F###**!!&+...z)B)B CDDDs   A

AA)cursordeltar)   rB   rC   c           	         |\  }}t          j        |          } |j        di | t          |d                   D ]\  }}||d         v r<|d                             |          }|d         |d         |         |d         |<   nD|d         J |j        J |                    |d         |         g          d         |d         |<   |d         t          t          t          t          t          t          t          f         f         |d         |                   }	|	0|d         |         !|	                    |d         |                    n|d         |         |d         |<   |d         |d         |         |d         |<   M|d                             |           |d         (|d                             |d         |                    nT|j        J |d         J |d                             |                    |d         |         g          d                    |d         (|d                             |d         |                    n|d                             d            |d         )|d                             |d         |                    h|d                             d            ||fS )Nr/   r2   r1   r   r0    )
invariantswrap_allupsert	enumerateindex_embedding_functionr   r   strr   intfloatupdateappend)
r$   rB   rC   r(   record_set_statenormalized_deltaidxid
target_idxrecord_set_state_metadatas
             r&   rH   zForkStateMachine.upsertP   sg    (.$
$;E;Nu;U;U
--,--- !1%!899 <	? <	?GC%e,,,-e4::2>>
#L1=AQ$BB$\2:>> ,K8DDD%9EEE #66)+6s;<   %\2" $K0<04S%S%"889(5jA1 1- 1<+K8=I5<< 0 =c B   EU'EE(5jA $K0<@P#AA$[1*= !'..r222#L1=$\299(6s;    &9EEE+K8DDD$\299"66-k:3?@   
 $K0<$[188(5c:    %[188>>>#K0<$[188(5c:    %[188>>>>+++r'   )rB   r)   c                 :   |\  }}t          |d                   dz  }|dk    r||fS |d         d |         }|                    |           |d         |d          |d<   |d         |d          |d<   |d         |d          |d<   |d         |d          |d<   ||fS )Nr/   
   r   r2   r0   r1   )lendelete)r$   rB   r(   rQ   boundaryids_to_deletes         r&   rZ   zForkStateMachine.delete   s     (.$
$'.//25q==///(/		:-((("25"9())"D)9,)G		)R&(8(Ehii(P%(8(Ehii(P%+++r'   )rB   c                 ,   |\  }}t          |d                   dk    r|                                dk    sJ d S t          t          j        |          }t          j        ||           t          j        ||           t          j        ||           d S )Nr/   r   )	rY   countr   r5   	RecordSetrF   embeddings_matchmetadatas_matchdocuments_match)r$   rB   r(   rQ   rA   s        r&   verifyzForkStateMachine.verify   s     (.$
$&''1,,##%%******j24DEEJ'
J???&z:>>>&z:>>>>>r'   )r*   N) __name__
__module____qualname__r   r   r   r   r5   r6   __annotations__r   r   rL   chromadbapi	ClientAPIr"   r	   collection_str   r8   r   r   collection_namer   r>   
recordsetsr_   rH   rZ   rc   __classcell__)r%   s   @r&   r   r      s.         	%&& j*::; ' ' '
 	} j*::;    #h&x|5 & & & & & &
 Z=1DEEE
$/
	z:;;	<
 
 
 FE
    Y 
Tx+,,++--!  
EJ
(HHIEUXE	z:+KKL	ME E E 
E 
Tx*++#j#M22"  
E,j*"BBCE, #E, 
z:;;	<	E, E, E, 
E,N 
Tx*++"  ,J
(HHI,	z:;;	<, , ,	 , 
T!  
?J
(HHI
?	
? 
? 
? 
? 
? 
? 
? 
?r'   r   caplogr   r*   c                 j    |                      t          j                   t          fd           d S )Nc                  "    t                     S r    )r   )r   s   r&   <lambda>ztest_fork.<locals>.<lambda>   s    &6v&>&> r'   )	set_levelloggingERRORr   )ro   r   s    `r&   	test_forkrv      s7    
W]###>>>>?????r'   ))rh   !chromadb.test.property.invariantstestpropertyrF   !chromadb.test.property.strategiesr5   r?   hypothesis.strategieshystrt   r;   chromadb.api.models.Collectionr   chromadb.test.conftestr   r   hypothesis.statefulr   r   r   r	   r
   r   r   r   r   typingr   r   r   r   r   sharedr   rk   r   LogCaptureFixtureri   rj   rv   rE   r'   r&   <module>r      s    6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6  $ $ $ $ $ $   5 5 5 5 5 5       	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	        0 0 0 0 0 0 0 0 0 0 0 0 0 02J2DIIIxXXX^? ^? ^? ^? ^?, ^? ^? ^?B @f. @8N @SW @ @ @ @ @ @r'   