
    LKiC1                    P   S SK JrJrJrJrJrJrJrJrJ	r	J
r
JrJrJrJrJrJr  S SKJr  S SKJrJrJr  S SKJr  S SKr " S S\\\      5      r " S S	\\\      5      r " S
 S5      rSS jrSS jrSS jr SS jr!SS jr"SS jr#SS jr$SS jr%SS jr&SS jr'SS jr(SS jr)g)    )SchemaSparseVectorIndexConfigSparseEmbeddingFunctionSparseVectorStringInvertedIndexConfigIntInvertedIndexConfigFloatInvertedIndexConfigBoolInvertedIndexConfigVectorIndexConfigHnswIndexConfigSpannIndexConfigFtsIndexConfigEmbeddingFunction
EmbeddingsCmekCmekProvider)Key)ListDictAny)ValidationErrorNc                       \ rS rSrSrSS\4S jjrS\\   S\\   4S jr	\
S\4S j5       rS\\\4   4S	 jr\
S
\\\4   SS 4S j5       rSrg)MockSparseEmbeddingFunction   z+Mock sparse embedding function for testing.namec                     Xl         g N_name)selfr   s     _/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/chromadb/test/api/test_schema.py__init__$MockSparseEmbeddingFunction.__init__   s    
    inputreturnc                 J    U Vs/ s H  n[        SS/SS/S9PM     sn$ s  snf )Nr            ?)indicesvalues)r   )r    r%   _s      r!   __call__$MockSparseEmbeddingFunction.__call__   s)    INOAaVS#J?OOOs    c                      g)Nmock_sparse r1   r$   r!   r    MockSparseEmbeddingFunction.name"   s    r$   c                     SU R                   0$ )Nr   r   r    s    r!   
get_config&MockSparseEmbeddingFunction.get_config&   s    

##r$   configc                 8    [        U R                  SS5      5      $ )Nr   r0   )r   getr7   s    r!   build_from_config-MockSparseEmbeddingFunction.build_from_config)   s    *6::fm+LMMr$   r   N)r0   )__name__
__module____qualname____firstlineno____doc__strr"   r   r   r-   staticmethodr   r   r   r5   r;   __static_attributes__r1   r$   r!   r   r      s    5S Pd3i PD,> P #  $DcN $ N$sCx. N5R N Nr$   r   c                       \ rS rSrSrSS\4S jjrS\\   S\4S jr	\
S\4S j5       rS\\\4   4S	 jr\
S
\\\4   SS 4S j5       rS\4S jrS\\   4S jrSrg)MockEmbeddingFunction.   z$Mock embedding function for testing.
model_namec                     Xl         g r   _model_name)r    rH   s     r!   r"   MockEmbeddingFunction.__init__1   s    %r$   r%   r&   c                 l    SS K nU Vs/ s H  o2R                  / SQUR                  S9PM      sn$ s  snf )Nr   )r)   g       @g      @)dtype)numpyarrayfloat32)r    r%   npr,   s       r!   r-   MockEmbeddingFunction.__call__4   s0     FKKU

;UKKKs   %1c                      g)Nmock_embeddingr1   r1   r$   r!   r   MockEmbeddingFunction.name:   s    r$   c                     SU R                   0$ )NrH   rJ   r4   s    r!   r5    MockEmbeddingFunction.get_config>   s    d..//r$   r7   c                 8    [        U R                  SS5      5      $ )NrH   
mock_model)rF   r9   r:   s    r!   r;   'MockEmbeddingFunction.build_from_configA   s    $VZZl%KLLr$   c                     g)Ncosiner1   r4   s    r!   default_space#MockEmbeddingFunction.default_spaceE   s    r$   c                 
    / SQ$ )N)r]   l2ipr1   r4   s    r!   supported_spaces&MockEmbeddingFunction.supported_spacesH   s    %%r$   rJ   N)rZ   )r=   r>   r?   r@   rA   rB   r"   r   r   r-   rC   r   r   r   r5   r;   r^   rc   rD   r1   r$   r!   rF   rF   .   s    .&3 &Ld3i LJ L  #    0DcN 0 M$sCx. M5L M Ms &$s) &r$   rF   c                      \ rS rSrSrS/S jrS/S jrS/S jrS/S jrS/S jr	S/S	 jr
S/S
 jrS/S jrS/S jrS/S jrS/S jrS/S jrS/S jrS/S jrS/S jrS/S jrS/S jrS/S jrS/S jrS/S jrS/S jrS/S jrS/S jrS/S jrS/S jrS/S jrS/S jrS/S jr S/S  jr!S/S! jr"S/S" jr#S/S# jr$S/S$ jr%S/S% jr&S/S& jr'S/S' jr(S/S( jr)S/S) jr*S/S* jr+S/S+ jr,S/S, jr-S/S- jr.S.r/g)0TestNewSchemaL   z$Test cases for the new Schema class.Nc                 t	   [        5       nUR                  c   eUR                  R                  c   eUR                  R                  R                  c   eUR                  R                  R                  R                  SL d   eUR                  R                  R
                  c   eUR                  R                  R
                  R                  SL d   eUR                  R                  c   eUR                  R                  R                  c   eUR                  R                  R                  R                  SL d   eUR                  R                  c   eUR                  R                  R                  c   eUR                  R                  R                  R                  SL d   eUR                  R                  c   eUR                  R                  R                  c   eUR                  R                  R                  R                  SL d   eUR                  R                  c   eUR                  R                  R                  c   eUR                  R                  R                  R                  SL d   eUR                  R                  c   eUR                  R                  R                  c   eUR                  R                  R                  R                  SL d   eUR                   c   e[#        UR                   5      S:X  d   eSUR                   ;   d   eUR                   S   R                  c   eUR                   S   R                  R                  c   eUR                   S   R                  R                  R                  SL d   eUR                   S   R                  R
                  c   eUR                   S   R                  R
                  R                  SL d   eSUR                   ;   d   eUR                   S   R                  c   eUR                   S   R                  R                  c   eUR                   S   R                  R                  R                  SL d   eUR                   S   R                  R                  R$                  R&                  S:X  d   eg)z5Test that Schema() initializes with correct defaults.NFT   	#document
