
    _j                        d Z ddlmZ ddlmZ ddl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 dd	lmZmZmZ d
edee	ef         fdZej                            ee          d
eddfd            Zej                            ee          d
eddfd            Zej                            ee          d
eddfd            Zej                            ee          d
eddfd            ZdS )z"Tests for the Search API endpoint.    )Tuple)uuid4N)	ClientAPI)
Collection)
Embeddings	ReadLevel)KnnSearch)ClientFactoriesis_spann_disabled_modeskip_reason_spann_disabledclient_factoriesreturnc                     |                                  }|                                 dt                      j         }|                    |          }||fS )z(Create a test collection with some data.search_api_test_)name)create_client_from_systemresetr   hexget_or_create_collection)r   clientcollection_name
collections       ^/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/chromadb/test/api/test_search_api.py_create_test_collectionr      sV     7799F
LLNNN666O00o0FFJv    )reasonc                    t          |           \  }}|                    g dg dg dg dg dg           t                                          t	          g dd                    }|                    |t          j        	          }|d
         J t          |d
                   dk    sJ t          |d
         d                   dk    sJ dS )zCTest search with ReadLevel.INDEX_AND_WAL (default) returns results.doc1doc2doc3zapple fruitzbanana fruitzcar vehicleg?皙?333333?皙?r%   r&   r'         ?g?皙?ffffff?333333?ids	documents
embeddings
   querylimit
read_levelr/   N   r   )	r   addr
   rankr	   searchr   INDEX_AND_WALlenr   r   _r;   resultss        r   )test_search_with_read_level_index_and_walrA       s    
 ,,<==MJ NN$$$@@@(((*>*>*>@T@T@TU     XX]]3%9%9%9DDDEEF93JKKG5>%%%wu~!####wu~a !!A%%%%%%r   c                 d   t          |           \  }}|                    g dg dg dg dg dg           t                                          t	          g dd                    }|                    |t          j        	          }|d
         J t          |d
                   dk    sJ dS )z6Test search with ReadLevel.INDEX_ONLY returns results.r   r#   r$   r(   r*   r.   r2   r3   r6   r/   Nr8   )	r   r9   r
   r:   r	   r;   r   
INDEX_ONLYr=   r>   s        r   &test_search_with_read_level_index_onlyrD   7   s    
 ,,<==MJ NN$$$@@@(((*>*>*>@T@T@TU     XX]]3%9%9%9DDDEEF93GHHG 5>%%%wu~!######r   c                 d   t          |           \  }}|                    g dg dg dg dg dg           t                                          t	          g dd                    }|                    |t          j        	          }|d
         J t          |d
                   dk    sJ dS )zATest search with ReadLevel.INDEX_AND_BOUNDED_WAL returns results.r   r#   r$   r(   r*   r.   r2   r3   r6   r/   Nr8   )	r   r9   r
   r:   r	   r;   r   INDEX_AND_BOUNDED_WALr=   r>   s        r   1test_search_with_read_level_index_and_bounded_walrG   P   s    
 ,,<==MJNN$$$@@@(((*>*>*>@T@T@TU     XX]]3%9%9%9DDDEEF93RSSG5>%%%wu~!######r   c                    t          |           \  }}|                    ddgddgg dg dg           t                                          t	          g dd	                    }|                    |          }|d
         J t          |d
                   dk    sJ t          |d
         d                   dk    sJ dS )zETest search without explicit read_level uses default (INDEX_AND_WAL).r    r!   zhello worldzgoodbye worldr$   )r)   r-   r,   r+   r.   r2   r3   r/   Nr8   r   )r   r9   r
   r:   r	   r;   r=   r>   s        r   test_search_default_read_levelrI   e   s    
 ,,<==MJ NNV /2(((*>*>*>?     XX]]3%9%9%9DDDEEF''G 5>%%%wu~!####wu~a !!A%%%%%%r   )__doc__typingr   uuidr   pytestchromadb.apir   chromadb.api.models.Collectionr   chromadb.api.typesr   r   chromadb.execution.expressionr	   r
   chromadb.test.conftestr   r   r   r   markskipifrA   rD   rG   rI    r   r   <module>rV      s   ( (              " " " " " " 5 5 5 5 5 5 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5         
%

:y !
 
 
 
 *3MNN&%&	& & & ON&, *3MNN$%$	$ $ $ ON$0 *3MNN$%$	$ $ $ ON$( *3MNN&%&	& & & ON& & &r   