Ë
    lQêj1‚  ã                   óÔ  — 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jV                  «        ejX                  «       ¬4«      d5ed6ed7ejZ                  d!dfd8„«       «       Z.e e	 ejV                  «        ej^                  «       ¬9«      d5ed6ed ee   d!dfd:„«       «       Z0y);é    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                 ó4  — | 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        úg/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/chromadb/test/property/test_schema.pyÚ#_extract_vector_configs_from_schemar9   J   s¡   € ð —_‘_×/Ñ/€NØÐ%Ð%Ð%Ø ×-Ñ-€KØÐ"Ð"Ð"à—k‘k¤-Ñ0×;Ñ;€OØÐ&Ð&Ð&Ø"×/Ñ/€LØÐ#Ð#Ð#ô 	×'Ñ'¨×(:Ñ(:Ó;Ü×'Ñ'¨×(;Ñ(;Ó<ðð ó    ÚmetadataÚconfigurationÚschema_vector_index_configc                 ó–  — t         j                  «       }d}d}|�r|j                  d«      }|r^t        t        t
        t        f   |«      }|j                  t        j                  |«      «       |j                  d«      �|d   |d<   d}d}|j                  d«      }|r–t        t        t
        t        f   |«      }	t        j                  |	«      }
|
j                  «       D ]  \  }}|€Œ	|t        |   k7  sŒd}Œ |	j                  d«      �)|s'|	j                  d«      t        d   k7  rd}|	d   |d<   d}|rU|j                  d«      �
|d   |d<   d}|j                  d«      r)t        j                  |d   «      }|j                  |«       | r8| j                  d«      �'| j                  d«      t         d   k7  r|r
| d   |d<   d}|r9|j                  d«      	 �'|j                  d«      t         d   k7  r|s
|d   |d<   d}|sE|rC|j                  d«      �2|d   }t        |d	«      r!t        t        |«      j                  «       |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Ñ5°nÓEÔFà×!Ñ! 'Ó*Ð6Ø$2°7Ñ$;�˜Ñ!Ø �	Ø&+Ð#Ø ×$Ñ$ VÓ,ˆÙÜ ¤¤c¬3 h¡°Ó:ˆMÜ&×5Ñ5°mÓDˆMØ+×1Ñ1Ó3ò 0‘
��UØÑ$¨´-ÀÑ2DÓ)Dð +0Ñ'ð0ð × Ñ  Ó)Ð5¹ià ×$Ñ$ WÓ-´¸wÑ1GÒGØ*/Ð'Ø$1°'Ñ$:�˜Ñ!Ø �	á!Ø%×)Ñ)¨'Ó2Ð>Ø :¸7Ñ CˆH�WÑØˆIØ%×)Ñ)¨'Ô2Ü%×4Ñ4Ø*¨7Ñ3óˆLð �O‰O˜LÔ)ñ 	Ø�L‰L˜Ó&Ð2Ø�L‰L˜Ó&¬.¸Ñ*AÒAÙà$ \Ñ2ˆ�ÑØˆ	ñ 	#Ø&×*Ñ*Ð+MÓNØðà&×*Ñ*Ð+MÓNÜ˜'Ñ"ò#áà6Ø.ñ
ˆ�Ñð ˆ	ñ ÙØ×ÑÐ2Ó3Ð?àÐ/Ñ0ˆÜ�2�Ô'Ü $¤S¨"£× ;Ñ ;Ó =ˆH�WÑà€Or:   c                 ó  — t         j                  «       }d}t        «       }d}|�r |j                  d«      }|�¾t	        t
        t        t        f   |«      }t        j                  |«      }	|j                  |	«       |	j                  «       D ]  \  }
}|€Œ	|t         |
   k7  sŒd}Œ |j                  |	j                  «       «       |	j                  d«      �!|s|	j                  d«      t         d   k7  rd}d}|j                  d«      }|�<t	        t
        t        t        f   |«      }|j                  d«      �|s|d   |d<   d}d}|ro| rmt        j                  «       D ]V  \  }
}| j                  |
«      €Œ|dk(  r| |
   ||<   d}|j                  |«       Œ9||vsŒ>| |
   ||<   |j                  |«       ŒX |rf|j                  d«      �
