§
    ˜Štjmî  ã                   óŽ  — d dl Z d dlmZmZmZmZ d dlZd dlZd dl	m
Z
mZmZmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZ d dlZd dlmZ d dlmZ d dlmZm Z  d d	l!m"Z# d d
lm$Z$m%Z%  G d„ de
e         ¦  «        Z& G d„ de
e         ¦  «        Z'e G d„ de
e         ¦  «        ¦   «         Z(e G d„ de
e         ¦  «        ¦   «         Z)deddfd„Z*deddfd„Z+deddfd„Z,deddfd„Z-deddfd„Z.deddfd„Z/dFd„Z0deddfd„Z1deddfd„Z2deddfd „Z3e j4         5                    ee ¬!¦  «        dFd"„¦   «         Z6deddfd#„Z7deddfd$„Z8deddfd%„Z9e j4         5                    ee ¬!¦  «        deddfd&„¦   «         Z:e j4         5                    ee ¬!¦  «        deddfd'„¦   «         Z;dGd(„Z<e j4         5                    ee ¬!¦  «        deddfd)„¦   «         Z=deddfd*„Z>dGd+„Z?deddfd,„Z@deddfd-„ZAdeddfd.„ZBdeddfd/„ZCdeddfd0„ZDdeddfd1„ZEdeddfd2„ZFdeddfd3„ZGdeddfd4„ZHdeddfd5„ZIdeddfd6„ZJdeddfd7„ZKe G d8„ d9e
e         ¦  «        ¦   «         ZLdeddfd:„ZMdeddfd;„ZNdeddfd<„ZOdeddfd=„ZPdeddfd>„ZQdeddfd?„ZR G d@„ dAe%¦  «        ZSe G dB„ dCe
e         ¦  «        ¦   «         ZTdeddfdD„ZUdeddfdE„ZVdS )Hé    N)ÚDictÚAnyÚcastÚList)ÚEmbeddingFunctionÚ
EmbeddingsÚSpaceÚ
Embeddable)Ú	ClientAPI)	ÚCreateCollectionConfigurationÚUpdateCollectionConfigurationÚ'load_collection_configuration_from_jsonÚCreateHNSWConfigurationÚUpdateHNSWConfigurationÚCreateSpannConfigurationÚUpdateSpannConfigurationÚSpannConfigurationÚoverwrite_spann_configuration)Úregister_embedding_function)ÚClientFactories)Úis_spann_disabled_modeÚskip_reason_spann_disabled)Ú
Collection)ÚOptionalÚ	TypedDictc                   ó&   — e Zd Zdd„Zdedefd„ZdS )ÚLegacyEmbeddingFunctionÚreturnNc                 ó   — d S ©N© ©Úselfs    úx/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/chromadb/test/configurations/test_collection_configuration.pyÚ__init__z LegacyEmbeddingFunction.__init__    ó   € Øˆó    Úinputc                 ón   — t          t          t          j        ddggt          j        ¬¦  «        ¦  «        S ©Nç      ð?ç       @©Údtype©r   r   ÚnpÚarrayÚfloat32©r#   r(   s     r$   Ú__call__z LegacyEmbeddingFunction.__call__#   ó)   € Ý•J¥¤¨3°¨*¨½R¼ZÐ HÑ HÔ HÑIÔIÐIr'   ©r   N)Ú__name__Ú
__module__Ú__qualname__r%   r
   r   r4   r!   r'   r$   r   r      sR   € € € € € ðð ð ð ðJ˜jð J¨Zð Jð Jð Jð Jð Jð Jr'   r   c                   óB   — e Zd Zdd„Zdedefd„Zedefd„¦   «         Z	dS )ÚLegacyEmbeddingFunctionWithNamer   Nc                 ó   — d S r    r!   r"   s    r$   r%   z(LegacyEmbeddingFunctionWithName.__init__(   r&   r'   r(   c                 ón   — t          t          t          j        ddggt          j        ¬¦  «        ¦  «        S r*   r/   r3   s     r$   r4   z(LegacyEmbeddingFunctionWithName.__call__+   r5   r'   c                  ó   — dS )NÚ	legacy_efr!   r!   r'   r$   Únamez$LegacyEmbeddingFunctionWithName.name.   ó   € àˆ{r'   r6   )
r7   r8   r9   r%   r
   r   r4   ÚstaticmethodÚstrr@   r!   r'   r$   r;   r;   '   sw   € € € € € ðð ð ð ðJ˜jð J¨Zð Jð Jð Jð Jð ð�#ð ð ð ñ „\ðð ð r'   r;   c                   ó    — e Zd Zddefd„Zdedefd„Zede	fd„¦   «         Z
dee	ef         fd„Zed	ee	ef         dd fd
„¦   «         Zdefd„ZdS )ÚCustomEmbeddingFunctioné   Údimc                 ó   — || _         d S r    ©Ú_dim©r#   rG   s     r$   r%   z CustomEmbeddingFunction.__init__5   ó   € ØˆŒ	ˆ	ˆ	r'   r(   r   c                 ó|   — t          t          t          j        dg| j        z  gt          j        ¬¦  «        ¦  «        S ©Nr+   r-   ©r   r   r0   r1   rJ   r2   r3   s     r$   r4   z CustomEmbeddingFunction.__call__8   ó/   € Ý•J¥¤¨3¨%°$´)Ñ*;Ð)<ÅBÄJÐ OÑ OÔ OÑPÔPÐPr'   c                  ó   — dS )NÚ	custom_efr!   r!   r'   r$   r@   zCustomEmbeddingFunction.name;   rA   r'   c                 ó   — d| j         iS ©NrG   rI   r"   s    r$   Ú
get_configz"CustomEmbeddingFunction.get_config?   ó   € Ø�t”yÐ!Ð!r'   Úconfigc                 ó.   — t          | d         ¬¦  «        S ©NrG   ©rG   )rE   ©rW   s    r$   Úbuild_from_configz)CustomEmbeddingFunction.build_from_configB   s   € å&¨6°%¬=Ð9Ñ9Ô9Ð9r'   c                 ó   — dS ©NÚl2r!   r"   s    r$   Údefault_spacez%CustomEmbeddingFunction.default_spaceF   ó   € Øˆtr'   N©rF   ©r7   r8   r9   Úintr%   r
   r   r4   rB   rC   r@   r   r   rU   r\   r	   r`   r!   r'   r$   rE   rE   3   sø   € € € € € ðð ˜Cð ð ð ð ðQ˜jð Q¨Zð Qð Qð Qð Qð ð�#ð ð ð ñ „\ðð"˜D  c œNð "ð "ð "ð "ð ð: $ s¨C x¤.ð :Ð5Nð :ð :ð :ñ „\ð:ð˜uð ð ð ð ð ð r'   rE   c                   ó    — e Zd Zddefd„Zdedefd„Zede	fd„¦   «         Z
dee	ef         fd„Zed	ee	ef         dd fd
„¦   «         Zdefd„ZdS )ÚCustomEmbeddingFunction2é   rG   c                 ó   — || _         d S r    rI   rK   s     r$   r%   z!CustomEmbeddingFunction2.__init__L   rL   r'   r(   r   c                 ó|   — t          t          t          j        dg| j        z  gt          j        ¬¦  «        ¦  «        S )Nr,   r-   rO   r3   s     r$   r4   z!CustomEmbeddingFunction2.__call__O   rP   r'   c                  ó   — dS )NÚ
custom_ef2r!   r!   r'   r$   r@   zCustomEmbeddingFunction2.nameR   s   € àˆ|r'   c                 ó   — d| j         iS rT   rI   r"   s    r$   rU   z#CustomEmbeddingFunction2.get_configV   rV   r'   rW   c                 ó.   — t          | d         ¬¦  «        S rY   )rf   r[   s    r$   r\   z*CustomEmbeddingFunction2.build_from_configY   s   € å'¨F°5¬MÐ:Ñ:Ô:Ð:r'   c                 ó   — dS r^   r!   r"   s    r$   r`   z&CustomEmbeddingFunction2.default_space]   ra   r'   N)rg   rc   r!   r'   r$   rf   rf   J   sø   € € € € € ðð ˜Cð ð ð ð ðQ˜jð Q¨Zð Qð Qð Qð Qð ð�#ð ð ð ñ „\ðð"˜D  c œNð "ð "ð "ð "ð ð; $ s¨C x¤.ð ;Ð5Oð ;ð ;ð ;ñ „\ð;ð˜uð ð ð ð ð ð r'   rf   Úclientr   c                 ó   — |                       ¦   «          |                      dt          ¦   «         ¬¦  «        }t          |j        j        ¦  «        }|r/t          |t          ¦  «        r|                     d¦  «        }|�J ‚nJ d|› �¦   «         ‚|  	                    dt          ¦   «         ¬¦  «        }| 
                    dgdg¬	¦  «         |                     dgd
¬¦  «        }t          |d         ¦  «        d
k    sJ ‚dS ©zETest creating and getting collections with legacy embedding functionsÚtest_legacy©r@   Úembedding_functionrt   NFzconfig: Ú1Útest©ÚidsÚ	documentsé   ©Úquery_textsÚ	n_resultsrx   )ÚresetÚcreate_collectionr   r   Ú_modelÚconfiguration_jsonÚ
isinstanceÚdictÚgetÚget_collectionÚaddÚqueryÚlen©ro   ÚcollrW   ÚefÚcoll2Úresultss         r$   Útest_legacy_embedding_functionrŽ   a   s  € à
‡L‚L�N„N€Nð ×#Ò#ØÝ2Ñ4Ô4ð $ñ ô €Dõ 5°T´[Ô5SÑTÔT€FØð *•*˜V¥TÑ*Ô*ð *Ø�ZŠZÐ,Ñ-Ô-ˆØˆzˆzˆzˆzà)Ð) Ð)Ð)Ñ)Ô)ˆuð ×!Ò!ØÝ2Ñ4Ô4ð "ñ ô €Eð 
‡I‚I�3�% F 8€IÑ,Ô,Ð,Ø�kŠk v h¸!ˆkÑ<Ô<€GÝˆw�uŒ~ÑÔ !Ò#Ð#Ð#Ð#Ð#Ð#r'   c                 ó   — |                       ¦   «          |                      dt          ¦   «         ¬¦  «        }t          |j        j        ¦  «        }|r/t          |t          ¦  «        r|                     d¦  «        }|�J ‚nJ d|› �¦   «         ‚|  	                    dt          ¦   «         ¬¦  «        }| 
                    dgdg¬	¦  «         |                     dgd
¬¦  «        }t          |d         ¦  «        d
k    sJ ‚dS rq   )r~   r   r;   r   r€   r�   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   s         r$   Ú(test_legacy_embedding_function_with_namer�      s  € à
‡L‚L�N„N€Nð ×#Ò#ØÝ:Ñ<Ô<ð $ñ ô €Dõ 5°T´[Ô5SÑTÔT€FØð *•*˜V¥TÑ*Ô*ð *Ø�ZŠZÐ,Ñ-Ô-ˆØˆzˆzˆzˆzà)Ð) Ð)Ð)Ñ)Ô)ˆuð ×!Ò!ØÝ:Ñ<Ô<ð "ñ ô €Eð 
‡I‚I�3�% F 8€IÑ,Ô,Ð,Ø�kŠk v h¸!ˆkÑ<Ô<€GÝˆw�uŒ~ÑÔ !Ò#Ð#Ð#Ð#Ð#Ð#r'   c                 ó”  — |                       ¦   «          ddddœ}|                      d|¬¦  «        }t          |j        j        ¦  «        }|r÷t          |t          ¦  «        rät          t          | 	                    di ¦  «        ¦  «        }t          | 	                    d¦  «        ¦  «        t          d¦  «        k    sJ ‚| 	                    d	¦  «        dk    sJ ‚| 	                    d
¦  «        dk    sJ ‚| 	                    d¦  «        dk    sJ ‚| 	                    d¦  «        }|€J ‚|                     ¦   «         dk    sJ ‚dS dS dS )z5Test creating collections with legacy metadata formatÚcosineéÈ   é
   )ú
hnsw:spacezhnsw:construction_efzhnsw:MÚtest_legacy_metadata)r@   ÚmetadataÚhnswÚspaceÚef_constructionÚmax_neighborsÚ	ef_searchéd   rt   NÚdefault)r~   r   r   r€   r�   r‚   rƒ   r   r   r„   rC   r@   )ro   Úlegacy_metadatarŠ   rW   Úhnsw_configr‹   s         r$   r–   r–   �   sf  € à
‡L‚L�N„N€Nð Ø #Øðð €Oð
 ×#Ò#Ø#Ø ð $ñ ô €Dõ 5°T´[Ô5SÑTÔT€FØð 	&•*˜V¥TÑ*Ô*ð 	&ÝÕ2°F·J²J¸vÀrÑ4JÔ4JÑKÔKˆÝ�;—?’? 7Ñ+Ô+Ñ,Ô,µ°H±´Ò=Ð=Ð=Ð=Ø�ŠÐ0Ñ1Ô1°SÒ8Ð8Ð8Ð8Ø�Š˜Ñ/Ô/°2Ò5Ð5Ð5Ð5Ø�Š˜{Ñ+Ô+¨sÒ2Ð2Ð2Ð2à�ZŠZÐ,Ñ-Ô-ˆØˆ~ˆ~ˆ~Ø�wŠw‰yŒy˜IÒ%Ð%Ð%Ð%ð	&ð 	&ð 	&ð 	&ð &Ð%r'   c                 ó"  — |                       ¦   «          ddddddœ}|t          d¬¦  «        d	œ}|                      d
