
    _j=                     Z    d dl Z d dlZd dlZd dlmZ d
dZd
dZd
dZd
dZ	d
dZ
d
d	ZdS )    N)MorphEmbeddingFunctionreturnc                  H   t           j                            d          t          j        d           t          d          } ddg} | |          }|J t          |          dk    sJ t          d	 |D                       sJ t          d
 |D                       sJ dS )z8Test Morph embedding function when API key is available.MORPH_API_KEYNMORPH_API_KEY not setmorph-embedding-v2)
model_namez-def hello_world():
    print('Hello, World!')z?class Calculator:
    def add(self, a, b):
        return a + b   c              3   J   K   | ]}t          |t          j                  V  d S )N)
isinstancenpndarray.0embs     [/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/chromadb/test/ef/test_morph_ef.py	<genexpr>z=test_morph_embedding_function_with_api_key.<locals>.<genexpr>   s.      AAsz#rz**AAAAAA    c              3   <   K   | ]}t          |          d k    V  dS )r   N)lenr   s     r   r   z=test_morph_embedding_function_with_api_key.<locals>.<genexpr>   s,      22s3xx!|222222r   )osenvirongetpytestskipr   r   all)efcode_snippets
embeddingss      r   *test_morph_embedding_function_with_api_keyr    	   s    	z~~o&&.+,,,	'
 
 
B 	9KM
 M""J!!!z??aAAjAAAAAAAA22z2222222222r   c                  Z   t           j                            d          t          j        d           t          dddd          } dg} | |          }|J t          |          d	k    sJ t          |d
         t          j	                  sJ t          |d
                   d
k    sJ dS )z5Test Morph embedding function with custom parameters.r   Nr   r   https://api.morphllm.com/v1floatr	   api_baseencoding_formatapi_key_env_varz$function add(a, b) { return a + b; }   r   )
r   r   r   r   r   r   r   r   r   r   )r   code_snippetr   s      r   4test_morph_embedding_function_with_custom_parametersr*      s    	z~~o&&.+,,,	'.'	
 
 
B ;;LL!!J!!!z??ajmRZ00000z!}!!!!!!r   c                     	 ddl } n$# t          $ r t          j        d           Y nw xY wt	          dddd          }|                                }d	|v sJ d
|v sJ d|v sJ d|v sJ |d	         dk    sJ |d
         dk    sJ |d         dk    sJ |d         dk    sJ t	          j        |          }|                                }||k    sJ dS )zKTest that Morph embedding function configuration can be saved and restored.r   Nopenai package not installedr   r"   r#   r   r$   r	   r%   r&   r'   )openaiImportErrorr   r   r   
get_configbuild_from_config)r-   r   confignew_ef
new_configs        r   .test_morph_embedding_function_config_roundtripr4   5   sU   4 4 4 42333334 
 '.'	
 
 
B ]]__F 6!!!!&&&&&&&& ,#77777*!>>>>>#$////#$7777 $5f==F""$$J Z    ((c                  8    t          j                    dk    sJ dS )z8Test that Morph embedding function returns correct name.morphN)r   name r   r   "test_morph_embedding_function_namer:   Z   s"    !&((G333333r   c                      	 ddl } n$# t          $ r t          j        d           Y nw xY wt	          dd          }|                                dk    sJ |                                }d|v sJ d|v sJ d	|v sJ dS )
z<Test that Morph embedding function supports expected spaces.r   Nr,   r   r   r	   r'   cosinel2ip)r-   r.   r   r   r   default_spacesupported_spaces)r-   r   rA   s      r   $test_morph_embedding_function_spacesrB   _   s    4 4 4 42333334 
 ''
 
 
B )))) **,,'''''############r5   c                      ddd} t          j        |            ddi}t          j        t                    5  t          j        |           ddd           dS # 1 swxY w Y   dS )zETest that Morph embedding function validates configuration correctly.r   r   r<   r	   N)r   validate_configr   raises	Exception)valid_configinvalid_configs     r   -test_morph_embedding_function_validate_configrI   u   s     +* L *<888 	*N
 
y	!	! ? ?.~>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?s   AA A)r   N)r   r   numpyr   ;chromadb.utils.embedding_functions.morph_embedding_functionr   r    r*   r4   r:   rB   rI   r9   r   r   <module>rL      s    				          
3 3 3 3," " " ","  "  "  " J4 4 4 4
$ $ $ $,? ? ? ? ? ?r   