|d   |d<   d}|j                  d«      r(|j                  t        j                  |d   «      «       n|j                  d«      r	 |r|j                  d«      	 �|s
|d   |d<   d}|sE|rC|j                  d«      �2|d   }t        |d«      r!t	        t        |«      j!                  «       |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   ³   sº  € ô
 ×!Ñ!Ó#€HØ€IÜ%(£UÐØÐâØ$×(Ñ(¨Ó0ˆØÐ#Ü(,¬T´#´s°(©^¸\Ó(JˆIÜ&×5Ñ5°iÓ@ˆMØ�O‰O˜MÔ*Ø+×1Ñ1Ó3ò 0‘
��UàÑ$¨´-ÀÑ2DÓ)DØ*/Ñ'ð0ð !×'Ñ'¨×(:Ñ(:Ó(<Ô=Ø× Ñ  Ó)Ð5¹iØ ×$Ñ$ WÓ-´¸wÑ1GÒGØ*/Ð'Ø �	Ø%×)Ñ)¨'Ó2ˆØÐ$Ü)-¬d´3¼°8©n¸mÓ)LˆJØ�~‰~˜gÓ&Ð2¹9Ø$.¨wÑ$7�˜Ñ!Ø �	Ø&+Ð#á™xÜ3×9Ñ9Ó;ò 
	2‰LˆC�Ø�|‰|˜CÓ Ð(ØØ˜'Ò!Ø$,¨S¡M�˜Ñ!Ø �	Ø$×(Ñ(¨Ô1ØØÐ2Ò2Ø$,¨S¡M�˜Ñ!Ø$×(Ñ(¨Õ1ð
	2ñ "Ø%×)Ñ)¨'Ó2Ð>Ø :¸7Ñ CˆH�WÑØˆIØ%×)Ñ)¨&Ô1Ø�O‰OÜ×)Ñ)Ð*DÀVÑ*LÓMõð (×+Ñ+¨GÔ4àñ 	#Ø&×*Ñ*Ð+MÓNØðáà6Ø.ñ
ˆ�Ñð ˆ	ñ ÙØ×ÑÐ2Ó3Ð?àÐ/Ñ0ˆÜ�2�Ô'Ü $¤S¨"£× ;Ñ ;Ó =ˆH�WÑà€Or:   Úspann_activec                 ó:   — | 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     s3   € ñ Ü-Ø�mÐ%?ó
ð 	
ô -Ø�mÐ%?ó
ð 	
r:   ÚactualrK   c                 ó  — |rt         nt        }|D ]u  }| j                  |«      }||   }t        |t        «      r9t        |t        «      r)t        j                  ||dd¬«      rŒSJ |› d|› d|› �«       ‚||k(  rŒhJ |› d|› d|› �«       ‚ y )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ˆØ—z‘z %Ó(ˆØ! %™ˆä�l¤EÔ*¬z¸.Ì%Ô/PÜ—<‘<Ø˜n°dÀDöð Rà�Ð,¨^Ð,<¸FÀ<À.ÐQóRð ð
  Ó.ðRà�Ð,¨^Ð,<¸FÀ<À.Ð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Œ	|j                  |«      }||   }t        |t        «      r9t        |t        «      r)t        j                  ||dd¬«      rŒYJ |› d|› d|› �«       ‚||k(  rŒnJ |› d|› d|› �«       ‚ y t        t        t        t        t        f      | d   «      }|€J ‚t        D ]{  }|dk(  rŒ	|j                  |«      }||   }t        |t        «      r9t        |t        «      r)t        j                  ||dd¬«      rŒYJ |› d|› d|› �«       ‚||k(  rŒnJ |› d|› d|› �«       ‚ y )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{   -  s×  € ð
 �wÑ 8¨GÑ#4Ò4Ð4Ð4ÙÜœ¤$¤s¬C x¡.Ñ1°;¸wÑ3GÓHˆ	ØÐ$Ð$Ð$Ü!ò 	VˆEØ˜ÒØØ$Ÿ=™=¨Ó/ˆLØ% e™_ˆNä˜,¬Ô.´:¸nÌeÔ3TÜ—|‘|Ø  .¸$Èöð Và�WÐ0°Ð0@ÀÀ|ÀnÐUóVð ð
 ! NÓ2ðVà�WÐ0°Ð0@ÀÀ|ÀnÐUóVØ2ñ	Vô œ¤¤c¬3 h¡Ñ0°+¸fÑ2EÓFˆØÐ#Ð#Ð#Ü ò 	VˆEØ˜ÒØØ#Ÿ<™<¨Ó.ˆLØ% e™_ˆNä˜,¬Ô.´:¸nÌeÔ3TÜ—|‘|Ø  .¸$Èöð Và�WÐ0°Ð0@ÀÀ|ÀnÐUóVð ð
 ! NÓ2ðVà�WÐ0°Ð0@ÀÀ|ÀnÐUóVØ2ñ	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  ss   € ð !*¨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                  r„| j                   j                  j                  rdd|vri |d<   | j                   j                  j                  j                  | j                   j                  j                  j                  dœ|d   d<   | j                  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                  rZ|j                  j                  rD|j                  j                  j                  |j                  j                  j                  dœ|d<   |s�Œš|||<   �Œ¡ |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Ñ"8×"NÒ"NØ˜XÑ%Ø#%ˆH�ZÑ à�v—‘×-Ñ-×CÑC×KÑKð3
ˆ�ÑÐ.Ñ/ð ‡�× Ò  V§_¡_×%>Ñ%>×%QÒ%QØ˜XÑ%Ø#%ˆH�ZÑ à�v—‘×0Ñ0×CÑC×KÑKð0
ˆ�Ñ˜^Ñ,ð ‡�×"Ò" v§¡×'BÑ'B×'WÒ'WØ˜XÑ%Ø#%ˆH�ZÑ à�v—‘×2Ñ2×GÑG×OÑOð2
ˆ�ÑÐ-Ñ.ð ‡�×Ò 6§?¡?×#:Ñ#:×#NÒ#NØ˜XÑ%Ø#%ˆH�ZÑ à�v—‘×.Ñ.×BÑB×JÑJð1
ˆ�Ñ˜_Ñ-ð
 	�‰×%Ò%Ø�O‰O×)Ñ)×=Ò=à˜XÑ%Ø#%ˆH�ZÑ à—‘×4Ñ4×HÑH×PÑPØ—o‘o×3Ñ3×GÑG×NÑNñ1
