
    ei                     ~   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*                  j-                  ee      d
eddfd       Zej*                  j-                  ee      d
eddfd       Zej*                  j-                  ee      d
eddfd       Zy)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                     | j                         }|j                          dt               j                   }|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       k/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/chromadb/test/api/test_search_api.py_create_test_collectionr      sK     779F
LLN(6O00o0FJv    )reasonc                 P   t        |       \  }}|j                  g dg dg dg dg dg       t               j                  t	        g dd            }|j                  |t        j                  	      }|d
   J t        |d
         dk(  sJ t        |d
   d         dkD  sJ y)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U   X]]3%9DEF93J3JKG5>%%%wu~!###wu~a !A%%%r   c                 $   t        |       \  }}|j                  g dg dg dg dg dg       t               j                  t	        g dd            }|j                  |t        j                  	      }|d
   J t        |d
         dk(  sJ y)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U   X]]3%9DEF93G3GHG 5>%%%wu~!###r   c                 *   t        |       \  }}|j                  ddgddgg dg dg       t               j                  t	        g dd	            }|j                  |      }|d
   J t        |d
         dk(  sJ t        |d
   d         dkD  sJ y)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_levelrF   P   s    
 ,,<=MJ NNV /2(*>?   X]]3%9D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   rF    r   r   <module>rS      s    (    " 5 4 5 
%

:y !
 *3MN&%&	& O&, *3MN$%$	$ O$0 *3MN&%&	& O&r   