§
    ˜Štj1‚  ã                   ó   — U d dl Z d dlmZmZmZmZmZmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZmZmZ d dlmZ d dlmZ d d	lmZmZmZ d
ddddddœZeeef         ed<   g d¢ZdddddddœZeeef         ed<   g d¢Zddddddddddœ	Z eeef         ed<   d ed!eeeef         eeef         f         fd"„Z!d#ee         d$ee         d%eeeef                  d!eeef         fd&„Z"d#ee         d$ee         d%eeeef                  d!eeef         fd'„Z#d(e$d#ee         d$ee         d%eeeef                  d!eeef         f
d)„Z%d*eeef         d+eeef         d(e$d!dfd,„Z&d-eeef         d+eeef         d(e$d!dfd.„Z'd!eeeeef         f         fd/„Z(d ed!eeeeef         f         fd0„Z)d1ed2eeeeef         f         d!dfd3„Z*e e	 ej+        ¦   «          ej,        ¦   «         ¬4¦  «        d5ed6ed7ej-        d!dfd8„¦   «         ¦   «         Z.e e	 ej+        ¦   «          ej/        ¦   «         ¬9¦  «        d5ed6ed ee         d!dfd:„¦   «         ¦   «         Z0dS );é    N)ÚAnyÚDictÚOptionalÚSetÚTupleÚcast)Úgiven)Ú	ClientAPI)ÚCreateCollectionConfiguration)ÚCollectionMetadataÚEMBEDDING_KEYÚSchema)Ú
strategies)Úcheck_metadata)Úis_spann_disabled_modeÚmulti_region_testÚresetÚspaceÚef_constructionÚ	ef_searchÚmax_neighborsÚsync_thresholdÚresize_factor)ú
hnsw:spacezhnsw:construction_efzhnsw:search_efzhnsw:Mzhnsw:sync_thresholdzhnsw:resize_factorÚHNSW_METADATA_TO_CONFIG)r   r   r   r   r   r   Úl2éd   é   iè  g333333ó?ÚHNSW_DEFAULTS)	r   Úsearch_nprobeÚwrite_nprober   r   r   Úreassign_neighbor_countÚsplit_thresholdÚmerge_thresholdé@   é    éÈ   é2   é   ÚSPANN_DEFAULTSÚschemaÚreturnc                 óè   — | j         j        }|€J ‚|j        }|€J ‚| j        t                   j        }|€J ‚|j        }|€J ‚t          j        |j        ¦  «        t          j        |j        ¦  «        fS )N)ÚdefaultsÚ
float_listÚvector_indexÚkeysr   r   Úvector_index_to_dictÚconfig)r+   Údefaults_floatÚdefaults_viÚembedding_floatÚembedding_vis        ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/chromadb/test/property/test_schema.pyÚ#_extract_vector_configs_from_schemar9   J   s‹   € ð ”_Ô/€NØÐ%Ð%Ð%Ø Ô-€KØÐ"Ð"Ð"à”k¥-Ô0Ô;€OØÐ&Ð&Ð&Ø"Ô/€LØÐ#Ð#Ð#õ 	Ô'¨Ô(:Ñ;Ô;ÝÔ'¨Ô(;Ñ<Ô<ðð ó    ÚmetadataÚconfigurationÚschema_vector_index_configc                 óž  — t                                ¦   «         }d}d}|�rT|                     d¦  «        }|rrt          t          t
          t          f         |¦  «        }|                     t          j	        |¦  «        ¦  «         |                     d¦  «        �|d         |d<   d}d}|                     d¦  «        }|r´t          t          t
          t          f         |¦  «        }	t          j	        |	¦  «        }
|
 
                    ¦   «         D ]\  }}|�|t          |         k    rd}Œ|	                     d¦  «        �5|s3|	                     d¦  «        t          d         k    rd}|	d         |d<   d}|rf|                     d¦  «        �|d         |d<   d}|                     d¦  «        r/t          j	        |d         ¦  «        }|                     |¦  «         | rH|                      d¦  «        �3|                      d¦  «        t           d         k    r|r| d         |d<   d}|rI|                     d¦  «        	 �3|                     d¦  «        t           d         k    r|s|d         |d<   d}|sY|rW|                     d¦  «        �B|d         }t          |d	¦  «        r*t          t          |¦  «                             ¦   «         |d<   |S )