#embedding)r   defaultsstring	fts_indexenabledstring_inverted_index
float_listvector_indexsparse_vectorsparse_vector_index	int_valueint_inverted_indexfloat_valuefloat_inverted_indexbooleanbool_inverted_indexkeyslenr7   
source_keyr    schemas     r!   "test_default_schema_initialization0TestNewSchema.test_default_schema_initializationO   s    *** %%111%%//;;;%%//775@@@%%;;GGGOO""88@@DH	
H ))555))66BBBOO&&33;;uD	
D ,,888,,@@LLLOO))==EEN	
N ((444((;;GGGOO%%88@@DH	
H **666**??KKKOO''<<DDL	
L &&222&&::FFFOO##77??4G	
G {{&&&6;;1$$$ fkk))){{;'..:::{{;'..88DDD{{;'..88@@DHHH{{;'..DDPPP{{;'..DDLLPUUUU v{{***{{<(33???{{<(33@@LLL{{<(33@@HHDPPPKK%00==DDOO	
r$   c                    [        5       n[        5       nUR                  USS9nX1L d   eSUR                  ;   d   eUR                  S   R                  c   eUR                  S   R                  R
                   c   eUR                  S   R                  R
                  R                  SL d   eUR                  S   R                  R
                  R                  U:X  d   eUR                  S   R                  b   eUR                  S   R                  b   eUR                  S   R                  b   eUR                  S   R                  b   eUR                  S   R                  b   eUR                  R                  c   eUR                  R                  R
                  c   eUR                  R                  R
                  R                  SL d   eg)zJTest creating a sparse vector index on a specific key with default config.custom_sparse_keyr7   keyNTF)r   r   create_indexr{   rs   rt   ro   r7   rm   rq   ru   rw   ry   rl   r    r   r7   results       r!   &test_create_sparse_vector_index_on_key4TestNewSchema.test_create_sparse_vector_index_on_key   s    )*$$F8K$L  #fkk111 {{./==IIIKK+,::NN	
 KK+,::NNVV	
 KK+,::NNUU	

 {{./66>>>{{./::BBB{{./99AAA{{./;;CCC{{./77??? ,,888,,@@LLLOO))==EEN	
Nr$   c                    [        5       n[        SS9n[        USS9nUR                  USS9nXAL d   eSUR                  ;   d   eUR                  S   R
                  c   eUR                  S   R
                  R                   c   eUR                  S   R
                  R                  nUR                  SL d   eUR                  R                  U:X  d   eUR                  R                  S:X  d   eUR                  R                  R                  5       S	:X  d   eUR                  R                  R                  5       S
S0:X  d   eUR                  R
                  c   eUR                  R
                  R                  c   eUR                  R
                  R                  R                  SL d   eUR                  R
                  R                  R                  R                   b   eg)zTTest creating a sparse vector index with custom config including embedding function.custom_sparse_efr   custom_document_fieldembedding_functionr}   sparse_embeddingsr   NTr0   r   F)r   r   r   r   r{   rs   rt   ro   r7   r   r}   r   r5   rl   )r    r   embedding_funcr7   r   sparse_indexs         r!   2test_create_sparse_vector_index_with_custom_config@TestNewSchema.test_create_sparse_vector_index_with_custom_config   s    5:LM(-:Q

 $$F8K$L  #fkk111{{./==IIIKK+,::NN	

 {{

-++ 	 ##t+++ ""55GGG""--1HHHH ""55::<MMM""55@@B&G
 
 	
 

 ,,888,,@@LLLOO))==EEN	
N OO))==DDWW	
r$   c                    [        5       n[        5       nUR                  USS9nX1L d   eSUR                  ;   d   eUR                  S   R                  c   eUR                  S   R                  R
                  c   eUR                  S   R                  R
                  R                  SL d   eSUR                  ;   d   eUR                  S   R                  c   eUR                  S   R                  R
                  c   eUR                  S   R                  R
                  R                  SL d   eSUR                  ;   d   eUR                  S   R                  b   eUR                  R                  c   eUR                  R                  R
                  c   eUR                  R                  R
                  R                  SL d   eg)7Test disabling string inverted index on a specific key.custom_text_keyr   NFrj   rk   T)r   r   delete_indexr{   rm   rp   ro   rl   r   s       r!   test_delete_index_on_key&TestNewSchema.test_delete_index_on_key   s    +,$$F8I$J  !FKK/// {{,-44@@@{{,-44JJVVVKK)*11GGOOSXX	
X fkk))){{;'..:::{{;'..DDPPPKK$++AAIIUR	
R v{{***KK%,,4	
4 %%111%%;;GGGOO""88@@DH	
Hr$   c                 ^   [        5       n[        S[        5       S9n[        5       nUR	                  USS9R                  USS9R                  USS9nXAL d   eSUR                  ;   d   eSUR                  ;   d   eSUR                  ;   d   eUR                  S   R                  c   eUR                  S   R                  R                  c   eUR                  S   R                  R                  R                  SL d   eUR                  S   R                  R                  R                  R                  S:X  d   eUR                  S   R                  b   eUR                  S   R                  b   eUR                  S   R                  b   eUR                  S   R                  b   eUR                  S   R                   b   eUR                  S   R                  c   eUR                  S   R                  R"                  c   eUR                  S   R                  R"                  R                  S	L d   eUR                  S   R                  b   eUR                  S   R                  b   eUR                  S   R                  b   eUR                  S   R                  b   eUR                  S   R                   b   eUR                  S   R                  c   eUR                  S   R                  R"                  c   eUR                  S   R                  R"                  R                  S	L d   eUR                  S   R                  b   eUR                  S   R                  b   eUR                  S   R                  b   eUR                  S   R                  b   eUR                  S   R                   b   eUR$                  R                  c   eUR$                  R                  R                  c   eUR$                  R                  R                  R                  S	L d   eUR$                  R                  c   eUR$                  R                  R"                  c   eUR$                  R                  R"                  R                  SL d   eS
UR                  ;   d   eSUR                  ;   d   eUR                  S
   R                  c   eUR                  S
   R                  R&                  c   eUR                  S
   R                  R&                  R                  SL d   eUR                  S   R                  c   eUR                  S   R                  R(                  c   eUR                  S   R                  R(                  R                  SL d   eg)zDTest chaining create_index() and delete_index() operations together.raw_textr}   r   embeddings_keyr   
text_key_1
text_key_2NTFrj   rk   )r   r   r   r   r   r   r{   rs   rt   ro   r7   r}   rm   rq   ru   rw   ry   rp   rl   rn   rr   )r    r   sparse_configstring_configr   s        r!   )test_chained_create_and_delete_operations7TestNewSchema.test_chained_create_and_delete_operations"  sh    0!6Q6S
 23 }:JK\L\A\L\A 	   6;;...v{{***v{{*** {{+,::FFFKK()77KKW	
W KK()77KKSS	
 KK m//zz	
 {{+,33;;;{{+,77???{{+,66>>>{{+,88@@@{{+,44<<< {{<(//;;;{{<(//EEQQQ{{<(//EEMMQVVVV {{<(66>>>{{<(33;;;{{<(22:::{{<(44<<<{{<(00888 {{<(//;;;{{<(//EEQQQ{{<(//EEMMQVVVV {{<(66>>>{{<(33;;;{{<(22:::{{<(44<<<{{<(00888 ,,888,,@@LLLOO))==EEN	
N %%111%%;;GGGOO""88@@DH	
H fkk)))v{{***{{;'..:::{{;'..88DDDKK$++55==E	
E{{<(33???{{<(33@@LLLKK%00==EEM	
Mr$   c                    [        5       n[        SSS9nUR                  US9nX1L d   eUR                  R                  c   eUR                  R                  R
                  c   eUR                  R                  R
                  R                  SL d   eUR                  R                  R
                  R                  R                  S:X  d   eUR                  R                  R
                  R                  R                  S:X  d   eUR                  S   R                  c   eUR                  S   R                  R
                  c   eUR                  S   R                  R
                  R                  SL d   eUR                  S   R                  R
                  R                  R                  S:X  d   eUR                  S   R                  R
                  R                  R                  S	:X  d   e[        S
S9n[        R                  " [        SS9   UR                  USS9  SSS5        [        R                  " [        SS9   UR                  US	S9  SSS5        [        SS9n[        R                  " [        SS9   UR                  USS9  SSS5        g! , (       d  f       N|= f! , (       d  f       N[= f! , (       d  f       g= f)z5Test vector index configuration and key restrictions.r]   custom_source)spacer}   r:   NFrk   Trj   ra   )r   /Vector index cannot be enabled on specific keysmatch
my_vectorsr   .Cannot create index on special key '#document'rb   /Cannot create index on special key '#embedding')r   r   r   rl   rq   rr   ro   r7   r   r}   r{   pytestraises
ValueError)r    r   vector_configr   vector_config2vector_config3s         r!   )test_vector_index_config_and_restrictions7TestNewSchema.test_vector_index_config_and_restrictions  s~   )_U $$M$: ))555))66BBBOO&&33;;uD	
D))66==CCxOOOOO&&33::EEX	
X
 {{<(33???{{<(33@@LLLKK%00==EEM	
M KK%00==DDJJhV	
V KK%00==DDOO	

 +6]]O
 ~<H
 ]]N
 ~;G
 +6]]O
 ~<H
 

 

 

 
s$   J J1K 
J.1
J?
Kc                 V   [        5       n[        SS9n[        SSSS9n[        USUSS	9nUR	                  US
9nXQL d   eUR
                  R                  c   eUR
                  R                  R                  nUc   eUR                  SL d   eUR                  R                  UL d   eUR                  R                  R                  5       S:X  d   eUR                  R                  R                  5       SS0:X  d   eUR                  R                  S:X  d   eUR                  R                  c   eUR                  R                  R                  S:X  d   eUR                  R                  R                   S:X  d   eUR                  R                  R"                  S:X  d   eUR                  R$                  S:X  d   eUR&                  S   R                  c   eUR&                  S   R                  R                  nUc   eUR                  SL d   eUR                  R                  UL d   eUR                  R                  S:X  d   eUR                  R                  c   eUR                  R                  R                  S:X  d   eUR                  R$                  S:X  d   eg)zATest setting embedding function and HNSW config for vector index.custom_model_v2rH          d   ef_constructionmax_neighbors	ef_searchra   r   )r   r   hnswr}   r:   NFrU   rH   rk   Trj   )r   rF   r   r   r   rl   rq   rr   ro   r7   r   r   r5   r   r   r   r   r   r}   r{   )r    r   mock_efhnsw_configr   r   defaults_vectorembedding_vectors           r!   2test_vector_index_with_embedding_function_and_hnsw@TestNewSchema.test_vector_index_with_embedding_function_and_hnsw  s    (3DE%rS

 *&.	
 $$M$: ))555 //44AA***&&%///%%88GCCC%%88==?CSSSS%%88CCE+J
 
 	
 
 %%++t333%%**666%%**::cAAA%%**88B>>>%%**44;;;%%004KKKK {{<(33???!;;|4??LL+++''4///&&99WDDD&&,,444&&++777&&++;;sBBB##..+=	
=r$   c                    [        5       n[        5       n[        R                  " [        SS9   UR                  US9  SSS5        UR                  USS9nX1L d   eUR                  S   R                  c   eUR                  S   R                  R                  c   eUR                  S   R                  R                  R                  SL d   eUR                  S   R                  R                  R                  U:X  d   e[        5       n[        R                  " [        SS9   UR                  USS9  SSS5        [        R                  " [        S	S9   UR                  US
S9  SSS5        [        R                  " [        SS9   UR                  [        5       SS9  SSS5        g! , (       d  f       GNu= f! , (       d  f       N= f! , (       d  f       Nl= f! , (       d  f       g= f)z2Test FTS index configuration and key restrictions..FTS index can only be enabled on #document keyr   r:   Nrj   r   Tcustom_text_fieldr   rk   r   )r   r   r   r   r   r   r{   rm   rn   ro   r7   r   )r    r   
fts_configr   fts_config2s        r!   &test_fts_index_config_and_restrictions4TestNewSchema.test_fts_index_config_and_restrictions  s   #%
 ]]N
 z2
 $$JK$H {{;'..:::{{;'..88DDD{{;'..88@@DHHH{{;'..88??:MMM %&]]N
 {8KL
 ]]O
 {E
 ]]N
 '@'BT
 
;
 
"
 

 

 
s/   F,&F>G
G ,
F;>
G
G 
G.c                 X   [        5       n[        5       n[        R                  " [        SS9   UR                  USS9  SSS5        [        R                  " [        SS9   UR                  USS9  SSS5        [        5       n[        R                  " [        SS9   UR                  USS9  SSS5        [        R                  " [        SS9   UR                  USS9  SSS5        g! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nc= f! , (       d  f       g= f)zHTest that #embedding and #document keys are blocked for all index types.r   r   rj   r   Nr   rk   )r   r   r   r   r   r   r   )r    r   r   r   s       r!   -test_special_keys_blocked_for_all_index_types;TestNewSchema.test_special_keys_blocked_for_all_index_types  s    23]]N
 }+F
 ]]O
 },G
 01]]N
 }+F
 ]]O
 },G
 
'
 

 

 

 
s/   C( C9D
D(
C69
D

D
D)c                     [        5       n[        R                  " [        SS9   UR	                  SS9  SSS5        [        R                  " [        SS9   UR                  SS9  SSS5        g! , (       d  f       N@= f! , (       d  f       g= f)z8Test that enabling all indexes for a key is not allowed.z.Cannot enable all index types for key 'my_key'r   my_keyr   Nz/Cannot disable all index types for key 'my_key')r   r   r   r   r   r   r~   s     r!   &test_cannot_enable_all_indexes_for_key4TestNewSchema.test_cannot_enable_all_indexes_for_key7  s|     ]]N
 H-
 ]]O
 H-
 

 

 
s   A.A?.
A<?
Bc                    [        5       n[        5       n[        R                  " [        SS9   UR                  US9  SSS5        [        R                  " [        SS9   UR                  USS9  SSS5        [        5       n[        R                  " [        SS9   UR                  US9  SSS5        [        R                  " [        SS9   UR                  USS9  SSS5        UR                  US	S9  UR                  S	   R                  c   eUR                  S	   R                  R                  c   eUR                  S	   R                  R                  R                  S
L d   eUR                  S	   R                  R                  R                  U:X  d   eg! , (       d  f       GNf= f! , (       d  f       GNF= f! , (       d  f       GN= f! , (       d  f       N= f)zLTest that deleting vector index is not allowed and FTS delete is restricted.0Deleting vector index is not currently supportedr   r:   Nr   r   5Deleting FTS index is only supported on #document keymy_textrj   F)r   r   r   r   r   r   r   r{   rm   rn   ro   r7   r    r   r   r   s       r!   &test_cannot_delete_vector_or_fts_index4TestNewSchema.test_cannot_delete_vector_or_fts_indexG  s    *+]]P
 }5
 ]]P
 },G
 $%
]]U
 z2
 ]]U
 zyA
 	:;?{{;'..:::{{;'..88DDD{{;'..88@@EIII{{;'..88??:MMM;
 

 

 

 
s/   FF/GG
F,/
F>
G
G!c                    [        5       nUR                  R                  c   eUR                  R                  R                  c   eUR                  R                  R                  R                  SL d   e[        5       nUR                  US9nX1L d   eUR                  R                  R                  c   eUR                  R                  R                  R                  SL d   eUR                  R                  R                  R                  U:X  d   eUR                  S   R                  c   eUR                  S   R                  R                  c   eUR                  S   R                  R                  R                  SL d   eg)z.Test disabling string inverted index globally.NTr:   Frj   )	r   rl   rm   rp   ro   r   r   r7   r{   r    r   r   r   s       r!   +test_disable_string_inverted_index_globally9TestNewSchema.test_disable_string_inverted_index_globallyl  sY    %%111%%;;GGG%%;;CCtKKK 23$$M$: %%;;GGG%%;;CCuLLL%%;;BBmSSS {{;'..:::{{;'..DDPPPKK$++AAIIUR	
Rr$   c                    [        5       n[        5       nUR                  USS9nX1L d   eSUR                  ;   d   eUR                  S   R                  c   eUR                  S   R                  R
                  c   eUR                  S   R                  R
                  R                  SL d   eUR                  S   R                  R
                  R                  U:X  d   eUR                  S   R                  b   eUR                  S   R                  b   eUR                  S   R                  b   eUR                  R                  c   eUR                  R                  R
                  c   eUR                  R                  R
                  R                  SL d   eUR                  S   R                  c   eUR                  S   R                  R
                  c   eUR                  S   R                  R
                  R                  SL d   eUR                  S   R                  c   eUR                  S   R                  R                  c   eUR                  S   R                  R                  R                  SL d   eg)r   my_text_fieldr   NFTrj   rk   )r   r   r   r{   rm   rp   ro   r7   rq   rs   ru   rl   rr   r   s       r!   )test_disable_string_inverted_index_on_key7TestNewSchema.test_disable_string_inverted_index_on_key  sZ    23$$M$O &++---{{?+22>>>{{?+22HHTTTKK(//EEMMQVV	
V KK(//EELL	

 {{?+66>>>{{?+99AAA{{?+55=== %%111%%;;GGG%%;;CCtKKK {{;'..:::{{;'..DDPPP{{;'..DDLLPUUUU{{<(33???{{<(33@@LLL{{<(33@@HHDPPPr$   c                 $   [        5       nUR                  R                  c   eUR                  R                  R                  c   eUR                  R                  R                  R                  SL d   e[        5       nUR                  US9nX1L d   eUR                  R                  R                  R                  SL d   eUR                  R                  R                  R                  U:X  d   e[        5       nUR                  USS9nX1L d   eSUR                  ;   d   eUR                  S   R                  c   eUR                  S   R                  R                  c   eUR                  S   R                  R                  R                  SL d   eUR                  S   R                  R                  R                  U:X  d   eUR                  S   R                  b   eUR                  S   R                  b   eUR                  S   R                  b   eUR                  S   R                  b   eUR                  S   R                  b   eUR                  S   R                  c   eUR                  S   R                  c   eg)	zATest disabling int inverted index globally and on a specific key.NTr:   F	age_fieldr   rj   rk   )r   rl   ru   rv   ro   r   r   r7   r{   rm   rq   rs   rw   ry   )r    r   
int_configr   int_config2s        r!   test_disable_int_inverted_index-TestNewSchema.test_disable_int_inverted_index  se    ((444((;;GGG((;;CCtKKK ,-
$$J$7 ((;;CCuLLL((;;BBjPPP -.$$K[$I fkk))){{;'11==={{;'11DDPPP{{;'11DDLLPUUUUKK$..AAHHKW	
W {{;'..666{{;'22:::{{;'55==={{;'33;;;{{;'//777 {{;'..:::{{<(33???r$   c                    [        5       nUR                  5       nSU;   d   eSU;   d   e[        US   [        5      (       d   e[        US   [        5      (       d   eUS   nSU;   d   eSUS   ;   d   eUS   S   S   SL d   eUS   S   S   0 :X  d   eSUS   ;   d   eUS   S   S   S	L d   eUS   S   S   0 :X  d   eS
U;   d   eSUS
   ;   d   eUS
   S   S   SL d   eUS
   S   S   nSU;   d   eUS   S:X  d   eSU;   d   eUS   S   S:X  d   eUS   S   S:X  d   eUS   S   0 :X  d   eSU;   d   eSUS   ;   d   eUS   S   S   SL d   eUS   S   S   nSU;   d   eUS   SS0:X  d   eSU;   d   eSUS   ;   d   eUS   S   S   S	L d   eUS   S   S   0 :X  d   eSU;   d   eSUS   ;   d   eUS   S   S   S	L d   eUS   S   S   0 :X  d   eSU;   d   eSUS   ;   d   eUS   S   S   S	L d   eUS   S   S   0 :X  d   eUS   nSU;   d   eSUS   ;   d   eSUS   S   ;   d   eUS   S   S   S   S	L d   eUS   S   S   S   0 :X  d   eSUS   S   ;   d   eUS   S   S   S   SL d   eUS   S   S   S   0 :X  d   eSU;   d   eS
US   ;   d   eSUS   S
   ;   d   eUS   S
   S   S   S	L d   eUS   S
   S   S   nSU;   d   eUS   S:X  d   eSU;   d   eUS   S:X  d   eSU;   d   eUS   S   S:X  d   eUS   S   S:X  d   eUS   S   0 :X  d   e[         R                  " U5      nUR
                  R                  c   eUR
                  R                  R                  c   eUR
                  R                  R                  R                  SL d   eUR
                  R                  R                  R                  UR
                  R                  R                  R                  :X  d   eUR
                  R                  R                  c   eUR
                  R                  R                  R                  S	L d   eUR
                  R                  R                  R                  UR
                  R                  R                  R                  :X  d   eUR
                  R                  c   eUR
                  R                  R                  c   eUR
                  R                  R                  R                  SL d   eUR
                  R                  R                  R                  UR
                  R                  R                  R                  :X  d   eUR
                  R                  R                  R                  R                  S:X  d   eUR
                  R                  R                  R                  R                   c   eUR
                  R                  R                  R                  R                  R                  5       S:X  d   eUR
                  R                  R                  R                  R                  R                  5       S:X  d   eUR
                  R                   c   eUR
                  R                   R"                  c   eUR
                  R                   R"                  R                  SL d   eUR
                  R                   R"                  R                  UR
                  R                   R"                  R                  :X  d   eUR
                  R$                  c   eUR
                  R$                  R&                  c   eUR
                  R$                  R&                  R                  S	L d   eUR
                  R$                  R&                  R                  UR
                  R$                  R&                  R                  :X  d   eUR
                  R(                  c   eUR
                  R(                  R*                  c   eUR
                  R(                  R*                  R                  S	L d   eUR
                  R(                  R*                  R                  UR
                  R(                  R*                  R                  :X  d   eUR
                  R,                  c   eUR
                  R,                  R.                  c   eUR
                  R,                  R.                  R                  S	L d   eUR
                  R,                  R.                  R                  UR
                  R,                  R.                  R                  :X  d   eSUR0                  ;   d   eUR0                  S   R                  c   eUR0                  S   R                  R                  c   eUR0                  S   R                  R                  R                  S	L d   eUR0                  S   R                  R                  R                  UR0                  S   R                  R                  R                  :X  d   eUR0                  S   R                  R                  c   eUR0                  S   R                  R                  R                  SL d   eUR0                  S   R                  R                  R                  UR0                  S   R                  R                  R                  :X  d   eSUR0                  ;   d   eUR0                  S   R                  c   eUR0                  S   R                  R                  c   eUR0                  S   R                  R                  R                  S	L d   eUR0                  S   R                  R                  R                  UR0                  S   R                  R                  R                  :X  d   eUR0                  S   R                  R                  R                  R2                  S:X  d   eUR0                  S   R                  R                  R                  R2                  S:X  d   eUR0                  S   R                  R                  R                  R                  S:X  d   eUR0                  S   R                  R                  R                  R                   c   eUR0                  S   R                  R                  R                  R                  R                  5       S:X  d   eUR0                  S   R                  R                  R                  R                  R                  5       S:X  d   eg) z;Test serialization and deserialization of a default Schema.rl   r{   rm   rn   ro   Fr7   rp   Trq   rr   r   ra   r   typeknownr   defaultrs   rt   unknownintrv   floatrx   boolrz   rj   rk   r}   N)r   serialize_to_json
isinstancedictdeserialize_from_jsonrl   rm   rn   ro   rp   rq   rr   r7   r   r   r   rs   rt   ru   rv   rw   rx   ry   rz   r{   r}   )	r    original	json_datarl   r   sparse_vector_configr{   embedding_vector_configdeserializeds	            r!   )test_serialize_deserialize_default_schema7TestNewSchema.test_serialize_deserialize_default_schema  s    8 ..0	 Y&&&""")J/6666)F+T2222 Z( 8###hx0000!+.y9UBBB!+.x8B>>>&(8*<<<<!"9:9EMMM!"9:8DJJJ x''',!7777%n5i@EIII .~>xH-'''W%---#}444126:gEEE126:iGGG128<BBB (***$(AAAA()>?	JeSSS'89NO 
 $';;;;#$89fi=PPPP    #x66634Y?4GGG34X>"DDD ("""%'):::: !78CtKKK !78BbHHH !!!$(8888 56yATIII 56x@BFFF   d"""4,,,,d;/9999K *;7	BdJJJK *;7ARGGG&${*;H*EEEEK *+BCINRWWWWK *+BCHMQSSSS t###tL1111l!3L!AAAAL!,/?	JdRRR"&|"4\"B>"R#
 1111&w/47776666&|4CCC#'>>>>&';<VDOOO&';<VD	QQQ&';<XF"LLL 33I> $$++777$$++55AAA$$++55==FFF!!((22::  ''1199:	
: $$++AAMMM$$++AAIITQQQ!!((>>FF  ''==EEF	
F
 $$//;;;$$//<<HHH$$//<<DDMMM!!,,99AA  ++88@@A	
A $$//<<CCIITQQQ !!,,99@@SS	
 !!,,99@@SSXXZ	
 ((55<<OOTTV	

 $$22>>>$$22FFRRR$$22FFNNRWWWW!!//CCKK  ..BBJJK	
K
 $$..:::$$..AAMMM$$..AAIITQQQ!!++>>FF  **==EEF	
F
 $$00<<<$$00EEQQQ$$00EEMMQUUUU!!--BBJJ  ,,AAIIJ	
J
 $$,,888$$,,@@LLL$$,,@@HHDPPP!!))==EE  ((<<DDE	
E
 l/////  -44@@@  -44>>JJJ  -44>>FF$NNNk*11;;CC}}[)00::BBC	
C   -44JJVVVk*11GGOOSXX	
X k*11GGOO}}[)00FFNNO	
O
 |00000  .99EEE  .99FFRRR  .99FFNNRVVVVl+66CCKK}}\*55BBJJK	
K
 l+66CCJJUU	
 MM,'22??FFQQ	

 l+66CCJJPPTXX	
X jff-?-?	
 jff-?-?	
 MMjff-?-?	
r$   c                    [        5       n[        SSS9nUR                  US9  UR                  5       nUS   nSU;   d   eSUS   ;   d   eUS   S   nUS   S	L d   eUS
   S   S:X  d   eUS
   S   S   S:X  d   eUS   nSU;   d   eUS   S   S   nUS   SL d   eUS
   S   S:X  d   eUS
   S   S:X  d   eUS
   S   S   S:X  d   e[         R                  " U5      nUR
                  R                  c   eUR
                  R                  R                  c   eUR
                  R                  R                  R                  S	L d   eUR
                  R                  R                  R                  R                  S:X  d   eUR
                  R                  R                  R                  R                   b   eSUR                  ;   d   eUR                  S   R                  c   eUR                  S   R                  R                  c   eUR                  S   R                  R                  R                  SL d   eUR                  S   R                  R                  R                  R                  S:X  d   eUR                  S   R                  R                  R                  R                  S:X  d   eUR                  S   R                  R                  R                  R                   b   eg)z^Test serialization/deserialization of Schema with vector config where embedding_function=None.r]   N)r   r   r:   rl   rq   rr   ro   Fr7   r   r   r   legacyr{   rk   Tr}   rj   )r   r   r   r   r   rl   rq   rr   ro   r7   r   r   r{   r}   )	r    r   r   r   rl   vector_jsonr{   embedding_vector_jsonr   s	            r!   3test_serialize_deserialize_with_vector_config_no_efATestNewSchema.test_serialize_deserialize_with_vector_config_no_ef  sU    8)#
 	]3 ..0	 Z(x''',!7777|,^<9%...8$W-9998$%9:6BhNNN  t### $\ 2< @ P$Y/4777!(+G4@	
@$X.|<KKK$X./CDVLPXXXX 33I> $$//;;;$$//<<HHH$$//<<DDMMM!!,,99@@FF(R	
R !!,,99@@SS	

 |00000  .99EEE  .99FFRRR  .99FFNNRVVVVl+66CCJJPP	
 l+66CCJJUU	

 jff-?-?	
r$   c                    SSK Jn  [        US'    [        5       n[        SS9n[	        SSSS	9n[        US
US9nUR                  US9  UR                  5       nUS   nSU;   d   eSUS   ;   d   eUS   S   nUS   SL d   eUS   S   S
:X  d   eUS   S   S   S:X  d   eUS   S   S   S:X  d   eUS   S   S   S   S:X  d   eSUS   ;   d   eUS   S   S   S:X  d   eUS   S   S   S:X  d   eUS   S   S   S:X  d   eUS   n	SU	;   d   eU	S   S   S   n
U
S   SL d   eU
S   S   S
:X  d   eU
S   S    S!:X  d   eU
S   S   S   S:X  d   eU
S   S   S   S:X  d   eU
S   S   S   S   S:X  d   eSU
S   ;   d   eU
S   S   S   S:X  d   eU
S   S   S   S:X  d   eU
S   S   S   S:X  d   e[        R                  " U5      nUR                  R                  c   eUR                  R                  R                  c   eUR                  R                  R                  R                  SL d   eUR                  R                  R                  R                  R                  S
:X  d   eUR                  R                  R                  R                  R                   c   eUR                  R                  R                  R                  R                  R!                  5       S:X  d   eUR                  R                  R                  R                  R                  R#                  5       nUS   S:X  d   eUR                  R                  R                  R                  R$                  c   eUR                  R                  R                  R                  R$                  R&                  S:X  d   eUR                  R                  R                  R                  R$                  R(                  S:X  d   eUR                  R                  R                  R                  R$                  R*                  S:X  d   eSUR,                  ;   d   eUR,                  S   R                  c   eUR,                  S   R                  R                  c   eUR,                  S   R                  R                  R                  SL d   eUR,                  S   R                  R                  R                  R                  S
:X  d   eUR,                  S   R                  R                  R                  R.                  S!:X  d   eUR,                  S   R                  R                  R                  R                   c   eUR,                  S   R                  R                  R                  R                  R!                  5       S:X  d   eUR,                  S   R                  R                  R                  R                  R#                  5       nUS   S:X  d   eUR,                  S   R                  R                  R                  R$                   c   eUR,                  S   R                  R                  R                  R$                  R&                  S:X  d   eUR,                  S   R                  R                  R                  R$                  R(                  S:X  d   eUR,                  S   R                  R                  R                  R$                  R*                  S:X  d   e SU;   a  US	 g"g"! SU;   a  US	 f f = f)#zLTest serialization/deserialization of Schema with custom embedding function.r   known_embedding_functionsrU   custom_model_v3r      0      r   rb   r   r   r   r:   rl   rq   rr   ro   Fr7   r   r   r   r   r   rH   r   r   r   r   r{   rk   Tr}   rj   N)"chromadb.utils.embedding_functionsr  rF   r   r   r   r   r   r   rl   rq   rr   ro   r7   r   r   r   r5   r   r   r   r   r{   r}   )r    r  r   	custom_efr   r   r   rl   r  r{   r  r   	ef_configef_config_embeddings                 r!   )test_serialize_deserialize_with_custom_ef7TestNewSchema.test_serialize_deserialize_with_custom_ef  s    	Q6K!"23k	@xH-9JKI) #2K .#, M
 !!!7 !224I !,H8+++!Xl%;;;;"<0@Ky)U222x(1T999x()=>vF'QQQH%&:;FCGWWW H%&:;HElS$%% [2222x(01BCsJJJx(0ARGGGx(0=DDD V$D4'''$($6|$D^$T!%i0D88 &h/8D@@ &h/=LL &h/0DEfMQXXX &h/0DEfM#$$ &h/0DEhO  %%% 28<<<<(26:;LMQTTTT(26:?KrQQQ(26:;G3NNN "77	BL  ((33???((33@@LLL((33@@HHEQQQ%%00==DDJJdRR %%00==DDWW %%00==DDWW\\^#$$ %--88EELL__jjlI\*.????((33@@GGLLXXX%%00==DDIIYY %%00==DDIIWW %%00==DDIISS
  <#4#4444$$\2==III$$\2==JJVVV!!,/::GGOOSWWW !!,/::GGNNTT !! *\\&& !! *\\&&1C1C !! *\\&&1C1CDDF#$$ #/"3"3#jff-?-?

   '|48IIII !!,/::GGNNSS !! *\\&&oo !! *\\&&mm !! *\\&&ii  #<<-.>? =#<<-.>? =s   \\4 4] c                 "   SSK Jn  [        US'    [        5       n[        SS9n[	        SSSS	S
9n[        USUS9nUR                  US9  UR                  5       nUS   nSU;   d   eSUS   ;   d   eUS   S   nUS   SL d   eUS   S   S:X  d   eUS   S   S   S:X  d   eUS   S   S   S:X  d   eUS   S   S   S   S:X  d   eSUS   ;   d   eUS   S   S   S:X  d   eUS   S   S   S:X  d   eUS   S   S   S:X  d   eUS   S   S   S	:X  d   eUS   R                  S5      b   eUS!   n	S"U	;   d   eU	S"   S   S   n
U
S   S#L d   eU
S   S   S:X  d   eU
S   S$   S%:X  d   eU
S   S   S   S:X  d   eU
S   S   S   S:X  d   eU
S   S   S   S   S:X  d   eSU
S   ;   d   eU
S   S   S   S:X  d   eU
S   S   S   S:X  d   eU
S   S   S   S:X  d   eU
S   S   S   S	:X  d   eU
S   R                  S5      b   e[        R                  " U5      nUR                  R                  c   eUR                  R                  R                  c   eUR                  R                  R                  R                  SL d   eUR                  R                  R                  R                  R                  S:X  d   eUR                  R                  R                  R                  R                    c   eUR                  R                  R                  R                  R                   R#                  5       S:X  d   eUR                  R                  R                  R                  R                   R%                  5       nUS   S:X  d   eUR                  R                  R                  R                  R&                  c   eUR                  R                  R                  R                  R&                  R(                  S:X  d   eUR                  R                  R                  R                  R&                  R*                  S:X  d   eUR                  R                  R                  R                  R&                  R,                  S:X  d   eUR                  R                  R                  R                  R&                  R.                  S	:X  d   eUR                  R                  R                  R                  R0                  b   eS"UR2                  ;   d   eUR2                  S"   R                  c   eUR2                  S"   R                  R                  c   eUR2                  S"   R                  R                  R                  S#L d   eUR2                  S"   R                  R                  R                  R                  S:X  d   eUR2                  S"   R                  R                  R                  R4                  S%:X  d   eUR2                  S"   R                  R                  R                  R                    c   eUR2                  S"   R                  R                  R                  R                   R#                  5       S:X  d   eUR2                  S"   R                  R                  R                  R                   R%                  5       nUS   S:X  d   eUR2                  S"   R                  R                  R                  R&                   c   eUR2                  S"   R                  R                  R                  R&                  R(                  S:X  d   eUR2                  S"   R                  R                  R                  R&                  R*                  S:X  d   eUR2                  S"   R                  R                  R                  R&                  R,                  S:X  d   eUR2                  S"   R                  R                  R                  R&                  R.                  S	:X  d   eUR2                  S"   R                  R                  R                  R0                   b   e SU;   a  US	 g g ! SU;   a  US	 f f = f)&zETest serialization/deserialization of Schema with SPANN index config.r   r  rU   spann_modelr   r   2   r      )search_nprobewrite_nprober   r   r]   )r   r   spannr:   rl   rq   rr   ro   Fr7   r   r   r   r   r   rH   r  r  r  r   r   r   Nr{   rk   Tr}   rj   )r  r  rF   r   r   r   r   r   r9   r   rl   rq   rr   ro   r7   r   r   r   r5   r  r  r  r   r   r   r{   r}   )r    r  r   r  spann_configr   r   rl   r  r{   r  r   r  r  s                 r!   ,test_serialize_deserialize_with_spann_config:TestNewSchema.test_serialize_deserialize_with_spann_config  sd	    	Q6K!"23B	@xH-GI+!CSVL .#,HLM !!!7 !224I !,H8+++!Xl%;;;;"<0@Ky)U222x(1X===x()=>vF'QQQH%&:;FCGWWW H%&:;HElS !! k(3333x(1/BcIIIx(1.ARGGGx(12CDKKKx(1+>#EEEx(,,V4<<< V$D4'''$($6|$D^$T!%i0D88 &h/8HDD &h/=LL &h/0DEfMQXXX &h/0DEfM#$$ &h/0DEhO  !!! 3H====(27;OLPSSSS(27;NKrQQQ(27;<MNRUUUU(27;KHCOOO(266v>FFF "77	BL  ((33???((33@@LLL((33@@HHEQQQ%%00==DDJJhVV %%00==DDWW %%00==DDWW\\^#$$ %--88EELL__jjlI\*m;;; %%00==DDJJVV %%00==DDJJXX %%00==DDJJWW %%00==DDJJZZ %%00==DDJJTT  ((33@@GGLLTTT  <#4#4444$$\2==III$$\2==JJVVV!!,/::GGOOSWWW !!,/::GGNNTT !! *\\&& !! *\\&&1C1C !! *\\&&1C1CDDF#$$ #/"3"3#jff-?-?

   '|4EEE !!,/::GGNNTT !! *\\&&}} !! *\\&&|| !! *\\&& !! *\\&&yy !!,/::GGNNSS
  #<<-.>? =#<<-.>? =s   a%b bc                    SSK Jn  [        US'   [        US'    [	        5       n[        SS9n[        SSS	9n[        US
US9nUR                  US9  [        SS9n[        USS9nUR                  USS9  [        5       nUR                  USS9  [        5       n	UR                  U	SS9  [        5       n
UR                  U
SS9  UR                  5       nUS   nUS   nUS   S   S   S   S
:X  d   eUS   S   S   S   S   S:X  d   eUS   S   S   S   S   S:X  d   eSU;   d   eSU;   d   eSU;   d   eSU;   d   eSU;   d   eS U;   d   eUS   nS!U;   d   eUS!   S"   S#   S$L d   eUS!   S"   S   S%   S:X  d   eUS!   S"   S   S&   S'   S(:X  d   eUS!   S"   S   S&   S)   S:X  d   eUS!   S"   S   S&   S   S)   S:X  d   eS*U;  d   eSU;  d   eS+U;  d   eS,U;  d   eS-U;  d   eUS   nS*U;   d   eUS*   S.   S#   S/L d   eUS*   S.   S   0 :X  d   eS0US*   ;  d   eS!U;  d   eSU;  d   eS+U;  d   eS,U;  d   eS-U;  d   eUS   nS+U;   d   eUS+   S1   S#   S/L d   eUS+   S1   S   0 :X  d   eS*U;  d   eS!U;  d   eSU;  d   eS,U;  d   eS-U;  d   eUS   nS,U;   d   eUS,   S2   S#   S/L d   eUS,   S2   S   0 :X  d   eS*U;  d   eS!U;  d   eSU;  d   eS+U;  d   eS-U;  d   eUS    nSU;   d   eUS   S   S#   S$L d   eUS   S   S   S   S
:X  d   eUS   S   S   S%   S:X  d   eUS   S   S   S&   S'   S(:X  d   eUS   S   S   S&   S)   S:X  d   eUS   S   S   S&   S   S3   S:X  d   eUS   S   S   S   S   S:X  d   eUS   S   S   S   S   S:X  d   eUS   S   S   R                  S45       b   eS*U;  d   eS!U;  d   eS+U;  d   eS,U;  d   eS-U;  d   eUS   nS*U;   d   eUS*   S0   S#   S$L d   eUS*   S0   S   0 :X  d   eUS*   S.   S#   S/L d   eUS*   S.   S   0 :X  d   eS!U;  d   eSU;  d   eS+U;  d   eS,U;  d   eS-U;  d   e[        R                  " U5      nUR                   R"                  c   eUR                   R"                  R$                  c   eUR                   R"                  R$                  R&                  R(                  S
:X  d   eUR                   R"                  R$                  R&                  R*                  c   eUR                   R"                  R$                  R&                  R*                  R,                  S:X  d   eUR                   R"                  R$                  R&                  R*                  R.                  S:X  d   eUR                   R"                  R$                  R&                  R0                   c   eUR                   R"                  R$                  R&                  R0                  R3                  5       S:X  d   eSUR4                  ;   d   eUR4                  S   R6                  c   eUR4                  S   R6                  R8                   c   eUR4                  S   R6                  R8                  R:                  S$L d   eUR4                  S   R6                  R8                  R&                  R<                  S:X  d   eUR4                  S   R>                  b   eUR4                  S   R"                  b   eUR4                  S   R@                  b   eSUR4                  ;   d   eUR4                  S   R>                  c   eUR4                  S   R>                  RB                  c   eUR4                  S   R>                  RB                  R:                  S/L d   eUR4                  S   R6                  b   eUR4                  S   R"                  b   eSUR4                  ;   d   eUR4                  S   R@                  c   eUR4                  S   R@                  RD                  c   eUR4                  S   R@                  RD                  R:                  S/L d   eUR4                  S   R>                  b   eUR4                  S   R"                  b   eSUR4                  ;   d   eUR4                  S   RF                  c   eUR4                  S   RF                  RH                  c   eUR4                  S   RF                  RH                  R:                  S/L d   eUR4                  S   R>                  b   eUR4                  S   R6                  b   eS UR4                  ;   d   eUR4                  S    R"                  c   eUR4                  S    R"                  R$                  c   eUR4                  S    R"                  R$                  R&                  R(                  S
:X  d   eUR4                  S    R"                  R$                  R&                  R<                  S:X  d   eUR4                  S    R"                  R$                  R&                  R*                   c   eUR4                  S    R"                  R$                  R&                  R*                  R,                  S:X  d   eUR                   R>                  c   eUR                   R>                  RB                  c   eUR                   R>                  RB                  R:                  S$L d   eUR                   R@                  c   eUR                   R@                  RD                  c   eUR                   R@                  RD                  R:                  S$L d   eUR                   R6                  c   eUR                   R6                  R8                  c   eUR                   R6                  R8                  R:                  S/L d   e SU;   a  US	 SU;   a  US	 g5g5! SU;   a  US	 SU;   a  US	 f f = f)6zLTest serialization/deserialization with multiple mixed schema modifications.r   r  rU   r0   mixed_test_modelr   i,  @   r   r   rb   r  r:   sparse_modelr   
text_fieldr   embeddings_fieldr   tagscountpricerl   r{   rq   rr   r7   r   r   r   r   rj   rk   rs   rt   ro   Tr}   r   r   r   r   rm   r   r   r   rp   Frn   rv   rx   rH   r  N)%r  r  rF   r   r   r   r   r   r   r   r   r   r	   r   r9   r   rl   rq   rr   r7   r   r   r   r   r   r   r{   rs   rt   ro   r}   rm   ru   rp   rv   rw   rx   )r    r  r   r  r   r   	sparse_efr   r   r   float_configr   rl   r{   embeddings_field_json	tags_json
count_json
price_jsonembedding_jsondocument_jsonr   s                        r!   6test_serialize_deserialize_complex_mixed_modificationsDTestNewSchema.test_serialize_deserialize_complex_mixed_modifications  s    	Q6K!"233N!-0O	=xH .9KLI)#RPK-#,D{M !!!7 4HI3#,M !!<N!O 67M!!F!C 01J!!!A 45L!!7!C !224I !,HV$D L).9(CGLPTTTT&~6x@H%  &~6x@H#  &---T>!>d?"?d?"?$&&&4''' %));$<!"&;;;;%o67LMiX &o67LMhW      &o67LMhW(  &o67LMhW( !!! &o67LMhW("$ """ #8888'<<<< 5555"7777!6666 VIy(((X&'>?	JeSSSX&'>?IROOOi&9999")333y000	))))+++*** gJJ&&&e$%9:9ENNNe$%9:8DJJJ:---"*444z111*,,,+++ gJj(((g&'=>yIURRRg&'=>xHBNNN:---"*444z111
***+++ ",/N>111!,/?	JdRRR|,^<XFwOSWWW |,^<XF|T |,^<XF(  |,^<XF( $$$ |,^<XF((* &&& |,^<XFvN%  |,^<XFvN#  |,^<XFJJ7S >111".888....000/// !-M},,, *;7	BdJJJ *;7ARGGG *+BCINRWWWW *+BCHMQSSSS"-777}444----///... "77	BL  ((33???((33@@LLL((33@@GGMMQUUUU((33@@GGLLXXX%%00==DDIIYY %%00==DDIIWW %%00==DDWW %%00==DDWW\\^#$$
 &):)::::$$%78FFRRR!!"45CCWW !!&- 3 3GG !!&- 3 3FF::    $$%78??GGG$$%78CCKKK$$%78BBJJJ \.....$$V,33???$$V,33IIUUU!!&)00FFNNRWWW  $$V,::BBB$$V,77??? l/////$$W-77CCC$$W-77JJVVV!!'*44GGOOSXXX  $$W-44<<<$$W-88@@@ l/////$$W-99EEE!!'*66KKWW !!'*66KKSS  $$W-44<<<$$W-;;CCC  <#4#4444$$\2==III$$\2==JJVVV!!,/::GGNNTT !! *\\&& !!,/::GGNNSS !! *\\&&oo  ((//;;;((//EEQQQ%%,,BBJJdRR((22>>>((22EEQQQ%%//BBJJdRR((66BBB((66JJVVV%%33GGOOSXXX  #<<-.>? 99-m< :  #<<-.>? 99-m< :s   pp7 7qc                    [        5       n[        S[        5       S9nUR                  USS9  [	        5       nUR                  USS9  SUR
                  ;   d   eUR
                  S   nUR                  c   eUR                  R                  c   eUR                  R                  R                  SL d   eUR                  c   eUR                  R                  c   eUR                  R                  R                  SL d   eUR
                  S   R                  b   eUR
                  S   R                  b   eUR
                  S   R                  b   eUR
                  S   R                  b   eUR                  5       nUS   S   nSU;   d   eS	U;   d   eUS   S
   S   SL d   eUS	   S   S   SL d   e[         R                   " U5      nSUR
                  ;   d   eUR
                  S   nUR                  c   eUR                  R                  c   eUR                  R                  R                  SL d   eUR                  c   eUR                  R                  c   eUR                  R                  R                  SL d   eg)z;Test that multiple index types can coexist on the same key.sourcer   multi_fieldr   NTr{   rs   rm   rt   ro   rp   )r   r   r   r   r   r{   rs   rt   ro   rm   rp   rq   ru   rw   ry   r   r   )	r    r   r   r   r3  r   multi_field_jsonr   des_multi_fields	            r!   %test_multiple_index_types_on_same_key3TestNewSchema.test_multiple_index_types_on_same_key  s    04O4Q
 	=mD 23=mD +++kk-0((444((<<HHH((<<DDLLL!!---!!77CCC!!77??4GGG {{=)44<<<{{=)33;;;{{=)55==={{=)11999 ,,.	$V,];"2222++++_-.CDYOSWW	
W)*AB9MQUUUU 33I> 1 1111&++M:,,888,,@@LLL,,@@HHDPPP%%111%%;;GGG%%;;CCtKKKr$   c                    [        5       n[        5       nUR                  USS9  SUR                  ;   d   eUR                  S   nUR                  c   eUR                  R
                  c   eUR                  R
                  R                  SL d   eUR                  USS9  SUR                  ;   d   eUR                  S   nUR                  c   eUR                  R
                  c   eUR                  R
                  R                  SL d   eUR                  5       nSUS   ;   d   eUS   S   nSU;   d   eUS   S   S	   SL d   e[         R                  " U5      nSUR                  ;   d   eUR                  S   nUR                  c   eUR                  R
                  c   eUR                  R
                  R                  SL d   eg)
zcTest that disabling an index reverts to default behavior (key may still exist with disabled state).
temp_fieldr   NTFr{   rm   rp   ro   )
r   r   r   r{   rm   rp   ro   r   r   r   )	r    r   r   temp_field_initialr9  r   temp_field_jsonr   des_temp_fields	            r!   $test_override_then_revert_to_default2TestNewSchema.test_override_then_revert_to_default  s    23=lC v{{***#[[6!((444!((>>JJJ!((>>FF$NNN 	=lC v{{***[[.
  ,,,  66BBB  66>>%GGG ,,.	y0000#F+L9?***x()@A)LPUUUU 33I>|00000%**<8$$000$$::FFF$$::BBeKKKr$   c                    [        5       n[        5       n[        R                  " [        SS9   UR                  USS9  SSS5        [        R                  " [        SS9   UR                  [        5       SS9  SSS5        [        5       nUR                  USS9  [        R                  " [        SS9   UR                  5         SSS5        [        R                  " [        S	S9   UR                  5         SSS5        [        R                  " [        S
S9   UR                  SS9  SSS5        [        R                  " [        SS9   UR                  SS9  SSS5        [        R                  " [        SS9   UR                  US9  SSS5        [        R                  " [        SS9   UR                  US9  SSS5        [        R                  " [        SS9   UR                  USS9  SSS5        [        R                  " [        SS9   UR                  USS9  SSS5        g! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNn= f! , (       d  f       GNO= f! , (       d  f       GN0= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g= f)z6Test that invalid operations raise appropriate errors.r   r   rk   r   Nr   rj   zCannot disable all indexesz&Cannot enable all index types globallyz-Cannot enable all index types for key 'mykey'mykeyr   z.Cannot disable all index types for key 'mykey'r   r:   r   r   custom_fieldr   )	r   r   r   r   r   r   r   r   r   r   s       r!   &test_error_handling_invalid_operations4TestNewSchema.test_error_handling_invalid_operationsA  sW    *+]]O
 },G
 ]]N
 '@'BT
 $%
:;? ]]:
 !
 ]]:-UV! W ]]M
 G,
 ]]N
 G,
 ]]P
 }5
 ]]U
 z2
 ]]O
 }.I
 ]]N
 z~F
 
q
 

 

 
 WV
 

 

 

 

 

 
sw   H( H:4I&II0	J:J+J&J7K(
H7:
I	
I
I-0
I?
J
J#&
J47
K
Kc                 f   [        5       nUR                  5       n[        US   5      S:X  d   eSUS   ;   d   eSUS   ;   d   e[         R                  " U5      nUR                  nUR
                  c   eUR
                  R                  c   eUR
                  R                  R                  SL d   eUR
                  R                  c   eUR
                  R                  R                  SL d   eUR                  c   eUR                  R                  c   eUR                  R                  R                  SL d   eUR                  c   eUR                  R                  c   eUR                  R                  R                  SL d   eUR                  c   eUR                  R                  c   eUR                  R                  R                  SL d   eUR                  c   eUR                  R                   c   eUR                  R                   R                  SL d   eUR"                  c   eUR"                  R$                  c   eUR"                  R$                  R                  SL d   e[        UR&                  5      S:X  d   eSUR&                  ;   d   eSUR&                  ;   d   eg)z;Test serialization/deserialization of an unmodified schema.r{   ri   rj   rk   NTF)r   r   r|   r   rl   rm   rp   ro   rn   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   )r    r   r   r   rl   s        r!   test_empty_schema_serialization-TestNewSchema.test_empty_schema_serialization  s    8 ..0	 9V$%***i////y0000 33I>  ((***44@@@44<<DDD((444((00E999""...""//;;;""//775@@@%%111%%99EEE%%99AAUJJJ!!---!!44@@@!!44<<DDD##///##88DDD##88@@DHHH+++33???33;;tCCC <$$%***l/////|00000r$   c                 8	   SSK Jn  [        US'    [        5       n[        SS9n[	        SSS9n[        US	US
9nUR                  US9  UR                  [        S[        5       S9SS9  UR                  [        5       SS9  UR                  5       n[        R                  " U5      nUR                  5       n[        R                  " U5      n	U	R                  5       n
[        R                  " U
5      nXyU4 GH  nUR                  R                  c   eUR                  R                  R                  c   eUR                  R                  R                  R                   R"                  S	:X  d   eUR                  R                  R                  R                   R$                  c   eUR                  R                  R                  R                   R$                  R&                  S:X  d   eUR                  R                  R                  R                   R$                  R(                  S:X  d   eUR                  R                  R                  R                   R*                   c   eUR                  R                  R                  R                   R*                  R-                  5       S:X  d   eSUR.                  ;   d   eUR.                  S   nUR0                  c   eUR0                  R2                  c   eUR0                  R2                  R4                  SL d   eUR0                  R2                  R                   R6                  S:X  d   eSUR.                  ;   d   eUR.                  S   nUR8                  c   eUR8                  R:                  c   eUR8                  R:                  R4                  SL a  GM   e   [=        UR.                  5      [=        U	R.                  5      s=:X  a  [=        UR.                  5      :X  d   e   e[?        UR.                  R/                  5       5      [?        U	R.                  R/                  5       5      s=:X  a)  [?        UR.                  R/                  5       5      :X  d    e   e SU;   a  US	 gg! SU;   a  US	 f f = f)zRTest that multiple serialization/deserialization cycles preserve schema integrity.r   r  rU   roundtrip_modelr   r  (   r   r]   r  r:   textr   
embeddingsr   r$  NTF) r  r  rF   r   r   r   r   r   r   r   r   r   r   rl   rq   rr   r7   r   r   r   r   r   r   r{   rs   rt   ro   r}   rm   rp   r|   set)r    r  r   r  r   r   json1schema1json2schema2json3schema3r   embeddings_overridetags_overrides                  r!   .test_multiple_serialize_deserialize_roundtrips<TestNewSchema.test_multiple_serialize_deserialize_roundtrips  sI    	Q6K!"23U	@xH-9JKI)#RPK-#,H;M !!!7!!.%:U:W !	 "  !!)B)D&!Q ..0E2259G --/E2259G --/E2259G #W511===11>>JJJ11>>EEKKxWWW11>>EEJJVVVOO..;;BBGGWW OO..;;BBGGUU OO..;;BBUU   OO..;;BBUUZZ\'((
 $v{{222&,kk,&?#*88DDD*88LLXXX'55IIQQ (55IIPP[[
 ,,, &F 3$++777$++AAMMM$++AAIIURRRS 6X w||$GLL(9NS=NNNNNNGLL%%'(w||((*+,w||((*+,,,  #<<-.>? =#<<-.>? =s   N&R <CR Rc                 z   [        5       n[        S5       Hn  nSU 3nUS:X  a%  UR                  [        SU 3[	        5       S9US9  M3  US-  S:X  a  UR                  [        5       US9  MV  UR                  [        5       US9  Mp     [        UR                  5      S	:X  d   eS
UR                  ;   d   eUR                  S
   nUR                  c   eUR                  R                  c   eUR                  R                  R                  SL d   eSUR                  ;   d   eUR                  S   nUR                  c   eUR                  R                  c   eUR                  R                  R                  SL d   eSUR                  ;   d   eUR                  S   nUR                  c   eUR                  R                   c   eUR                  R                   R                  SL d   eUR#                  5       n[        US   5      S	:X  d   e[         R$                  " U5      n[        UR                  5      S	:X  d   eS
UR                  ;   d   eUR                  S
   n	U	R                  c   eU	R                  R                  c   eU	R                  R                  R                  SL d   eU	R                  R                  R&                  R(                  S:X  d   eSUR                  ;   d   eUR                  S   n
U
R                  c   eU
R                  R                  c   eU
R                  R                  R                  SL d   eSUR                  ;   d   eUR                  S   nUR                  c   eUR                  R                   c   eUR                  R                   R                  SL d   eg)z2Test schema with many key overrides (stress test).r  field_r   source_r   r   ri   r(   4   field_0NTfield_1Ffield_2r{   source_0field_49field_48)r   ranger   r   r   r   r   r   r|   r{   rs   rt   ro   rm   rp   ru   rv   r   r   r7   r}   )r    r   ikey_namer[  r\  r]  r   r   des_field_0des_field_49des_field_48s               r!   test_many_keys_stress#TestNewSchema.test_many_keys_stress  s    rAs|HAv##2%,QC=+F+H ! $  Q!##+D+FH#U ##+A+C#R! & 6;;2%%% FKK'''++i($$000$$88DDD$$88@@DHHHFKK'''++i(~~)))~~33???~~33;;uDDDFKK'''++i(  ,,,  33???  33;;uDDD ,,.	9V$%+++ 33I><$$%+++ L-----"''	2((444((<<HHH((<<DDLLL%%99@@KK	
 \.....#((4""...""88DDD""88@@EIII\.....#((4%%111%%88DDD%%88@@EIIIr$   c                 X   [        5       nUR                  [        S[        5       S9SS9R	                  [        5       SS9R	                  [        5       SS9R	                  [        5       SS9nX!L d   eSUR                  ;   d   eUR                  S   nUR                  c   eUR                  R                  c   eUR                  R                  R                  S	L d   eSUR                  ;   d   eUR                  S   nUR                  c   eUR                  R                  c   eUR                  R                  R                  S
L d   eSUR                  ;   d   eUR                  S   nUR                  c   eUR                  R                  c   eUR                  R                  R                  S
L d   eSUR                  ;   d   eUR                  S   nUR                  c   eUR                  R                  c   eUR                  R                  R                  S
L d   eg)z@Test chaining multiple create_index and delete_index operations.rJ  r   field1r   field2field3field4NTF)r   r   r   r   r   r   r   r{   rs   rt   ro   rm   rp   ru   rv   )r    r   r   rj  rk  rl  rm  s          r!   test_chained_operations%TestNewSchema.test_chained_operationsZ  s    .%:U:W 	    \!:!<(\K\!:!<(\K\!7!9x\H 	  6;;&&&X&##///##77CCC##77??4GGG6;;&&&X&}}(((}}22>>>}}22::eCCC6;;&&&X&}}(((}}22>>>}}22::eCCC6;;&&&X&+++22>>>22::eCCCr$   c                 T   [        5       nUR                  R                  c   eUR                  R                  R                  c   eUR                  R                  R                  R                  SL d   eUR                  R
                  c   eUR                  R
                  R                  c   eUR                  R
                  R                  R                  SL d   e[        5       nUR                  US9  UR                  R                  R                  c   eUR                  R                  R                  R                  SL d   e[        5       nUR                  US9  UR                  R
                  R                  c   eUR                  R
                  R                  R                  SL d   eUR                  [        5       SS9  SUR                  ;   d   eUR                  S   R                  R                  R                  SL d   eUR                  [        5       SS9  SUR                  ;   d   eUR                  S   R
                  R                  R                  SL d   eUR                  5       nUS   S	   S
   S   SL d   eUS   S   S   S   SL d   eUS   S   S	   S
   S   SL d   eUS   S   S   S   S   SL d   e[         R                  " U5      nUR                  R                  R                  R                  SL d   eUR                  R
                  R                  R                  SL d   eUR                  S   R                  R                  R                  SL d   eUR                  S   R
                  R                  R                  SL d   eg)z8Test enabling/disabling float and bool inverted indexes.NTr:   Fr&  r   	is_activerl   r   rx   ro   r   rz   r{   )r   rl   rw   rx   ro   ry   rz   r	   r   r
   r   r{   r   r   )r    r   r(  bool_configr   r   s         r!   $test_float_and_bool_inverted_indexes2TestNewSchema.test_float_and_bool_inverted_indexes  s    **666**??KKK**??GG4OOO&&222&&::FFF&&::BBdJJJ 01<0**??KKK**??GG5PPP ./;/&&::FFF&&::BBeKKK 	#;#=7K&++%%%{{7#//DDLLPTTTT 	#:#<+Nfkk))){{;'//CCKKuTTT ,,.	j!'*+AB9MQVV	
V$V,-BCINRWWWWfg&w/0FG	R	
 fk*623HI)T	

 33I>$$00EEMMQVVVV$$,,@@HHEQQQg&22GGOOSWW	
W k*22FFNNRWW	
Wr$   c                 N   SSK Jn  [        US'    [        5       n[        SS9n[	        US9nUR                  US9  UR                  5       nUS   S	   S
   nUS   S   S:X  d   eUS   S   S	   S
   nUS   S   S:X  d   e[        R                  " U5      nUR                  R                  c   eUR                  R                  R                  c   eUR                  R                  R                  R                  R                  S:X  d   eUR                  S   R                  c   eUR                  S   R                  R                  c   eUR                  S   R                  R                  R                  R                  S:X  d   e SU;   a  US	 gg! SU;   a  US	 f f = f)zVTest that space is correctly inferred from embedding function when not explicitly set.r   r  rU   space_inference_testr   r   r:   rl   rq   rr   r7   r   r]   r{   rk   Nr  r  rF   r   r   r   r   r   rl   rq   rr   r7   r   r{   	r    r  r   r  r   r   r   r   r   s	            r!   ,test_space_inference_from_embedding_function:TestNewSchema.test_space_inference_from_embedding_function  s    	Q6K!"23+	@XF .9OPI-#,M }5 002I (
3LA.QO"8,W5AAA  )0>|L  $H-g6(BBB "77	BL((33???((33@@LLL%%00==DDJJhVV  $$\2==III$$\2==JJVVV!!,/::GGNNTT  #<<-.>? =#<<-.>? =s   E;F F$c                 P   SSK Jn  [        US'    [        5       n[        SS9n[	        USS9nUR                  US9  UR                  5       nUS	   S
   S   nUS   S   S:X  d   eUS   S   S
   S   nUS   S   S:X  d   e[        R                  " U5      nUR                  R                  c   eUR                  R                  R                  c   eUR                  R                  R                  R                  R                  S:X  d   eUR                  S   R                  c   eUR                  S   R                  R                  c   eUR                  S   R                  R                  R                  R                  S:X  d   e SU;   a  US	 gg! SU;   a  US	 f f = f)zTTest that explicit space parameter overrides the embedding function's default space.r   r  rU   override_testr   ra   r   r   r:   rl   rq   rr   r7   r   r{   rk   Nrx  ry  s	            r!   8test_explicit_space_overrides_embedding_function_defaultFTestNewSchema.test_explicit_space_overrides_embedding_function_default  s    	Q6K!"23-	@XF
 .II-#,M }5 002I (
3LA.QO)'2d::  )0>|L  !*73t;; "77	BL((33???((33@@LLL((33@@GGMMQUUUU$$\2==III$$\2==JJVVV!!,/::GGNNTT  #<<-.>? =#<<-.>? =s   E<F F%c                    [        5       n[        SSS9nUR                  US9  UR                  5       nUS   S   S   nUS   S	   S:X  d   eUS   S
   S   S:X  d   eUS   S   S   S   nUS   S	   S:X  d   eUS   S
   S   S:X  d   e[         R                  " U5      nUR
                  R                  c   eUR
                  R                  R                  c   eUR
                  R                  R                  R                  R                  S:X  d   eUR
                  R                  R                  R                  R                   b   eg)zITest space handling when no embedding function is provided (legacy mode).Nrb   r~  r:   rl   rq   rr   r7   r   r   r   r   r{   rk   )r   r   r   r   r   rl   rq   rr   r7   r   r   )r    r   r   r   r   r   r   s          r!   /test_space_inference_with_no_embedding_function=TestNewSchema.test_space_inference_with_no_embedding_function-	  s    *#
 	=1 ,,.	 $J/=nMx(1T999x()=>vF(RRR$V,\:<HX)'2d:::)*>?G8SSS 33I>$$//;;;$$//<<HHH$$//<<CCIITQQQ!!,,99@@SS	
r$   c                    SSK Jn  [        US'    [        5       n[        SS9n[	        US9nUR                  US9  UR                  5       nUS   S	   S
   S   S   S:X  d   e[        R                  " U5      nUR                  5       nUS   S	   S
   S   S   S:X  d   e[        R                  " U5      nUR                  5       n	U	S   S	   S
   S   S   S:X  d   eXh4 Hy  n
U
R                  R                  c   eU
R                  R                  R                  c   eU
R                  R                  R                  R                  R                  S:X  a  My   e   SU;   a  US	 gg! SU;   a  US	 f f = f)zQTest that inferred space remains stable across multiple serialization roundtrips.r   r  rU   roundtrip_space_testr   rw  r:   rl   rq   rr   r7   r   r]   N)r  r  rF   r   r   r   r   r   rl   rq   rr   r7   r   )r    r  r   r  r   rM  rN  rO  rP  rQ  r   s              r!   (test_space_inference_multiple_roundtrips6TestNewSchema.test_space_inference_multiple_roundtripsN	  s    	Q6K!"23)	@xH-9OPI-#,M !!!7 ..0Ej!,/?I'R 2259G --/Ej!,/?I'R 2259G --/Ej!,/?I'R
 #,11===11>>JJJ11>>EEKKxWWW -  #<<-.>? =#<<-.>? =s   EE( E( (E4c                    [        5       n[        S[        5       S9nUR                  USS9  SUR                  ;   d   eUR                  S   nUR
                  c   eUR
                  R                  c   eUR
                  R                  R                  SL d   eUR
                  R                  R                  R                  S:X  d   e[        5       nUR                  USS9  SUR                  ;   d   eUR                  S   nUR                  c   eUR                  R                  c   eUR                  R                  R                  SL d   eUR
                  R                  R                  R                  S:X  d   eg)zZTest that each key override has its own independent config (no inheritance from defaults).default_sourcer   rj  r   NTrk  )r   r   r   r   r{   rs   rt   ro   r7   r}   r   rm   rp   )r    r   r   rj  r   rk  s         r!   "test_keys_have_independent_configs0TestNewSchema.test_keys_have_independent_configs	  s~    0':<
 	=h? 6;;&&&X&##///##77CCC##77??4GGG  44;;FF 	
 
 23=h? 6;;&&&X&}}(((}}22>>>}}22::dBBB   44;;FF 	
 r$   c                    SSK Jn  [        US'    [        5       n[        SS9n[	        SSS9n[        US	US
9nUR                  US9  UR                  S   R                  R                  R                  R                  nUc   eUR                  S:X  d   eUR                  S:X  d   e[        SS9n[	        SSS9n[        USUS
9n	UR                  U	S9  UR                  R                  c   eUR                  R                  R                  c   eUR                  R                  R                  R                  R                  S:X  d   eUR                  R                  R                  R                  R                  c   eUR                  R                  R                  R                  R                  R                  S:X  d   eUR                  R                  R                  R                  R                  R                  S:X  d   eUR                  S   R                  c   eUR                  S   R                  R                  c   eUR                  S   R                  R                  R                  R                  n
U
c   eU
R                  S:X  d   eU
R                  S:X  d   eUR                  S   R                  R                  R                  R                  S:X  d   e SU;   a  US	 gg! SU;   a  US	 f f = f)zPTest that changes to global defaults don't affect already-created key overrides.r   r  rU   initial_modelr   r      r   r]   r  r:   rk   Nupdated_modelr   r   ra   )r  r  rF   r   r   r   r   r{   rq   rr   r7   r   r   r   rl   r   )r    r  r   ef1hnsw1vector_config1initial_embedding_hnswef2hnsw2r   updated_embedding_hnsws              r!   :test_global_default_changes_dont_affect_existing_overridesHTestNewSchema.test_global_default_changes_dont_affect_existing_overrides	  s    	Q6K!"238	@XF (?CC#CrJE.#&hUN ~6 &,[[&jffTT # *555)99S@@@)772=== (?CC#CrJE.#&dN ~6 ??--999??--::FFF??--::AAGG4OOO??--::AAFFRRR**77>>CCSS **77>>CCQQUWWW ;;|,77CCC;;|,77DDPPP%+[[&jffTT # *555)99S@@@)772===L)44AAHHNNRVVV
  #<<-.>? =#<<-.>? =s   KK5 5Lc                    [        5       nUR                  [        S[        5       S9SS9  UR                  [	        5       SS9  UR                  [	        5       SS9  UR
                  S   R                  R                  R                  R                  S:X  d   eUR
                  S   R                  R                  R                  SL d   eUR
                  S   R                  R                  R                  SL d   eUR                  [	        5       SS9  UR
                  S   R                  R                  R                  SL d   eUR
                  S   nUR                  c   eUR                  R                  c   eUR                  R                  R                  SL d   eUR                  R                  R                  R                  S:X  d   eUR
                  S   nUR                  c   eUR                  R                  c   eUR                  R                  R                  SL d   eUR                  5       n[         R                  " U5      nUR
                  S   R                  R                  R                  R                  S:X  d   eUR
                  S   R                  R                  R                  SL d   eUR
                  S   R                  R                  R                  SL d   eg	)
zBTest that modifying one key's overrides doesn't affect other keys.source_ar   key_ar   key_bkey_cTFN)r   r   r   r   r   r{   rs   rt   r7   r}   rm   rp   ro   r   r   r   )r    r   r  r  r   r   s         r!   +test_key_specific_overrides_are_independent9TestNewSchema.test_key_specific_overrides_are_independent	  s    	*%:U:W 	 	 	
 	#<#>GL#<#>GL KK ..BBIITT	
 {{7#**@@HHDPPP{{7#**@@HHDPPP 	#<#>GL {{7#**@@HHEQQQ G$""...""66BBB""66>>$FFF""66==HHJVVVG$||'''||11===||1199TAAA ,,.	33I> m//zz	

   )00FFNNRWWWW  )00FFNNRVVVVr$   c                 6   [        5       nUR                  R                  c   eUR                  R                  R                  c   eUR                  R                  R                  R                  SL d   eUR                  [        5       S9  UR                  R                  R                  R                  SL d   eUR                  [        5       SS9  UR                  [        5       SS9  UR                  R                  R                  R                  SL d   eUR                  S   nUR                  c   eUR                  R                  c   eUR                  R                  R                  SL d   eUR                  S   nUR                  c   eUR                  R                  c   eUR                  R                  R                  SL d   eUR                  5       nSUS   ;   d   eSUS   ;   d   eS	US   ;   d   eS
US   ;   d   eSUS   ;  d   eg)zDTest disabling an index globally, then enabling it on specific keys.NTr:   Fimportant_fieldr   searchable_fieldr{   rj   rk   other_field)
r   rl   rm   rp   ro   r   r   r   r{   r   )r    r   	important
searchabler   s        r!   +test_global_default_disable_then_key_enable9TestNewSchema.test_global_default_disable_then_key_enable
  s    %%111%%;;GGG%%;;CCtKKK 	#<#>?%%;;CCuLLL 	#<#>DUV#<#>DVW %%;;CCuLLL KK 12	+++55AAA55==EEE[[!34
  ,,,  66BBB  66>>$FFF ,,.	 !If$5555!Yv%6666i////y0000 If$5555r$   c                 V   [        5       nUR                  [        S[        5       S9SS9  UR                  S   nUR
                  c   eUR
                  R                  c   eUR
                  R                  R                  SL d   eUR                  b   eUR                  b   eUR                  b   eUR                  b   eUR                  b   eUR                  5       nUS   S   nSU;   d   eS	U;  d   eS
U;  d   eSU;  d   eSU;  d   eSU;  d   e[         R                  " U5      nUR                  S   nUR
                  c   eUR
                  R                  c   eUR
                  R                  R                  SL d   eUR                  b   eUR                  b   eg)z\Test that when you override one aspect of a value type, other indexes still follow defaults.	my_sourcer   multi_index_fieldr   NTr{   rs   rm   r   r   r   rq   )r   r   r   r   r{   rs   rt   ro   rm   ru   rw   ry   rq   r   r   )r    r   fieldr   
field_jsonr   	des_fields          r!   )test_partial_override_fills_from_defaults7TestNewSchema.test_partial_override_fills_from_defaultsJ
  s    	*&;V;X $	 	 	
 /0 ""...""66BBB""66>>$FFF ||###&&&  (((}}$$$''' ,,.	v&':;
 *,,,z)))J&&&j(((Z''':--- 33I> %%&9:	 &&222&&::FFF&&::BBdJJJ '''""***r$   c                    [         R                  " S5      nUR                  [        R                  :X  d   eUR
                  S:X  d   eUR                  5       SL d   e[         R                  " S5      nUR                  5       SL d   eg)z(Test basic CMEK creation and validation.zRprojects/test-project/locations/us-central1/keyRings/test-ring/cryptoKeys/test-keyTzinvalid-formatFN)r   gcpproviderr   GCPresourcevalidate_pattern)r    cmekinvalid_cmeks      r!   test_cmek_basic_creation&TestNewSchema.test_cmek_basic_creation~
  s     xx`
 }} 0 0000MMcd	
d
 $$&$... xx 01,,.%777r$   c                 .   [         R                  " S5      nUR                  5       nUSS0:X  d   eSU;   d   eUS   S:X  d   e[         R                  " U5      nUR                  [
        R                  :X  d   eUR                  UR                  :X  d   eg)z,Test CMEK serialization and deserialization..projects/p/locations/l/keyRings/r/cryptoKeys/kr  N)r   r  to_dict	from_dictr  r   r  r  )r    r  	cmek_dictrestoreds       r!   test_cmek_serialization%TestNewSchema.test_cmek_serialization
  s    xxHI LLN	U$TUUUU	!!!#SSSS >>),  L$4$4444  DMM111r$   c                 .   [        5       nUR                  b   e[        R                  " S5      nUR	                  U5      nX1L d   eUR                  c   eUR                  R
                  [        R                  :X  d   eUR                  R                  S:X  d   eUR	                  S5        UR                  b   e[        R                  " S5      n[        5       R	                  U5      nUR                  c   eUR                  R                  S:X  d   eg)z:Test CMEK integration with Schema using set_cmek() method.Nz7projects/test/locations/us/keyRings/ring/cryptoKeys/keyr  )	r   r  r   r  set_cmekr  r   r  r  )r    r   r  r   cmek2rP  s         r!   test_cmek_in_schema!TestNewSchema.test_cmek_in_schema
  s    {{""" xxQR&  {{&&&{{##|'7'7777KK  HI	
I
 	{{""" IJ(##E*||'''||$$(XXXXr$   c                    [         R                  " S5      n[        5       R                  U5      nUR	                  5       nSU;   d   eUS   SS0:X  d   eSUS   ;   d   eUS   S   S:X  d   e[        R
                  " U5      nUR                  c   eUR                  R                  [        R                  :X  d   eUR                  R                  UR                  :X  d   eg)z$Test Schema serialization with CMEK.r  r  r  N)r   r  r   r  r   r   r  r  r   r  r  )r    r  r   r   r   s        r!   test_cmek_schema_serialization,TestNewSchema.test_cmek_schema_serialization
  s    xxHI""4( ,,.	 """ C%
 
 	
 
 	&))))fe$(XX	
X 33I>  ,,,  ))\-=-====  ))T]]:::r$   c                     [        5       nUR                  5       nSU;  d   e[         R                  " U5      nUR                  b   eg)z@Test Schema serialization without CMEK (backward compatibility).r  N)r   r   r   r  )r    r   r   r   s       r!   +test_cmek_schema_without_cmek_serialization9TestNewSchema.test_cmek_schema_without_cmek_serialization
  sM     ,,.	 Y&&& 33I>  (((r$   c                 <   [         R                  " [        SS9   [        R                  " 0 0 0 S.5        SSS5        [         R                  " [        SS9   [        R                  " 0 0 SS0S.5        SSS5        g! , (       d  f       NM= f! , (       d  f       g= f)zCTest that invalid CMEK data raises a warning and sets cmek to None.z,Unsupported or missing CMEK provider in datar   )rl   r{   r  Ninvalid_providerzsome-resource)r   r   r   r   r   r4   s    r!   !test_cmek_invalid_deserialization/TestNewSchema.test_cmek_invalid_deserialization
  s~    ]]:-[\((R8 ]
 ]]:-[\(( "/A ]\ ]\
 ]\s   A<B<
B

Br1   r&   N)0r=   r>   r?   r@   rA   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r/  r6  r=  rB  rE  rU  rg  rn  rs  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rD   r1   r$   r!   rf   rf   L   s   .G
R+
Z1
f(
Tc
J5In1
f&UPH<. #NJ
4%QN)@Vj
XG
Rr@hI@VW=r
2Lh&LPAGF*1X\@|JJX+DZ:
x2@h4@l
B0@d%
N?@B4Wl*6X2+h8&2Y@;0)r$   rf   c                      [        5       n [        5       n[        R                  " [        SS9   U R                  US9  SSS5        g! , (       d  f       g= f)zITest that sparse vector index cannot be created globally (without a key).z5Sparse vector index must be created on a specific keyr   r:   N)r   r   r   r   r   r   r   r   s     r!   -test_sparse_vector_cannot_be_created_globallyr  
  sH    XF+-M 
Q
 	=1
 
 
s   A
Ac                     [        5       n [        5       nU R                  USS9  U R                  S   R                  c   eU R                  S   R                  R
                  c   eU R                  S   R                  R
                  R                  SL d   e[        R                  " [        SS9   U R                  USS9  SSS5        g! , (       d  f       g= f)zITest that sparse vector index cannot be deleted (temporarily disallowed).r   r   NTz7Deleting sparse vector index is not currently supportedr   )r   r   r   r{   rs   rt   ro   r   r   r   r   r  s     r!   $test_sparse_vector_cannot_be_deletedr    s    XF+-M }(;;;x ..:::;;x ..BBNNN;;x ..BBJJdRRR 
S
 	=h?
 
 
s   2C
Cc                     [        5       n [        5       nU R                  USS9  SU R                  ;   d   eU R                  S   R                  c   eU R                  S   R                  R
                  c   eU R                  S   R                  R
                  R                  SL d   e[        5       nU R                  U[        S5      S9  SU R                  ;   d   eU R                  S   R                  c   eU R                  S   R                  R                  c   eU R                  S   R                  R                  R                  SL d   e[        5       nUR                  USS9  [        5       nUR                  U[        S5      S9  UR                  S   R                  c   eUR                  S   R                  R
                  c   eUR                  S   R                  c   eUR                  S   R                  R
                  c   eUR                  S   R                  R
                  R                  UR                  S   R                  R
                  R                  :X  d   eg)zLTest that create_index accepts both str and Key types for the key parameter.test_field_strr   NTtest_field_key
same_field)r   r   r   r{   rm   rp   ro   r   r   ru   rv   r   r   r   rP  rR  s        r!   "test_create_index_accepts_key_typer    sF   XF ./M
}2BC v{{***;;'(//;;;;;'(//EEQQQ;;'(//EEMMQUUUU ()J
zs3C/DE v{{***;;'(22>>>;;'(22EEQQQ;;'(22EEMMQUUUU hG<@hG3|3DE <<%,,888<<%,,BBNNN<<%,,888<<%,,BBNNN\"))??GG<<%,,BBJJ	K	Kr$   c                     [        5       n [        5       n[        5       nU R                  USS9  SU R                  ;   d   eU R                  S   R
                  c   eU R                  S   R
                  R                  c   eU R                  S   R
                  R                  R                  SL d   eU R                  U[        S5      S9  SU R                  ;   d   eU R                  S   R                  c   eU R                  S   R                  R                  c   eU R                  S   R                  R                  R                  SL d   e[        5       nUR                  USS9  [        5       nUR                  U[        S5      S9  UR                  S   R
                  c   eUR                  S   R
                  R                  c   eUR                  S   R
                  c   eUR                  S   R
                  R                  c   eUR                  S   R
                  R                  R                  UR                  S   R
                  R                  R                  :X  d   eg)zLTest that delete_index accepts both str and Key types for the key parameter.r  r   NFr  r  )r   r   r   r   r{   rm   rp   ro   r   ru   rv   r  s        r!   "test_delete_index_accepts_key_typer  ?  sH   XF ./M')J }2BC v{{***;;'(//;;;;;'(//EEQQQ;;'(//EEMMQVVVV zs3C/DE v{{***;;'(22>>>;;'(22EEQQQ;;'(22EEMMQVVVV hG<@hG3|3DE <<%,,888<<%,,BBNNN<<%,,888<<%,,BBNNN\"))??GG<<%,,BBJJ	K	Kr$   c                     [        5       n [        5       n[        R                  " [        SS9   U R                  U[        R                  S9  SSS5        [        R                  " [        SS9   U R                  U[        R                  S9  SSS5        [        R                  " [        SS9   U R                  USS9  SSS5        [        R                  " [        SS9   U R                  USS9  SSS5        [        R                  " [        SS9   U R                  U[        S	5      S9  SSS5        g! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N}= f! , (       d  f       g= f)
zPTest that create_index rejects special keys like Key.DOCUMENT and Key.EMBEDDING.r   r   r   Nr   rj   key cannot begin with '#'#custom_key#custom)	r   r   r   r   r   r   r   DOCUMENT	EMBEDDINGr   r   s     r!   &test_create_index_rejects_special_keysr  k  s3   XF-/M 
J
 	=cllC
 
K
 	=cmmD
 
J
 	=kB
 
z)D	E=mD 
F 
z)D	E=c)nE 
F	E-
 

 

 
 
F	E 
F	E;   D5.E.E E(E95
E
E
E%(
E69
Fc                     [        5       n [        5       n[        R                  " [        SS9   U R                  U[        R                  S9  SSS5        [        R                  " [        SS9   U R                  U[        R                  S9  SSS5        [        R                  " [        SS9   U R                  USS9  SSS5        [        R                  " [        SS9   U R                  USS9  SSS5        [        R                  " [        SS9   U R                  U[        S	5      S9  SSS5        g! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N}= f! , (       d  f       g= f)
zPTest that delete_index rejects special keys like Key.DOCUMENT and Key.EMBEDDING.z.Cannot delete index on special key '#document'r   r   NzCannot modify #embeddingrk   r  r  r  )	r   r   r   r   r   r   r   r  r  r  s     r!   &test_delete_index_rejects_special_keysr    s3   XF-/M 
J
 	=cllC
 
4
 	=cmmD
 
4
 	=lC
 
z)D	E=mD 
F 
z)D	E=c)nE 
F	E-
 

 

 
 
F	E 
F	Er  c                     [        SS9n U R                  S:X  d   e[        U R                  [        5      (       d   e[        [	        S5      S9nUR                  S:X  d   e[        UR                  [        5      (       d   e[        [        R
                  S9nUR                  S:X  d   e[        UR                  [        5      (       d   e[        SS9n[        [	        S5      S9nUR                  UR                  :X  d   e[        SS9nUR                  b   e[        [	        S5      S9nUR                  5       nUS   S:X  d   e[        US   [        5      (       d   eg)zFTest that VectorIndexConfig.source_key accepts both str and Key types.my_fieldr}   rj   testNserialize_testr}   )r   r}   r   rB   r   r  
model_dumpconfig1config2config3config4config5config6config7config_dicts           r!   4test_vector_index_config_source_key_accepts_key_typer    sS     :6G+++g((#....  3z?;G+++g((#....  3<<8G,,,g((#....  62G3v;7G!3!3333  40G%%%  3/?+@AG$$&K|$(8888k,/5555r$   c                     [        SS9n U R                  S:X  d   e[        U R                  [        5      (       d   e[        [	        S5      S9nUR                  S:X  d   e[        UR                  [        5      (       d   e[        [        R
                  S9nUR                  S:X  d   e[        UR                  [        5      (       d   e[        SS9n[        [	        S5      S9nUR                  UR                  :X  d   e[        SS9nUR                  b   e[        [	        S5      S9nUR                  5       nUS   S:X  d   e[        US   [        5      (       d   eg)zLTest that SparseVectorIndexConfig.source_key accepts both str and Key types.r  r  rj   r  Nr  r}   )r   r}   r   rB   r   r  r  r  s           r!   ;test_sparse_vector_index_config_source_key_accepts_key_typer    sS    &<G+++g((#.... &ZAG+++g((#.... &>G,,,g((#.... &8G%V=G!3!3333 &6G%%% &5E1FGG$$&K|$(8888k,/5555r$   c                     [         R                  " [        SS9   [        SS9  SSS5        [         R                  " [        SS9   [        SS/S9  SSS5        [         R                  " [        SS9   [	        SS9  SSS5        [         R                  " [        SS9   [	        SS0S9  SSS5        g! , (       d  f       N= f! , (       d  f       Nx= f! , (       d  f       N^= f! , (       d  f       g= f)z@Test that config validators reject invalid types for source_key.zsource_key must be str or Keyr   {   r  Nnotvalid)r   r   r   r   r   r1   r$   r!   ,test_config_source_key_rejects_invalid_typesr     s     
z)H	IS) 
J 
z)H	IeW%56 
J 
z)H	I3/ 
J 
z)H	IE7+;< 
J	I 
J	I 
J	I 
J	I 
J	Is/   
B2C2
CC%2
C 
C
C"%
C3c                     [        SS9n U R                  S:X  d   e[        [        R                  S9nUR                  S:X  d   e[        R
                  " [        SS9   [        SS9  SSS5        [        R
                  " [        SS9   [        [        R                  S9  SSS5        [        R
                  " [        SS9   [        SS9  SSS5        [        R
                  " [        SS9   [        SS9  SSS5        [        R
                  " [        SS9   [        S	S9  SSS5        [        S
S9nUR                  S
:X  d   e[        SS9nUR                  S:X  d   e[        [        R                  S9nUR                  S:X  d   e[        R
                  " [        SS9   [        SS9  SSS5        [        R
                  " [        SS9   [        [        R                  S9  SSS5        [        R
                  " [        SS9   [        SS9  SSS5        [        S
S9nUR                  S
:X  d   eg! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNz= f! , (       d  f       GNa= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f)zGTest that source_key only allows #document, rejects other special keys.rj   r  z source_key cannot begin with '#'r   rk   Nz	#metadataz#scorer  r  )	r   r}   r   r  r   r   r   r  r   )r  r  r  r  r  r  s         r!   -test_config_source_key_validates_special_keysr    s     ;7G,,,  3<<8G,,, 
z)K	L\2 
M 
z)K	LS]]3 
M 
z)K	L[1 
M 
z)K	LX. 
M 
z)K	LY/ 
M  :6G+++ &=G,,, &>G,,, 
z)K	L<8 
M 
z)K	L3==9 
M 
z)K	L;7 
M &<G+++] 
M	L 
M	L 
M	L 
M	L 
M	L" 
M	L 
M	L 
M	Ls`   
H4	I
I-
I*
I<"
JJ
J04
I
I
I'*
I9<
J
J
J-0
J>c                  0   [        5       n [        R                  " [        5       nU R	                  S[        SS9S9  SSS5        [        WR                  5      nSUR                  5       ;   d   eSUR                  5       ;   d   eg! , (       d  f       NP= f)zkTest that SparseVectorIndexConfig raises ValueError when source_key is provided without embedding_function.invalid_sparser"  r  )r   r7   Nr}   r   )	r   r   r   r   r   r   rB   valuelower)r   exc_info	error_msgs      r!   5test_sparse_vector_config_requires_ef_with_source_keyr	  ;  s    XF 
z	"h *' 	 	
 
# HNN#I9??,,,,9??#4444 
#	"s   B
Bc            
         [         R                  " [        [        45       n [	        [
        R                  S9  SSS5        [        W R                  5      nSUR                  5       ;   d   eSUR                  5       ;   d  SUR                  5       ;   d   e[         R                  " [        [        45       n [        SS9  SSS5        [        U R                  5      nSUR                  5       ;   d   eSUR                  5       ;   d  SUR                  5       ;   d   e[         R                  " [        [        45       n [        SS9  SSS5        [        U R                  5      nSUR                  5       ;   d   eSUR                  5       ;   d  SUR                  5       ;   d   e[         R                  " [        [        45       n [        SS9  SSS5        [        U R                  5      nSUR                  5       ;   d   eSUR                  5       ;   d  SUR                  5       ;   d   e[         R                  " [        [        45       n [        S	S9  SSS5        [        U R                  5      nSUR                  5       ;   d   eSUR                  5       ;   d  SUR                  5       ;   d   e[         R                  " [        [        45       n [        S
S9  SSS5        [        U R                  5      nSUR                  5       ;   d   eSUR                  5       ;   d  SUR                  5       ;   d   e[         R                  " [        [        45       n [        SS9  SSS5        [        U R                  5      nSUR                  5       ;   d   eSUR                  5       ;   d  SUR                  5       ;   d   e[         R                  " [        [        45       n [!        S	S9  SSS5        [        U R                  5      nSUR                  5       ;   d   e[!        SSSSSSSS9nUR"                  S:X  d   eUR$                  S:X  d   e[         R                  " [        [        45       n ['        S	S9  SSS5        [        U R                  5      nSUR                  5       ;   d   e['        S,0 SS_SS_SS_SS_SS_SS_SS_SS _S!S_S"S#_S$S_S%S&_S'S_S(S)_S*S)_S+S_6nUR(                  S:X  d   eUR*                  S:X  d   eUR"                  S):X  d   e[-        US5      (       a   e[-        US5      (       a   e[-        US!5      (       a   eg! , (       d  f       GN$= f! , (       d  f       GN= f! , (       d  f       GN:= f! , (       d  f       GN= f! , (       d  f       GNP= f! , (       d  f       GN= f! , (       d  f       GNf= f! , (       d  f       GN= f! , (       d  f       GNs= f)-z;Test that all config classes reject invalid/unknown fields.r   Nr   extra	permittedr  )invalid_fieldr  r  gGz?Tr   r     i  g333333?)r   r   r   num_threads
batch_sizesync_thresholdresize_factorr  r  search_rng_factorr)   search_rng_epsilong      $@nreplica_count   r  r   write_rng_factorwrite_rng_epsilong      @split_thresholdr  num_samples_kmeansinitial_lambdag      Y@reassign_neighbor_countmerge_thresholdr   num_centers_to_merge_tor   r   r   r   r1   )r   r   r   r   r   r   r  rB   r  r  r   r   r   r   r	   r
   r   r   r   r   r  r  hasattr)r  r  r7   r  s       r!   )test_config_classes_reject_invalid_fieldsr   O  s<    

O4	5CLL1 
6 HNN#IIOO%%%%ioo'';)//:K+KKK 

O4	5/ 
6 HNN#Iioo////ioo'';)//:K+KKK 

O4	5V, 
6 HNN#Iioo////ioo'';)//:K+KKK 

O4	5!7 
6 HNN#Iioo////ioo'';)//:K+KKK 

O4	5S1 
6 HNN#Iioo////ioo'';)//:K+KKK 

O4	5 t4 
6 HNN#Iioo////ioo'';)//:K+KKK 

O4	5d3 
6 HNN#Iioo////ioo'';)//:K+KKK 

O4	5c* 
6 HNN#Iioo//// F !!S(((2%%% 

O4	5s+ 
6 HNN#Iioo//// $    	
        !#  !"    !L& %%+++$$***''3...|%89999|%56666|%9:::::] 
6	5 
6	5 
6	5 
6	5 
6	5 
6	5 
6	5 
6	5* 
6	5sk   U6
U(=
U:
V
V
V0
W 
W0
W&
U%(
U7:
V	
V
V-0
V?
W
W#&
W5r  )*chromadb.api.typesr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   &chromadb.execution.expression.operatorr   typingr   r   r   pydanticr   r   rB   r   rF   rf   r  r  r  r  r  r  r  r  r   r  r	  r   r1   r$   r!   <module>r%     s       $ 7 " " $ N"9$s)"D N*&-d3i8 &<i* i*VU	2@$'T)XF@F@6B6B=":,z5(q;r$   