|¬¦  «        }t          |j        j        ¦  «        }|r©t          |t          ¦  «        r–t          t          | 
                    di ¦  «        ¦  «        }| 
                    di ¦  «        }| 
                    d¦  «        dk    sJ ‚| 
                    d¦  «        dk    sJ ‚| 
                    d¦  «        dk    sJ ‚|€J ‚dS dS dS )z7Test creating collections with new configuration formatr’   r�   r”   é   é   )r™   rš   r›   rœ   Únum_threadsé   rZ   ©r˜   rt   Útest_new_config©r@   Úconfigurationr˜   rt   r™   rš   r›   N)r~   rE   r   r   r€   r�   r‚   rƒ   r   r   r„   )ro   r    rW   rŠ   Úloaded_configr‹   s         r$   Útest_new_configurationr«   º   sS  € à
‡L‚L�N„N€Nð ØØØØð,ð ,€Kð Ý5¸!Ð<Ñ<Ô<ð-ð -€Fð
 ×#Ò#ØØð $ñ ô €Dõ <ØŒÔ&ñô €Mð ð � Mµ4Ñ8Ô8ð ÝÕ2°M×4EÒ4EÀfÈbÑ4QÔ4QÑRÔRˆØ×ÒÐ3°RÑ8Ô8ˆØ�Š˜wÑ'Ô'¨8Ò3Ð3Ð3Ð3Ø�ŠÐ0Ñ1Ô1°SÒ8Ð8Ð8Ð8Ø�Š˜Ñ/Ô/°2Ò5Ð5Ð5Ð5Øˆ~ˆ~ˆ~ðð ð ð ð ˆ~r'   c                 ó   — |                       ¦   «          t          j        t          ¦  «        5 }dddœ}|                      dd|i¬¦  «         dt          |j        ¦  «        v sJ ‚	 ddd¦  «         dS # 1 swxY w Y   dS )	z)Test validation of invalid configurationséÿÿÿÿr’   )rš   r™   Útest_invalidr˜   r¨   zinvalid valueN)r~   ÚpytestÚraisesÚ	Exceptionr   rC   Úvalue)ro   ÚexcinfoÚinvalid_hnsws      r$   Útest_invalid_configurationsrµ   Ý   sÞ   € à
‡L‚L�N„N€Nõ 
Œ•yÑ	!Ô	!ð 
5 Wà!Øð1
ð 1
ˆð 	× Ò ØØ! <Ð0ð 	!ñ 	
ô 	
ð 	
ð
 ¥# g¤mÑ"4Ô"4Ð4Ð4Ð4Ð4Ð4ð
5ð 
5ð 
5ñ 
5ô 
5ð 
5ð 
5ð 
5ð 
5ð 
5ð 
5ð 
5øøøð 
5ð 
5ð 
5ð 
5ð 
5ð 
5s   ®7A3Á3A7Á:A7c                 ó¶  — |                       ¦   «          ddddœ}|                      dd|i¬¦  «        }dd	d
œ}d|i}|                     |¬¦  «         |j        }|r¬t	          |t
          ¦  «        r—|                     di ¦  «        }t	          |t
          ¦  «        rl|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                      d¬¦  «        }|j        }|r¬t	          |t
          ¦  «        r™|                     di ¦  «        }t	          |t
          ¦  «        rp|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚dS dS dS dS )ú'Test updating collection configurationsr”   rz   r’   ©rœ   r¤   r™   Útest_updatesr˜   r¨   r¢   r£   )rœ   r¤   ©r©   rœ   r™   rš   r�   r›   é   ©r@   N©r~   r   Úmodifyr�   r‚   rƒ   r„   r…   )ro   Úinitial_hnswrŠ   Úupdate_hnswÚupdate_configrª   r    s          r$   Útest_hnsw_configuration_updatesrÂ   ï   s=  € à
‡L‚L�N„N€Nð ØØð-ð -€Lð
 ×#Ò#ØØ˜|Ð,ð $ñ ô €Dð Øð,ð ,€Kð
 	�ð4€Mð 	‡K‚K˜m€KÑ,Ô,Ð,ð Ô+€MØð :� Mµ4Ñ8Ô8ð :Ø#×'Ò'¨°Ñ3Ô3ˆÝ�k¥4Ñ(Ô(ð 	:Ø—?’? ;Ñ/Ô/°2Ò5Ð5Ð5Ð5à—?’? 7Ñ+Ô+¨xÒ7Ð7Ð7Ð7Ø—?’?Ð#4Ñ5Ô5¸Ò<Ð<Ð<Ð<Ø—?’? ?Ñ3Ô3°rÒ9Ð9Ð9Ð9à× Ò  nÐ Ñ5Ô5€DØÔ+€MØð :� Mµ4Ñ8Ô8ð :Ø#×'Ò'¨°Ñ3Ô3ˆÝ�k¥4Ñ(Ô(ð 	:Ø—?’? ;Ñ/Ô/°2Ò5Ð5Ð5Ð5Ø—?’? 7Ñ+Ô+¨xÒ7Ð7Ð7Ð7Ø—?’?Ð#4Ñ5Ô5¸Ò<Ð<Ð<Ð<Ø—?’? ?Ñ3Ô3°rÒ9Ð9Ð9Ð9ð:ð :ð :ð :ð	:ð 	:ð :Ð9r'   Úclient_factoriesr   c                 ó  — |                       ¦   «         }|                     ¦   «          ddddœ}|t          d¬¦  «        dœ}|                     d|¬	¦  «         |                       ¦   «         }|                     d¬
¦  «        }t          |j        j        ¦  «        }|rÝt          |t          ¦  «        rÊt          t          |                     di ¦  «        ¦  «        }|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        }|€J ‚|                     ¦   «         dk    sJ ‚dS dS dS )z5Test configuration persistence across client restartsr’   r�   r”   )r™   rš   r›   r¥   rZ   r¦   Útest_persist_configr¨   r¼   r˜   r™   rš   r›   rœ   rt   NrR   )Úcreate_client_from_systemr~   rE   r   r…   r   r€   r�   r‚   rƒ   r   r   r„   r@   )rÃ   ro   r    rW   Úclient2rŠ   rª   r‹   s           r$   Útest_configuration_persistencerÈ     sÈ  € ð ×7Ò7Ñ9Ô9€FØ
‡L‚L�N„N€Nð ØØð,ð ,€Kð Ý5¸!Ð<Ñ<Ô<ð-ð -€Fð
 ×ÒØ"Øð ñ ô ð ð ×8Ò8Ñ:Ô:€Gà×!Ò!Ø"ð "ñ ô €Dõ <ØŒÔ&ñô €Mð ð 	(� Mµ4Ñ8Ô8ð 	(ÝÕ2°M×4EÒ4EÀfÈbÑ4QÔ4QÑRÔRˆØ�Š˜wÑ'Ô'¨8Ò3Ð3Ð3Ð3Ø�ŠÐ0Ñ1Ô1°SÒ8Ð8Ð8Ð8Ø�Š˜Ñ/Ô/°2Ò5Ð5Ð5Ð5Ø�Š˜{Ñ+Ô+¨sÒ2Ð2Ð2Ð2à×ÒÐ3Ñ4Ô4ˆØˆ~ˆ~ˆ~Ø�wŠw‰yŒy˜KÒ'Ð'Ð'Ð'ð	(ð 	(ð 	(ð 	(ð (Ð'r'   c                 ó:  — |                       ¦   «          ddddœ}|                      dd|i¬¦  «        }|j        j        €J ‚|j        j                             d¦  «        }|€J ‚|                     d	¦  «        dk    sJ ‚|                     d
¦  «        dk    sJ ‚dS )r·   r”   r£   r’   r¸   r¹   r˜   r¨   Nrœ   r™   )r~   r   r€   r�   r„   )ro   r¿   rŠ   r    s       r$   Ú test_configuration_result_formatrÊ   J  sÄ   € à
‡L‚L�N„N€Nð ØØð-ð -€Lð
 ×#Ò#ØØ˜|Ð,ð $ñ ô €Dð
 Œ;Ô)Ð5Ð5Ð5Ø”+Ô0×4Ò4°VÑ<Ô<€KØÐ"Ð"Ð"Ø�?Š?˜;Ñ'Ô'¨2Ò-Ð-Ð-Ð-à�?Š?˜7Ñ#Ô# xÒ/Ð/Ð/Ð/Ð/Ð/r'   c                 óº  — |                       ¦   «          i }|t          d¬¦  «        dœ}t          rû|                      d|¬¦  «        }t	          |j        j        ¦  «        }|rÃt          |t          ¦  «        r°t          t          |                     di ¦  «        ¦  «        }|                     d¦  «        }|                     d¦  «        d	k    sJ ‚|                     d
¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|€J ‚dS dS dS |                      d|¬¦  «        }t	          |j        j        ¦  «        }|rùt          |t          ¦  «        ræt          t          |                     di ¦  «        ¦  «        }|                     d¦  «        }|                     d¦  «        d	k    sJ ‚|                     d
¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|€J ‚dS dS dS )ú9Test creating collections with SPANN configuration formatr¥   rZ   ©Úspannrt   Útest_spann_configr¨   r˜   rt   r™   r_   rš   r�   rœ   r›   r»   NrÎ   r“   é@   Úsearch_nprobeé€   Úwrite_nprobe©r~   rE   r   r   r   r€   r�   r‚   rƒ   r   r   r„   r   ©ro   Úspann_configrW   rŠ   rª   Úhnsw_config_loadedr‹   Úspann_config_loadeds           r$   Útest_empty_spann_configurationrÙ   a  sÝ  € à
‡L‚L�N„N€Nð .0€LàÝ5¸!Ð<Ñ<Ô<ð-ð -€Fõ
 ð )"Ø×'Ò'Ø$Ø ð (ñ 
ô 
ˆõ @ØŒKÔ*ñ
ô 
ˆð ð 		"�Z¨µtÑ<Ô<ð 		"Ý!%Ý'¨×):Ò):¸6À2Ñ)FÔ)Fñ"ô "Ðð ×"Ò"Ð#7Ñ8Ô8ˆBØ%×)Ò)¨'Ñ2Ô2°dÒ:Ð:Ð:Ð:Ø%×)Ò)Ð*;Ñ<Ô<ÀÒCÐCÐCÐCØ%×)Ò)¨+Ñ6Ô6¸#Ò=Ð=Ð=Ð=Ø%×)Ò)¨/Ñ:Ô:¸bÒ@Ð@Ð@Ð@Ø�>�>�>ð		"ð 		"ð 		"ð 		"ð "�>à×'Ò'Ø$Ø ð (ñ 
ô 
ˆõ @ØŒKÔ*ñ
ô 
ˆð ð 	"�Z¨µtÑ<Ô<ð 	"Ý"&Ý(¨-×*;Ò*;¸GÀRÑ*HÔ*Hñ#ô #Ðð ×"Ò"Ð#7Ñ8Ô8ˆBØ&×*Ò*¨7Ñ3Ô3°tÒ;Ð;Ð;Ð;Ø&×*Ò*Ð+<Ñ=Ô=ÀÒDÐDÐDÐDØ&×*Ò*¨;Ñ7Ô7¸3Ò>Ð>Ð>Ð>Ø&×*Ò*¨?Ñ;Ô;¸rÒAÐAÐAÐAØ&×*Ò*¨?Ñ;Ô;¸sÒBÐBÐBÐBØ&×*Ò*¨>Ñ:Ô:¸cÒAÐAÐAÐAØ�>�>�>ð	"ð 	"ð 	"ð 	"ð "�>r'   c                 óÈ  — |                       ¦   «          dddddddœ}|t          d¬¦  «        dœ}t          rû|                      d	|¬
¦  «        }t	          |j        j        ¦  «        }|rÃt          |t          ¦  «        r°t          t          |                     di ¦  «        ¦  «        }|                     d¦  «        }|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|€J ‚dS dS dS |                      d	|¬
¦  «        }t	          |j        j        ¦  «        }|rùt          |t          ¦  «        ræt          t          |                     di ¦  «        ¦  «        }|                     d¦  «        }|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|€J ‚dS dS dS )rÌ   r’   r�   r”   r¢   r¥   )r™   rš   r›   rœ   rÑ   rÓ   rZ   rÍ   rÏ   r¨   r˜   rt   r™   rš   rœ   r›   r»   NrÎ   r“   rÑ   rÓ   rÔ   rÕ   s           r$   Útest_spann_configurationrÛ   ˜  sø  € à
‡L‚L�N„N€Nð ØØØØØð.ð .€Lð Ý5¸!Ð<Ñ<Ô<ð-ð -€Fõ
 ð )"Ø×'Ò'Ø$Ø ð (ñ 
