Ë
    lQêj=  ã                   óX   — 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y)
é    N)ÚMorphEmbeddingFunctionc                  ó  — t         j                  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 ‚y)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   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­w)N)Ú
isinstanceÚnpÚndarray©Ú.0Úembs     úc/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/chromadb/test/ef/test_morph_ef.pyú	<genexpr>z=test_morph_embedding_function_with_api_key.<locals>.<genexpr>   s   è ø€ ÒA¨sŒz˜#œrŸz™z×*ÑAùs   ‚$&c              3   ó8   K  — | ]  }t        |«      d kD  –— Œ y­w)r   N)Úlenr   s     r   r   z=test_morph_embedding_function_with_api_key.<locals>.<genexpr>   s   è ø€ Ò2 Œs�3‹x˜!�|Ñ2ùs   ‚)ÚosÚenvironÚgetÚpytestÚskipr   r   Úall)ÚefÚcode_snippetsÚ
embeddingss      r   Ú*test_morph_embedding_function_with_api_keyr   	   s�   € ä	‡z�z‡~�~�oÓ&Ð.Ü�‰Ð+Ô,ä	Ø'ô
€Bð 	9ØKð€Mñ
 �MÓ"€JØÐ!Ð!Ð!Üˆz‹?˜aÒÐÐÜÑA°jÔAÔAÐAÐAÜÑ2 zÔ2Ô2Ð2Ñ2ó    c                  ó,  — t         j                  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
kD  sJ ‚y)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�z‡~�~�oÓ&Ð.Ü�‰Ð+Ô,ä	Ø'Ø.ØØ'ô	
€Bð ;Ð;€Lá�LÓ!€JØÐ!Ð!Ð!Üˆz‹?˜aÒÐÐÜ�j ‘m¤R§Z¡ZÔ0Ð0Ð0Üˆz˜!‰}Ó Ò!Ð!Ñ!r   c                  ól  — 	 ddl } t	        dddd¬«      }|j                  «       }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                  |«      }|j                  «       }||k(  sJ ‚y# t        $ r t        j                  d«       Y Œ¬w xY w)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_roundtripr3   5   s	  € ð4Ûô 
 Ø'Ø.ØØ'ô	
€Bð �]‰]‹_€Fð ˜6Ñ!Ð!Ð!Ø˜ÑÐÐØ Ñ&Ð&Ð&Ø Ñ&Ð&Ð&ð �,ÑÐ#7Ò7Ð7Ð7Ø�*ÑÐ!>Ò>Ð>Ð>ØÐ#Ñ$¨Ò/Ð/Ð/ØÐ#Ñ$¨Ò7Ð7Ð7ô $×5Ñ5°fÓ=€FØ×"Ñ"Ó$€Jð �ZÒÐÑøô= ò 4Ü�‰Ð2Ö3ð4ús   ‚B ÂB3Â2B3c                  ó6   — t        j                  «       dk(  sJ ‚y)z8Test that Morph embedding function returns correct name.ÚmorphN)r   Úname© r   r   Ú"test_morph_embedding_function_namer8   Z   s   € ä!×&Ñ&Ó(¨GÒ3Ð3Ñ3r   c                  óÞ   — 	 ddl } t	        dd¬«      }|j                  «       dk(  sJ ‚|j                  «       }d|v sJ ‚d|v sJ ‚d	|v sJ ‚y# t        $ r t        j                  d«       Y Œew xY w)
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   r?   s      r   Ú$test_morph_embedding_function_spacesr@   _   s‘   € ð4Ûô 
 Ø'Ø'ô
€Bð ×ÑÓ Ò)Ð)Ð)ð ×*Ñ*Ó,ÐØÐ'Ñ'Ð'Ð'ØÐ#Ñ#Ð#Ð#ØÐ#Ñ#Ð#Ñ#øô ò 4Ü�‰Ð2Ö3ð4ús   ‚A ÁA,Á+A,c                  óÆ   — dddœ} t        j                  | «       ddi}t        j                  t        «      5  t        j                  |«       ddd«       y# 1 sw Y   yxY w)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_configrG   u   sa   € ð +Ø*ñ€Lô ×*Ñ*¨<Ô8ð 	Ð*ð€Nô
 
�‰”yÓ	!ñ ?Ü×.Ñ.¨~Ô>÷?÷ ?ñ ?ús   ¸AÁA )ÚreturnN)r   r   Únumpyr   Ú;chromadb.utils.embedding_functions.morph_embedding_functionr   r   r)   r3   r8   r@   rG   r7   r   r   ú<module>rK      s2   ðÛ 	Û Û õó
3ó,"ó," óJ4ó
$ô,?r   