
    3is                    2   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  S SKJr  S SKJrJr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$g)    )SchemaSparseVectorIndexConfigSparseEmbeddingFunctionSparseVectorStringInvertedIndexConfigIntInvertedIndexConfigFloatInvertedIndexConfigBoolInvertedIndexConfigVectorIndexConfigHnswIndexConfigSpannIndexConfigFtsIndexConfigEmbeddingFunction
Embeddings)Key)ListDictAnyNc                       \ 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     W/home/james-whalen/.local/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 r.   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   r-   )r   getr4   s    r   build_from_config-MockSparseEmbeddingFunction.build_from_config&   s    *6::fm+LMMr!   r   N)r-   )__name__
__module____qualname____firstlineno____doc__strr   r   r   r*   staticmethodr   r   r   r2   r8   __static_attributes__r.   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   rE   s     r   r   MockEmbeddingFunction.__init__.   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__1   s,    EJKU

;UKKKs   %1c                      g)Nmock_embeddingr.   r.   r!   r   r   MockEmbeddingFunction.name6   s    r!   c                     SU R                   0$ )NrE   rG   r1   s    r   r2    MockEmbeddingFunction.get_config:   s    d..//r!   r4   c                 8    [        U R                  SS5      5      $ )NrE   
mock_model)rC   r6   r7   s    r   r8   'MockEmbeddingFunction.build_from_config=   s    $VZZl%KLLr!   c                     g)Ncosiner.   r1   s    r   default_space#MockEmbeddingFunction.default_spaceA   s    r!   c                 
    / SQ$ )N)rZ   l2ipr.   r1   s    r   supported_spaces&MockEmbeddingFunction.supported_spacesD   s    %%r!   rG   N)rW   )r:   r;   r<   r=   r>   r?   r   r   r   r*   r@   r   r   r   r2   r8   r[   r`   rA   r.   r!   r   rC   rC   +   s    .&3 &Ld3i LJ L
  #    0DcN 0 M$sCx. M5L M Ms &$s) &r!   rC   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(r)g)*TestNewSchemaH   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lenr4   
source_keyr   schemas     r   "test_default_schema_initialization0TestNewSchema.test_default_schema_initializationK   s    *** %%111%%//;;;%%//775@@@%%;;GGG%%;;CCtKKK ))555))66BBB))66>>%GGG ,,888,,@@LLL,,@@HHEQQQ ((444((;;GGG((;;CCtKKK **666**??KKK**??GG4OOO &&222&&::FFF&&::BBdJJJ {{&&&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{{<(33@@GGRRVaaaar!   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r4   keyNTF)r   r   create_indexrx   rp   rq   rl   r4   rj   rn   rr   rt   rv   ri   r   r|   r4   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{{./==QQ]]] {{./==QQYY]aaaa{{./==QQXX\bbbb {{./66>>>{{./::BBB{{./99AAA{{./;;CCC{{./77??? ,,888,,@@LLL,,@@HHEQQQr!   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_functionrz   sparse_embeddingsr   NTr-   r   F)r   r   r   r   rx   rp   rq   rl   r4   r   rz   r   r2   ri   )r   r|   embedding_funcr4   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(-.
 $$F8K$L  #fkk111{{./==III{{./==QQ]]] {{#67EEYY##t+++ ""55GGG""--1HHHH ""55::<MMM""55@@BvOaFbbbb ,,888,,@@LLL,,@@HHEQQQ,,@@GGZZbbbr!   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   NFrg   rh   T)r   r   delete_indexrx   rj   rm   rl   ri   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{{,-44JJRRV[[[[ fkk))){{;'..:::{{;'..DDPPP{{;'..DDLLPUUUU v{{***{{<(//777 %%111%%;;GGG%%;;CCtKKKr!   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rz   r   embeddings_keyr   
text_key_1
text_key_2NTFrg   rh   )r   r   r   r   r   r   rx   rp   rq   rl   r4   rz   rj   rn   rr   rt   rv   rm   ri   rk   ro   )r   r|   sparse_configstring_configr   s        r   )test_chained_create_and_delete_operations7TestNewSchema.test_chained_create_and_delete_operations   sH    0:ZuZwx13 \4D\E\L\A\L\A	 	   6;;...v{{***v{{*** {{+,::FFF{{+,::NNZZZ{{+,::NNVVZ^^^^{{+,::NNUU``dnnnn {{+,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,,@@HHEQQQ%%111%%;;GGG%%;;CCtKKK fkk)))v{{***{{;'..:::{{;'..88DDD{{;'..88@@DHHH{{<(33???{{<(33@@LLL{{<(33@@HHDPPPr!   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.rZ   custom_source)spacerz   r7   NFrh   Trg   r^   )r   /Vector index cannot be enabled on specific keysmatch
my_vectorsr   .Cannot create index on special key '#document'r_   /Cannot create index on special key '#embedding')r   r   r   ri   rn   ro   rl   r4   r   rz   rx   pytestraises
ValueError)r   r|   vector_configr   vector_config2vector_config3s         r   )test_vector_index_config_and_restrictions7TestNewSchema.test_vector_index_config_and_restrictionsC  s\   )_U $$M$: ))555))66BBB))66>>%GGG))66==CCxOOO))66==HHO[[[ {{<(33???{{<(33@@LLL{{<(33@@HHDPPP{{<(33@@GGMMQYYYY{{<(33@@GGRRVaaaa +6]]:-^_~<H ` ]]:-]^~;G _ +6]]:-^_~<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rE          d   ef_constructionmax_neighbors	ef_searchr^   r   )r   r   hnswrz   r7   NFrR   rE   rh   Trg   )r   rC   r   r   r   ri   rn   ro   rl   r4   r   r   r2   r   r   r   r   r   rz   rx   )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_hnswi  s    (3DE%
 *&.	
 $$M$: ))555 //44AA***&&%///%%88GCCC%%88==?CSSSS%%88CCE,XiIjjj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&&11[@@@r!   c                    [        5       n[        5       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                  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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                  USS	9  SSS5        g! , (       d  f       Ns= f! , (       d  f       NR= f! , (       d  f       g= f)z2Test FTS index configuration and key restrictions.r7   NFrg   T,FTS index cannot be enabled on specific keysr   custom_text_fieldr   r   rh   r   )r   r   r   ri   rj   rk   rl   r4   rx   r   r   r   )r   r|   