ô 
ˆõ @ØŒKÔ*ñ
ô 
ˆð ð 		"�Z¨µtÑ<Ô<ð 		"Ý!%Ý'¨×):Ò):¸6À2Ñ)FÔ)Fñ"ô "Ðð ×"Ò"Ð#7Ñ8Ô8ˆBØ%×)Ò)¨'Ñ2Ô2°hÒ>Ð>Ð>Ð>Ø%×)Ò)Ð*;Ñ<Ô<ÀÒCÐCÐCÐCØ%×)Ò)¨+Ñ6Ô6¸#Ò=Ð=Ð=Ð=Ø%×)Ò)¨/Ñ:Ô:¸bÒ@Ð@Ð@Ð@Ø�>�>�>ð		"ð 		"ð 		"ð 		"ð "�>à×'Ò'Ø$Ø ð (ñ 
ô 
ˆõ @ØŒKÔ*ñ
ô 
ˆð ð 	"�Z¨µtÑ<Ô<ð 	"Ý"&Ý(¨-×*;Ò*;¸GÀRÑ*HÔ*Hñ#ô #Ðð ×"Ò"Ð#7Ñ8Ô8ˆBØ&×*Ò*¨7Ñ3Ô3°xÒ?Ð?Ð?Ð?Ø&×*Ò*Ð+<Ñ=Ô=ÀÒDÐDÐDÐDØ&×*Ò*¨;Ñ7Ô7¸3Ò>Ð>Ð>Ð>Ø&×*Ò*¨?Ñ;Ô;¸rÒAÐAÐAÐAØ&×*Ò*¨?Ñ;Ô;¸qÒ@Ð@Ð@Ð@Ø&×*Ò*¨>Ñ:Ô:¸bÒ@Ð@Ð@Ð@Ø�>�>�>ð	"ð 	"ð 	"ð 	"ð "�>r'   )Úreasonc                 ó  — |                       ¦   «         }|                     ¦   «          ddddddœ}|t          d¬¦  «        dœ}|                     d|¬	¦  «         |                       ¦   «         }|                     d¬
¦  «        }t          |j        j        ¦  «        }|rÞt          |t          ¦  «        rËt          t          |                     di ¦  «        ¦  «        }|                     d¦  «        }|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|€J ‚dS dS dS )z;Test SPANN configuration persistence across client restartsr’   r�   r”   r¥   )r™   rš   r›   rÑ   rÓ   rZ   rÍ   Útest_persist_spann_configr¨   r¼   rÎ   rt   r™   rš   r›   rÑ   rÓ   N)rÆ   r~   rE   r   r…   r   r€   r�   r‚   rƒ   r   r   r„   )rÃ   ro   rÖ   rW   rÇ   rŠ   rª   r‹   s           r$   Ú$test_spann_configuration_persistencerß   Ö  sÜ  € ð ×7Ò7Ñ9Ô9€FØ
‡L‚L�N„N€Nð ØØØØð.ð .€Lð Ý5¸!Ð<Ñ<Ô<ð-ð -€Fð
 ×ÒØ(Øð ñ ô ð ð
 ×8Ò8Ñ:Ô:€Gà×!Ò!Ø(ð "ñ ô €Dõ <ØŒÔ&ñô €Mð ð � Mµ4Ñ8Ô8ð ÝÕ4°m×6GÒ6GÈÐQSÑ6TÔ6TÑUÔUˆØ×ÒÐ3Ñ4Ô4ˆØ×Ò Ñ(Ô(¨HÒ4Ð4Ð4Ð4Ø×ÒÐ 1Ñ2Ô2°cÒ9Ð9Ð9Ð9Ø×Ò Ñ0Ô0°BÒ6Ð6Ð6Ð6Ø×Ò Ñ0Ô0°AÒ5Ð5Ð5Ð5Ø×Ò Ñ/Ô/°2Ò5Ð5Ð5Ð5Øˆ~ˆ~ˆ~ðð ð ð ð ˆ~r'   c                 óÞ   — |                       ¦   «          dddœ}dddœ}t          j        t          d¬¦  «        5  |                      d||d	œ¬
¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z@Test that HNSW and SPANN configurations cannot both be specifiedr’   r�   )r™   rš   r¥   )r™   rÑ   z&hnsw and spann cannot both be provided)ÚmatchÚtest_dual_config©r˜   rÎ   r¨   N)r~   r¯   r°   Ú
ValueErrorr   )ro   r    rÖ   s      r$   Ú'test_exclusive_hnsw_spann_configurationrå     sã   € à
‡L‚L�N„N€Nð Øð,ð ,€Kð
 Øð.ð .€Lõ 
Œ•zÐ)QÐ	RÑ	RÔ	Rð 
ð 
Ø× Ò Ø#à#Ø%ðð ð 	!ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   ºA"Á"A&Á)A&c                 ó  — |                       ¦   «          ddi}d|i}t          �r|                      d|¬¦  «        }t          |j        j        ¦  «        }|rÝt          |t          ¦  «        rÊt          t          | 
                    di ¦  «        ¦  «        }| 
                    d¦  «        dk    sJ ‚| 
                    d¦  «        dk    sJ ‚| 
                    d	¦  «        dk    sJ ‚| 
                    d
¦  «        dk    sJ ‚| 
                    d¦  «        }|€J ‚|                     ¦   «         dk    sJ ‚dS dS dS |                      d|¬¦  «        }t          |j        j        ¦  «        }|�rt          |t          ¦  «        �r t          t          | 
                    di ¦  «        ¦  «        }| 
                    d¦  «        dk    sJ ‚| 
                    d¦  «        dk    sJ ‚| 
                    d
¦  «        dk    sJ ‚| 
                    d	¦  «        dk    sJ ‚| 
                    d¦  «        dk    sJ ‚| 
                    d¦  «        dk    sJ ‚| 
                    d¦  «        }|€J ‚|                     ¦   «         dk    sJ ‚dS dS dS )z,Test the default values for SPANN parametersr™   r’   rÎ   Útest_spann_defaultsr¨   r˜   rš   r�   rœ   r›   r»   rt   Nrž   r“   rÑ   rÒ   rÓ   )r~   r   r   r   r€   r�   r‚   rƒ   r   r   r„   r@   r   rÕ   s           r$   Útest_spann_default_parametersrè     s	  € à
‡L‚L�N„N€Nð 	�ð.€Lð 	�ð-€Fõ ñ -*Ø×'Ò'Ø&Ø ð (ñ 
ô 
ˆõ @ØŒKÔ*ñ
ô 
ˆð ð 	*�Z¨µtÑ<Ô<ð 	*Ý!%Ý'¨×):Ò):¸6À2Ñ)FÔ)Fñ"ô "Ðð &×)Ò)¨'Ñ2Ô2°hÒ>Ð>Ð>Ð>Ø%×)Ò)Ð*;Ñ<Ô<ÀÒCÐCÐCÐCØ%×)Ò)¨+Ñ6Ô6¸#Ò=Ð=Ð=Ð=Ø%×)Ò)¨/Ñ:Ô:¸bÒ@Ð@Ð@Ð@à×"Ò"Ð#7Ñ8Ô8ˆBØ�>�>�>Ø—7’7‘9”9 	Ò)Ð)Ð)Ð)ð	*ð 	*ð 	*ð 	*ð *Ð)à×'Ò'Ø&Ø ð (ñ 
ô 
ˆõ @ØŒKÔ*ñ
ô 
ˆð ñ 	*�Z¨µtÑ<Ô<ñ 	*Ý"&Ý(¨-×*;Ò*;¸GÀRÑ*HÔ*Hñ#ô #Ðð '×*Ò*¨7Ñ3Ô3°xÒ?Ð?Ð?Ð?Ø&×*Ò*Ð+<Ñ=Ô=ÀÒDÐDÐDÐDØ&×*Ò*¨?Ñ;Ô;¸rÒAÐAÐAÐAØ&×*Ò*¨;Ñ7Ô7¸3Ò>Ð>Ð>Ð>Ø&×*Ò*¨?Ñ;Ô;¸sÒBÐBÐBÐBØ&×*Ò*¨>Ñ:Ô:¸cÒAÐAÐAÐAà×"Ò"Ð#7Ñ8Ô8ˆBØ�>�>�>Ø—7’7‘9”9 	Ò)Ð)Ð)Ð)ð	*ð 	*ð 	*ð 	*ð *Ð)r'   c                 óL  — |                       ¦   «          d}t          t          j        |¦  «        ¦  «        }i }|                     d¦  «        �+t          t          |                     d¦  «        ¦  «        |d<   |                     d¦  «        �|                     d¦  «        |d<   t          rû|                      d|¬¦  «        }t          |j	        j
        ¦  «        }|rÃt          |t          ¦  «        r°t          t          |                     di ¦  «        ¦  «        }|                     d¦  «        }|                     d¦  «        d	k    sJ ‚|                     d
¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|€J ‚dS dS dS |                      d|¬¦  «        }t          |j	        j
        ¦  «        }|rÅt          |t          ¦  «        r²t          t          |                     di ¦  «        ¦  «        }|                     d¦  «        d	k    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d
¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚dS dS dS )zCTest serializing and deserializing SPANN configuration to/from JSONaw  
    {
        "spann": {
            "space": "cosine",
            "search_nprobe": 7,
            "write_nprobe": 15,
            "ef_construction": 200,
            "ef_search": 150
        },
        "embedding_function": {
            "type": "known",
            "name": "custom_ef",
            "config": {
                "dim": 10
            }
        }
    }
    rÎ   Nrt   Útest_spann_jsonr¨   r˜   r™   r’   rš   r�   rœ   r›   r»   rÑ   é   rÓ   é   r“   é–   )r~   r   ÚjsonÚloadsr„   r   r   r   r   r€   r�   r‚   rƒ   r   )	ro   Úconfig_jsonÚcollection_configÚcreate_configrŠ   rª   r×   r‹   rØ   s	            r$   Útest_spann_json_serializationró   X  s  € à
‡L‚L�N„N€Nð€Kõ( @ÅÄ
È;Ñ@WÔ@WÑXÔXÐð 46€MØ×Ò˜WÑ%Ô%Ð1Ý!%Ý$Ð&7×&;Ò&;¸GÑ&DÔ&Dñ"
ô "
ˆ�gÑð ×ÒÐ1Ñ2Ô2Ð>Ø.?×.CÒ.CØ ñ/
ô /
ˆÐ*Ñ+õ ð '?Ø×'Ò'Ø"Ø'ð (ñ 
ô 
ˆõ @ØŒKÔ*ñ
ô 
ˆð ð 		"�Z¨µtÑ<Ô<ð 		"Ý!%Ý'¨×):Ò):¸6À2Ñ)FÔ)Fñ"ô "Ðð ×"Ò"Ð#7Ñ8Ô8ˆBØ%×)Ò)¨'Ñ2Ô2°hÒ>Ð>Ð>Ð>Ø%×)Ò)Ð*;Ñ<Ô<ÀÒCÐCÐCÐCØ%×)Ò)¨+Ñ6Ô6¸#Ò=Ð=Ð=Ð=Ø%×)Ò)¨/Ñ:Ô:¸bÒ@Ð@Ð@Ð@Ø�>�>�>ð		"ð 		"ð 		"ð 		"ð "�>ð ×'Ò'Ø"Ø'ð (ñ 
ô 
ˆõ @ØŒKÔ*ñ
ô 
ˆð ð 	?�Z¨µtÑ<Ô<ð 	?Ý"&Ý(¨-×*;Ò*;¸GÀRÑ*HÔ*Hñ#ô #Ðð '×*Ò*¨7Ñ3Ô3°xÒ?Ð?Ð?Ð?Ø&×*Ò*¨?Ñ;Ô;¸qÒ@Ð@Ð@Ð@Ø&×*Ò*¨>Ñ:Ô:¸bÒ@Ð@Ð@Ð@Ø&×*Ò*Ð+<Ñ=Ô=ÀÒDÐDÐDÐDØ&×*Ò*¨;Ñ7Ô7¸3Ò>Ð>Ð>Ð>ð	?ð 	?ð 	?ð 	?ð ?Ð>r'   c                 óH  — |                       ¦   «          ddddœ}|                      dd|i¬¦  «        }dd	d
œ}d|i}|                     |¬¦  «         |j        }|r‘t	          |t
          ¦  «        r||                     di ¦  «        }t	          |t
          ¦  «        rQ|                     d¦  «        dk    sJ ‚|                     d¦  «        d	k    sJ ‚|                     d¦  «        dk    sJ ‚|                      d¦  «        }|j        }|r‘t	          |t
          ¦  «        r~|                     di ¦  «        }t	          |t
          ¦  «        rU|                     d¦  «        dk    sJ ‚|                     d¦  «        d	k    sJ ‚|                     d¦  «        dk    sJ ‚dS dS dS dS )z-Test updating SPANN collection configurationsr�   r”   r’   )rœ   rÑ   r™   Útest_spann_updatesrÎ   r¨   rí   r¢   )rœ   rÑ   rº   rœ   rÑ   r™   Nr½   )ro   Úinitial_spannrŠ   Úupdate_spannrÁ   rª   rÖ   s          r$   Ú test_configuration_spann_updatesrø   ¨  s  € ð ‡L‚L�N„N€Nð ØØð/ð /€Mð
 ×#Ò#Ø!Ø Ð.ð $ñ ô €Dð Øð.ð .€Lð
 	�ð4€Mð 	‡K‚K˜m€KÑ,Ô,Ð,ð Ô+€MØð 9� Mµ4Ñ8Ô8ð 9Ø$×(Ò(¨°"Ñ5Ô5ˆÝ�l¥DÑ)Ô)ð 	9Ø×#Ò# KÑ0Ô0°CÒ7Ð7Ð7Ð7Ø×#Ò# OÑ4Ô4¸Ò:Ð:Ð:Ð:à×#Ò# GÑ,Ô,°Ò8Ð8Ð8Ð8à× Ò Ð!5Ñ6Ô6€DØÔ+€MØð 9� Mµ4Ñ8Ô8ð 9Ø$×(Ò(¨°"Ñ5Ô5ˆÝ�l¥DÑ)Ô)ð 	9Ø×#Ò# KÑ0Ô0°CÒ7Ð7Ð7Ð7Ø×#Ò# OÑ4Ô4¸Ò:Ð:Ð:Ð:Ø×#Ò# GÑ,Ô,°Ò8Ð8Ð8Ð8ð9ð 9ð 9ð 9ð	9ð 	9ð 9Ð8r'   c                 ó¾  — |                       ¦   «          dddddddœ}|                      dd	|i¬