ˆ�Ñ˜_Ñ-ð #ŸK™K×-Ñ-Ó/ó ")Ñˆˆ[Ø”= +Ð.Ñ.àà')ˆà×Ò +×"4Ñ"4×"JÒ"Jà˜;×-Ñ-×CÑC×KÑKð/ˆLÐ*Ñ+ð × Ò  [×%:Ñ%:×%MÒ%Mà˜;×0Ñ0×CÑC×KÑKð,ˆL˜Ñ(ð ×"Ò" {×'>Ñ'>×'SÒ'Sà˜;×2Ñ2×GÑG×OÑOð.ˆLÐ)Ñ*ð ×Ò ;×#6Ñ#6×#JÒ#Jà˜;×.Ñ.×BÑB×JÑJð-ˆL˜Ñ)ð ×$Ò$¨×)BÑ)B×)VÒ)Và&×4Ñ4×HÑH×PÑPØ%×3Ñ3×GÑG×NÑNñ-ˆL˜Ñ)ó
 Ø(ˆH�S‹MðE")ðH €Or:   Úactual_schemaÚexpected_indexesc                 ó  — d|v �r±|d   }| j                   }d|v re|d   d   }|j                  }|rF|j                  r:|j                  j                  |k(  s*J d|› d|j                  j                  › �«       ‚|sJ d«       ‚d|v re|d   d   }|j                  }|rF|j
                  r:|j
                  j                  |k(  s*J d|› d|j
                  j                  › �«       ‚|sJ d	«       ‚d
|v re|d
   d   }|j                  }|rF|j                  r:|j                  j                  |k(  s*J d|› d|j                  j                  › �«       ‚|sJ d«       ‚d|v re|d   d   }|j                  }|rF|j                  r:|j                  j                  |k(  s*J d|› d|j                  j                  › �«       ‚|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 rj|d   d   }|j                  }|€J d«       ‚|j                  €J d«       ‚|j                  j                  |k(  s!J d|› d|j                  j                  › �«       ‚d|v rj|d   d   }|j                   }|€J d«       ‚|j"                  €J d«       ‚|j"                  j                  |k(  s!J d|› d|j"                  j                  › �«       ‚|j%                  «       D �]6  \  }}|dk(  rŒ|| j&                  v sJ d |› d!�«       ‚| j&                  |   }d|v ru|d   d   }|j                  }|€J d"|› d#�«       ‚|j                  €J d"|› d$�«       ‚|j                  j                  |k(  s$J d"|› d%|› d|j                  j                  › �«       ‚d|v ru|d   d   }|j                  }|€J d"|› d&�«       ‚|j
                  €J d"|› d'�«       ‚|j
                  j                  |k(  s$J d"|› d(|› d|j
                  j                  › �«       ‚d
|v ru|d
   d   }|j                  }|€J d"|› d)�«       ‚|j                  €J d"|› d*�«       ‚|j                  j                  |k(  s$J d"|› d+|› d|j                  j                  › �«       ‚d|v ru|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 ru|d   d   }|j                  }|€J d"|› d#�«       ‚|j                  €J d"|› d4�«       ‚|j                  j                  |k(  s$J d"|› d5|› d|j                  j                  › �«       ‚d|v s�ŒÂ|d   d   }|j                   }|€J d"|› d6�«       ‚|j"                  €J d"|› d7�«       ‚|j"                  j                  |k(  r�ŒJ d"|› d8|› d|j"                  j                  › �«       ‚ y)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Ñ0ˆàÐ 1Ñ1Ø0Ð1BÑCÀIÑNÐØ+×2Ñ2ˆMÙ ×!DÒ!Dà!×7Ñ7×?Ñ?ÐCSÒSðPàIÐJZÐI[Ð[aÐbo÷  cFñ  cF÷  cNñ  cNð  bOð  PóPØSñ (ÐUÐ)UÓUÐ'àÐ.Ñ.Ø0°Ñ@ÀÑKÐØ(×2Ñ2ˆJÙ˜j×;Ò;à×1Ñ1×9Ñ9Ð=MÒMðGàFÐGWÐFXÐX^Ð_i×_|Ñ_|÷  `Eñ  `Eð  _Fð  GóGØMñ (ÐRÐ)RÓRÐ'àÐ0Ñ0Ø0Ð1AÑBÀ9ÑMÐØ*×6Ñ6ˆLÙ × AÒ Aà ×5Ñ5×=Ñ=ÐAQÒQðMàHÐIYÐHZÐZ`Ðam÷  bCñ  bC÷  bKñ  bKð  aLð  MóMØQñ (ÐTÐ)TÓTÐ'àÐ/Ñ/Ø0°ÑAÀ)ÑLÐØ)×1Ñ1ˆKÙ˜{×>Ò>à×3Ñ3×;Ñ;Ð?OÒOðJàGÐHXÐGYÐY_Ð`k×`Ñ`÷  aHñ  aHð  `Ið  JóJØOñ (ÐSÐ)SÓSÐ'àÐ/Ò/Ø0°ÑAÀ)ÑLÐØ+×9Ñ9ˆMØ Ð,ÐSÐ.SÓSÐ,à×1Ñ1Ð=ð;à:ó;Ø=ð ×1Ñ1×9Ñ9Ð=MÒMðHàCÐDTÐCUÐU[Ð\i×\}Ñ\}÷  ]Fñ  ]Fð  \Gð  HóHØMð Ð,¨_Ñ=Ñ=Ø"3°OÑ"DÀXÑ"N�Ø -× AÑ A× HÑ H�Ø"×'Ñ'Ð3à%×*Ñ*¨o×.BÑ.BÒBðzàHÈ×I]ÑI]ÐH^Ð^dÐer×ewÑewÐdxÐyózØBà"×-Ñ-Ð9à%×0Ñ0°O×4NÑ4NÒNðLàNÈ×OiÑOiÐNjÐjpÐq~÷  rJñ  rJð  qKð  LóLØNð Ð+Ñ+Ø0°Ñ=¸iÑHÐØ+×2Ñ2ˆMØ Ð,ÐLÐ.LÓLÐ,à×'Ñ'Ð3ð1à0ó1Ø3ð ×'Ñ'×/Ñ/Ð3CÒCðzà?Ð@PÐ?QÐQWÐXe×XoÑXo×XwÑXwÐWxÐyózØCð Ð.Ñ.Ø0°Ñ@ÀÑKÐØ /× :Ñ :ÐØ$Ð0ÐTÐ2TÓTÐ0à!×.Ñ.Ð:ð4à3ó4Ø:ð "×.Ñ.×6Ñ6Ð:JÒJðDàBÐCSÐBTÐTZÐ[l×[yÑ[y÷  \Bñ  \Bð  [Cð  DóDØJð .×3Ñ3Ó5ó ]GÑˆˆ\Ø�*ÒØà�m×(Ñ(Ñ(ÐU¨N¸3¸%Ð?TÐ*UÓUÐ(Ø*×/Ñ/°Ñ4Ðà Ñ,Ø+Ð,=Ñ>¸yÑIÐØ.×5Ñ5ˆMØ Ð,ÐP°°c°UÐ:OÐ.PÓPÐ,à×3Ñ3Ð?ðAà�s�eÐ?Ð@óAØ?ð ×3Ñ3×;Ñ;Ð?OÒOðOà�s�eÐHÐIYÐHZÐZ`Ðan÷  bEñ  bE÷  bMñ  bMð  aNð  OóOØOð ˜\Ñ)Ø+¨NÑ;¸IÑFÐØ+×5Ñ5ˆJØÐ)ÐP¨U°3°%Ð7OÐ+PÓPÐ)à×-Ñ-Ð9ð>à�s�eÐ<Ð=ó>Ø9ð ×-Ñ-×5Ñ5Ð9IÒIðFà�s�eÐEÐFVÐEWÐW]Ð^h×^{Ñ^{÷  _Dñ  _Dð  ^Eð  FóFØIð ˜|Ñ+Ø+Ð,<Ñ=¸iÑHÐØ-×9Ñ9ˆLØÐ+ÐT¨u°S°EÐ9SÐ-TÓTÐ+à×1Ñ1Ð=ð@à�s�eÐ>Ð?ó@Ø=ð ×1Ñ1×9Ñ9Ð=MÒMðLà�s�eÐGÐHXÐGYÐY_Ð`l÷  aBñ  aB÷  aJñ  aJð  `Kð  LóLØMð ˜lÑ*Ø+¨OÑ<¸YÑGÐØ,×4Ñ4ˆKØÐ*ÐO¨e°C°5Ð8NÐ,OÓOÐ*à×/Ñ/Ð;ð?à�s�eÐ=Ð>ó?Ø;ð ×/Ñ/×7Ñ7Ð;KÒKðIà�s�eÐFÐGWÐFXÐX^Ð_j×_~Ñ_~÷  `Gñ  `Gð  _Hð  IóIØKð ˜lÒ*Ø+¨OÑ<¸YÑGÐØ*¨?Ñ;¸HÑEˆOØ.×<Ñ<ˆMØ Ð,ÐW°°c°UÐ:VÐ.WÓWÐ,à×1Ñ1Ð=ð?à�s�eÐ=Ð>ó?Ø=ð ×1Ñ1×9Ñ9Ð=MÒMðKà�s�eÐFÐGWÐFXÐX^Ð_l÷  `Añ  `A÷  `Iñ  `Ið  _Jð  KóKØMð *×=Ñ=×DÑDˆMØ×#Ñ#Ð/à!×&Ñ&¨/×*>Ñ*>Ò>ðyà˜3˜%ÐGÈ×H\ÑH\ÐG]Ð]cÐdq×dvÑdvÐcwÐxóyØ>à×)Ñ)Ð5à!×,Ñ,°×0JÑ0JÒJðKà˜3˜%ÐMÈo×NhÑNhÐMiÐioÐp}÷  qIñ  qIð  pJð  KóKØJð ˜,Ñ&Ø+¨KÑ8¸ÑCÐØ.×5Ñ5ˆMØ Ð,ÐP°°c°UÐ:OÐ.PÓPÐ,à×'Ñ'Ð3ð5à�s�eÐ3Ð4ó5Ø3ð ×'Ñ'×/Ñ/Ð3CÒCð}à�s�eÐBÐCSÐBTÐTZÐ[h×[rÑ[r×[zÑ[zÐZ{Ð|ó}ØCð ˜\Ó)Ø+¨NÑ;¸IÑFÐØ 2× =Ñ =ÐØ$Ð0ÐX°E¸#¸Ð>WÐ2XÓXÐ0à!×.Ñ.Ð:ð8à�s�eÐ6Ð7ó8Ø:ð "×.Ñ.×6Ñ6Ð:JÔJðGà�s�eÐEÐFVÐEWÐW]Ð^o×^|Ñ^|÷  _Eñ  _Eð  ^Fð  GóGØJñy]Gr:   )ÚnameÚoptional_fieldsÚclientr¦   r§   c                 óæ  — |j                   }|j                  }|j                  }t        | «       | j	                  ||||¬«      }|€|j                   d i fv sJ ‚t        ||j                   «       |j                  }t         }|rdnd}	|rdnd}
|j                  |	«      }|j                  |
«      }|€
J |	› d�«       ‚|d i fv s
J |
› d�«       ‚t        ||||j                  ¬«      }t        t        t        t        t        f   |«      ||«       |r°|j                  d«      �Ÿ|d   }|�˜|j                  d«      }|�…|j                  «       }|rs|j                  d«      d	k(  r_t!        |d
«      sJ d«       ‚|j                  d
«      |j#                  «       k(  s*J d|j#                  «       › d|j                  d
«      › �«       ‚|j                  }|€J ‚t%        |«      \  }}|r|d   �J ‚|d   �J ‚|d   €J ‚|d   €J ‚|d   �J ‚|d   �J ‚|d   €J ‚|d   €J ‚t'        |||«       t'        |||«       |�r>|j                  d«      ��+|d   }|��"|j(                  j*                  j,                  j.                  j0                  }|�Vt!        |d
«      rJ|j#                  «       |j#                  «       k(  s)J d|j#                  «       › d|j#                  «       › �«       ‚|j2                  t4           j*                  j,                  j.                  j0                  }|�Xt!        |d
«      rK|j#                  «       |j#                  «       k(  s)J d|j#                  «       › d|j#                  «       › �«       ‚y y y y y y )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Ñ1€MØ×#Ñ#€Fä	ˆ&„MØ×)Ñ)ØØØ#Øð	 *ó €Jð ÐØ×"Ñ" t¨R jÑ0Ð0Ð0ä�x ×!4Ñ!4Ô5à×*Ñ*€KÜ-Ð-€LÙ(‘¨f€JÙ)‘6¨w€Là—?‘? :Ó.€LØ —_‘_ \Ó2€NàÐ#ÐJ¨
 |Ð3IÐ%JÓJÐ#ØØØ