NFTÚspannr   Úhnswr   Ú embedding_function_default_spaceÚembedding_functionÚdefault_space)r*   ÚcopyÚgetr   r   Ústrr   Úupdater   Únon_none_itemsÚitemsr   ÚhasattrrC   )r;   r<   r=   ÚexpectedÚ	space_setÚshould_try_metadataÚ	spann_cfgÚspann_cfg_dictÚhnsw_cfgÚhnsw_cfg_dictÚhnsw_non_noneÚkeyÚvalueÚspann_schemaÚefs                  r8   Ú_compute_expected_config_spannrW   ]   s  € õ ×"Ò"Ñ$Ô$€HØ€Ið Ðàñ !Ø!×%Ò% gÑ.Ô.ˆ	Øð 	,Ý!¥$¥s­C x¤.°)Ñ<Ô<ˆNà�OŠO�JÔ5°nÑEÔEÑFÔFÐFà×!Ò! 'Ñ*Ô*Ð6Ø$2°7Ô$;�˜Ñ!Ø �	Ø&+Ð#Ø ×$Ò$ VÑ,Ô,ˆØð 	!Ý ¥¥c­3 h¤°Ñ:Ô:ˆMÝ&Ô5°mÑDÔDˆMØ+×1Ò1Ñ3Ô3ð 0ð 0‘
��UØÐ$¨µ-ÀÔ2DÒ)DÐ)Dð +0Ð'øà× Ò  Ñ)Ô)Ð5¸iÐ5à ×$Ò$ WÑ-Ô-µ¸wÔ1GÒGÐGØ*/Ð'Ø$1°'Ô$:�˜Ñ!Ø �	à!ð *Ø%×)Ò)¨'Ñ2Ô2Ð>Ø :¸7Ô CˆH�WÑØˆIØ%×)Ò)¨'Ñ2Ô2ð 	*Ý%Ô4Ø*¨7Ô3ñô ˆLð �OŠO˜LÑ)Ô)Ð)ð 	ðà�LŠL˜Ñ&Ô&Ð2Ø�LŠL˜Ñ&Ô&­.¸Ô*AÒAÐAØð Bð % \Ô2ˆ�ÑØˆ	ð 	#ðà&×*Ò*Ð+MÑNÔNØðà&×*Ò*Ð+MÑNÔNÝ˜'Ô"ò#ð #àð#ð 7Ø.ô
ˆ�Ñð ˆ	ð ð>àð>ð ×ÒÐ2Ñ3Ô3Ð?àÐ/Ô0ˆÝ�2�Ñ'Ô'ð 	>Ý $¥S¨"¡¤× ;Ò ;Ñ =Ô =ˆH�WÑà€Or:   c                 ó,  — t                                ¦   «         }d}t          ¦   «         }d}|�r`|                     d¦  «        }|�åt	          t
          t          t          f         |¦  «        }t          j	        |¦  «        }	| 
                    |	¦  «         |	                     ¦   «         D ]\  }
}|�|t           |
         k    rd}Œ| 
                    |	                     ¦   «         ¦  «         |	                     d¦  «        �*|s(|	                     d¦  «        t           d         k    rd}d}|                     d¦  «        }|�Mt	          t
          t          t          f         |¦  «        }|                     d¦  «        �|s|d         |d<   d}d}|r„| r‚t                               ¦   «         D ]h\  }
}|                      |
¦  «        €Œ|dk    r#| |
         ||<   d}|                     |¦  «         ŒD||vr | |
         ||<   |                     |¦  «         Œi|r{|                     d¦  «        �|d         |d<   d}|                     d¦  «        r.| 
                    t          j	        |d         ¦  «        ¦  «         n|                     d¦  «        r	 |r%|                     d¦  «        	 �|s|d         |d<   d}|sY|rW|                     d¦  «        �B|d         }t          |d¦  «        r*t	          t          |¦  «                             ¦   «         |d<   |S )	NFTr@   r   r?   rA   rB   rC   )r   rD   ÚsetrE   r   r   rF   r   r   rH   rG   rI   r1   r   ÚaddrJ   rC   )r;   r<   r=   rK   rL   Úconfigured_hnsw_keysrM   Úhnsw_cfg_rawÚ	hnsw_dictrR   rS   rT   Úspann_cfg_rawÚ
spann_dictÚcfg_keyrV   s                   r8   Ú_compute_expected_config_hnswra   ³   si  € õ
 ×!Ò!Ñ#Ô#€HØ€IÝ%(¡U¤UÐØÐàñ ,Ø$×(Ò(¨Ñ0Ô0ˆØÐ#Ý(,­Tµ#µs°(¬^¸\Ñ(JÔ(JˆIÝ&Ô5°iÑ@Ô@ˆMØ�OŠO˜MÑ*Ô*Ð*Ø+×1Ò1Ñ3Ô3ð 0ð 0‘
��UàÐ$¨µ-ÀÔ2DÒ)DÐ)DØ*/Ð'øØ ×'Ò'¨×(:Ò(:Ñ(<Ô(<Ñ=Ô=Ð=Ø× Ò  Ñ)Ô)Ð5¸iÐ5Ø ×$Ò$ WÑ-Ô-µ¸wÔ1GÒGÐGØ*/Ð'Ø �	Ø%×)Ò)¨'Ñ2Ô2ˆØÐ$Ý)-­dµ3½°8¬n¸mÑ)LÔ)LˆJØ�~Š~˜gÑ&Ô&Ð2¸9Ð2Ø$.¨wÔ$7�˜Ñ!Ø �	Ø&+Ð#àð 2˜xð 2Ý3×9Ò9Ñ;Ô;ð 
	2ð 
	2‰LˆC�Ø�|Š|˜CÑ Ô Ð(ØØ˜'Ò!Ð!Ø$,¨S¤M�˜Ñ!Ø �	Ø$×(Ò(¨Ñ1Ô1Ð1ØØÐ2Ð2Ð2Ø$,¨S¤M�˜Ñ!Ø$×(Ò(¨Ñ1Ô1Ð1øà!ð 
Ø%×)Ò)¨'Ñ2Ô2Ð>Ø :¸7Ô CˆH�WÑØˆIØ%×)Ò)¨&Ñ1Ô1ð 	Ø�OŠOÝÔ)Ð*DÀVÔ*LÑMÔMñô ð ð ð (×+Ò+¨GÑ4Ô4ð 	àð 	#ð	à&×*Ò*Ð+MÑNÔNØðàðð 7Ø.ô
ˆ�Ñð ˆ	ð ð>àð>ð ×ÒÐ2Ñ3Ô3Ð?àÐ/Ô0ˆÝ�2�Ñ'Ô'ð 	>Ý $¥S¨"¡¤× ;Ò ;Ñ =Ô =ˆH�WÑà€Or:   Úspann_activec                 óJ   — | rt          |||¦  «        S t          |||¦  «        S )aR  
    some assumptions/assertions:
    1. we are not testing failure paths. any config built is/should be valid. invalid cases can be tested separately or in e2e tests
    ex: if configuration is set, schema is not set. if schema is set, configuration is not set. both hnsw and spann cannot be set at the same time in config or schema
    )rW   ra   ©rb   r;   r<   r=   s       r8   Ú_compute_expected_configre     sB   € ð ð 