¦  «        }t          t          dd¬¦  «        ¬¦  «        }|                     |¬¦  «         |j        }|rât          |t          ¦  «        rÍ|                     d	i ¦  «        }t          |t          ¦  «        r¢|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|  	                    d¦  «        }|j        }|rât          |t          ¦  «        rÏ|                     d	i ¦  «        }t          |t          ¦  «        r¦|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚dS dS dS dS )z;Test updating SPANN configuration from JSON and applying itr�   r”   r’   rí   é   r¢   )rœ   rÑ   r™   rš   r›   rÓ   Útest_spann_json_updaterÎ   r¨   rì   r“   ©rÑ   rœ   )rÎ   rº   rœ   rÑ   r™   rš   r›   rÓ   N)
r~   r   r   r   r¾   r�   r‚   rƒ   r„   r…   )ro   rö   rŠ   rÁ   rª   rÖ   s         r$   Útest_spann_update_from_jsonrý   Ö  sâ  € ð ‡L‚L�N„N€Nð ØØØØØð/ð /€Mð ×#Ò#Ø%Ø Ð.ð $ñ ô €Dõ
 2Ý&ØØð
ñ 
ô 
ðñ ô €Mð 	‡K‚K˜m€KÑ,Ô,Ð,ð Ô+€MØð :� Mµ4Ñ8Ô8ð :Ø$×(Ò(¨°"Ñ5Ô5ˆÝ�l¥DÑ)Ô)ð 		:à×#Ò# KÑ0Ô0°CÒ7Ð7Ð7Ð7Ø×#Ò# OÑ4Ô4¸Ò:Ð:Ð:Ð:ð  ×#Ò# GÑ,Ô,°Ò8Ð8Ð8Ð8Ø×#Ò#Ð$5Ñ6Ô6¸#Ò=Ð=Ð=Ð=Ø×#Ò# OÑ4Ô4¸Ò:Ð:Ð:Ð:Ø×#Ò# NÑ3Ô3°rÒ9Ð9Ð9Ð9à× Ò Ð!9Ñ:Ô:€DØÔ+€MØð :� Mµ4Ñ8Ô8ð :Ø$×(Ò(¨°"Ñ5Ô5ˆÝ�l¥DÑ)Ô)ð 		:à×#Ò# KÑ0Ô0°CÒ7Ð7Ð7Ð7Ø×#Ò# OÑ4Ô4¸Ò:Ð:Ð:Ð:ð  ×#Ò# GÑ,Ô,°Ò8Ð8Ð8Ð8Ø×#Ò#Ð$5Ñ6Ô6¸#Ò=Ð=Ð=Ð=Ø×#Ò# OÑ4Ô4¸Ò:Ð:Ð:Ð:Ø×#Ò# NÑ3Ô3°rÒ9Ð9Ð9Ð9ð:ð :ð :ð :ð		:ð 		:ð :Ð9r'   c                  ó†  — dddddddœ} dd	d
œ}t          | |¦  «        }|                     d¦  «        dk    sJ ‚|                     d¦  «        d	k    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚dS )z8Test the overwrite_spann_configuration function directlyr’   r”   r¢   rí   r�   r»   )r™   rÑ   rÓ   rš   rœ   r›   rì   r“   rü   rÑ   rœ   r™   rÓ   rš   r›   N)r   r„   )Úoriginal_configrÁ   Úupdated_configs      r$   Ú"test_overwrite_spann_configurationr    s  € ð ØØØØØð+ð +€Oð Øð/ð /€Mõ 3°?ÀMÑRÔR€Nð ×Ò˜oÑ.Ô.°"Ò4Ð4Ð4Ð4Ø×Ò˜kÑ*Ô*¨cÒ1Ð1Ð1Ð1ð ×Ò˜gÑ&Ô&¨(Ò2Ð2Ð2Ð2Ø×Ò˜nÑ-Ô-°Ò3Ð3Ð3Ð3Ø×ÒÐ/Ñ0Ô0°CÒ7Ð7Ð7Ð7Ø×Ò˜oÑ.Ô.°"Ò4Ð4Ð4Ð4Ð4Ð4r'   c                 ó  — |                       ¦   «          dddœ}|                      dd|i¬¦  «        }ddi}d	d
i}||dœ}t          j        t          ¦  «        5  |                     |¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zMTest that HNSW and SPANN configurations cannot both be specified in an updater”   r’   )rœ   r™   Útest_exclusive_updater˜   r¨   rœ   r¢   rÑ   rì   rã   rº   N)r~   r   r¯   r°   rä   r¾   )ro   r¿   rŠ   rÀ   r÷   rÁ   s         r$   Ú.test_exclusive_update_hnsw_spann_configurationr  2  s  € ð ‡L‚L�N„N€Nð Øð-ð -€Lð ×#Ò#Ø$Ø˜|Ð,ð $ñ ô €Dð 	�Rð,€Kð 	˜ð.€Lð Øð4ð 4€Mõ 
Œ•zÑ	"Ô	"ð 1ð 1Ø�Š -ˆÑ0Ô0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð 1ð 1s   ÁA=Á=BÂBc                 óx  — |                       ¦   «          |                      d¬¦  «        }|€J ‚|j        €J ‚t          |j        ¦  «        }|€J ‚|                     d¦  «        }|€J ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d	¦  «        d
k    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        �J ‚|                     d¦  «        }|€J ‚|                     ¦   «         dk    sJ ‚dS )z.Test creating a collection with default valuesÚtest_default_creationr¼   Nr˜   r™   r_   rš   r�   r›   r»   rœ   Úsync_thresholdéè  rÎ   rt   rž   )r~   r   r�   r   r„   r@   )ro   rŠ   rW   r    r‹   s        r$   Ú test_default_collection_creationr	  R  s_  € à
‡L‚L�N„N€Nà×#Ò#Ð)@Ð#ÑAÔA€DØÐÐÐàÔ"Ð.Ð.Ð.Ý4°TÔ5LÑMÔM€FØÐÐÐØ—*’*˜VÑ$Ô$€KØÐ"Ð"Ð"Ø�?Š?˜7Ñ#Ô# tÒ+Ð+Ð+Ð+Ø�?Š?Ð,Ñ-Ô-°Ò4Ð4Ð4Ð4Ø�?Š?˜?Ñ+Ô+¨rÒ1Ð1Ð1Ð1Ø�?Š?˜;Ñ'Ô'¨3Ò.Ð.Ð.Ð.à�?Š?Ð+Ñ,Ô,°Ò4Ð4Ð4Ð4à�:Š:�gÑÔÐ&Ð&Ð&Ø	�ŠÐ(Ñ	)Ô	)€BØˆ>ˆ>ˆ>Ø�7Š7‰9Œ9˜	Ò!Ð!Ð!Ð!Ð!Ð!r'   c                  óª   — dddddddœddd	i d
œdœ} t          j        t          ¦  «        5  t          | ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z9Test that on an invalid configuration, an error is raisedr_   r�   r»   g333333ó?r  )r™   rš   rœ   r›   Úresize_factorr  NrR   Úknown©r@   ÚtyperW   ©r˜   rÎ   rt   )r¯   r°   rä   r   )Úinvalid_configs    r$   Útest_invalid_configurationr  k  sÜ   € ð Ø"ØØØ Ø"ð
ð 
ð àØØð
ð 
ð&ð &€Nõ  
Œ•zÑ	"Ô	"ð @ð @Ý/°Ñ?Ô?Ð?ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @ð @ð @s   «AÁAÁAc           
      ó(  — |                       ¦   «          |                      d¬¦  «        }dddi dœi}t          |j        d|ddd|j        |j        ¬	¦  «        }|€J ‚|j        dk    sJ ‚|j        |k    sJ ‚||_        t          j
        t          ¦  «        5  |                     d
gdg¬¦  «         ddd¦  «         n# 1 swxY w Y   t          j
        t          ¦  «        5  |                     dgd¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z¯
    When an invalid confiugration is used, collection create, get, list_collections should all pass
    Only when trying to use the collection should an error be reaised
    Útest_invalid_configr¼   rt   rR   r  r  Útest_invalid_config_collectionN©Úidr@   r�   Úserialized_schemar—   Ú	dimensionÚtenantÚdatabaseru   rv   rw   rz   r{   )r~   r   ÚCollectionModelr  r  r  r@   r�   r€   r¯   r°   rä   r†   r‡   )ro   rŠ   Úinvalid_config_jsonÚinvalid_collections       r$   Ú/test_collection_load_with_invalid_configurationr  �  sË  € ð
 ‡L‚L�N„N€Nð ×#Ò#Ð)>Ð#Ñ?Ô?€Dð 	ØØØð
ð 
ðÐõ )ØŒ7Ø-Ø.ØØØØŒ{Ø”ð	ñ 	ô 	Ðð Ð)Ð)Ð)ØÔ"Ð&FÒFÐFÐFÐFØÔ0Ð4GÒGÐGÐGÐGà$€D„Kå	Œ•zÑ	"Ô	"ð 0ð 0Ø�Š�c�U v hˆÑ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0õ 
Œ•zÑ	"Ô	"ð 6ð 6Ø�
Š
 ˜x°1ˆ