ðñ ð 8ð ˆÐ6Ð7ó8ð ô
 (Ø!ØØ#Ø#2×#EÑ#Eô	€Hô œ$œt¤C¬ H™~¨|Ó<¸hÈÔUñ ˜×*Ñ*Ð+?Ó@ÐLØÐ/Ñ0ˆØˆ>Ø!—o‘oÐ&:Ó;ˆGØÐ"Ø#×.Ñ.Ó0�	Ù §¡¨vÓ!6¸'Ò!AÜ"Ø˜Fôð DàCóDð ð %Ÿ=™=¨Ó0°B·G±G³IÒ=ð ð$Ø$&§G¡G£I ;¨f°Y·]±]À6Ó5JÐ4KðMóÐ=ð
 ×%Ñ%€MØÐ$Ð$Ð$Ü"EÀmÓ"TÑ€L�-áØ˜FÑ#Ð+Ð+Ð+Ø˜VÑ$Ð,Ð,Ð,Ø˜GÑ$Ð0Ð0Ð0Ø˜WÑ%Ð1Ð1Ð1à˜GÑ$Ð,Ð,Ð,Ø˜WÑ%Ð-Ð-Ð-Ø˜FÑ#Ð/Ð/Ð/Ø˜VÑ$Ð0Ð0Ð0ä˜,¨°,Ô?Ü˜-¨°<Ô@ò ˜×*Ñ*Ð+?Ó@ÑLØÐ/Ñ0ˆØ‰>à'×0Ñ0×;Ñ;×HÑH×OÑO×bÑbˆKØÐ&¬7°;ÀÔ+GØ"×'Ñ'Ó)¨R¯W©W«YÒ6ð ð Ø "§¡£	˜{¨&°×1AÑ1AÓ1CÐ0DðFóÐ6ð
 )×-Ñ-¬mÑ<×GÑG×TÑT×[Ñ[×nÑnˆLØÐ'¬G°LÀ&Ô,IØ#×(Ñ(Ó*¨b¯g©g«iÒ7ð ð Ø "§¡£	˜{¨&°×1BÑ1BÓ1DÐ0EðGóÑ7ð -JÐ'ð ð M€}r:   ©r¦   r+   c                 ó  — t        | «       |€t        «       }nt        |«      }| j                  ||¬«      }|j                  }|€J d«       ‚t        ||«       | j                  |«      }|j                  }|€J d«       ‚t        ||«       y)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à€~Ü6Ó8Ñä;¸FÓCÐà×)Ñ)¨t¸FÐ)ÓC€Jð ×%Ñ%€MØÐ$ÐAÐ&AÓAÐ$ä˜=Ð*:Ô;à×&Ñ& tÓ,€JØ×%Ñ%€MØÐ$ÐAÐ&AÓ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å å "Ý O÷ñ õ
 .Ý <÷ñ ð Ø-Ø!ØØ+Ø)ñ+Ð ˜˜c 3˜h™ó ò€ð ØØØØØñ!€ˆt�C˜�H‰~ó ò