fts_configr   fts_config2s        r   &test_fts_index_config_and_restrictions4TestNewSchema.test_fts_index_config_and_restrictions  s   #%
 $$J$7 %%111%%//;;;%%//775@@@%%//66*DDD {{;'..:::{{;'..88DDD{{;'..88@@DHHH{{;'..88??:MMM %&]]:-[\{8KL ] ]]:-^_{E ` ]]:-]^{D _^ ]\ `_ _^s$   HH3H/
H
H,/
H=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   rg   r   Nr   rh   )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]]:-]^}+F _ ]]:-^_},G ` 01]]:-]^}+F _ ]]:-^_},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_key  sp     ]]:-]^H- _ ]]:-^_H- `_	 _^ `_s   A.A?.
A<?
Bc                 T   [        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        g! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nc= f! , (       d  f       g= f)	z9Test that deleting vector and FTS indexes is not allowed.0Deleting vector index is not currently supportedr   r7   Nr   r   -Deleting FTS index is not currently supportedmy_text)r   r   r   r   r   r   r   r   r|   r   r   s       r   &test_cannot_delete_vector_or_fts_index4TestNewSchema.test_cannot_delete_vector_or_fts_index  s     *+]]:-_`}5 a ]]:-_`},G a $%
]]:-\]z2 ^ ]]:-\]zyA ^] a` a`
 ^] ^]s/   C&C7DD&
C47
D
D
D'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.NTr7   Frg   )	r   ri   rj   rm   rl   r   r   r4   rx   r   r|   r   r   s       r   +test_disable_string_inverted_index_globally9TestNewSchema.test_disable_string_inverted_index_globally  sX    %%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{{;'..DDLLPUUUUr!   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   NFTrg   rh   )r   r   r   rx   rj   rm   rl   r4   rn   rp   rr   ri   ro   r   s       r   )test_disable_string_inverted_index_on_key7TestNewSchema.test_disable_string_inverted_index_on_key  sP    23$$M$O &++---{{?+22>>>{{?+22HHTTT{{?+22HHPPTYYYY{{?+22HHOOS```` {{?+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.NTr7   F	age_fieldr   rg   rh   )r   ri   rr   rs   rl   r   r   r4   rx   rj   rn   rp   rt   rv   )r   r|   
int_configr   int_config2s        r   test_disable_int_inverted_index-TestNewSchema.test_disable_int_inverted_index.  sc    ((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{{;'11DDKK{ZZZ {{;'..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.ri   rx   rj   rk   rl   Fr4   rm   Trn   ro   r   r^   r   typeknownr   defaultrp   rq   unknownintrs   floatru   boolrw   rg   rh   rz   N)r   serialize_to_json
isinstancedictdeserialize_from_jsonri   rj   rk   rl   rm   rn   ro   r4   r   r   r   rp   rq   rr   rs   rt   ru   rv   rw   rx   rz   )	r   original	json_datari   r   sparse_vector_configrx   embedding_vector_configdeserializeds	            r   )test_serialize_deserialize_default_schema7TestNewSchema.test_serialize_deserialize_default_schemaW  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OPXY#';;;;#$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>"RS["\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$$++55==ARARAYAYAcAcAkAkkkk$$++AAMMM$$++AAIITQQQ$$++AAIIXM^M^MeMeM{M{  ND  ND  D  	D  D $$//;;;$$//<<HHH$$//<<DDMMM$$//<<DDHYHYHdHdHqHqHyHyyyy$$//<<CCIITQQQ$$//<<CCVVbbb$$//<<CCVV[[]ajjjj  ++88??RRWWY]ffff $$22>>>$$22FFRRR$$22FFNNRWWWW$$22FFNNRZRcRcRqRq  SF  SF  SN  SN  N  	N  N $$..:::$$..AAMMM$$..AAIITQQQ$$..AAIIXM^M^MhMhM{M{  ND  ND  D  	D  D $$00<<<$$00EEQQQ$$00EEMMQUUUU$$00EEMMQYQbQbQnQn  RD  RD  RL  RL  L  	L  L $$,,888$$,,@@LLL$$,,@@HHDPPP$$,,@@HHHL]L]LeLeLyLy  MB  MB  B  	B  B l/////  -44@@@  -44>>JJJ  -44>>FF$NNN  -44>>FF(--XcJdJkJkJuJuJ}J}}}}  -44JJVVV  -44JJRRV[[[[  -44JJRRV^VcVcdoVpVwVw  WN  WN  WV  WV  V  	V  V |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  .99FFNNRZR_R_`lRmRxRx  SF  SF  SN  SN  N  	N  N  .99FFMMXX\gggg}}\*55BBIITTXcccc  .99FFMMSSW[[[[  .99FFMM``lll  .99FFMM``eegktttt}}\*55BBII\\aacgppppr!   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.rZ   N)r   r   r7   ri   rn   ro   rl   Fr4   r   r   r   legacyrx   rh   Trz   rg   )r   r   r   r   r   ri   rn   ro   rl   r4   r   r   rx   rz   )	r   r   r   r   ri   vector_jsonrx   embedding_vector_jsonr   s	            r   3test_serialize_deserialize_with_vector_config_no_efATestNewSchema.test_serialize_deserialize_with_vector_config_no_ef  s/    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$X.w78CCC$X.|<KKK$X./CDVLPXXXX 33I> $$//;;;$$//<<HHH$$//<<DDMMM$$//<<CCIIXUUU$$//<<CCVV^^^ |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  .99FFMMSSW____  .99FFMMXX\gggg  .99FFMM``hhhr!   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_functionsrR   custom_model_v3r      0      r   r_   r   r   r   r7   ri   rn   ro   rl   Fr4   r   r   r   r   r   rE   r   r   r   r   rx   rh   Trz   rg   N)"chromadb.utils.embedding_functionsr  rC   r   r   r   r   r   r   ri   rn   ro   rl   r4   r   r   r   r2   r   r   r   r   rx   rz   )r   r  r   	custom_efr   r   r   ri   r   rx   r   r   	ef_configef_config_embeddings                 r   )test_serialize_deserialize_with_custom_ef7TestNewSchema.test_serialize_deserialize_with_custom_ef6  s    	Q6K!"23_	@xH-9JKI) # 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x()=>vFJZZZZx()=>xHVZkkkk[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!(3t;;;(27;tCCC(2<@KOOO(23GHPT[[[[(23GHPTdddd(23GHRS_`duuuu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((33@@GGMMQUUUU((33@@GGZZfff((33@@GGZZ__aeuuuu$--88EELL__jjlI\*.????((33@@GGLLXXX((33@@GGLL\\`cccc((33@@GGLLZZ^````((33@@GGLLVVZ]]]]  <#4#4444$$\2==III$$\2==JJVVV$$\2==JJRRVZZZZ$$\2==JJQQWW[____$$\2==JJQQ\\`kkkk$$\2==JJQQddppp$$\2==JJQQddiiko"."3"3L"A"L"L"Y"Y"`"`"s"s"~"~  #A&|48IIII$$\2==JJQQVVbbb$$\2==JJQQVVffjmmmm$$\2==JJQQVVddhjjjj$$\2==JJQQVV``dgggg  #<<-.>? =#<<-.>? =s   \\1 1\=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  rR   spann_modelr   r   2   r      )search_nprobewrite_nprober   r   rZ   )r   r   spannr7   ri   rn   ro   rl   Fr4   r   r   r   r   r   rE   r  r  r  r   r   r   Nrx   rh   Trz   rg   )r
  r  rC   r   r   r   r   r   r6   r   ri   rn   ro   rl   r4   r   r   r   r2   r  r  r  r   r   r   rx   rz   )r   r  r   r  spann_configr   r   ri   r   rx   r   r   r  r  s                 r   ,test_serialize_deserialize_with_spann_config:TestNewSchema.test_serialize_deserialize_with_spann_config  s    	Q6K!"23l	@xH-GI+! #	L .#,"M
 !!!7 !224I !,H8+++!Xl%;;;;"<0@Ky)U222x(1X===x()=>vF'QQQx()=>vFJZZZZx()=>xHVZgggg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!(3t;;;(27;xGGG(2<@KOOO(23GHPT[[[[(23GHPTdddd(23GHRS_`dqqqq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((33@@GGMMQYYYY((33@@GGZZfff((33@@GGZZ__aeuuuu$--88EELL__jjlI\*m;;;((33@@GGMMYYY((33@@GGMM[[_bbbb((33@@GGMMZZ^````((33@@GGMM]]adddd((33@@GGMMWW[^^^^((33@@GGLLTTT  <#4#4444$$\2==III$$\2==JJVVV$$\2==JJRRVZZZZ$$\2==JJQQWW[cccc$$\2==JJQQ\\`kkkk$$\2==JJQQddppp$$\2==JJQQddiiko"."3"3L"A"L"L"Y"Y"`"`"s"s"~"~  #A&|4EEE$$\2==JJQQWWccc$$\2==JJQQWWeeillll$$\2==JJQQWWddhjjjj$$\2==JJQQWWggknnnn$$\2==JJQQWWaaehhhh$$\2==JJQQVV^^^  #<<-.>? =#<<-.>? =s   a!a> >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  rR   r-   mixed_test_modelr   i,  @   r   r   r_   r	  r7   sparse_modelr   