Ñ5Ô5Ð5ð6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6ð 6ð 6s$   ÂB=Â=CÃCÃ!DÄDÄDc                 ó  — |                       ¦   «          dt          d¬¦  «        i}|                      d|¬¦  «        }|j        }|j        }d|v sJ ‚|                     d¦  «        }|                     d¦  «        }|€J ‚|€J ‚|                     d¦  «        dk    sJ ‚|                     d	¦  «        d
k    sJ ‚|                     ¦   «         d
k    sJ ‚|                     ¦   «         |                     d¦  «        k    sJ ‚dS )zHTest that configuration_json and configuration properties are consistentrt   é   rZ   Útest_config_consistencyr¨   Nr  r  r@   rR   rW   )r~   rE   r   r�   r©   r„   r@   rU   )ro   rW   rŠ   rð   Úconfig_processedÚef_jsonÚef_processeds          r$   Ú=test_configuration_json_vs_configuration_property_consistencyr%  ®  s7  € ð ‡L‚L�N„N€Nð 	Õ5¸!Ð<Ñ<Ô<ð-€Fð ×#Ò#Ø&Øð $ñ ô €Dð Ô)€KØÔ)Ðà ;Ð.Ð.Ð.Ð.ð �oŠoÐ2Ñ3Ô3€GØ#×'Ò'Ð(<Ñ=Ô=€LØÐÐÐØÐ#Ð#Ð#Ø�;Š;�vÑÔ 'Ò)Ð)Ð)Ð)Ø�;Š;�vÑÔ +Ò-Ð-Ð-Ð-Ø×ÒÑÔ +Ò-Ð-Ð-Ð-Ø×"Ò"Ñ$Ô$¨¯ª°HÑ(=Ô(=Ò=Ð=Ð=Ð=Ð=Ð=r'   c                 ó†  — |                       ¦   «          |                      d¬¦  «        }|j        }|j        }d|v sJ ‚|                     d¦  «        }|                     d¦  «        }|€J ‚|€J ‚|                     d¦  «        dk    sJ ‚|                     d¦  «        dk    sJ ‚|                     ¦   «         dk    sJ ‚dS )	zPTest that default configuration_json and configuration properties are consistentÚtest_default_config_consistencyr¼   rt   Nr  r  r@   rž   )r~   r   r�   r©   r„   r@   )ro   rŠ   rð   r"  r#  r$  s         r$   ÚEtest_default_configuration_json_vs_configuration_property_consistencyr(  Î  së   € ð ‡L‚L�N„N€Nð ×#Ò#Ð)JÐ#ÑKÔK€Dð Ô)€KØÔ)Ðà ;Ð.Ð.Ð.Ð.ð �oŠoÐ2Ñ3Ô3€GØ#×'Ò'Ð(<Ñ=Ô=€LØÐÐÐØÐ#Ð#Ð#Ø�;Š;�vÑÔ 'Ò)Ð)Ð)Ð)Ø�;Š;�vÑÔ )Ò+Ð+Ð+Ð+Ø×ÒÑÔ )Ò+Ð+Ð+Ð+Ð+Ð+r'   c                 ó6  — |                       ¦   «          |                      d¬¦  «        }dddi dœiddddid	œid
did
diddidœg}t          |¦  «        D �]Á\  }}t          |j        d|› �|ddd|j        |j        ¬¦  «        }||_        |j        |j        k    sJ ‚|j        d|› �k    sJ ‚|j	        |k    sJ ‚t          j        t          ¦  «        5  |j         ddd¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  |                     dgdg¬¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  |                     dgd¬¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  |                     dgdg¬¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  |                     dg¦  «         ddd¦  «         n# 1 swxY w Y   �ŒÃdS )z§
    Test that invalid configurations allow list_collections, get_collection to succeed,
    but fail when _embed is called (during add, query, upsert operations)
    Útest_invalid_operationsr¼   rt   Únonexistent_efr  r  rG   rF   )r  rW   r™   r_   r’   r  Úlegacyr  Útest_invalid_config_Nr  ru   rv   rw   rz   r{   )r~   r   Ú	enumerater  r  r  r  r€   r@   r�   r¯   r°   rä   r©   r†   r‡   ÚupsertÚ_embed)ro   rŠ   Úinvalid_configsÚir  Úinvalid_collection_models         r$   Ú9test_invalid_configuration_operations_succeed_until_embedr4  ç  s°  € ð ‡L‚L�N„N€Nð ×#Ò#Ð)BÐ#ÑCÔC€Dð !Ø(ØØð#ð #ð	
ð !Øà  !˜*ð#ð #ð	
ð ˜d�OØ˜xÐ(Ø#)¨8Ð"4ð	
ð 	
ð%-€Oõ2 ' Ñ7Ô7ð !"ñ !"Ñˆˆ>å#2ØŒwØ+¨Ð+Ð+Ø-Ø"ØØØ”;Ø”]ð	$
ñ 	$
ô 	$
Ð ð /ˆŒð ŒwÐ2Ô5Ò5Ð5Ð5Ð5ØŒyÐ6°1Ð6Ð6Ò6Ð6Ð6Ð6ØÔ&¨.Ò8Ð8Ð8Ð8åŒ]�:Ñ&Ô&ð 	ð 	ØÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ Œ]�:Ñ&Ô&ð 	4ð 	4Ø�HŠH˜#˜¨6¨(ˆHÑ3Ô3Ð3ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4õ Œ]�:Ñ&Ô&ð 	:ð 	:Ø�JŠJ F 8°qˆJÑ9Ô9Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:õ Œ]�:Ñ&Ô&ð 	7ð 	7Ø�KŠK˜S˜E¨f¨XˆKÑ6Ô6Ð6ð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7õ Œ]�:Ñ&Ô&ð 	"ð 	"Ø�KŠK˜˜Ñ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ùðA!"ð !"sZ   ÃC(Ã(C,	Ã/C,	ÄD2Ä2D6	Ä9D6	ÅE;Å;E?	ÆE?	ÆGÇG		ÇG		Ç)HÈH	ÈH	c                 ó>  — |                       ¦   «          |                      ddt          d¬¦  «        i¬¦  «        }dddddid	œi}||j        _        |j        dk    sJ ‚|j        €J ‚|j        |k    sJ ‚|j        €J ‚|j        €J ‚t          j
        t          ¦  «        5  |                     dgdg¬¦  «         d
d
d
¦  «         n# 1 swxY w Y   t          j
        t          ¦  «        5  |                     dgd¬¦  «         d
d
d
¦  «         n# 1 swxY w Y   t          j
        t          ¦  «        5  |                     dgdg¬¦  «         d
d
d
¦  «         n# 1 swxY w Y   t          j
        t          ¦  «        5  |j        }d
d
d
¦  «         d
S # 1 swxY w Y   d
S )zv
    Test that get_collection works even with invalid configurations,
    but operations that require _embed fail
    Útest_get_invalidrt   rg   rZ   r¨   Únonexistent_functionr  rG   r  Nrv   ztest docrw   rz   r{   )r~   r   rE   r€   r�   r@   r  r  r  r¯   r°   rä   r†   r‡   r/  r©   )ro   Ú
valid_collr  Ú_s       r$   Ú.test_get_collection_with_invalid_configurationr:  2  sà  € ð
 ‡L‚L�N„N€Nð ×)Ò)ØØ+Õ-DÈÐ-KÑ-KÔ-KÐLð *ñ ô €Jð 	Ø*ØØ˜a�jð
ð 
ð€Nð ,:€JÔÔ(ð Œ?Ð0Ò0Ð0Ð0Ð0ØŒ=Ð$Ð$Ð$ØÔ(¨NÒ:Ð:Ð:Ð:ØÔÐ(Ð(Ð(ØÔÐ*Ð*Ð*õ 
Œ•zÑ	"Ô	"ð =ð =Ø�Š˜F˜8°
¨|ˆÑ<Ô<Ð<ð=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =õ 
Œ•zÑ	"Ô	"ð <ð <Ø×Ò f X¸ÐÑ;Ô;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <õ 
Œ•zÑ	"Ô	"ð @ð @Ø×Ò˜v˜h°:°,ÐÑ?Ô?Ð?ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @õ 
Œ•zÑ	"Ô	"ð %ð %ØÔ$ˆð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð %ð %sH   Â CÃC
ÃC
Ã*DÄDÄDÄ3EÅEÅ EÅ=FÆFÆFc                 óö  — |                       ¦   «          |                      dt          d¬¦  «        ¬¦  «        }|€J ‚|j                             d¦  «        }|€J ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         ddik    sJ ‚|                      dt          d¬¦  «        ¬¦  «        }|€J ‚|j                             d¦  «        }|€J ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         ddik    sJ ‚|                      d¬	¦  «        }|j                             d¦  «        }|€J ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         ddik    sJ ‚dS )
z0Test creating a collection with no EF in config.Útest_no_configrF   rZ   rs   Nrt   rR   rG   r¼   ©	r~   r   rE   r©   r„   r@   rU   Úget_or_create_collectionr…   ©ro   rŠ   r‹   s      r$   Útest_ef_no_configr@  b  s   € à
‡L‚L�N„N€NØ×#Ò#ØÕ2IÈaÐ2PÑ2PÔ2Pð $ñ ô €Dð ÐÐÐØ	Ô	×	Ò	Ð 4Ñ	5Ô	5€BØˆ>ˆ>ˆ>Ø�7Š7‰9Œ9˜Ò#Ð#Ð#Ð#Ø�=Š=‰?Œ?˜u a˜jÒ(Ð(Ð(Ð(à×*Ò*ØÕ2IÈaÐ2PÑ2PÔ2Pð +ñ ô €Dð ÐÐÐØ	Ô	×	Ò	Ð 4Ñ	5Ô	5€BØˆ>ˆ>ˆ>Ø�7Š7‰9Œ9˜Ò#Ð#Ð#Ð#Ø�=Š=‰?Œ?˜u a˜jÒ(Ð(Ð(Ð(à× Ò Ð&6Ð Ñ7Ô7€DØ	Ô	×	Ò	Ð 4Ñ	5Ô	5€BØˆ>ˆ>ˆ>Ø�7Š7‰9Œ9˜Ò#Ð#Ð#Ð#Ø�=Š=‰?Œ?˜u a˜jÒ(Ð(Ð(Ð(Ð(Ð(r'   c                 ó
  — |                       ¦   «          |                      dt          d¬¦  «        dddii¬¦  «        }|€J ‚|j                             d	¦  «        }|€J ‚|                     ¦   «         d
k    sJ ‚|                     ¦   «         ddik    sJ ‚|                      dt          d¬¦  «        dddii¬¦  «        }|€J ‚|j                             d	¦  «        }|€J ‚|                     ¦   «         d
k    sJ ‚|                     ¦   «         ddik    sJ ‚|                      d¬¦  «        }|j                             d	¦  «        }|€J ‚|                     ¦   «         d
k    sJ ‚|                     ¦   «         ddik    sJ ‚dS )zATest creating a collection with EF in parameter, no EF in config.Ú test_ef_with_config_exists_no_efrF   rZ   r˜   r™   r’   ©r@   rt   r©   Nrt   rR   rG   r¼   r=  r?  s      r$   rB  rB  ~  sº  € à
‡L‚L�N„N€NØ×#Ò#Ø/Ý2°qÐ9Ñ9Ô9Ø ¨Ð2Ð3ð $ñ ô €Dð
 ÐÐÐØ	Ô	×	Ò	Ð 4Ñ	5Ô	5€BØˆ>ˆ>ˆ>Ø�7Š7‰9Œ9˜Ò#Ð#Ð#Ð#Ø�=Š=‰?Œ?˜u a˜jÒ(Ð(Ð(Ð(à×*Ò*Ø/Ý2°qÐ9Ñ9Ô9Ø ¨Ð2Ð3ð +ñ ô €Dð
 ÐÐÐØ	Ô	×	Ò	Ð 4Ñ	5Ô	5€BØˆ>ˆ>ˆ>Ø�7Š7‰9Œ9˜Ò#Ð#Ð#Ð#Ø�=Š=‰?Œ?˜u a˜jÒ(Ð(Ð(Ð(à× Ò Ð&HÐ ÑIÔI€DØ	Ô	×	Ò	Ð 4Ñ	5Ô	5€BØˆ>ˆ>ˆ>Ø�7Š7‰9Œ9˜Ò#Ð#Ð#Ð#Ø�=Š=‰?Œ?˜u a˜jÒ(Ð(Ð(Ð(Ð(Ð(r'   c                 óF  — |                       ¦   «          |                      dt          d¬¦  «        ddit          d¬¦  «        dœ¬¦  «        }|€J ‚|j                             d	¦  «        }|€J ‚|                     ¦   «         d