€ð ØØØØØØ!ØØñ
"€��S˜#�X‘ó 
ðØðà
ˆ4��S�‰>˜4  S ™>Ð)Ñ*óð&SØÐ)Ñ*ðSàÐ9Ñ:ðSð !)¨¨c°3¨h©Ñ 8ðSð 
ˆ#ˆsˆ(�^ó	SðlNØÐ)Ñ*ðNàÐ9Ñ:ðNð !)¨¨c°3¨h©Ñ 8ðNð 
ˆ#ˆsˆ(�^ó	Nðb
Øð
àÐ)Ñ*ð
ð Ð9Ñ:ð
ð !)¨¨c°3¨h©Ñ 8ð	
ð
 
ˆ#ˆsˆ(�^ó
ð*RØ��c�‰NðRà�3˜�8‰nðRð ðRð 
ó	Rð('VØ�c˜3�h‘ð'Và�3˜�8‰nð'Vð ð'Vð 
ó	'VðT T¨#¨t°C¸°H©~Ð*=Ñ%>ó ð2VØðVà	ˆ#ˆt�C˜�H‰~Ð
ÑóVðrGØðGà˜3  S¨# X¡Ð.Ñ/ðGð 
óGðD ÙØ	#ˆ×	#Ñ	#Ó	%ØE�J×EÑEÓGôð`Øð`à
ð`ð  ×:Ñ:ð`ð 
ò	`ó	ó ð
`ðF ÙØ	#ˆ×	#Ñ	#Ó	%Ø%ˆ:×%Ñ%Ó'ôð<Øð<à
ð<ð �VÑð<ð 
ò	<ó	ó ñ
<r:   