o
    gf/                     @   s   d dl Z d dlZd dlmZ d dlm  m  mZ d dlm	Z	 d dl
m  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mZmZmZ d dlZd dlmZ G dd deZde jd	e	d
dfddZd	e	d
dfddZ d	e	d
dfddZ!dS )    N)	ClientAPI)BundleRuleBasedStateMachinerule
initializemultipleconsumesrun_state_machine_as_testMultipleResults)AnyDictMappingOptional)hashing_embedding_functionc                
       s  e Zd ZU eej ed< eee	e
j f ed< edZ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eddejddfddZe d.ddZeejdddejdddddededdfddZeeee ejeeee ddejde	e
j deej fd d!Zeeeeejee e  d"dejde
jd#e	e deej fd$d%Z!d&ed'e	e
j ddfd(d)Z"d&eddfd*d+Z#e$deee	e
j f fd,d-Z%  Z&S )/CollectionStateMachinecollections_modelclientc                    s   t    i | _|| _d S N)super__init__r   r   )selfr   	__class__ ^/var/www/visachat/venv/lib/python3.10/site-packages/chromadb/test/property/test_collections.pyr      s   

zCollectionStateMachine.__init__returnNc                 C   s   | j   i | _d S r   )r   resetr   r   r   r   r   r   !   s   

z!CollectionStateMachine.initialize)targetcollr    c                 C   s   |j | jv s|jd ur8t|jdkr8tt | jj|j |j|j	d}W d    t
 S 1 s0w   Y  t
 S | jj|j |j|j	d}| |j |j |j |j ksTJ |j| j|j  ks_J t
|S Nr   namemetadataembedding_function)r#   modelr$   lenpytestraises	Exceptionr   create_collectionr%   r   	set_modelr   r    cr   r   r   create_coll&   s*   
z"CollectionStateMachine.create_coll)r    c                 C   s   |j | jv r#| jj|j d}|j |j ksJ |j| j|j  ks!J d S tt | jj|j d W d    d S 1 s<w   Y  d S Nr#   )r#   r&   r   get_collectionr$   r(   r)   r*   r-   r   r   r   get_collA   s   "zCollectionStateMachine.get_collc                 C   s   |j | jv r| jj|j d | |j  ntt | jj|j d W d    n1 s-w   Y  tt | jj|j d W d    d S 1 sKw   Y  d S r0   )	r#   r&   r   delete_collectiondelete_from_modelr(   r)   r*   r2   )r   r    r   r   r   delete_collK   s   "z"CollectionStateMachine.delete_collc                 C   s<   | j  }t|t| jksJ |D ]	}|| jv sJ qd S r   )r   list_collectionsr'   r&   )r   collscollection_namer   r   r   r7   W   s
   
z'CollectionStateMachine.list_collections      )	min_value	max_valuer   limitoffsetr?   r@   c                 C   s~   | j j||d}| j  }| j  }||||  }|| |kr5t|t|| dks-J ||ks3J d S t||ks=J d S )Nr>   r   )r   r7   count_collectionsr'   max)r   r?   r@   r8   total_collections	all_colls	man_collsr   r   r   "list_collections_with_limit_offset_   s   

z9CollectionStateMachine.list_collections_with_limit_offset)r   new_metadatar    rG   c                 C   s   |d ur/t |dkr/tt | jj|j||jd}W d    t S 1 s'w   Y  t S |j| j	vr@||_
| |j|j
 | jj|j||jd}|j|jksSJ |j
| j	|j ks^J t|S r!   )r'   r(   r)   r*   r   get_or_create_collectionr#   r%   r   r&   r$   r,   )r   r    rG   r.   r   r   r   get_or_create_collu   s,   
z)CollectionStateMachine.get_or_create_coll)r   r    rG   new_namerJ   c                 C   s  |j | jvr(tt | jj|j d}W d    t S 1 s w   Y  t S | jj|j d}| j|j  }|j }|d urmt|dkrhtt | jj	|j ||j
d}W d    t S 1 s`w   Y  t S ||_|}|d ur|| jv r||j krtt |j||d W d    t S 1 sw   Y  t S | |j  ||_ |}| || |j||d | jj|j d}|j |j ksJ |j| j|j  ksJ t|S )Nr1   r   r"   )r$   r#   )r#   r&   r(   r)   r*   r   r2   r   r'   rH   r%   r$   modifyr5   r,   )r   r    rG   rJ   r.   	_metadata_namer   r   r   modify_coll   sR   


z"CollectionStateMachine.modify_collr#   r$   c                 C   s   | j }|||< d S r   r&   )r   r#   r$   r&   r   r   r   r,      s   z CollectionStateMachine.set_modelc                 C   s   | j }||= d S r   rO   )r   r#   r&   r   r   r   r5      s   
z(CollectionStateMachine.delete_from_modelc                 C   s   | j S r   )r   r   r   r   r   r&      s   zCollectionStateMachine.model)r   N)'__name__
__module____qualname__r   
strategiesExternalCollection__annotations__r   strr   typesCollectionMetadatar   r   r   r   r   r
   r/   r3   r   r6   r7   stintegersintrF   one_ofnonecollection_metadataMetadatarI   r9   rN   r,   r5   propertyr&   __classcell__r   r   r   r   r      sz   
 	2.
&r   caplogr   r   c                    s    |  tj t fdd d S )Nc                      s   t  S r   )r   r   r   r   r   <lambda>   s    z"test_collections.<locals>.<lambda>)	set_levelloggingERRORr	   )rb   r   r   rc   r   test_collections   s   rh   c                 C   s   t | }|  |jtjdd ttjdddd d\}|jtjdd ttjdddd d\}|j|dddd	d d
 |j|d d d
 d S )Nzjjn2yjLW1zp2T
i_  )dtypedimr"   r    rG   ig       im)7fGeK5jr    rG   rJ   )	r   r   rI   rS   rT   r   numpyfloat32rN   )r   statev1v6r   r   r   test_previously_failing_one   s,   rv   c              
   C   s   t | }|  |jtjdi tdtjddd d\}|j|dddd	d
ddd\}|jtjddddddddtdtjddddddddd |j|ddidd}|j|d d}|jtjdd td tj	ddd d d S )!NC1030   )rj   ri   r"   rk   100qNYST)rz   40p1nviWeL7fO7bVYWq4LEMWjCozOF5F0MzbQg
rp   VS0QGhgj:Ui  ipSPFgh_   >)hA1uhUhLEEMfeC_kNweFB3DSaP6H533Ki{  i{  g?g    .G3EtXTZiv  )xVW09xUpDZAgzn1dUTalF-MYyugXZ_hKL35J2SK0l026zAi1
iF  )
r   r   rI   rS   rT   r   rq   rr   rN   float16)r   rs   v13v15v17v18r   r   r   test_previously_failing_two  sj   

r   )"r(   rf   hypothesis.strategiesrS   rY   !chromadb.test.property.strategiestestr`   chromadb.apir   chromadb.api.typesapirW   hypothesis.statefulr   r   r   r   r   r   r	   r
   typingr   r   r   r   rq   r   r   LogCaptureFixturerh   rv   r   r   r   r   r   <module>   s    (
 \
