o
    1Xxi                     @   s   d dl Z d dlmZ d dlZd dlmZ d dlZd dlm	Z	 d dl
mZmZmZ d dlmZ dZe ded	dfd
dZe ded	dfddZdS )    N)List)	ClientAPI)QueryResult)COMPACTION_SLEEPresetskip_if_not_cluster)l2gư>clientreturnc           	         sL  t   }t| td| t|  | jdddddd}g }g }tdD ]$}|t| |t t t g |j	t|g|d gd q%t t t g td	| |j
 gd
dgd} fdd|D }|  |d d }tdt|D ]}||d  || ksJ q~tt|D ]}tj|| || tdsJ qd S )NGenerating data with seed test   zhnsw:construction_efzhnsw:search_efzhnsw:Mnamemetadata  )ids
embeddingsGenerated data with seed 
   	distancesquery_embeddings	n_resultsincludec                    s"   g | ]}t t t|qS  )r   nparray).0	embeddingrandom_queryr   d/home/air/biblejyuku/back/venv/lib/python3.10/site-packages/chromadb/test/distributed/test_sanity.py
<listcomp>:   s    ztest_add.<locals>.<listcomp>r      )atol)timerandomseedprintr   create_collectionrangeappendstraddquerysortlenr   allcloseEPS)	r	   r*   
collectionr   r   iresultsground_truth_distancesretrieved_distancesr   r"   r$   test_add   sD   




r;   c           
         s@  t   }t| td| t|  | jdddddd}g }g }tdD ](}|t| |t t t g |j	t|g|d gd| d	 q%t 
t t t t g}t t t g}td
| |j||gdg dd}tt|| dtdtt dtdd f fdd}	|	||d |	||d d S )Nr   *test_add_include_all_with_compaction_delayr   r   r   r   r   	document_)r   r   	documentsr   r   )	metadatasr>   r   r   r   r8   r1   result_indexr
   c           
         s   fddD }|j dd d | d | }tdt|D ]}||d  || ks,J qtt|D ]}t|| d ||  tk sEJ q3| d | }tt|D ]}|| || d	 ks`J qRd
| v r| d
 d ur| d
 | }tt|D ]}|| d|| d	  ksJ qwnJ d| v r| d d ur| d | }tt|D ]}tdD ]}	t|| |	 || d |	  tk sJ qqd S J )Nc                    s.   g | ]\}}|t d d t| D |fqS )c                 s   s     | ]\}}|| d  V  qdS )   Nr   )r    abr   r   r$   	<genexpr>p   s    zZtest_add_include_all_with_compaction_delay.<locals>.validate.<locals>.<listcomp>.<genexpr>)sumzip)r    idr!   r1   r   r$   r%   o   s    zPtest_add_include_all_with_compaction_delay.<locals>.validate.<locals>.<listcomp>c                 S   s   | d S )Nr&   r   )xr   r   r$   <lambda>s   s    zNtest_add_include_all_with_compaction_delay.<locals>.validate.<locals>.<lambda>)keyr   r&   r   r   r>   r=   Fr      rA   )r2   r-   r3   absr5   )
r8   r1   r@   gt_ids_distances_embeddingsr:   r7   retrieved_idsretrieved_documentsretrieved_embeddingsjids_and_embeddingsrH   r$   validatem   sD   
"


z<test_add_include_all_with_compaction_delay.<locals>.validater   r&   )r(   r)   r*   r+   r   r,   r-   r.   r/   r0   sleepr   r1   listrF   r   r   floatint)
r	   r*   r6   r   r   r7   random_query_1random_query_2r8   rU   r   rS   r$   r<   H   s>   




"0r<   )r)   typingr   numpyr   chromadb.apir   r(   chromadb.api.typesr   chromadb.test.conftestr   r   r   !chromadb.utils.distance_functionsr   r5   r;   r<   r   r   r   r$   <module>   s"   1