
    3i                         S SK r S SKJrJrJr  S SKJr  S SKJrJ	r	  S SK
JrJrJr  S SKJr  S SKJrJr  S SK Jr  S	/rS
\\   4S jr " S S5      rg)    N)ListAnyCallable)ValidationError)	MagicMockcreate_autospec)validate_config_schemaload_schemaget_available_schemas)known_embedding_functions)	Documents
Embeddings)MonkeyPatchchroma_langchainreturnc                  p    [         R                  " 5        V s/ s H  n U [        ;  d  M  U PM     sn $ s  sn f )z(Get all embedding function names to test)r   keysSKIP_EMBEDDING_FUNCTIONS)names    m/home/james-whalen/.local/lib/python3.13/site-packages/chromadb/test/utils/test_embedding_function_schemas.pyget_embedding_function_namesr      s;     .2244D// 	4  s   33c            	           \ rS rSrSr\R                  R                  S\" 5       5      S\	S\
\/\4   S\SS4S j5       rSS	 jr\S
\	S\4S j5       rSS jrSrg)TestEmbeddingFunctionSchemas   z)Test class for embedding function schemasef_namemock_embeddingsmock_common_depsr   Nc                   ^ [         U   n[        USS9m[        U" S/5      S9nUTl        US:X  aH  SSKJnJnJn  SUR                  R                  UR                  R                  US	.TR                  l        UR                  US
U4S j5        U" 5       n	U	R                  5       n
UR                  U
5      nUR                  5       nX:X  d
   SU 35       eg)z/Test embedding function configuration roundtripT)instancetest)return_valuezchroma-cloud-qwenr   )ChromaCloudQwenEmbeddingModelChromaCloudQwenEmbeddingTask&CHROMA_CLOUD_QWEN_DEFAULT_INSTRUCTIONSCHROMA_API_KEY)api_key_env_varmodeltaskinstructions__new__c                    > T$ )N )clsargskwargsmock_efs      r   <lambda>WTestEmbeddingFunctionSchemas.test_embedding_function_config_roundtrip.<locals>.<lambda>A   s    g    z)Configs don't match after recreation for N)r   r   r   __call__Gchromadb.utils.embedding_functions.chroma_cloud_qwen_embedding_functionr"   r#   r$   QWEN3_EMBEDDING_0p6Bvalue
NL_TO_CODE
get_configr!   setattrbuild_from_config)selfr   r   r   ef_class	mock_callr"   r#   r$   ef_instanceconfignew_instance
new_configr0   s                @r   (test_embedding_function_config_roundtripETestEmbeddingFunctionSchemas.test_embedding_function_config_roundtrip    s     -W5 "(T: ?F8+DE	$ ))  $46KKQQ4??EE F	/G+ 	  i!E	

 j '')  11&9!,,.
  	A6wi@	A r3   c                    [        5        H  n[        U5      nSU;  a  M  0 nUS    HC  nUS   U   n[        US   [        5      (       a  US   S   OUS   nU R	                  U5      X4'   ME     US    HC  nUR                  5       nXt	 [        R                  " [        5         [        Xq5        SSS5        ME     M     g! , (       d  f       M[  = f)z)Test that schemas enforce required fieldsrequired
propertiestyper   N)
r   r
   
isinstancelist_get_dummy_valuecopypytestraisesr   r	   r<   schema_nameschemar@   fieldfield_schema
field_typetest_configs           r   test_schema_required_fields8TestEmbeddingFunctionSchemas.test_schema_required_fieldsS   s    02K -F' F
+%l3E: ",v"6== !(+%f- 
 !% 5 5j A ,  
+$kkm&]]?3*;D 43 ,# 3( 43s   #C  
CrT   c                 8    SSSS0 / S.nUR                  U S5      $ )z(Get a dummy value for a given field typedummyr   g        F)stringintegernumberbooleanobjectarray)get)rT   type_maps     r   rK   -TestEmbeddingFunctionSchemas._get_dummy_valuel   s0     
 ||J00r3   c                    [        5        H  n[        U5      n0 nSU;   aL  US    HC  nUS   U   n[        US   [        5      (       a  US   S   OUS   nU R	                  U5      X4'   ME     UR                  5       nSUS'   UR                  SS5      S	L d  M  [        R                  " [        5         [        Xq5        S
S
S
5        M     g
! , (       d  f       M  = f)z.Test that schemas reject additional propertiesrF   rG   rH   r   r7   additional_propertyadditionalPropertiesTFN)r   r
   rI   rJ   rK   rL   r`   rM   rN   r   r	   rO   s           r   !test_schema_additional_properties>TestEmbeddingFunctionSchemas.test_schema_additional_propertiesy   s    02K -FF V##J/E#),#7#>L &l6&:DAA %V,Q/)&1 
 %)$9$9*$EFM 0 !++-K18K-. zz0$75@]]?3*;D 43+ 3* 43s   3C
C	r,   )r   N)__name__
__module____qualname____firstlineno____doc__rM   markparametrizer   strr   r   r   r   rC   rV   staticmethodr   rK   rf   __static_attributes__r,   r3   r   r   r      s    3[[Y(D(FG0A0A "9+z"9:0A &	0A
 
0A H0AdE2 
1S 
1S 
1 
1Er3   r   )rM   typingr   r   r   
jsonschemar   unittest.mockr   r   *chromadb.utils.embedding_functions.schemasr	   r
   r   "chromadb.utils.embedding_functionsr   chromadb.api.typesr   r   r   r   ro   r   r   r,   r3   r   <module>rx      sU     & & & 4 
 I 4   
d3i tE tEr3   