Ý-Ø�mÐ%?ñ
ô 
ð 	
õ -Ø�mÐ%?ñ
ô 
ð 	
r:   ÚactualrK   c                 óD  — |rt           nt          }|D ]Œ}|                      |¦  «        }||         }t          |t          ¦  «        r@t          |t          ¦  «        r+t          j        ||dd¬¦  «        sJ |› d|› d|› �¦   «         ‚Œt||k    sJ |› d|› d|› �¦   «         ‚Œ�d S )Nç•Ö&è.>©Úrel_tolÚabs_tolú mismatch: expected ú, got )ÚSPANN_FIELDSÚHNSW_FIELDSrE   Ú
isinstanceÚfloatÚmathÚisclose)rf   rK   rb   ÚfieldsÚfieldÚactual_valueÚexpected_values          r8   Ú_assert_config_valuesrx     sþ   € ð
 *Ð:�\ˆ\­{€FØð Rð RˆØ—z’z %Ñ(Ô(ˆØ! %œˆå�l¥EÑ*Ô*ð 	R­z¸.Í%Ñ/PÔ/Pð 	RÝ”<Ø˜n°dÀDðñ ô ð Rð RàÐQÐQ¨^ÐQÐQÀ<ÐQÐQñRô Rð ð Rð
  Ò.Ð.Ð.ØÐQÐQ¨^ÐQÐQÀ<ÐQÐQñ /Ô.Ð.Ð.ðRð Rr:   Úvector_infoc                 ó’  — | d         |d         k    sJ ‚|rÙt          t          t          t          t          f                  | d         ¦  «        }|€J ‚t
          D ]“}|dk    rŒ	|                     |¦  «        }||         }t          |t          ¦  «        r@t          |t          ¦  «        r+t          j
        ||dd¬¦  «        sJ |› d|› d|› �¦   «         ‚Œ{||k    sJ |› d|› d|› �¦   «         ‚Œ”d S t          t          t          t          t          f                  | d         ¦  «        }|€J ‚t          D ]“}|dk    rŒ	|                     |¦  «        }||         }t          |t          ¦  «        r@t          |t          ¦  «        r+t          j
        ||dd¬¦  «        sJ |› d|› d|› �¦   «         ‚Œ{||k    sJ |› d|› d|› �¦   «         ‚Œ”d S )Nr   r?   rh   ri   rl   rm   r@   )r   r   r   rF   r   rn   rE   rp   rq   rr   rs   ro   )ry   rK   rb   rN   ru   rv   rw   rP   s           r8   Ú_assert_schema_valuesr{   -  sx  € ð
 �wÔ 8¨GÔ#4Ò4Ð4Ð4Ð4Øð !VÝ�¥$¥s­C x¤.Ô1°;¸wÔ3GÑHÔHˆ	ØÐ$Ð$Ð$Ý!ð 	Vð 	VˆEØ˜ÒÐØØ$Ÿ=š=¨Ñ/Ô/ˆLØ% eœ_ˆNå˜,­Ñ.Ô.ð Vµ:¸nÍeÑ3TÔ3Tð VÝ”|Ø  .¸$Èðñ ô ð Vð VàÐUÐU°ÐUÐUÀ|ÐUÐUñVô Vð ð Vð
 ! NÒ2Ð2Ð2ØÐUÐU°ÐUÐUÀ|ÐUÐUñ 3Ô2Ð2Ð2ð	Vð 	Võ �¥¥c­3 h¤Ô0°+¸fÔ2EÑFÔFˆØÐ#Ð#Ð#Ý ð 	Vð 	VˆEØ˜ÒÐØØ#Ÿ<š<¨Ñ.Ô.ˆLØ% eœ_ˆNå˜,­Ñ.Ô.ð Vµ:¸nÍeÑ3TÔ3Tð VÝ”|Ø  .¸$Èðñ ô ð Vð VàÐUÐU°ÐUÐUÀ|ÐUÐUñVô Vð ð Vð
 ! NÒ2Ð2Ð2ØÐUÐU°ÐUÐUÀ|ÐUÐUñ 3Ô2Ð2Ð2ð	Vð 	Vr:   c                  óP   — ddiddiddiddiddiddiddidœddiddidœdddiidœS )z�
    Get expected index states for default schema (when schema=None).
    Based on Schema._initialize_defaults() and _initialize_keys().
    ÚenabledTF)Ústring_invertedÚint_invertedÚfloat_invertedÚbool_invertedÚsparse_vectorÚ	fts_indexr0   )r~   rƒ   r0   )r.   ú	#documentz
#embedding© r…   r:   r8   Ú_get_default_schema_indexesr†   W  s‚   € ð !*¨4Ð0Ø&¨Ð-Ø(¨$Ð/Ø'¨Ð.Ø'¨Ð/Ø# UÐ+Ø&¨Ð.ð
ð 
ð !*¨5Ð1Ø# TÐ*ð
ð 
ð
 ˜Y¨Ð-ð
