o
    3IhD                     @   s   d dl mZ d dlmZmZ d dlmZmZ d dlZd dl	m
Z
mZmZ d dlmZ ddd	Zdd
dZdddZeG dd dee ZdddZdS )    )embedding_functions)EmbeddingFunctionregister_embedding_function)DictAnyN)
EmbeddingsSpace
Embeddable)validation_contextreturnc                  C   s   h d} | t  ksJ dS )a#  
    Ensure that `get_builtins` is consistent after the ef migration.

    This test is intended to be temporary until the ef migration is complete as
    these expected builtins are likely to grow as long as users add new
    embedding functions.

    REMOVE ME ON THE NEXT EF ADDITION
    >   ONNXMiniLM_L6_V2JinaEmbeddingFunctionCohereEmbeddingFunctionOllamaEmbeddingFunctionOpenAIEmbeddingFunctionBasetenEmbeddingFunctionDefaultEmbeddingFunctionMistralEmbeddingFunctionOpenCLIPEmbeddingFunctionRoboflowEmbeddingFunctionText2VecEmbeddingFunctionVoyageAIEmbeddingFunctionHuggingFaceEmbeddingServerGooglePalmEmbeddingFunctionInstructorEmbeddingFunctionTogetherAIEmbeddingFunctionHuggingFaceEmbeddingFunctionGoogleVertexEmbeddingFunctionAmazonBedrockEmbeddingFunction ChromaLangchainEmbeddingFunction#GoogleGenerativeAiEmbeddingFunction$CloudflareWorkersAIEmbeddingFunction$SentenceTransformerEmbeddingFunctionN)r   get_builtins)expected_builtins r%   X/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/chromadb/test/ef/test_ef.pytest_get_builtins_holds   s   
r'   c                  C   s4   t tdsJ t } | d usJ t| tsJ d S )Nr   )hasattrr   r   
isinstancer   )
default_efr%   r%   r&   test_default_ef_exists7   s   r+   c                  C   sR   t  D ]"} | dkrqtt | sJ ttt | tsJ ttt | ts&J qd S )Nr   )r   r#   r(   r)   getattrtype
issubclassr   )efr%   r%   r&   test_ef_imports?   s   r0   c                   @   s   e Zd ZddefddZeddedefdd	Ze	de
fd
dZdee
ef fddZe	dee
ef dd fddZdefddZdS )CustomEmbeddingFunction   dimc                 C   s
   || _ d S )N_dim)selfr3   r%   r%   r&   __init__K      
z CustomEmbeddingFunction.__init__custom_ef_callinputr   c                 C   s   t d)NThis is a test exception)	Exception)r6   r:   r%   r%   r&   __call__N   s   z CustomEmbeddingFunction.__call__c                   C      dS )N	custom_efr%   r%   r%   r%   r&   nameR   s   zCustomEmbeddingFunction.namec                 C   s
   d| j iS )Nr3   r4   r6   r%   r%   r&   
get_configV   r8   z"CustomEmbeddingFunction.get_configconfigc                 C   s   t | d dS )Nr3   )r3   )r1   )rC   r%   r%   r&   build_from_configY   s   z)CustomEmbeddingFunction.build_from_configc                 C   r>   )Ncosiner%   rA   r%   r%   r&   default_space]   s   z%CustomEmbeddingFunction.default_spaceN)r2   )__name__
__module____qualname__intr7   r
   r	   r   r=   staticmethodstrr@   r   r   rB   rD   r   rF   r%   r%   r%   r&   r1   I   s    r1   c                  C   sp   t  } tt}| dg W d    n1 sw   Y  d}| d}t|j|ks-J |jj|fks6J d S )Nz	test datar;   z in custom_ef_call.)r1   pytestraisesr<   rL   valueargs)r?   excinfooriginal_msgexpected_msgr%   r%   r&   &test_validation_context_with_custom_efa   s   
rT   )r   N)chromadb.utilsr   "chromadb.utils.embedding_functionsr   r   typingr   r   rM   chromadb.api.typesr   r   r	   $chromadb.api.models.CollectionCommonr
   r'   r+   r0   r1   rT   r%   r%   r%   r&   <module>   s    

'