k    sJ ‚|                     ¦   «         ddik    sJ ‚|                      dt          d¬¦  «        ddit          d¬¦  «        dœ¬¦  «        }|€J ‚|j                             d	¦  «        }|€J ‚|                     ¦   «         d
k    sJ ‚|                     ¦   «         ddik    sJ ‚|                      d¬¦  «        }|j                             d	¦  «        }|€J ‚|                     ¦   «         d
k    sJ ‚|                     ¦   «         ddik    sJ ‚dS )zQTest creating a collection with EF in parameter, EF in config. They are the same.Ú"test_ef_with_config_exists_with_efrF   rZ   r™   r’   r¦   rC  Nrt   rR   rG   r¼   r=  r?  s      r$   Ú(test_ef_with_config_exists_with_ef_validrF  ž  sà  € à
‡L‚L�N„N€NØ×#Ò#Ø1Ý2°qÐ9Ñ9Ô9à˜hÐ'Ý"9¸aÐ"@Ñ"@Ô"@ð
ð 
ð $ñ ô €Dð ÐÐÐØ	Ô	×	Ò	Ð 4Ñ	5Ô	5€BØˆ>ˆ>ˆ>Ø�7Š7‰9Œ9˜Ò#Ð#Ð#Ð#Ø�=Š=‰?Œ?˜u a˜jÒ(Ð(Ð(Ð(à×*Ò*Ø1Ý2°qÐ9Ñ9Ô9à˜hÐ'Ý"9¸aÐ"@Ñ"@Ô"@ð
ð 
ð +ñ ô €Dð ÐÐÐØ	Ô	×	Ò	Ð 4Ñ	5Ô	5€BØˆ>ˆ>ˆ>Ø�7Š7‰9Œ9˜Ò#Ð#Ð#Ð#Ø�=Š=‰?Œ?˜u a˜jÒ(Ð(Ð(Ð(à× Ò Ð&JÐ ÑKÔK€DØ	Ô	×	Ò	Ð 4Ñ	5Ô	5€BØˆ>ˆ>ˆ>Ø�7Š7‰9Œ9˜Ò#Ð#Ð#Ð#Ø�=Š=‰?Œ?˜u a˜jÒ(Ð(Ð(Ð(Ð(Ð(r'   c           	      ó  — |                       ¦   «          t          j        t          ¦  «        5  |                      dt          d¬¦  «        ddit          d¬¦  «        dœ¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )	zRTest creating a collection with EF in parameter, EF in config. They are different.rE  rF   rZ   r™   r’   r¦   rC  N)r~   r¯   r°   rä   r   rE   rf   ©ro   s    r$   Ú1test_create_ef_with_config_exists_with_ef_invalidrI  Ä  sÑ   € à
‡L‚L�N„N€NÝ	Œ•zÑ	"Ô	"ð 
ð 
Ø× Ò Ø5Ý6¸1Ð=Ñ=Ô=à  (Ð+Ý&>À1Ð&EÑ&EÔ&Eðð ð 	!ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
ó   ®:A5Á5A9Á<A9c           	      ó  — |                       ¦   «          t          j        t          ¦  «        5  |                      dt          d¬¦  «        ddit          d¬¦  «        dœ¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )	zJTest get_or_create with EF in parameter, EF in config. They are different.rE  rF   rZ   r™   r’   r¦   rC  N)r~   r¯   r°   rä   r>  rE   rf   rH  s    r$   Ú8test_get_or_create_ef_with_config_exists_with_ef_invalidrL  Ò  sÑ   € à
‡L‚L�N„N€NÝ	Œ•zÑ	"Ô	"ð 
ð 
Ø×'Ò'Ø5Ý6¸1Ð=Ñ=Ô=à  (Ð+Ý&>À1Ð&EÑ&EÔ&Eðð ð 	(ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
rJ  c                 ó0  — |                       ¦   «          |                      dddit          d¬¦  «        dœ¬¦  «         t          j        t
          ¦  «        5  |                      dt          d¬¦  «        ¬¦  «         d	d	d	¦  «         d	S # 1 swxY w Y   d	S )
zKTest get_collection with EF in parameter, EF in config. They are different.rE  r™   r’   rF   rZ   r¦   r¨   rs   N)r~   r   rf   r¯   r°   rä   r…   rE   rH  s    r$   Ú9test_get_collection_ef_with_config_exists_with_ef_invalidrN  à  sõ   € ð ‡L‚L�N„N€NØ
×ÒØ1à˜hÐ'Ý":¸qÐ"AÑ"AÔ"Að
ð 
ð ñ ô ð õ 
Œ•zÑ	"Ô	"ð 
ð 
Ø×ÒØ5Ý6¸1Ð=Ñ=Ô=ð 	ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   Á&BÂBÂBc           	      ó¤  — |                       ¦   «          |                      dt          d¬¦  «        ¬¦  «        }|€J ‚|j                             d¦  «        }|€J ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         ddik    sJ ‚t          j        t          ¦  «        5  |  
                    dt          d¬¦  «        dt          d¬¦  «        i¬	¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  |  
                    dt          d¬¦  «        ¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )
zæ
    After creating a collection with an embedding function,
    get_or_create should raise an error before and after retrieval, if they had provided
    a different embedding function or if it differs from the persisted one.
    Ú'test_get_or_create_after_create_with_efrF   rZ   rs   Nrt   rR   rG   rC  )r~   r   rE   r©   r„   r@   rU   r¯   r°   rä   r>  rf   r?  s      r$   rP  rP  ó  së  € ð ‡L‚L�N„N€NØ×#Ò#Ø6Ý2°qÐ9Ñ9Ô9ð $ñ ô €Dð ÐÐÐØ	Ô	×	Ò	Ð 4Ñ	5Ô	5€BØˆ>ˆ>ˆ>Ø�7Š7‰9Œ9˜Ò#Ð#Ð#Ð#Ø�=Š=‰?Œ?˜u a˜jÒ(Ð(Ð(Ð(å	Œ•zÑ	"Ô	"ð 
ð 
Ø×'Ò'Ø:Ý7¸AÐ>Ñ>Ô>Ø/Õ1HÈQÐ1OÑ1OÔ1OÐPð 	(ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
õ 
Œ•zÑ	"Ô	"ð 
ð 
Ø×'Ò'Ø:Ý7¸AÐ>Ñ>Ô>ð 	(ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s$   Â+7C.Ã.C2Ã5C2Ä&EÅE	ÅE	c                   ó¼   — e Zd Zddedefd„Zdedefd„Ze	defd„¦   «         Z
deeef         fd	„Ze	d
eeef         dd fd„¦   «         Zdefd„Zdee         fd„ZdS )Ú#DefaultSpaceCustomEmbeddingFunctionrF   Ú
model_namerG   c                 ó"   — || _         || _        d S r    )rJ   Ú_model_name)r#   rS  rG   s      r$   r%   z,DefaultSpaceCustomEmbeddingFunction.__init__  s   € ØˆŒ	Ø%ˆÔÐÐr'   r(   r   c                 ó|   — t          t          t          j        dg| j        z  gt          j        ¬¦  «        ¦  «        S rN   rO   r3   s     r$   r4   z,DefaultSpaceCustomEmbeddingFunction.__call__  rP   r'   c                  ó   — dS )NÚdefault_space_custom_efr!   r!   r'   r$   r@   z(DefaultSpaceCustomEmbeddingFunction.name  s   € à(Ð(r'   c                 ó    — | j         | j        dœS )N©rS  rG   )rU  rJ   r"   s    r$   rU   z.DefaultSpaceCustomEmbeddingFunction.get_config  s   € Ø"Ô.°t´yÐAÐAÐAr'   rW   c                 ó<   — t          | d         | d         ¬¦  «        S )NrS  rG   rZ  )rR  r[   s    r$   r\   z5DefaultSpaceCustomEmbeddingFunction.build_from_config"  s)   € õ 3Ø˜lÔ+°¸´ð
ñ 
ô 
ð 	
r'   c                 óT   — | j         dk    rdS | j         dk    rdS | j         dk    rdS dS )NÚi_want_cosiner’   Ú	i_want_l2r_   Ú	i_want_ipÚip©rU  r"   s    r$   r`   z1DefaultSpaceCustomEmbeddingFunction.default_space*  s@   € ØÔ˜Ò.Ð.Ø�8ØÔ Ò,Ð,Ø�4ØÔ Ò,Ð,Ø�4à�8r'   c                 ó|   — | j         dk    rdgS | j         dk    rdgS | j         dk    rdgS | j         dk    rg d¢S g d¢S )	Nr]  r’   r^  r_   r_  r`  Úi_want_anything©r’   r_   r`  ra  r"   s    r$   Úsupported_spacesz4DefaultSpaceCustomEmbeddingFunction.supported_spaces4  si   € ØÔ˜Ò.Ð.Ø�:ÐØÔ Ò,Ð,Ø�6ˆMØÔ Ò,Ð,Ø�6ˆMØÔÐ!2Ò2Ð2Ø)Ð)Ð)Ð)à)Ð)Ð)Ð)r'   Nrb   )r7   r8   r9   rC   rd   r%   r
   r   r4   rB   r@   r   r   rU   r\   r	   r`   r   re  r!   r'   r$   rR  rR    s$  € € € € € ð&ð & 3ð &¨Sð &ð &ð &ð &ðQ˜jð Q¨Zð Qð Qð Qð Qð ð)�#ð )ð )ð )ñ „\ð)ðB˜D  c œNð Bð Bð Bð Bð ð
Ø�S˜#�X”ð
à	.ð
ð 
ð 
ñ „\ð
ð˜uð ð ð ð ð
* $ u¤+ð 
*ð 
*ð 
*ð 
*ð 
*ð 
*r'   rR  c                 ó¢	  — |                       ¦   «          |                      dt          dd¬¦  «        ¬¦  «        }|€J ‚|j                             d¦  «        }|€J ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         dddœk    sJ ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         dgk    sJ ‚t          r:|j                             d	¦  «        }|€J ‚|                     d
¦  «        dk    sJ ‚n9|j                             d¦  «        }|€J ‚|                     d
¦  «        dk    sJ ‚|  
                    dt          dd¬¦  «        ¬¦  «        }|€J ‚|j                             d¦  «        }|€J ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         dddœk    sJ ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         dgk    sJ ‚t          r:|j                             d	¦  «        }|€J ‚|                     d
¦  «        dk    sJ ‚n9|j                             d¦  «        }|€J ‚|                     d
¦  «        dk    sJ ‚|  
                    dt          dd¬¦  «        ¬¦  «        }|€J ‚|j                             d¦  «        }|€J ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         dddœk    sJ ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         dgk    sJ ‚t          r:|j                             d	¦  «        }|€J ‚|                     d
¦  «        dk    sJ ‚n9|j                             d¦  «        }|€J ‚|                     d
¦  «        dk    sJ ‚|  
                    dt          dd¬¦  «        ¬¦  «        }|€J ‚|j                             d¦  «        }|€J ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         dddœk    sJ ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         g d¢k    sJ ‚t          r;|j                             d	¦  «        }|€J ‚|                     d
¦  «        dk    sJ ‚d S |j                             d¦  «        }|€J ‚|                     d
¦  «        dk    sJ ‚d S )NÚ,test_default_space_custom_embedding_functionr]  rF   rZ  rs   rt   rX  r’   r˜   r™   rÎ   Ú/test_default_space_custom_embedding_function_l2r^  r_   Ú/test_default_space_custom_embedding_function_ipr_  r`  Ú5test_default_space_custom_embedding_function_anythingrc  rd  )r~   r   rR  r©   r„   r@   rU   r`   re  r   r>  ©ro   rŠ   r‹   r    rÖ   s        r$   Ú6test_default_space_custom_embedding_function_no_configrl  A  s®  € Ø
‡L‚L�N„N€NØ×#Ò#Ø;Ý>Ø&¨Að
ñ 
ô 
ð $ñ ô €Dð ÐÐÐØ	Ô	×	Ò	Ð 4Ñ	5Ô	5€BØˆ>ˆ>ˆ>Ø�7Š7‰9Œ9Ð1Ò1Ð1Ð1Ð1Ø�=Š=‰?Œ?¨_ÀQÐGÐGÒGÐGÐGÐGØ×ÒÑÔ Ò)Ð)Ð)Ð)Ø×ÒÑ Ô  X JÒ.Ð.Ð.Ð.åð 5ØÔ(×,Ò,¨VÑ4Ô4ˆØÐ&Ð&Ð&Ø�Š˜wÑ'Ô'¨8Ò3Ð3Ð3Ð3Ð3àÔ)×-Ò-¨gÑ6Ô6ˆØÐ'Ð'Ð'Ø×Ò Ñ(Ô(¨HÒ4Ð4Ð4Ð4à×*Ò*Ø>Ý>Ø"¨ð
ñ 
ô 
ð +ñ ô €Dð ÐÐÐØ	Ô	×	Ò	Ð 4Ñ	5Ô	5€BØˆ>ˆ>ˆ>Ø�7Š7‰9Œ9Ð1Ò1Ð1Ð1Ð1Ø�=Š=‰?Œ?¨[ÀÐCÐCÒCÐCÐCÐCØ×ÒÑÔ Ò%Ð%Ð%Ð%Ø×ÒÑ Ô  T FÒ*Ð*Ð*Ð*åð 1ØÔ(×,Ò,¨VÑ4Ô4ˆØÐ&Ð&Ð&Ø�Š˜wÑ'Ô'¨4Ò/Ð/Ð/Ð/Ð/àÔ)×-Ò-¨gÑ6Ô6ˆØÐ'Ð'Ð'Ø×Ò Ñ(Ô(¨DÒ0Ð0Ð0Ð0à×*Ò*Ø>Ý>Ø"¨ð
ñ 
ô 
ð +ñ ô €Dð ÐÐÐØ	Ô	×	Ò	Ð 4Ñ	5Ô	5€BØˆ>ˆ>ˆ>Ø�7Š7‰9Œ9Ð1Ò1Ð1Ð1Ð1Ø�=Š=‰?Œ?¨[ÀÐCÐCÒCÐCÐCÐCØ×ÒÑÔ Ò%Ð%Ð%Ð%Ø×ÒÑ Ô  T FÒ*Ð*Ð*Ð*åð 1ØÔ(×,Ò,¨VÑ4Ô4ˆØÐ&Ð&Ð&Ø�Š˜wÑ'Ô'¨4Ò/Ð/Ð/Ð/Ð/àÔ)×-Ò-¨gÑ6Ô6ˆØÐ'Ð'Ð'Ø×Ò Ñ(Ô(¨DÒ0Ð0Ð0Ð0à×*Ò*ØDÝ>Ø(¨að
ñ 
ô 
ð +ñ ô €Dð ÐÐÐØ	Ô	×	Ò	Ð 4Ñ	5Ô	5€BØˆ>ˆ>ˆ>Ø�7Š7‰9Œ9Ð1Ò1Ð1Ð1Ð1Ø�=Š=‰?Œ?Ð->ÀqÐIÐIÒIÐIÐIÐIØ×ÒÑÔ Ò)Ð)Ð)Ð)Ø×ÒÑ Ô Ð$:Ð$:Ð$:Ò:Ð:Ð:Ð:åð 5ØÔ(×,Ò,¨VÑ4Ô4ˆØÐ&Ð&Ð&Ø�Š˜wÑ'Ô'¨8Ò3Ð3Ð3Ð3Ð3Ð3àÔ)×-Ò-¨gÑ6Ô6ˆØÐ'Ð'Ð'Ø×Ò Ñ(Ô(¨HÒ4Ð4Ð4Ð4Ð4Ð4r'   c                 óþ  — |                       ¦   «          t          r,|                      dt          dd¬¦  «        dddii¬¦  «        }n+|                      dt          dd¬¦  «        d	ddii¬¦  «        }|€J ‚|j                             d
¦  «        }|€J ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         dddœk    sJ ‚|                     ¦   «         dk    sJ ‚| 	                    ¦   «         g d¢k    sJ ‚t          r;|j                             d¦  «        }|€J ‚|                     d¦  «        dk    sJ ‚d S |j                             d	¦  «        }|€J ‚|                     d¦  «        dk    sJ ‚d S )NÚ>test_default_space_custom_embedding_function_with_valid_configrc  rF   rZ  r˜   r™   r_   rC  rÎ   rt   rX  r’   rd  )
r~   r   r   rR  r©   r„   r@   rU   r`   re  rk  s        r$   rn  rn     sà  € ð ‡L‚L�N„N€NÝð 
Ø×'Ò'ØQÝBØ,°!ð ñ  ô  ð " G¨T ?Ð3ð (ñ 
ô 
ˆˆð ×'Ò'ØQÝBØ,°!ð ñ  ô  ð # W¨d OÐ4ð (ñ 
ô 
ˆð ÐÐÐØ	Ô	×	Ò	Ð 4Ñ	5Ô	5€BØˆ>ˆ>ˆ>Ø�7Š7‰9Œ9Ð1Ò1Ð1Ð1Ð1Ø�=Š=‰?Œ?Ð->ÀqÐIÐIÒIÐIÐIÐIØ×ÒÑÔ Ò)Ð)Ð)Ð)Ø×ÒÑ Ô Ð$:Ð$:Ð$:Ò:Ð:Ð:Ð:åð 1ØÔ(×,Ò,¨VÑ4Ô4ˆØÐ&Ð&Ð&Ø�Š˜wÑ'Ô'¨4Ò/Ð/Ð/Ð/Ð/Ð/àÔ)×-Ò-¨gÑ6Ô6ˆØÐ'Ð'Ð'Ø×Ò Ñ(Ô(¨DÒ0Ð0Ð0Ð0Ð0Ð0r'   c                 óR  — |                       ¦   «          t          j        d¬¦  «        5 }t          j        d¦  «         t          r,|                      dt          dd¬¦  «        dd	d
ii¬¦  «        }n+|                      dt          dd¬¦  «        dd	d
ii¬¦  «        }t          |¦  «        dk    sJ ‚d„ |D ¦   «         }t          d„ |D ¦   «         ¦  «        sJ ‚|€J ‚|j	         
                    d¦  «        }|€J ‚|                     ¦   «         dk    sJ ‚t          r:|j	         
                    d¦  «        }|€J ‚| 
                    d	¦  «        d