text_fieldr   embeddings_fieldr   tagscountpriceri   rx   rn   ro   r4   r   r   r   r   rg   rh   rp   rq   rl   Trz   r   r   r   r   rj   r   r   r   rm   Frk   rs   ru   rE   r  N)%r
  r  rC   r   r   r   r   r   r   r   r   r   r	   r   r6   r   ri   rn   ro   r4   r   r   r   r   r   r   rx   rp   rq   rl   rz   rj   rr   rm   rs   rt   ru   )r   r  r   r  r   r   	sparse_efr   r   r   float_configr   ri   rx   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X	=xH .9KLI)#RPK-#, 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L).9(CFKL]^beeeeL).9(CFKO\`bbbb &---T>!>d?"?d?"?$&&&4''' %));$<!"&;;;;(9:OPQZ[_cccc(9:OPQYZ[ghlxxxx(9:OPQYZ[opqwx  }D  D  D  D(9:OPQYZ[opqwx  }J  J  J  J(9:OPQYZ[opqyz  |B  C  GU  U  U  U#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!,/?I'RVZZZZ!,/?I,W[ffff!,/?IJ^_`fgkrrrr!,/?IJ^_`fgk{{{{!,/?IJ^_`hijvw  |N  N  N  N!,/?I&QRcdhkkkk!,/?I&QRabfhhhh!,/?IMMgV^^^>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((33@@GGLL\\`cccc((33@@GGLLZZ^````((33@@GGZZfff((33@@GGZZ__aeuuuu &):)::::$$%78FFRRR$$%78FFZZfff$$%78FFZZbbfjjjj$$%78FFZZaallp||||$$%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$$V,33IIQQUZZZZ$$V,::BBB$$V,77??? l/////$$W-77CCC$$W-77JJVVV$$W-77JJRRV[[[[$$W-44<<<$$W-88@@@ l/////$$W-99EEE$$W-99NNZZZ$$W-99NNVVZ____$$W-44<<<$$W-;;CCC  <#4#4444$$\2==III$$\2==JJVVV$$\2==JJQQWW[____$$\2==JJQQ\\`kkkk$$\2==JJQQVVbbb$$\2==JJQQVVffjmmmm  ((//;;;((//EEQQQ((//EEMMQUUUU((22>>>((22EEQQQ((22EEMMQUUUU((66BBB((66JJVVV((66JJRRV[[[[  #<<-.>? 99-m< :  #<<-.>? 99-m< :s   pp3 3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   NTrx   rp   rj   rq   rl   rm   )r   r   r   r   r   rx   rp   rq   rl   rj   rm   rn   rr   rt   rv   r   r   )	r   r|   r   r   r0  r   multi_field_jsonr   des_multi_fields	            r   %test_multiple_index_types_on_same_key3TestNewSchema.test_multiple_index_types_on_same_key  s    08XsXuv=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++++01FG	RVZZZZ)*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   NTFrx   rj   rm   rl   )