ðð ð r:   c                 ó  — i }| j         j        r;| j         j        j        r*d|vri |d<   d| j         j        j        j        i|d         d<   | j         j        r;| j         j        j        r*d|vri |d<   d| j         j        j        j        i|d         d<   | j         j        r;| j         j        j        r*d|vri |d<   d| j         j        j        j        i|d         d<   | j         j        r;| j         j        j	        r*d|vri |d<   d| j         j        j	        j        i|d         d<   | j         j
        rP| j         j
        j        r?d|vri |d<   | j         j
        j        j        | j         j
        j        j        dœ|d         d<   | j                             ¦   «         D ]÷\  }}|t          d	fv rŒi }|j        r"|j        j        rd|j        j        j        i|d<   |j        r"|j        j        rd|j        j        j        i|d<   |j        r"|j        j        rd|j        j        j        i|d<   |j        r"|j        j	        rd|j        j	        j        i|d<   |j
        r2|j
        j        r&|j
        j        j        |j
        j        j        dœ|d<   |r|||<   Œø|S )
z
    Extract expected index states from input schema.
    Returns a dict mapping key -> index_type -> enabled/config info.
    r.   r}   r~   r   r€   r�   )r}   r3   r‚   r„   )r.   ÚstringÚstring_inverted_indexr}   Ú	int_valueÚint_inverted_indexÚfloat_valueÚfloat_inverted_indexÚbooleanÚbool_inverted_indexr‚   Úsparse_vector_indexr3   r1   rI   r   )r+   rK   rS   Úvalue_typesÚkey_expecteds        r8   Ú _extract_expected_schema_indexesr“   p  s+  € ð +-€Hð „Ôð 
 &¤/Ô"8Ô"Nð 
Ø˜XÐ%Ð%Ø#%ˆH�ZÑ à�v”Ô-ÔCÔKð3
ˆ�ÔÐ.Ñ/ð „Ô ð 
 V¤_Ô%>Ô%Qð 
Ø˜XÐ%Ð%Ø#%ˆH�ZÑ à�v”Ô0ÔCÔKð0
ˆ�Ô˜^Ñ,ð „Ô"ð 
 v¤Ô'BÔ'Wð 
Ø˜XÐ%Ð%Ø#%ˆH�ZÑ à�v”Ô2ÔGÔOð2
ˆ�ÔÐ-Ñ.ð „Ôð 
 6¤?Ô#:Ô#Nð 
Ø˜XÐ%Ð%Ø#%ˆH�ZÑ à�v”Ô.ÔBÔJð1
ˆ�Ô˜_Ñ-ð
 	ŒÔ%ð	
àŒOÔ)Ô=ð	
ð ˜XÐ%Ð%Ø#%ˆH�ZÑ à”Ô4ÔHÔPØ”oÔ3ÔGÔNð1
ð 1
ˆ�Ô˜_Ñ-ð #œK×-Ò-Ñ/Ô/ð ")ð ")Ñˆˆ[Ø•= +Ð.Ð.Ð.àà')ˆàÔð 	 +Ô"4Ô"Jð 	à˜;Ô-ÔCÔKð/ˆLÐ*Ñ+ð Ô ð 	 [Ô%:Ô%Mð 	à˜;Ô0ÔCÔKð,ˆL˜Ñ(ð Ô"ð 	 {Ô'>Ô'Sð 	à˜;Ô2ÔGÔOð.ˆLÐ)Ñ*ð Ôð 	 ;Ô#6Ô#Jð 	à˜;Ô.ÔBÔJð-ˆL˜Ñ)ð Ô$ð 	¨Ô)BÔ)Vð 	à&Ô4ÔHÔPØ%Ô3ÔGÔNð-ð -ˆL˜Ñ)ð
 ð 	)Ø(ˆH�S‰Møà€Or:   Úactual_schemaÚexpected_indexesc                 ó®  — d|v �r|d         }| j         }d|v rU|d         d         }|j        }|r2|j        r+|j        j        |k    sJ d|› d|j        j        › �¦   «         ‚n|s
J d¦   «         ‚d|v rU|d         d         }|j        }|r2|j        r+|j        j        |k    sJ d|› d|j        j        › �¦   «         ‚n|s
J d	¦   «         ‚d
|v rU|d
         d         }|j        }|r2|j        r+|j        j        |k    sJ d|› d|j        j        › �¦   «         ‚n|s
J d¦   «         ‚d|v rU|d         d         }|j        }|r2|j	        r+|j	        j        |k    sJ d|› d|j	        j        › �¦   «         ‚n|s
J d¦   «         ‚d|v râ|d         d         }|j
        }	|	€
J d¦   «         ‚|	j        €
J d¦   «         ‚|	j        j        |k    sJ d|› d|	j        j        › �¦   «         ‚d|d         v r||d         d         }
|	j        j        }|
j        �*|j        |
j        k    sJ d|
j        › d|j        › �¦   «         ‚|
j        �*|j        |
j        k    sJ d|
j        › d|j        › �¦   «         ‚d|v r\|d         d         }|j        }|€
J d¦   «         ‚|j        €
J d¦   «         ‚|j        j        |k    sJ d|› d|j        j        › �¦   «         ‚d|v r\|d         d         }|j        }|€
J d¦   «         ‚|j        €
J d¦   «         ‚|j        j        |k    sJ d|› d|j        j        › �¦   «         ‚|                     ¦   «         D �] \  }}|dk    rŒ|| j        v sJ d |› d!�¦   «         ‚| j        |         }d|v rg|d         d         }|j        }|€J d"|› d#�¦   «         ‚|j        €J d"|› d$�¦   «         ‚|j        j        |k    sJ d"|› d%|› d|j        j        › �¦   «         ‚d|v rg|d         d         }|j        }|€J d"|› d&�¦   «         ‚|j        €J d"|› d'�¦   «         ‚|j        j        |k    sJ d"|› d(|› d|j        j        › �¦   «         ‚d
|v rg|d
         d         }|j        }|€J d"|› d)�¦   «         ‚|j        €J d"|› d*�¦   «         ‚|j        j        |k    sJ d"|› d+|› d|j        j        › �¦   «         ‚d|v rg|d         d         }|j        }|€J d"|› d,�¦   «         ‚|j	        €J d"|› d-�¦   «         ‚|j	        j        |k    sJ d"|› d.|› d|j	        j        › �¦   «         ‚d|v ré|d         d         }|d         d         }