k    sJ ‚n9|j	         
                    d¦  «        }|€J ‚| 
                    d	¦  «        d
k    sJ ‚d d d ¦  «         d S # 1 swxY w Y   d S )NT©ÚrecordÚalwaysÚ@test_default_space_custom_embedding_function_with_invalid_configr]  rF   rZ  r˜   r™   r_   rC  rÎ   r   c                 ó6   — g | ]}t          |j        ¦  «        ‘ŒS r!   ©rC   Úmessage©Ú.0Úwarnings     r$   ú
<listcomp>zTtest_default_space_custom_embedding_function_with_invalid_config.<locals>.<listcomp>à  ó"   € ÐBÐBÐB°W�C ¤Ñ0Ô0ÐBÐBÐBr'   c              3   óB   K  — | ]}d |                      ¦   «         v V — ŒdS ©zspace l2 is not supportedN©Úlower©rx  Úmsgs     r$   ú	<genexpr>zStest_default_space_custom_embedding_function_with_invalid_config.<locals>.<genexpr>á  óA   è è € ð 
ð 
Ø;>Ð'¨3¯9ª9©;¬;Ð6ð
ð 
ð 
ð 
ð 
ð 
r'   rt   rX  )r~   ÚwarningsÚcatch_warningsÚsimplefilterr   r>  rR  rˆ   Úanyr©   r„   r@   ©ro   ÚwrŠ   Úwarning_messagesr‹   r    rÖ   s          r$   rs  rs  Ç  s\  € ð ‡L‚L�N„N€NÝ	Ô	 ¨Ð	-Ñ	-Ô	-ð &5°ÝÔ˜hÑ'Ô'Ð'å!ð 	Ø×2Ò2ØWÝ#FØ.°Að$ñ $ô $ð  &¨° Ð7ð 3ñ ô ˆDˆDð ×2Ò2ØWÝ#FØ.°Að$ñ $ô $ð  '¨°$¨Ð8ð 3ñ ô ˆDõ �1‰vŒv˜ŠzˆzˆzˆzØBÐBÀÐBÑBÔBÐÝð 
ð 
ØBRð
ñ 
ô 
ñ 
ô 
ð 	
ð 	
ð 
ð ÐÐÐØÔ×#Ò#Ð$8Ñ9Ô9ˆØˆ~ˆ~ˆ~Ø�wŠw‰yŒyÐ5Ò5Ð5Ð5Ð5å!ð 	5ØÔ,×0Ò0°Ñ8Ô8ˆKØÐ*Ð*Ð*Ø—?’? 7Ñ+Ô+¨tÒ3Ð3Ð3Ð3Ð3àÔ-×1Ò1°'Ñ:Ô:ˆLØÐ+Ð+Ð+Ø×#Ò# GÑ,Ô,°Ò4Ð4Ð4Ð4ðM&5ð &5ð &5ñ &5ô &5ð &5ð &5ð &5ð &5ð &5ð &5ð &5øøøð &5ð &5ð &5ð &5ð &5ð &5s   ªE%FÆF Æ#F c                 ó”  — |                       ¦   «          |                      dt          dd¬¦  «        ddi¬¦  «        }|€J ‚|j                             d¦  «        }|€J ‚|                     ¦   «         d	k    sJ ‚|                     ¦   «         dddœk    sJ ‚|                     ¦   «         d
k    sJ ‚|                     ¦   «         g d¢k    sJ ‚t          r;|j                             d¦  «        }|€J ‚|                     d¦  «        dk    sJ ‚d S |j                             d¦  «        }|€J ‚|                     d¦  «        dk    sJ ‚d S )NÚ:test_default_space_custom_embedding_function_with_metadatarc  rF   rZ  r•   r`  ©r@   rt   r—   rt   rX  r’   rd  r˜   r™   rÎ   ©
r~   r   rR  r©   r„   r@   rU   r`   re  r   rk  s        r$   rŒ  rŒ  ô  sŽ  € ð ‡L‚L�N„N€NØ×#Ò#ØIÝ>Ø(¨að
ñ 
ô 
ð  Ð%ð $ñ ô €Dð ÐÐÐØ	Ô	×	Ò	Ð 4Ñ	5Ô	5€BØˆ>ˆ>ˆ>Ø�7Š7‰9Œ9Ð1Ò1Ð1Ð1Ð1Ø�=Š=‰?Œ?Ð->ÀqÐIÐIÒIÐIÐIÐIØ×ÒÑÔ Ò)Ð)Ð)Ð)Ø×ÒÑ Ô Ð$:Ð$:Ð$:Ò:Ð:Ð:Ð:åð 1ØÔ(×,Ò,¨VÑ4Ô4ˆØÐ&Ð&Ð&Ø�Š˜wÑ'Ô'¨4Ò/Ð/Ð/Ð/Ð/Ð/àÔ)×-Ò-¨gÑ6Ô6ˆØÐ'Ð'Ð'Ø×Ò Ñ(Ô(¨DÒ0Ð0Ð0Ð0Ð0Ð0r'   c                 óŒ  — |                       ¦   «          t          j        d¬¦  «        5 }t          j        d¦  «         |                      dt          dd¬¦  «        dd	i¬
¦  «        }t          |¦  «        dk    sJ ‚d„ |D ¦   «         }t          d„ |D ¦   «         ¦  «        sJ ‚|€J ‚|j         	                    d¦  «        }|€J ‚| 
                    ¦   «         dk    sJ ‚|                     ¦   «         dddœk    sJ ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         dgk    sJ ‚t          r:|j         	                    d¦  «        }|€J ‚| 	                    d¦  «        d	k    sJ ‚n9|j         	                    d¦  «        }|€J ‚| 	                    d¦  «        d	k    sJ ‚d d d ¦  «         d S # 1 swxY w Y   d S )NTrp  rr  ÚBtest_default_space_custom_embedding_function_with_invalid_metadatar]  rF   rZ  r•   r_   r�  r   c                 ó6   — g | ]}t          |j        ¦  «        ‘ŒS r!   ru  rw  s     r$   rz  zVtest_default_space_custom_embedding_function_with_invalid_metadata.<locals>.<listcomp>"  r{  r'   c              3   óB   K  — | ]}d |                      ¦   «         v V — ŒdS r}  r~  r€  s     r$   r‚  zUtest_default_space_custom_embedding_function_with_invalid_metadata.<locals>.<genexpr>#  rƒ  r'   rt   rX  r’   r˜   r™   rÎ   )r~   r„  r…  r†  r   rR  rˆ   r‡  r©   r„   r@   rU   r`   re  r   rˆ  s          r$   r�  r�    sg  € ð ‡L‚L�N„N€NÝ	Ô	 ¨Ð	-Ñ	-Ô	-ð  5°ÝÔ˜hÑ'Ô'Ð'à×'Ò'ØUÝBØ*°ð ñ  ô  ð # DÐ)ð (ñ 