r   r   r   rx   rj   rm   rl   r   r   r   )	r   r|   r   temp_field_initialr6  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        [        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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N== f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g= f)z6Test that invalid operations raise appropriate errors.r   r   rh   r   Nr   rg   z&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   r7   r   r   custom_fieldr   )r   r   r   r   r   r   r   r   r   s       r   &test_error_handling_invalid_operations4TestNewSchema.test_error_handling_invalid_operationsJ  s    *+]]:-^_},G ` $%
]]:-]^z{C _ ]]:-UV! W ]]:-\]G, ^ ]]:-]^G, _ ]]:-_`}5 a ]]:-\]z2 ^ ]]:-^_}.I ` ]]:-[\z~F ]\C `_
 _^ WV ^] _^ a` ^] `_ ]\sk   G*G0HH?H&0H8!I	II+
G-0
G?
H
H#&
H58
I	
I
I(+
I9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.rx   rf   rg   rh   NTF)r   r   ry   r   ri   rj   rm   rl   rk   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   )r   r   r   r   ri   s        r   test_empty_schema_serialization-TestNewSchema.test_empty_schema_serializationt  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                 4	   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  rR   roundtrip_modelr   r  (   r  rZ   r	  r7   textr   
embeddingsr   r!  NTF) r
  r  rC   r   r   r   r   r   r   r   r   r   r   ri   rn   ro   r4   r   r   r   r   r   r   rx   rp   rq   rl   rz   rj   rm   ry   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  s    	Q6K!"23<	@xH-9JKI)#RPK-#, M
 !!!7!!)@F  hC  hE  *F  LX!  Y!!)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11>>EEJJZZ^aaaa11>>EEJJXX\^^^^11>>EEXXddd11>>EEXX]]_cssss $v{{222&,kk,&?#*88DDD*88LLXXX*88LLTTX\\\\*88LLSS^^bhhhh ,,, &F 3$++777$++AAMMM$++AAIIURRR/ 64 w||$GLL(9NS=NNNNNNw||((*+s7<<3D3D3F/Gc3w||O`O`ObKcccccc  #<<-.>? =#<<-.>? =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   rf   r%   4   field_0NTfield_1Ffield_2rx   source_0field_49field_48)r   ranger   r   r   r   r   r   ry   rx   rp   rq   rl   rj   rm   rr   rs   r   r   r4   rz   )r   r|   ikey_namerX  rY  rZ  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##+BPWXYWZm  qL  qN  ,O  U]#  ^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((<<CCNNR\\\\\.....#((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.rG  r   field1r   field2field3field4NTF)r   r   r   r   r   r   r   rx   rp   rq   rl   rj   rm   rr   rs   )r   r|   r   rg  rh  ri  rj  s          r   test_chained_operations%TestNewSchema.test_chained_operations'  s"    <'>&  fA  fC  (D  JR<  S<'@'B<Q<'@'B<Q<'='?X<N	 	  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.NTr7   Fr#  r   	is_activeri   r   ru   rl   r   rw   rx   )r   ri   rt   ru   rl   rv   rw   r	   r   r
   r   rx   r   r   )r   r|   r%  bool_configr   r   s         r   $test_float_and_bool_inverted_indexes2TestNewSchema.test_float_and_bool_inverted_indexesN  sw    **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 ,,.	$W-.DEiPTYYYY$V,-BCINRWWWW )'23IJ9UY]]]] -f56KLYW[```` 33I>$$00EEMMQVVVV$$,,@@HHEQQQ  )55JJRRVZZZZ  -55IIQQUZZZZr!   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  rR   space_inference_testr   r   r7   ri   rn   ro   r4   r   rZ   rx   rh   Nr
  r  rC   r   r   r   r   r   ri   rn   ro   r4   r   rx   	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((33@@GGMMQYYYY$$\2==III$$\2==JJVVV$$\2==JJQQWW[cccc  #<<-.>? =#<<-.>? =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  rR   override_testr   r^   r   r   r7   ri   rn   ro   r4   r   rx   rh   Nru  rv  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"8,W5===(0>|L^\#H-g6$>>> "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$$\2==JJQQWW[____  #<<-.>? =#<<-.>? =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).Nr_   r{  r7   ri   rn   ro   r4   r   r   r   r   rx   rh   )r   r   r   r   r   ri   rn   ro   r4   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  sx    *#
 	=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$$//<<CCVV^^^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  rR   roundtrip_space_testr   rt  r7   ri   rn   ro   r4   r   rZ   N)r
  r  rC   r   r   r   r   r   ri   rn   ro   r4   r   )r   r  r   r  r   rJ  rK  rL  rM  rN  r|   s              r   (test_space_inference_multiple_roundtrips6TestNewSchema.test_space_inference_multiple_roundtrips  s    	Q6K!"23	@xH-9OPI-KM!!!7 ..0E$\2>B8LWUYaaaa2259G --/E$\2>B8LWUYaaaa2259G --/E$\2>B8LWUYaaaa #,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   rg  r   NTrh  )r   r   r   r   rx   rp   rq   rl   r4   rz   r   rj   rm   )r   r|   r   rg  r   rh  s         r   "test_keys_have_independent_configs0TestNewSchema.test_keys_have_independent_configs  sn    0;K`{`}~=h? 6;;&&&X&##///##77CCC##77??4GGG##77>>IIM]]]] 23=h? 6;;&&&X&}}(((}}22>>>}}22::dBBB ##77>>IIM]]]]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  rR   initial_modelr   r      r  rZ   r	  r7   rh   Nupdated_modelr   r   r^   )r
  r  rC   r   r   r   r   rx   rn   ro   r4   r   r   r   ri   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_overrides8  s    	Q6K!"231	@XF (?CC#CrJE.#&N
 ~6 &,[[%>%I%I%V%V%]%]%b%b")555)99S@@@)772=== (?CC#CrJE.#&N
 ~6 ??--999??--::FFF??--::AAGG4OOO??--::AAFFRRR??--::AAFFVVZ]]]]??--::AAFFTTXZZZZ ;;|,77CCC;;|,77DDPPP%+[[%>%I%I%V%V%]%]%b%b")555)99S@@@)772===;;|,77DDKKQQUYYYY  #<<-.>? =#<<-.>? =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   rx   rp   rq   r4   rz   rj   rm   rl   r   r   r   )r   r|   r  r  r   r   s         r   +test_key_specific_overrides_are_independent9TestNewSchema.test_key_specific_overrides_are_independentq  s    	#:j  fA  fC  $D  JQ  	R#<#>GL#<#>GL {{7#11EELLWW[eeee{{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>   )77KKRR]]akkkk  )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.NTr7   Fimportant_fieldr   searchable_fieldrx   rg   rh   other_field)