|j
        }	|	€J d"|› d/�¦   «         ‚|	j        €J d"|› d0�¦   «         ‚|	j        j        |k    sJ d"|› d1|› d|	j        j        › �¦   «         ‚|	j        j        }|
j        �-|j        |
j        k    sJ d"|› d2|
j        › d|j        › �¦   «         ‚|
j        �-|j        |
j        k    sJ d"|› d3|
j        › d|j        › �¦   «         ‚d|v rg|d         d         }|j        }|€J d"|› d#�¦   «         ‚|j        €J d"|› d4�¦   «         ‚|j        j        |k    sJ d"|› d5|› d|j        j        › �¦   «         ‚d|v rg|d         d         }|j        }|€J d"|› d6�¦   «         ‚|j        €J d"|› d7�¦   «         ‚|j        j        |k    sJ d"|› d8|› d|j        j        › �¦   «         ‚�Œ¢dS )9z<Assert that the actual schema matches expected index states.r.   r~   r}   z4defaults string_inverted enabled mismatch: expected rm   z*defaults string_inverted should be enabledr   z1defaults int_inverted enabled mismatch: expected z'defaults int_inverted should be enabledr€   z3defaults float_inverted enabled mismatch: expected z)defaults float_inverted should be enabledr�   z2defaults bool_inverted enabled mismatch: expected z(defaults bool_inverted should be enabledr‚   Nz#defaults sparse_vector should existz)defaults sparse_vector_index should existz2defaults sparse_vector enabled mismatch: expected r3   z/defaults sparse_vector bm25 mismatch: expected z5defaults sparse_vector source_key mismatch: expected rƒ   zdefaults string should existzdefaults fts_index should existz.defaults fts_index enabled mismatch: expected r0   z defaults float_list should existz"defaults vector_index should existz1defaults vector_index enabled mismatch: expected zExpected key 'z' not found in schemazKey 'z' string should existz$' string_inverted_index should existz-' string_inverted enabled mismatch: expected z' int_value should existz!' int_inverted_index should existz*' int_inverted enabled mismatch: expected z' float_value should existz#' float_inverted_index should existz,' float_inverted enabled mismatch: expected z' boolean should existz"' bool_inverted_index should existz+' bool_inverted enabled mismatch: expected z' sparse_vector should existz"' sparse_vector_index should existz+' sparse_vector enabled mismatch: expected z(' sparse_vector bm25 mismatch: expected z.' sparse_vector source_key mismatch: expected z' fts_index should existz'' fts_index enabled mismatch: expected z' float_list should existz' vector_index should existz*' vector_index enabled mismatch: expected )r.   rˆ   r‰   r}   rŠ   r‹   rŒ   r�   rŽ   r�   r‚   r�   r3   Úbm25Ú
source_keyrƒ   r/   r0   rI   r1   )r”   r•   Údefaults_expectedÚdefaults_actualÚexpected_enabledÚactual_stringÚ
actual_intÚactual_floatÚactual_boolÚactual_sparseÚexpected_configÚactual_configÚactual_float_listrS   r’   Úactual_value_typess                   r8   Ú_assert_schema_indexesr¥   É  s  € ð Ð%Ð%Ñ%Ø,¨ZÔ8ÐØ'Ô0ˆàÐ 1Ð1Ð1Ø0Ð1BÔCÀIÔNÐØ+Ô2ˆMØð V Ô!Dð Và!Ô7Ô?ÐCSÒSÐSÐSð PÐJZð  Pð  PÐboô  cFô  cNð  Pð  Pñ TÔSÐSÐSð (ÐUÐUÐ)UÑUÔUÐ'àÐ.Ð.Ð.Ø0°Ô@ÀÔKÐØ(Ô2ˆJØð S˜jÔ;ð SàÔ1Ô9Ð=MÒMÐMÐMð GÐGWð  Gð  GÐ_iÔ_|ô  `Eð  Gð  Gñ NÔMÐMÐMð (ÐRÐRÐ)RÑRÔRÐ'àÐ0Ð0Ð0Ø0Ð1AÔBÀ9ÔMÐØ*Ô6ˆLØð U Ô Að Uà Ô5Ô=ÐAQÒQÐQÐQð MÐIYð  Mð  MÐamô  bCô  bKð  Mð  Mñ RÔQÐQÐQð (ÐTÐTÐ)TÑTÔTÐ'àÐ/Ð/Ð/Ø0°ÔAÀ)ÔLÐØ)Ô1ˆKØð T˜{Ô>ð TàÔ3Ô;Ð?OÒOÐOÐOð JÐHXð  Jð  JÐ`kÔ`ô  aHð  Jð  Jñ PÔOÐOÐOð (ÐSÐSÐ)SÑSÔSÐ'àÐ/Ð/Ð/Ø0°ÔAÀ)ÔLÐØ+Ô9ˆMØ Ð,Ð,Ð.SÑ,Ô,Ð,àÔ1Ð=Ð=Ø:ñ >Ô=Ð=ð Ô1Ô9Ð=MÒMÐMÐMð HÐDTð  Hð  HÐ\iÔ\}ô  ]Fð  Hð  Hñ NÔMÐMð Ð,¨_Ô=Ð=Ð=Ø"3°OÔ"DÀXÔ"N�Ø -Ô AÔ H�Ø"Ô'Ð3à%Ô*¨oÔ.BÒBÐBÐBØyÈÔI]ÐyÐyÐerÔewÐyÐyñ CÔBÐBà"Ô-Ð9à%Ô0°OÔ4NÒNÐNÐNð LÈÔOið  Lð  LÐq~ô  rJð  Lð  Lñ OÔNÐNð Ð+Ð+Ð+Ø0°Ô=¸iÔHÐØ+Ô2ˆMØ Ð,Ð,Ð.LÑ,Ô,Ð,àÔ'Ð3Ð3Ø0ñ 4Ô3Ð3ð Ô'Ô/Ð3CÒCÐCÐCØyÐ@PÐyÐyÐXeÔXoÔXwÐyÐyñ DÔCÐCð Ð.Ð.Ð.Ø0°Ô@ÀÔKÐØ /Ô :ÐØ$Ð0Ð0Ð2TÑ0Ô0Ð0à!Ô.Ð:Ð:Ø3ñ ;Ô:Ð:ð "Ô.Ô6Ð:JÒJÐJÐJð DÐCSð  Dð  DÐ[lÔ[yô  \Bð  Dð  Dñ KÔJÐJð .×3Ò3Ñ5Ô5ð ]Gñ ]GÑˆˆ\Ø�*ÒÐØà�mÔ(Ð(Ð(Ð(Ð*U¸3Ð*UÐ*UÐ*UÑ(Ô(Ð(Ø*Ô/°Ô4Ðà Ð,Ð,Ø+Ð,=Ô>¸yÔIÐØ.Ô5ˆMØ Ð,Ð,Ð.P°cÐ.PÐ.PÐ.PÑ,Ô,Ð,àÔ3Ð?Ð?Ø@�sÐ@Ð@Ð@ñ @Ô?Ð?ð Ô3Ô;Ð?OÒOÐOÐOð O�sð  Oð  OÐIYð  Oð  OÐanô  bEô  bMð  Oð  Oñ PÔOÐOð ˜\Ð)Ð)Ø+¨NÔ;¸IÔFÐØ+Ô5ˆJØÐ)Ð)Ð+P°3Ð+PÐ+PÐ+PÑ)Ô)Ð)àÔ-Ð9Ð9Ø=�sÐ=Ð=Ð=ñ :Ô9Ð9ð Ô-Ô5Ð9IÒIÐIÐIð F�sð  Fð  FÐFVð  Fð  FÐ^hÔ^{ô  _Dð  Fð  Fñ JÔIÐIð ˜|Ð+Ð+Ø+Ð,<Ô=¸iÔHÐØ-Ô9ˆLØÐ+Ð+Ð-T°SÐ-TÐ-TÐ-TÑ+Ô+Ð+àÔ1Ð=Ð=Ø?�sÐ?Ð?Ð?ñ >Ô=Ð=ð Ô1Ô9Ð=MÒMÐMÐMð L�sð  Lð  LÐHXð  Lð  LÐ`lô  aBô  aJð  Lð  Lñ NÔMÐMð ˜lÐ*Ð*Ø+¨OÔ<¸YÔGÐØ,Ô4ˆKØÐ*Ð*Ð,O°CÐ,OÐ,OÐ,OÑ*Ô*Ð*àÔ/Ð;Ð;Ø>�sÐ>Ð>Ð>ñ <Ô;Ð;ð Ô/Ô7Ð;KÒKÐKÐKð I�sð  Ið  IÐGWð  Ið  IÐ_jÔ_~ô  `Gð  Ið  Iñ LÔKÐKð ˜lÐ*Ð*Ø+¨OÔ<¸YÔGÐØ*¨?Ô;¸HÔEˆOØ.Ô<ˆMØ Ð,Ð,Ð.W°cÐ.WÐ.WÐ.WÑ,Ô,Ð,àÔ1Ð=Ð=Ø>�sÐ>Ð>Ð>ñ >Ô=Ð=ð Ô1Ô9Ð=MÒMÐMÐMð K�sð  Kð  KÐGWð  Kð  KÐ_lô  `Aô  `Ið  Kð  Kñ NÔMÐMð *Ô=ÔDˆMØÔ#Ð/à!Ô&¨/Ô*>Ò>Ð>Ð>Øx˜3ÐxÐxÈÔH\ÐxÐxÐdqÔdvÐxÐxñ ?Ô>Ð>àÔ)Ð5à!Ô,°Ô0JÒJÐJÐJð K˜3ð  Kð  KÈoÔNhð  Kð  KÐp}ô  qIð  Kð  Kñ KÔJÐJð ˜,Ð&Ð&Ø+¨KÔ8¸ÔCÐØ.Ô5ˆMØ Ð,Ð,Ð.P°cÐ.PÐ.PÐ.PÑ,Ô,Ð,àÔ'Ð3Ð3Ø4�sÐ4Ð4Ð4ñ 4Ô3Ð3ð Ô'Ô/Ð3CÒCÐCÐCØ|�sÐ|Ð|ÐCSÐ|Ð|Ð[hÔ[rÔ[zÐ|Ð|ñ DÔCÐCð ˜\Ð)Ð)Ø+¨NÔ;¸IÔFÐØ 2Ô =ÐØ$Ð0Ð0Ð2X¸#Ð2XÐ2XÐ2XÑ0Ô0Ð0à!Ô.Ð:Ð:Ø7�sÐ7Ð7Ð7ñ ;Ô:Ð:ð "Ô.Ô6Ð:JÒJÐJÐJð G�sð  Gð  GÐFVð  Gð  GÐ^oÔ^|ô  _Eð  Gð  Gñ KÔJÐJùðy]Gð ]Gr:   )ÚnameÚoptional_fieldsÚclientr¦   r§   c                 ó¸  — |j         }|j        }|j        }t          | ¦  «         |                      ||||¬¦  «        }|€|j         d i fv sJ ‚nt          ||j         ¦  «         |j        }t           }|rdnd}	|rdnd}
|                     |	¦  «        }|                     |
¦  «        }|€J |	› d�¦   «         ‚|d i fv sJ |
› d�¦   «         ‚t          ||||j	        ¬¦  «        }t          t          t          t          t          f         |¦  «        ||¦  «         |rß|                     d¦  «        �Ê|d         }|�À|                     d¦  «        }|�©|                     ¦   «         }|r“|                     d¦  «        d	k    rzt!          |d
¦  «        s
J d¦   «         ‚|                     d
¦  «        |                     ¦   «         k    s5J d|                     ¦   «         › d|                     d
¦  «        › �¦   «         ‚|j        }|€J ‚t%          |¦  «        \  }}|r)|d         �J ‚|d         �J ‚|d         €J ‚|d         €J ‚n(|d         �J ‚|d         �J ‚|d         €J ‚|d         €J ‚t'          |||¦  «         t'          |||¦  «         |�rB|                     d¦  «        ��.|d         }|��%|j        j        j        j        j        }|�nt!          |d
¦  «        r^|                     ¦   «         |                     ¦   «         k    s4J d|                     ¦   «         › d|                     ¦   «         › �¦   «         ‚|j        t4                   j        j        j        j        }|�tt!          |d
¦  «        rf|                     ¦   «         |                     ¦   «         k    s>J d|                     ¦   «         › d|                     ¦   «         › �¦   «         ‚d S d S d S d S d S d S )N)r¦   r;   r<   r+   r?   r@   z configuration missingz configuration should be absentrd   rB   ÚtypeÚknownr¦   z*embedding function should have name methodz+embedding function name mismatch: expected rm   z4defaults embedding function name mismatch: expected z9embedding key embedding function name mismatch: expected )r;   r<   r+   r   Úcreate_collectionr   r   rE   re   Úschema_vector_inforx   r   r   rF   r   Ú
get_configrJ   r¦   r9   r{   r.   r/   r0   r3   rB   r1   r   )r¨   r¦   r§   r;   r<   r+   Ú
collectionÚcoll_configrb   Ú
active_keyÚinactive_keyÚactive_blockÚinactive_blockrK   rV   Úcoll_efÚ	ef_configÚschema_resultÚdefaults_cfgÚembedding_cfgÚdefaults_efÚembedding_efs                         r8   Ú1test_vector_index_configuration_create_collectionr¼   ‹  sÚ  € ð Ô'€HØ#Ô1€MØÔ#€Få	ˆ&�M„M€MØ×)Ò)ØØØ#Øð	 *ñ ô €Jð ÐØÔ" t¨R jÐ0Ð0Ð0Ð0Ð0å�x Ô!4Ñ5Ô5Ð5àÔ*€KÝ-Ð-€LØ(Ð4��¨f€JØ)Ð6�6�6¨w€Là—?’? :Ñ.Ô.€LØ —_’_ \Ñ2Ô2€NàÐ#Ð#¨
Ð%JÐ%JÐ%JÑ#Ô#Ð#ØØØ
ðð ð ð ð Ð7Ð7Ð7ñô ð õ
 (Ø!ØØ#Ø#2Ô#Eð	ñ ô €Hõ �$�t¥C­ Hœ~¨|Ñ<Ô<¸hÈÑUÔUÐUð ð ˜×*Ò*Ð+?Ñ@Ô@ÐLØÐ/Ô0ˆØˆ>Ø!—o’oÐ&:Ñ;Ô;ˆGØÐ"Ø#×.Ò.Ñ0Ô0�	Øð  §¢¨vÑ!6Ô!6¸'Ò!AÐ!AÝ"Ø˜Fñô ð Dð DàCñDô Dð ð %Ÿ=š=¨Ñ0Ô0°B·G²G±I´IÒ=Ð=Ð=ðMØ$&§G¢G¡I¤IðMð MØ5>·]²]À6Ñ5JÔ5JðMð Mñ >Ô=Ð=ð
 Ô%€MØÐ$Ð$Ð$Ý"EÀmÑ"TÔ"TÑ€L�-àð 	1Ø˜FÔ#Ð+Ð+Ð+Ø˜VÔ$Ð,Ð,Ð,Ø˜GÔ$Ð0Ð0Ð0Ø˜WÔ%Ð1Ð1Ð1Ð1à˜GÔ$Ð,Ð,Ð,Ø˜WÔ%Ð-Ð-Ð-Ø˜FÔ#Ð/Ð/Ð/Ø˜VÔ$Ð0Ð0Ð0å˜,¨°,Ñ?Ô?Ð?Ý˜-¨°<Ñ@Ô@Ð@ð ñ ˜×*Ò*Ð+?Ñ@Ô@ÑLØÐ/Ô0ˆØ‰>à'Ô0Ô;ÔHÔOÔbˆKØÐ&­7°;ÀÑ+GÔ+GÐ&Ø"×'Ò'Ñ)Ô)¨R¯WªW©Y¬YÒ6Ð6Ð6ðFØ "§¢¡	¤	ðFð FØ1<×1AÒ1AÑ1CÔ1CðFð Fñ 7Ô6Ð6ð
 )Ô-­mÔ<ÔGÔTÔ[ÔnˆLØÐ'­G°LÀ&Ñ,IÔ,IÐ'Ø#×(Ò(Ñ*Ô*¨b¯gªg©i¬iÒ7Ð7Ð7ðGØ "§¢¡	¤	ðGð GØ1=×1BÒ1BÑ1DÔ1DðGð Gñ 8Ô7Ð7ðð ÐLÐLàˆ>ð (Ð'Ð'Ð'Ø7Ð7r:   ©r¦   r+   c                 óH  — t          | ¦  «         |€t          ¦   «         }nt          |¦  «        }|                      ||¬¦  «        }|j        }|€
J d¦   «         ‚t          ||¦  «         |                      |¦  «        }|j        }|€
J d¦   «         ‚t          ||¦  «         dS )z˜
    Test that schema-only components (inverted indexes, sparse vector indexes)
    are correctly created and persisted when creating a collection.
    Nr½   zSchema should not be None)r   r†   r“   r¬   r+   r¥   Úget_collection)r¨   r¦   r+   r•   r¯   r·   s         r8   Ú%test_schema_create_and_get_collectionrÀ   ó  sÀ   € õ 
ˆ&�M„M€Mà€~Ý6Ñ8Ô8ÐÐå;¸FÑCÔCÐà×)Ò)¨t¸FÐ)ÑCÔC€Jð Ô%€MØÐ$Ð$Ð&AÑ$Ô$Ð$å˜=Ð*:Ñ;Ô;Ð;à×&Ò& tÑ,Ô,€JØÔ%€MØÐ$Ð$Ð&AÑ$Ô$Ð$Ý˜=Ð*:Ñ;Ô;Ð;Ð;Ð;r:   )1rr   Útypingr   r   r   r   r   r   Ú
hypothesisr	   Úchromadb.apir
   Ú%chromadb.api.collection_configurationr   Úchromadb.api.typesr   r   r   Úchromadb.test.propertyr   Ú!chromadb.test.property.invariantsr   Úchromadb.test.conftestr   r   r   r   rF   Ú__annotations__ro   r   rn   r*   r9   rW   ra   Úboolre   rx   r{   r†   r“   r¥   Úcollection_nameÚ&metadata_configuration_schema_strategyÚCollectionInputCombinationr¼   Úschema_strategyrÀ   r…   r:   r8   ú<module>rÏ      s¯  ðØ €€€€Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8à Ð Ð Ð Ð Ð à "Ð "Ð "Ð "Ð "Ð "Ø OÐ OÐ OÐ OÐ OÐ Oðð ð ð ð ð ð ð ð ð ð
 .Ð -Ð -Ð -Ð -Ð -Ø <Ð <Ð <Ð <Ð <Ð <ðð ð ð ð ð ð ð ð ð ð Ø-Ø!ØØ+Ø)ð+ð +Ð ˜˜c 3˜hœð ð ñ ðð ð €ð ØØØØØð!ð !€ˆt�C˜�HŒ~ð ð ñ ð
ð 
ð 
€ð ØØØØØØ!ØØð
"ð 
"€��S˜#�X”ð 
ð 
ñ 
ðØðà
ˆ4��S�Œ>˜4  S œ>Ð)Ô*ðð ð ð ð&SØÐ)Ô*ðSàÐ9Ô:ðSð !)¨¨c°3¨h¬Ô 8ðSð 
ˆ#ˆsˆ(„^ð	Sð Sð Sð SðlNØÐ)Ô*ðNàÐ9Ô:ðNð !)¨¨c°3¨h¬Ô 8ðNð 
ˆ#ˆsˆ(„^ð	Nð Nð Nð Nðb
Øð
àÐ)Ô*ð
ð Ð9Ô:ð
ð !)¨¨c°3¨h¬Ô 8ð	
ð
 
ˆ#ˆsˆ(„^ð
ð 
ð 
ð 
ð*RØ��c�ŒNðRà�3˜�8ŒnðRð ðRð 
ð	Rð Rð Rð Rð('VØ�c˜3�h”ð'Và�3˜�8Œnð'Vð ð'Vð 
ð	'Vð 'Vð 'Vð 'VðT T¨#¨t°C¸°H¬~Ð*=Ô%>ð ð ð ð ð2VØðVà	ˆ#ˆt�C˜�HŒ~Ð
ÔðVð Vð Vð VðrGØðGà˜3  S¨# X¤Ð.Ô/ðGð 
ðGð Gð Gð GðD Ø€Ø	#ˆÔ	#Ñ	%Ô	%ØE�JÔEÑGÔGðñ ô ð`Øð`à
ð`ð  Ô:ð`ð 
ð	`ð `ð `ñ	ô ñ Ôð
`ðF Ø€Ø	#ˆÔ	#Ñ	%Ô	%Ø%ˆ:Ô%Ñ'Ô'ðñ ô ð<Øð<à
ð<ð �VÔð<ð 
ð	<ð <ð <ñ	ô ñ Ôð
<ð <ð <r:   