ô 
ˆõ �1‰vŒv˜ŠzˆzˆzˆzØBÐBÀÐBÑBÔBÐÝð 
ð 
ØBRð
ñ 
ô 
ñ 
ô 
ð 	
ð 	
ð 
ð ÐÐÐØÔ×#Ò#Ð$8Ñ9Ô9ˆØˆ~ˆ~ˆ~Ø�wŠw‰yŒyÐ5Ò5Ð5Ð5Ð5Ø�}Š}‰Œ°ÈÐ"KÐ"KÒKÐKÐKÐKØ×ÒÑ!Ô! XÒ-Ð-Ð-Ð-Ø×"Ò"Ñ$Ô$¨¨
Ò2Ð2Ð2Ð2å!ð 	5ØÔ,×0Ò0°Ñ8Ô8ˆKØÐ*Ð*Ð*Ø—?’? 7Ñ+Ô+¨tÒ3Ð3Ð3Ð3Ð3àÔ-×1Ò1°'Ñ:Ô:ˆLØÐ+Ð+Ð+Ø×#Ò# GÑ,Ô,°Ò4Ð4Ð4Ð4ðA 5ð  5ð  5ñ  5ô  5ð  5ð  5ð  5ð  5ð  5ð  5ð  5øøøð  5ð  5ð  5ð  5ð  5ð  5s   ªFF9Æ9F=Ç F=c                 óž  — |                       ¦   «          |                      ddddiit          dd¬¦  «        dd	i¬
¦  «        }|€J ‚|j                             d¦  «        }|€J ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         dddœk    sJ ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         g d¢k    sJ ‚t          r;|j                             d¦  «        }|€J ‚|                     d¦  «        dk    sJ ‚d S |j                             d¦  «        }|€J ‚|                     d¦  «        dk    sJ ‚d S )NÚEtest_default_space_custom_embedding_function_with_metadata_and_configr˜   r™   r`  rc  rF   rZ  r•   r_   )r@   r©   rt   r—   rt   rX  r’   rd  rÎ   rŽ  rk  s        r$   r”  r”  9  sš  € ð ‡L‚L�N„N€NØ×#Ò#ØTØ ¨˜Ð/Ý>Ø(¨að
ñ 
ô 
ð  Ð%ð $ñ ô €Dð ÐÐÐØ	Ô	×	Ò	Ð 4Ñ	5Ô	5€BØˆ>ˆ>ˆ>Ø�7Š7‰9Œ9Ð1Ò1Ð1Ð1Ð1Ø�=Š=‰?Œ?Ð->ÀqÐIÐIÒIÐIÐIÐIØ×ÒÑÔ Ò)Ð)Ð)Ð)Ø×ÒÑ Ô Ð$:Ð$:Ð$:Ò:Ð:Ð:Ð:åð 1ØÔ(×,Ò,¨VÑ4Ô4ˆØÐ&Ð&Ð&Ø�Š˜wÑ'Ô'¨4Ò/Ð/Ð/Ð/Ð/Ð/àÔ)×-Ò-¨gÑ6Ô6ˆØÐ'Ð'Ð'Ø×Ò Ñ(Ô(¨DÒ0Ð0Ð0Ð0Ð0Ð0r'   c                   ó   — e Zd ZU eed<   dS )Ú"CustomEmbeddingFunctionQueryConfigÚtaskN)r7   r8   r9   rC   Ú__annotations__r!   r'   r$   r–  r–  X  s   € € € € € € Ø
€I€I�I€I€Ir'   r–  c            
       óä   — e Zd Z	 	 ddedededee         fd„Zded	e	fd
„Z
ded	e	fd„Zed	efd„¦   «         Zd	eeef         fd„Zedeeef         d	d fd„¦   «         Zd	efd„Zd	ee         fd„ZdS )Ú&CustomEmbeddingFunctionWithQueryConfigrF   Nr—  rS  rG   Úquery_configc                 ó>   — || _         || _        || _        || _        d S r    )rJ   rU  Ú_taskÚ_query_config)r#   r—  rS  rG   r›  s        r$   r%   z/CustomEmbeddingFunctionWithQueryConfig.__init__^  s(   € ð ˆŒ	Ø%ˆÔØˆŒ
Ø)ˆÔÐÐr'   r(   r   c                 ó|   — t          t          t          j        dg| j        z  gt          j        ¬¦  «        ¦  «        S rN   rO   r3   s     r$   r4   z/CustomEmbeddingFunctionWithQueryConfig.__call__j  rP   r'   c                 óð   — | j         �[| j                              d¦  «        dk    r=t          t          t	          j        dg| j        z  gt          j        ¬¦  «        ¦  «        S |                      |¦  «        S )Nr—  r‡   r,   r-   )	rž  r„   r   r   r0   r1   rJ   r2   r4   r3   s     r$   Úembed_queryz2CustomEmbeddingFunctionWithQueryConfig.embed_querym  sf   € ØÔÐ)¨dÔ.@×.DÒ.DÀVÑ.LÔ.LÐPWÒ.WÐ.WÝ�
¥B¤H¨s¨e°d´iÑ.?Ð-@ÍÌ
Ð$SÑ$SÔ$SÑTÔTÐTà—=’= Ñ'Ô'Ð'r'   c                  ó   — dS )NÚcustom_ef_with_query_configr!   r!   r'   r$   r@   z+CustomEmbeddingFunctionWithQueryConfig.names  s   € à,Ð,r'   c                 ó8   — | j         | j        | j        | j        dœS )N©rS  rG   r—  r›  )rU  rJ   r�  rž  r"   s    r$   rU   z1CustomEmbeddingFunctionWithQueryConfig.get_configw  s'   € àÔ*Ø”9Ø”JØ Ô.ð	
ð 
ð 	
r'   rW   c                 óì   — |                       d¦  «        }|                       d¦  «        }|                       d¦  «        }|                       d¦  «        }|�|€
J d¦   «         ‚t          ||||¬¦  «        S )NrS  rG   r—  r›  FzThis code should not be reachedr¥  )r„   rš  )rW   rS  rG   r—  r›  s        r$   r\   z8CustomEmbeddingFunctionWithQueryConfig.build_from_config  s€   € ð —Z’Z Ñ-Ô-ˆ
Ø�jŠj˜ÑÔˆØ�zŠz˜&Ñ!Ô!ˆØ—z’z .Ñ1Ô1ˆàÐ  Ø;Ð;Ñ;Ô;�5å5Ø! s°ÀLð
ñ 
ô 
ð 	
r'   c                 ó   — dS ©Nr’   r!   r"   s    r$   r`   z4CustomEmbeddingFunctionWithQueryConfig.default_space�  s   € Øˆxr'   c                 ó   — dgS r¨  r!   r"   s    r$   re  z7CustomEmbeddingFunctionWithQueryConfig.supported_spaces’  s
   € ØˆzÐr'   )rF   N)r7   r8   r9   rC   rd   r   r–  r%   r
   r   r4   r¡  rB   r@   r   r   rU   r\   r	   r`   r   re  r!   r'   r$   rš  rš  \  sg  € € € € € ð ØEIð
*ð 
*àð
*ð ð
*ð ð	
*ð
 ÐAÔBð
*ð 
*ð 
*ð 
*ðQ˜jð Q¨Zð Qð Qð Qð Qð( ð (°
ð (ð (ð (ð (ð ð-�#ð -ð -ð -ñ „\ð-ð
˜D  c œNð 
ð 
ð 
ð 
ð ð
Ø�S˜#�X”ð
à	1ð
ð 
ð 
ñ „\ð
ð˜uð ð ð ð ð $ u¤+ð ð ð ð ð ð r'   rš  c           
      ó>  — |                       ¦   «          |                      dt          dddddi¬¦  «        ¬¦  «        }|€J ‚|j                             d	¦  «        }|€J ‚|                     ¦   «         d
k    sJ ‚|                     ¦   «         dddddidœk    sJ ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         dgk    sJ ‚t          j
        |                     d¬¦  «        t          j        g d¢gt          j        ¬¦  «        ¦  «        sJ ‚d S )NÚ0test_custom_embedding_function_with_query_configÚdocumentrc  rF   r—  r‡   )r—  rS  rG   r›  rs   rt   r£  r¥  r’   úHow many people in Berlin?©r(   )r,   r,   r,   r-   )r~   r   rš  r©   r„   r@   rU   r`   re  r0   Úarray_equalr¡  r1   r2   r?  s      r$   r«  r«  –  sd  € Ø
‡L‚L�N„N€NØ×#Ò#Ø?ÝAØØ(ØØ  'Ð*ð	
ñ 
ô 
ð $ñ ô €Dð ÐÐÐØ	Ô	×	Ò	Ð 4Ñ	5Ô	5€BØˆ>ˆ>ˆ>Ø�7Š7‰9Œ9Ð5Ò5Ð5Ð5Ð5Ø�=Š=‰?Œ?Ø'ØØØ Ð)ð	ð ò ð ð ð ð ×ÒÑÔ Ò)Ð)Ð)Ð)Ø×ÒÑ Ô  X JÒ.Ð.Ð.Ð.ÝŒ>Ø
�ŠÐ9ˆÑ:Ô:Ý
Œ�/�/�/Ð"­"¬*Ð5Ñ5Ô5ñô ð ð ð ð ð r'   c                 óô  — d}t          t          j        |¦  «        ¦  «        }|€J ‚|                     d¦  «        €J ‚|                     d¦  «        }|€J ‚|                     ¦   «         dddd dœk    sJ ‚|                     ¦   «         dk    sJ ‚|                     ¦   «         dgk    sJ ‚t          j        | 	                    d¬	¦  «        t          j
        g d
¢gt          j        ¬¦  «        ¦  «        sJ ‚d S )Nzá
    {
        "embedding_function": {
            "type": "known",
            "name": "custom_ef_with_query_config",
            "config": {"model_name": "i_want_anything", "dim": 3, "task": "document"}
        }
    }
    rt   rc  rF   r¬  r¥  r’   r­  r®  )r+   r+   r+   r-   )r   rî   rï   r„   rU   r`   re  r0   r¯  r¡  r1   r2   )ro   Újson_stringrW   r‹   s       r$   ÚNtest_deserializing_custom_embedding_function_with_query_config_no_query_configr²  ³  s*  € ð€Kõ 5µT´ZÀÑ5LÔ5LÑMÔM€FØÐÐÐØ�:Š:Ð*Ñ+Ô+Ð7Ð7Ð7Ø	�ŠÐ(Ñ	)Ô	)€BØˆ>ˆ>ˆ>Ø�=Š=‰?Œ?Ø'ØØØð	ð ò ð ð ð ð ×ÒÑÔ Ò)Ð)Ð)Ð)Ø×ÒÑ Ô  X JÒ.Ð.Ð.Ð.ÝŒ>Ø
�ŠÐ9ˆÑ:Ô:Ý
Œ�/�/�/Ð"­"¬*Ð5Ñ5Ô5ñô ð ð ð ð ð r'   )rÃ   r   r   Nr6   )Wr¯   Útypingr   r   r   r   Únumpyr0   r„  Úchromadb.api.typesr   r   r	   r
   Úchromadb.apir   Ú%chromadb.api.collection_configurationr   r   r   r   r   r   r   r   r   rî   Ú"chromadb.utils.embedding_functionsr   Úchromadb.test.conftestr   r   r   Úchromadb.typesr   r  r   r   r   r;   rE   rf   rŽ   r�   r–   r«   rµ   rÂ   rÈ   rÊ   rÙ   rÛ   ÚmarkÚskipifrß   rå   rè   ró   rø   rý   r  r  r	  r  r  r%  r(  r4  r:  r@  rB  rF  rI  rL  rN  rP  rR  rl  rn  rs  rŒ  r�  r”  r–  rš  r«  r²  r!   r'   r$   ú<module>r½     sõ  ðØ €€€Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð #Ð "Ð "Ð "Ð "Ð "ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð €€€Ø JÐ JÐ JÐ JÐ JÐ JØ 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø UÐ UÐ UÐ UÐ UÐ UÐ UÐ UØ 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &ðJð Jð Jð Jð JÐ/°
Ô;ñ Jô Jð Jð	ð 	ð 	ð 	ð 	Ð&7¸
Ô&Cñ 	ô 	ð 	ð ðð ð ð ð Ð/°
Ô;ñ ô ñ Ôðð, ðð ð ð ð Ð0°Ô<ñ ô ñ Ôðð,$¨9ð $¸ð $ð $ð $ð $ð<$°Yð $À4ð $ð $ð $ð $ð<& ð &¨tð &ð &ð &ð &ð:  9ð  °ð  ð  ð  ð  ðF5¨	ð 5°dð 5ð 5ð 5ð 5ð$,:¨Ið ,:¸$ð ,:ð ,:ð ,:ð ,:ð^)(ð )(ð )(ð )(ðX0¨Yð 0¸4ð 0ð 0ð 0ð 0ð.4"¨9ð 4"¸ð 4"ð 4"ð 4"ð 4"ðn;" Yð ;"°4ð ;"ð ;"ð ;"ð ;"ð| „×ÒÐ*Ð3MÐÑNÔNð(ð (ð (ñ OÔNð(ðV
°Ið 
À$ð 
ð 
ð 
ð 
ð49*¨)ð 9*¸ð 9*ð 9*ð 9*ð 9*ðxM?¨)ð M?¸ð M?ð M?ð M?ð M?ð` „×ÒÐ*Ð3MÐÑNÔNð*9¨Yð *9¸4ð *9ð *9ð *9ñ OÔNð*9ðZ „×ÒÐ*Ð3MÐÑNÔNð8:¨	ð 8:°dð 8:ð 8:ð 8:ñ OÔNð8:ðv5ð 5ð 5ð 5ð@ „×ÒÐ*Ð3MÐÑNÔNð1¸9ð 1Èð 1ð 1ð 1ñ OÔNð1ð>"¨Yð "¸4ð "ð "ð "ð "ð2@ð @ð @ð @ð,*6¸Ið *6È$ð *6ð *6ð *6ð *6ðZ>Øð>à	ð>ð >ð >ð >ð@,Øð,à	ð,ð ,ð ,ð ,ð2H"ØðH"à	ðH"ð H"ð H"ð H"ðV-%¸9ð -%Èð -%ð -%ð -%ð -%ð`)˜ið )¨Dð )ð )ð )ð )ð8)¨Yð )¸4ð )ð )ð )ð )ð@#)°Yð #)À4ð #)ð #)ð #)ð #)ðL
¸ið 
ÈDð 
ð 
ð 
ð 
ð
ÀYð 
ÐSWð 
ð 
ð 
ð 
ð
Øð
à	ð
ð 
ð 
ð 
ð&
°Ið 
À$ð 
ð 
ð 
ð 
ð> ð+*ð +*ð +*ð +*ð +*Ð*;¸JÔ*Gñ +*ô +*ñ Ôð+*ð\\5À9ð \5ÐQUð \5ð \5ð \5ð \5ð~$1Øð$1à	ð$1ð $1ð $1ð $1ðN*5Øð*5à	ð*5ð *5ð *5ð *5ðZ1Øð1à	ð1ð 1ð 1ð 1ð<$5Øð$5à	ð$5ð $5ð $5ð $5ðN1Øð1à	ð1ð 1ð 1ð 1ð>ð ð ð ð ¨ñ ô ð ð ð6ð 6ð 6ð 6ð 6Ð->¸zÔ-Jñ 6ô 6ñ Ôð6ðr¸Yð È4ð ð ð ð ð:Øðà	ðð ð ð ð ð r'   