r   ri   rj   rm   rl   r   r   r   rx   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   NTrx   rp   rj   r   r   r   rn   )r   r   r   r   rx   rp   rq   rl   rj   rr   rt   rv   rn   r   r   )r   r|   fieldr   
field_jsonr   	des_fields          r   )test_partial_override_fills_from_defaults7TestNewSchema.test_partial_override_fills_from_defaults  s    	#:k  gB  gD  $E  K^  	_ /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!   r.   r#   N)*r:   r;   r<   r=   r>   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r,  r3  r:  r?  rB  rR  rd  rk  rp  rw  r|  r  r  r  r  r  r  r  rA   r.   r!   r   rc   rc   H   s    .8bt RD&cP LDPQd$IL/Ab EDH,
.B,V0 QD'@RfqP5ine@Nr@h_=B.L`&LP(GT*1XB@HAJF%DN.[`*@X*@X_<$@L^<7@r'WR*6X-+r!   rc   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   r7   N)r   r   r   r   r   r   r|   r   s     r   -test_sparse_vector_cannot_be_created_globallyr    s@    XF+-M 
z)`	a=1 
b	a	as   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   rx   rp   rq   rl   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 
z)b	c=h? 
d	c	cs   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   rx   rj   rm   rl   r   r   rr   rs   r|   r   r   rM  rO  s        r   "test_create_index_accepts_key_typer    sG   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<<%,,BBJJ<<%,,BBJJK 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   rx   rj   rm   rl   r   rr   rs   r  s        r   "test_delete_index_accepts_key_typer  8  sI   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<<%,,BBJJ<<%,,BBJJK 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   rg   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  b  s$   XF-/M 
z)Y	Z=cllC 
[ 
z)Z	[=cmmD 
\ 
z)Y	Z=kB 
[ 
z)D	E=mD 
F 
z)D	E=c)nE 
F	E! 
[	Z 
\	[ 
[	Z 
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 delete index on special key '#embedding'rh   r  r  r  )	r   r   r   r   r   r   r   r  r  r  s     r   &test_delete_index_rejects_special_keysr  |  s$   XF-/M 
z)Y	Z=cllC 
[ 
z)Z	[=cmmD 
\ 
z)Z	[=lC 
\ 
z)D	E=mD 
F 
z)D	E=c)nE 
F	E! 
[	Z 
\	[ 
\	[ 
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rz   rg   testNserialize_testrz   )r   rz   r   r?   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  rg   r  Nr  rz   )r   rz   r   r?   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   r.   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.rg   r  z source_key cannot begin with '#'r   rh   Nz	#metadataz#scorer  r  )	r   rz   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   r4   Nrz   r   )	r   r   r   r   r   r   r?   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r  )%chromadb.api.typesr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   &chromadb.execution.expression.operatorr   typingr   r   r   r   r?   r   rC   rc   r  r  r  r  r  r  r  r  r  r  r  r.   r!   r   <module>r     s        7 " " N"9$s)"D N*&-d3i8 &:k+ k+\=2@ %KP'KTF4F46B6B=":,z5r!   