Ë
    lQêjmî  ã                   ó  — 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/dDd„Z0deddfd„Z1deddfd„Z2deddfd„Z3e jh                  jk                  ee ¬«      dDd „«       Z6deddfd!„Z7deddfd"„Z8deddfd#„Z9e jh                  jk                  ee ¬«      deddfd$„«       Z:e jh                  jk                  ee ¬«      deddfd%„«       Z;dEd&„Z<e jh                  jk                  ee ¬«      deddfd'„«       Z=deddfd(„Z>dEd)„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d.„ZDdeddfd/„ZEdeddfd0„ZFdeddfd1„ZGdeddfd2„ZHdeddfd3„ZIdeddfd4„ZJdeddfd5„ZKe G d6„ d7e
e   «      «       ZLdeddfd8„ZMdeddfd9„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>„ d?e%«      ZSe G d@„ dAe
e   «      «       ZTdeddfdB„ZUdeddfdC„ZVy)Fé    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y)ÚLegacyEmbeddingFunctionÚreturnNc                  ó   — y ©N© ©Úselfs    ú/home/oem/CyberBrain26-unified/.venv/lib/python3.12/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¹ZÔ HÓIÐIr'   ©r   N)Ú__name__Ú
__module__Ú__qualname__r%   r
   r   r4   r!   r'   r$   r   r      s   „ óðJ˜jð J¨Zô Jr'   r   c                   ó:   — e Zd Zdd„Zdedefd„Zedefd„«       Z	y)ÚLegacyEmbeddingFunctionWithNamer   Nc                  ó   — y 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                   ó   — y)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;   '   s8   „ óðJ˜jð J¨Zó 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y)ÚCustomEmbeddingFunctionÚdimc                 ó   — || _         y r    ©Ú_dim©r#   rF   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   rI   r2   r3   s     r$   r4   z CustomEmbeddingFunction.__call__8   ó,   € Ü”J¤§¡¨3¨%°$·)±)Ñ*;Ð)<ÄBÇJÁJÔ OÓPÐPr'   c                   ó   — y)NÚ	custom_efr!   r!   r'   r$   r@   zCustomEmbeddingFunction.name;   rA   r'   c                 ó   — d| j                   iS ©NrF   rH   r"   s    r$   Ú
get_configz"CustomEmbeddingFunction.get_config?   ó   € Ø�t—y‘yÐ!Ð!r'   Úconfigc                 ó    — t        | d   ¬«      S ©NrF   ©rF   )rE   ©rV   s    r$   Úbuild_from_configz)CustomEmbeddingFunction.build_from_configB   s   € ä&¨6°%©=Ô9Ð9r'   c                  ó   — y©NÚl2r!   r"   s    r$   Údefault_spacez%CustomEmbeddingFunction.default_spaceF   ó   € Ør'   N©é   ©r7   r8   r9   Úintr%   r
   r   r4   rB   rC   r@   r   r   rT   r[   r	   r_   r!   r'   r$   rE   rE   3   sŠ   „ ñ˜Có ðQ˜jð Q¨Zó 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y)ÚCustomEmbeddingFunction2rF   c                 ó   — || _         y r    rH   rJ   s     r$   r%   z!CustomEmbeddingFunction2.__init__L   rK   r'   r(   r   c                 ó†   — t        t        t        j                  dg| j                  z  gt        j
                  ¬«      «      S )Nr,   r-   rN   r3   s     r$   r4   z!CustomEmbeddingFunction2.__call__O   rO   r'   c                   ó   — y)NÚ
custom_ef2r!   r!   r'   r$   r@   zCustomEmbeddingFunction2.nameR   s   € àr'   c                 ó   — d| j                   iS rS   rH   r"   s    r$   rT   z#CustomEmbeddingFunction2.get_configV   rU   r'   rV   c                 ó    — t        | d   ¬«      S rX   )rf   rZ   s    r$   r[   z*CustomEmbeddingFunction2.build_from_configY   s   € ä'¨F°5©MÔ:Ð:r'   c                  ó   — yr]   r!   r"   s    r$   r_   z&CustomEmbeddingFunction2.default_space]   r`   r'   N)é   rc   r!   r'   r$   rf   rf   J   sŠ   „ ñ˜Có ðQ˜jð Q¨Zó Qð ð�#ò ó ðð"˜D  c ™Nó "ð ð; $ s¨C x¡.ð ;Ð5Oò ;ó ð;ð˜uô r'   rf   Úclientr   c                 ó¨  — | j                  «        | j                  dt        «       ¬«      }t        |j                  j
                  «      }|r%t        |t        «      r|j                  d«      }|�J ‚J d|› �«       ‚| j                  dt        «       ¬«      }|j                  dgdg¬«       |j                  dgd	¬
«      }t        |d   «      d	k(  sJ ‚y©zETest creating and getting collections with legacy embedding functionsÚtest_legacy©r@   Úembedding_functionrt   Nz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   ÚcollrV   ÚefÚcoll2Úresultss         r$   Útest_legacy_embedding_functionrŽ   a   sØ   € à
‡L�L„Nð ×#Ñ#ØÜ2Ó4ð $ó €Dô 5°T·[±[×5SÑ5SÓT€FÙ”*˜V¤TÔ*Ø�Z‰ZÐ,Ó-ˆØˆzÐˆzà)˜  Ð)Ó)ˆuð ×!Ñ!ØÜ2Ó4ð "ó €Eð 
‡I�I�3�% F 8€IÔ,Ø�k‰k v h¸!ˆkÓ<€GÜˆw�u‰~Ó !Ò#Ð#Ñ#r'   c                 ó¨  — | j                  «        | j                  dt        «       ¬«      }t        |j                  j
                  «      }|r%t        |t        «      r|j                  d«      }|�J ‚J d|› �«       ‚| j                  dt        «       ¬«      }|j                  dgdg¬«       |j                  dgd	¬
«      }t        |d   «      d	k(  sJ ‚y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ð ×#Ñ#ØÜ:Ó<ð $ó €Dô 5°T·[±[×5SÑ5SÓT€FÙ”*˜V¤TÔ*Ø�Z‰ZÐ,Ó-ˆØˆzÐˆzà)˜  Ð)Ó)ˆuð ×!Ñ!ØÜ:Ó<ð "ó €Eð 
‡I�I�3�% F 8€IÔ,Ø�k‰k v h¸!ˆkÓ<€GÜˆw�u‰~Ó !Ò#Ð#Ñ#r'   c                 ó$  — | j                  «        ddddœ}| j                  d|¬«      }t        |j                  j                  «      }|rÆt        |t        «      rµt        t        |j                  di «      «      }t        |j                  d«      «      t        d«      k(  sJ ‚|j                  d	«      dk(  sJ ‚|j                  d
«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      }|€J ‚|j                  «       dk(  sJ ‚yyy)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Š   rV   Úhnsw_configr‹   s         r$   r–   r–   �   s  € à
‡L�L„Nð Ø #Øñ€Oð
 ×#Ñ#Ø#Ø ð $ó €Dô 5°T·[±[×5SÑ5SÓT€FÙ”*˜V¤TÔ*ÜÔ2°F·J±J¸vÀrÓ4JÓKˆÜ�;—?‘? 7Ó+Ó,´°H³Ò=Ð=Ð=Ø�‰Ð0Ó1°SÒ8Ð8Ð8Ø�‰˜Ó/°2Ò5Ð5Ð5Ø�‰˜{Ó+¨sÒ2Ð2Ð2à�Z‰ZÐ,Ó-ˆØˆ~Ðˆ~Ø�w‰w‹y˜IÒ%Ð%Ñ%ð +€vr'   c                 óÎ  — | j                  «        ddddddœ}|t        d¬«      d	œ}| j                  d
|¬«      }t        |j                  j
                  «      }|rŠt        |t        «      ryt        t        |j                  di «      «      }|j                  di «      }|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|€J ‚yyy)z7Test creating collections with new configuration formatr’   r�   r”   é   é   )r™   rš   r›   rœ   Únum_threadsé   rY   ©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    rV   rŠ   Úloaded_configr‹   s         r$   Útest_new_configurationr«   º   sÿ   € à
‡L�L„Nð ØØØØñ,€Kð Ü5¸!Ô<ñ-€Fð
 ×#Ñ#ØØð $ó €Dô <Ø�‰×&Ñ&ó€Mñ œ M´4Ô8ÜÔ2°M×4EÑ4EÀfÈbÓ4QÓRˆØ×ÑÐ3°RÓ8ˆØ�‰˜wÓ'¨8Ò3Ð3Ð3Ø�‰Ð0Ó1°SÒ8Ð8Ð8Ø�‰˜Ó/°2Ò5Ð5Ð5Øˆ~Ð‰~ð 9€}r'   c                 óè   — | j                  «        t        j                  t        «      5 }dddœ}| j	                  dd|i¬«       dt        |j                  «      v sJ ‚	 ddd«       y# 1 sw Y   yxY w)	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µ   Ý   sv   € à
‡L�L„Nô 
�‰”yÓ	!ð 
5 Wà!Øñ1
ˆð 	× Ñ ØØ! <Ð0ð 	!ô 	
ð
 ¤# g§m¡mÓ"4Ñ4Ð4Ñ4÷
5÷ 
5ñ 
5ús   ª4A(Á(A1c                 ó  — | j                  «        ddddœ}| j                  dd|i¬«      }dd	d
œ}d|i}|j                  |¬«       |j                  }|rŠt	        |t
        «      rz|j                  di «      }t	        |t
        «      rX|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚| j                  d¬«      }|j                  }|r�t	        |t
        «      r||j                  di «      }t	        |t
        «      rY|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚yyyy)ú'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ð ØØñ-€Lð
 ×#Ñ#ØØ˜|Ð,ð $ó €Dð Øñ,€Kð
 	�ð4€Mð 	‡K�K˜m€KÔ,ð ×+Ñ+€MÙœ M´4Ô8Ø#×'Ñ'¨°Ó3ˆÜ�k¤4Ô(Ø—?‘? ;Ó/°2Ò5Ð5Ð5à—?‘? 7Ó+¨xÒ7Ð7Ð7Ø—?‘?Ð#4Ó5¸Ò<Ð<Ð<Ø—?‘? ?Ó3°rÒ9Ð9Ð9à× Ñ  nÐ Ó5€DØ×+Ñ+€MÙœ M´4Ô8Ø#×'Ñ'¨°Ó3ˆÜ�k¤4Ô(Ø—?‘? ;Ó/°2Ò5Ð5Ð5Ø—?‘? 7Ó+¨xÒ7Ð7Ð7Ø—?‘?Ð#4Ó5¸Ò<Ð<Ð<Ø—?‘? ?Ó3°rÒ9Ð9Ñ9ð	 )ð 9€}r'   c                 ó‚  — | j                  «       }|j                  «        ddddœ}|t        d¬«      dœ}|j                  d|¬	«       | j                  «       }|j	                  d¬
«      }t        |j                  j                  «      }|r´t        |t        «      r£t        t        |j                  di «      «      }|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      }|€J ‚|j                  «       dk(  sJ ‚yyy)z5Test configuration persistence across client restartsr’   r�   r”   )r™   rš   r›   r¥   rY   r¦   Útest_persist_configr¨   r¼   r˜   r™   rš   r›   rœ   rt   NrQ   )Úcreate_client_from_systemr~   rE   r   r…   r   r€   r�   r‚   rƒ   r   r   r„   r@   )Úclient_factoriesro   r    rV   Úclient2rŠ   rª   r‹   s           r$   Útest_configuration_persistencerÈ     sX  € ð ×7Ñ7Ó9€FØ
‡L�L„Nð ØØñ,€Kð Ü5¸!Ô<ñ-€Fð
 ×ÑØ"Øð ô ð ×8Ñ8Ó:€Gà×!Ñ!Ø"ð "ó €Dô <Ø�‰×&Ñ&ó€Mñ œ M´4Ô8ÜÔ2°M×4EÑ4EÀfÈbÓ4QÓRˆØ�‰˜wÓ'¨8Ò3Ð3Ð3Ø�‰Ð0Ó1°SÒ8Ð8Ð8Ø�‰˜Ó/°2Ò5Ð5Ð5Ø�‰˜{Ó+¨sÒ2Ð2Ð2à×ÑÐ3Ó4ˆØˆ~Ðˆ~Ø�w‰w‹y˜KÒ'Ð'Ñ'ð 9€}r'   c                 ó4  — | j                  «        ddddœ}| j                  dd|i¬«      }|j                  j                  €J ‚|j                  j                  j	                  d«      }|€J ‚|j	                  d	«      dk(  sJ ‚|j	                  d
«      dk(  sJ ‚y)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ð ØØñ-€Lð
 ×#Ñ#ØØ˜|Ð,ð $ó €Dð
 �;‰;×)Ñ)Ð5Ð5Ð5Ø—+‘+×0Ñ0×4Ñ4°VÓ<€KØÐ"Ð"Ð"Ø�?‰?˜;Ó'¨2Ò-Ð-Ð-à�?‰?˜7Ó# xÒ/Ð/Ñ/r'   c                 óø  — | j                  «        i }|t        d¬«      dœ}t        rÔ| j                  d|¬«      }t	        |j
                  j                  «      }|rŸt        |t        «      rŽt        t        |j                  di «      «      }|j                  d«      }|j                  d«      d	k(  sJ ‚|j                  d
«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|€J ‚yyy| j                  d|¬«      }t	        |j
                  j                  «      }|rËt        |t        «      rºt        t        |j                  di «      «      }|j                  d«      }|j                  d«      d	k(  sJ ‚|j                  d
«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|€J ‚yyy)ú9Test creating collections with SPANN configuration formatr¥   rY   ©Ú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_configrV   rŠ   rª   Úhnsw_config_loadedr‹   Úspann_config_loadeds           r$   Útest_empty_spann_configurationrÙ   a  s/  € à
‡L�L„Nð .0€LàÜ5¸!Ô<ñ-€Fõ
 Ø×'Ñ'Ø$Ø ð (ó 
ˆô @Ø�K‰K×*Ñ*ó
ˆñ œZ¨´tÔ<Ü!%Ü'¨×):Ñ):¸6À2Ó)Fó"Ðð ×"Ñ"Ð#7Ó8ˆBØ%×)Ñ)¨'Ó2°dÒ:Ð:Ð:Ø%×)Ñ)Ð*;Ó<ÀÒCÐCÐCØ%×)Ñ)¨+Ó6¸#Ò=Ð=Ð=Ø%×)Ñ)¨/Ó:¸bÒ@Ð@Ð@Ø�>Ð!‘>ð =ˆ=ð ×'Ñ'Ø$Ø ð (ó 
ˆô @Ø�K‰K×*Ñ*ó
ˆñ œZ¨´tÔ<Ü"&Ü(¨-×*;Ñ*;¸GÀRÓ*Hó#Ðð ×"Ñ"Ð#7Ó8ˆBØ&×*Ñ*¨7Ó3°tÒ;Ð;Ð;Ø&×*Ñ*Ð+<Ó=ÀÒDÐDÐDØ&×*Ñ*¨;Ó7¸3Ò>Ð>Ð>Ø&×*Ñ*¨?Ó;¸rÒAÐAÐAØ&×*Ñ*¨?Ó;¸sÒBÐBÐBØ&×*Ñ*¨>Ó:¸cÒAÐAÐAØ�>Ð!‘>ð =ˆ=r'   c                 ó  — | j                  «        dddddddœ}|t        d¬«      dœ}t        rÔ| j                  d	|¬
«      }t	        |j
                  j                  «      }|rŸt        |t        «      rŽt        t        |j                  di «      «      }|j                  d«      }|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|€J ‚yyy| j                  d	|¬
«      }t	        |j
                  j                  «      }|rËt        |t        «      rºt        t        |j                  di «      «      }|j                  d«      }|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|€J ‚yyy)rÌ   r’   r�   r”   r¢   r¥   )r™   rš   r›   rœ   rÑ   rÓ   rY   rÍ   rÏ   r¨   r˜   rt   r™   rš   rœ   r›   r»   NrÎ   r“   rÑ   rÓ   rÔ   rÕ   s           r$   Útest_spann_configurationrÛ   ˜  sE  € à
‡L�L„Nð ØØØØØñ.€Lð Ü5¸!Ô<ñ-€Fõ
 Ø×'Ñ'Ø$Ø ð (ó 
ˆô @Ø�K‰K×*Ñ*ó
ˆñ œZ¨´tÔ<Ü!%Ü'¨×):Ñ):¸6À2Ó)Fó"Ðð ×"Ñ"Ð#7Ó8ˆBØ%×)Ñ)¨'Ó2°hÒ>Ð>Ð>Ø%×)Ñ)Ð*;Ó<ÀÒCÐCÐCØ%×)Ñ)¨+Ó6¸#Ò=Ð=Ð=Ø%×)Ñ)¨/Ó:¸bÒ@Ð@Ð@Ø�>Ð!‘>ð =ˆ=ð ×'Ñ'Ø$Ø ð (ó 
ˆô @Ø�K‰K×*Ñ*ó
ˆñ œZ¨´tÔ<Ü"&Ü(¨-×*;Ñ*;¸GÀRÓ*Hó#Ðð ×"Ñ"Ð#7Ó8ˆBØ&×*Ñ*¨7Ó3°xÒ?Ð?Ð?Ø&×*Ñ*Ð+<Ó=ÀÒDÐDÐDØ&×*Ñ*¨;Ó7¸3Ò>Ð>Ð>Ø&×*Ñ*¨?Ó;¸rÒAÐAÐAØ&×*Ñ*¨?Ó;¸qÒ@Ð@Ð@Ø&×*Ñ*¨>Ó:¸bÒ@Ð@Ð@Ø�>Ð!‘>ð =ˆ=r'   )Úreasonc                 óˆ  — | j                  «       }|j                  «        ddddddœ}|t        d¬«      dœ}|j                  d|¬	«       | j                  «       }|j	                  d¬
«      }t        |j                  j                  «      }|rµt        |t        «      r¤t        t        |j                  di «      «      }|j                  d«      }|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|€J ‚yyy)z;Test SPANN configuration persistence across client restartsr’   r�   r”   r¥   )r™   rš   r›   rÑ   rÓ   rY   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Ö   rV   rÇ   rŠ   rª   r‹   s           r$   Ú$test_spann_configuration_persistencerß   Ö  sl  € ð ×7Ñ7Ó9€FØ
‡L�L„Nð ØØØØñ.€Lð Ü5¸!Ô<ñ-€Fð
 ×ÑØ(Øð ô ð
 ×8Ñ8Ó:€Gà×!Ñ!Ø(ð "ó €Dô <Ø�‰×&Ñ&ó€Mñ œ M´4Ô8ÜÔ4°m×6GÑ6GÈÐQSÓ6TÓUˆØ×ÑÐ3Ó4ˆØ×Ñ Ó(¨HÒ4Ð4Ð4Ø×ÑÐ 1Ó2°cÒ9Ð9Ð9Ø×Ñ Ó0°BÒ6Ð6Ð6Ø×Ñ Ó0°AÒ5Ð5Ð5Ø×Ñ Ó/°2Ò5Ð5Ð5Øˆ~Ð‰~ð 9€}r'   c                 óÄ   — | j                  «        dddœ}dddœ}t        j                  t        d¬«      5  | j	                  d||d	œ¬
«       ddd«       y# 1 sw Y   yxY w)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å     sp   € à
‡L�L„Nð Øñ,€Kð
 Øñ.€Lô 
�‰”zÐ)QÔ	Rñ 
Ø× Ñ Ø#à#Ø%ñð 	!ô 	
÷
÷ 
ñ 
ús   ¶AÁAc                 ó:  — | j                  «        ddi}d|i}t        ré| j                  d|¬«      }t        |j                  j
                  «      }|r´t        |t        «      r£t        t        |j                  di «      «      }|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d	«      dk(  sJ ‚|j                  d
«      dk(  sJ ‚|j                  d«      }|€J ‚|j                  «       dk(  sJ ‚yyy| j                  d|¬«      }t        |j                  j
                  «      }|ràt        |t        «      rÏt        t        |j                  di «      «      }|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d
«      dk(  sJ ‚|j                  d	«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      }|€J ‚|j                  «       dk(  sJ ‚yyy)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è     sZ  € à
‡L�L„Nð 	�ð.€Lð 	�ð-€Fõ Ø×'Ñ'Ø&Ø ð (ó 
ˆô @Ø�K‰K×*Ñ*ó
ˆñ œZ¨´tÔ<Ü!%Ü'¨×):Ñ):¸6À2Ó)Fó"Ðð &×)Ñ)¨'Ó2°hÒ>Ð>Ð>Ø%×)Ñ)Ð*;Ó<ÀÒCÐCÐCØ%×)Ñ)¨+Ó6¸#Ò=Ð=Ð=Ø%×)Ñ)¨/Ó:¸bÒ@Ð@Ð@à×"Ñ"Ð#7Ó8ˆBØ�>Ð!�>Ø—7‘7“9 	Ò)Ð)Ñ)ð =ˆ=ð ×'Ñ'Ø&Ø ð (ó 
ˆô @Ø�K‰K×*Ñ*ó
ˆñ œZ¨´tÔ<Ü"&Ü(¨-×*;Ñ*;¸GÀRÓ*Hó#Ðð '×*Ñ*¨7Ó3°xÒ?Ð?Ð?Ø&×*Ñ*Ð+<Ó=ÀÒDÐDÐDØ&×*Ñ*¨?Ó;¸rÒAÐAÐAØ&×*Ñ*¨;Ó7¸3Ò>Ð>Ð>Ø&×*Ñ*¨?Ó;¸sÒBÐBÐBØ&×*Ñ*¨>Ó:¸cÒAÐAÐAà×"Ñ"Ð#7Ó8ˆBØ�>Ð!�>Ø—7‘7“9 	Ò)Ð)Ñ)ð =ˆ=r'   c                 ót  — | j                  «        d}t        t        j                  |«      «      }i }|j	                  d«      �"t        t        |j	                  d«      «      |d<   |j	                  d«      �|j	                  d«      |d<   t        rÔ| j                  d|¬«      }t        |j                  j                  «      }|rŸt        |t        «      rŽt        t        |j	                  di «      «      }|j	                  d«      }|j	                  d«      d	k(  sJ ‚|j	                  d
«      dk(  sJ ‚|j	                  d«      dk(  sJ ‚|j	                  d«      dk(  sJ ‚|€J ‚yyy| j                  d|¬«      }t        |j                  j                  «      }|r t        |t        «      r�t        t        |j	                  di «      «      }|j	                  d«      d	k(  sJ ‚|j	                  d«      dk(  sJ ‚|j	                  d«      dk(  sJ ‚|j	                  d
«      dk(  sJ ‚|j	                  d«      dk(  sJ ‚yyy)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  se  € à
‡L�L„Nð€Kô( @ÄÇ
Á
È;Ó@WÓXÐð 46€MØ×Ñ˜WÓ%Ð1Ü!%Ü$Ð&7×&;Ñ&;¸GÓ&Dó"
ˆ�gÑð ×ÑÐ1Ó2Ð>Ø.?×.CÑ.CØ ó/
ˆÐ*Ñ+õ Ø×'Ñ'Ø"Ø'ð (ó 
ˆô @Ø�K‰K×*Ñ*ó
ˆñ œZ¨´tÔ<Ü!%Ü'¨×):Ñ):¸6À2Ó)Fó"Ðð ×"Ñ"Ð#7Ó8ˆBØ%×)Ñ)¨'Ó2°hÒ>Ð>Ð>Ø%×)Ñ)Ð*;Ó<ÀÒCÐCÐCØ%×)Ñ)¨+Ó6¸#Ò=Ð=Ð=Ø%×)Ñ)¨/Ó:¸bÒ@Ð@Ð@Ø�>Ð!‘>ð =ˆ=ð ×'Ñ'Ø"Ø'ð (ó 
ˆô @Ø�K‰K×*Ñ*ó
ˆñ œZ¨´tÔ<Ü"&Ü(¨-×*;Ñ*;¸GÀRÓ*Hó#Ðð '×*Ñ*¨7Ó3°xÒ?Ð?Ð?Ø&×*Ñ*¨?Ó;¸qÒ@Ð@Ð@Ø&×*Ñ*¨>Ó:¸bÒ@Ð@Ð@Ø&×*Ñ*Ð+<Ó=ÀÒDÐDÐDØ&×*Ñ*¨;Ó7¸3Ò>Ð>Ñ>ð =ˆ=r'   c                 óÀ  — | j                  «        ddddœ}| j                  dd|i¬«      }dd	d
œ}d|i}|j                  |¬«       |j                  }|rtt	        |t
        «      rd|j                  di «      }t	        |t
        «      rB|j                  d«      dk(  sJ ‚|j                  d«      d	k(  sJ ‚|j                  d«      dk(  sJ ‚| j                  d«      }|j                  }|rwt	        |t
        «      rf|j                  di «      }t	        |t
        «      rC|j                  d«      dk(  sJ ‚|j                  d«      d	k(  sJ ‚|j                  d«      dk(  sJ ‚yyyy)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ð ØØñ/€Mð
 ×#Ñ#Ø!Ø Ð.ð $ó €Dð Øñ.€Lð
 	�ð4€Mð 	‡K�K˜m€KÔ,ð ×+Ñ+€MÙœ M´4Ô8Ø$×(Ñ(¨°"Ó5ˆÜ�l¤DÔ)Ø×#Ñ# KÓ0°CÒ7Ð7Ð7Ø×#Ñ# OÓ4¸Ò:Ð:Ð:à×#Ñ# GÓ,°Ò8Ð8Ð8à× Ñ Ð!5Ó6€DØ×+Ñ+€MÙœ M´4Ô8Ø$×(Ñ(¨°"Ó5ˆÜ�l¤DÔ)Ø×#Ñ# KÓ0°CÒ7Ð7Ð7Ø×#Ñ# OÓ4¸Ò:Ð:Ð:Ø×#Ñ# GÓ,°Ò8Ð8Ñ8ð *ð 9€}r'   c                 óê  — | j                  «        dddddddœ}| j                  dd	|i¬
«      }t        t        dd¬«      ¬«      }|j	                  |¬«       |j
                  }|r¶t        |t        «      r¦|j                  d	i «      }t        |t        «      r„|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚| j                  d«      }|j
                  }|r¹t        |t        «      r¨|j                  d	i «      }t        |t        «      r…|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚yyyy)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ð ØØØØØñ/€Mð ×#Ñ#Ø%Ø Ð.ð $ó €Dô
 2Ü&ØØô
ô€Mð 	‡K�K˜m€KÔ,ð ×+Ñ+€MÙœ M´4Ô8Ø$×(Ñ(¨°"Ó5ˆÜ�l¤DÔ)à×#Ñ# KÓ0°CÒ7Ð7Ð7Ø×#Ñ# OÓ4¸Ò:Ð:Ð:ð  ×#Ñ# GÓ,°Ò8Ð8Ð8Ø×#Ñ#Ð$5Ó6¸#Ò=Ð=Ð=Ø×#Ñ# OÓ4¸Ò:Ð:Ð:Ø×#Ñ# NÓ3°rÒ9Ð9Ð9à× Ñ Ð!9Ó:€DØ×+Ñ+€MÙœ M´4Ô8Ø$×(Ñ(¨°"Ó5ˆÜ�l¤DÔ)à×#Ñ# KÓ0°CÒ7Ð7Ð7Ø×#Ñ# OÓ4¸Ò:Ð:Ð:ð  ×#Ñ# GÓ,°Ò8Ð8Ð8Ø×#Ñ#Ð$5Ó6¸#Ò=Ð=Ð=Ø×#Ñ# OÓ4¸Ò:Ð:Ð:Ø×#Ñ# NÓ3°rÒ9Ð9Ñ9ð *ð 9€}r'   c                  ó@  — dddddddœ} dd	d
œ}t        | |«      }|j                  d«      dk(  sJ ‚|j                  d«      d	k(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚y)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€Nð ×Ñ˜oÓ.°"Ò4Ð4Ð4Ø×Ñ˜kÓ*¨cÒ1Ð1Ð1ð ×Ñ˜gÓ&¨(Ò2Ð2Ð2Ø×Ñ˜nÓ-°Ò3Ð3Ð3Ø×ÑÐ/Ó0°CÒ7Ð7Ð7Ø×Ñ˜oÓ.°"Ò4Ð4Ñ4r'   c                 óò   — | j                  «        dddœ}| j                  dd|i¬«      }ddi}d	d
i}||dœ}t        j                  t        «      5  |j                  |¬«       ddd«       y# 1 sw Y   yxY w)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ð Øñ-€Lð ×#Ñ#Ø$Ø˜|Ð,ð $ó €Dð 	�Rð,€Kð 	˜ð.€Lð Øñ4€Mô 
�‰”zÓ	"ñ 1Ø�‰ -ˆÔ0÷1÷ 1ñ 1ús   ÁA-Á-A6c                 ó  — | j                  «        | j                  d¬«      }|€J ‚|j                  €J ‚t        |j                  «      }|€J ‚|j	                  d«      }|€J ‚|j	                  d«      dk(  sJ ‚|j	                  d«      dk(  sJ ‚|j	                  d	«      d
k(  sJ ‚|j	                  d«      dk(  sJ ‚|j	                  d«      dk(  sJ ‚|j	                  d«      �J ‚|j	                  d«      }|€J ‚|j                  «       dk(  sJ ‚y)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Š   rV   r    r‹   s        r$   Ú test_default_collection_creationr	  R  s*  € à
‡L�L„Nà×#Ñ#Ð)@Ð#ÓA€DØÐÐÐà×"Ñ"Ð.Ð.Ð.Ü4°T×5LÑ5LÓM€FØÐÐÐØ—*‘*˜VÓ$€KØÐ"Ð"Ð"Ø�?‰?˜7Ó# tÒ+Ð+Ð+Ø�?‰?Ð,Ó-°Ò4Ð4Ð4Ø�?‰?˜?Ó+¨rÒ1Ð1Ð1Ø�?‰?˜;Ó'¨3Ò.Ð.Ð.à�?‰?Ð+Ó,°Ò4Ð4Ð4à�:‰:�gÓÐ&Ð&Ð&Ø	�‰Ð(Ó	)€BØˆ>Ðˆ>Ø�7‰7‹9˜	Ò!Ð!Ñ!r'   c                  ó˜   — dddddddœddd	i d
œdœ} t        j                  t        «      5  t        | «       ddd«       y# 1 sw Y   yxY w)z9Test that on an invalid configuration, an error is raisedr^   r�   r»   g333333ó?r  )r™   rš   rœ   r›   Úresize_factorr  NrQ   Úknown©r@   ÚtyperV   ©r˜   rÎ   rt   )r¯   r°   rä   r   )Úinvalid_configs    r$   Útest_invalid_configurationr  k  sd   € ð Ø"ØØØ Ø"ñ
ð àØØñ
ñ&€Nô  
�‰”zÓ	"ñ @Ü/°Ô?÷@÷ @ñ @ús   «A Á A	c           
      ó  — | j                  «        | j                  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  |j                  d
gdg¬«       ddd«       t        j                  t        «      5  |j                  dgd¬«       ddd«       y# 1 sw Y   Œ@xY w# 1 sw Y   yxY w)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   rQ   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ð ×#Ñ#Ð)>Ð#Ó?€Dð 	ØØØñ
ðÐô )Ø�7‰7Ø-Ø.ØØØØ�{‰{Ø—‘ô	Ðð Ð)Ð)Ð)Ø×"Ñ"Ð&FÒFÐFÐFØ×0Ñ0Ð4GÒGÐGÐGà$€D„Kä	�‰”zÓ	"ñ 0Ø�‰�c�U v hˆÔ/÷0ô 
�‰”zÓ	"ñ 6Ø�
‰
 ˜x°1ˆ
Ô5÷6ð 6÷0ð 0ú÷6ð 6ús   Â"C7ÃDÃ7D ÄDc                 óÀ  — | j                  «        dt        d¬«      i}| j                  d|¬«      }|j                  }|j                  }d|v sJ ‚|j                  d«      }|j                  d«      }|€J ‚|€J ‚|j                  d«      dk(  sJ ‚|j                  d	«      d
k(  sJ ‚|j                  «       d
k(  sJ ‚|j                  «       |j                  d«      k(  sJ ‚y)zHTest that configuration_json and configuration properties are consistentrt   é   rY   Útest_config_consistencyr¨   Nr  r  r@   rQ   rV   )r~   rE   r   r�   r©   r„   r@   rT   )ro   rV   rŠ   rð   Úconfig_processedÚef_jsonÚef_processeds          r$   Ú=test_configuration_json_vs_configuration_property_consistencyr%  ®  s  € ð ‡L�L„Nð 	Ô5¸!Ô<ð-€Fð ×#Ñ#Ø&Øð $ó €Dð ×)Ñ)€KØ×)Ñ)Ðà ;Ñ.Ð.Ð.ð �o‰oÐ2Ó3€GØ#×'Ñ'Ð(<Ó=€LØÐÐÐØÐ#Ð#Ð#Ø�;‰;�vÓ 'Ò)Ð)Ð)Ø�;‰;�vÓ +Ò-Ð-Ð-Ø×ÑÓ +Ò-Ð-Ð-Ø×"Ñ"Ó$¨¯©°HÓ(=Ò=Ð=Ñ=r'   c                 óZ  — | j                  «        | j                  d¬«      }|j                  }|j                  }d|v sJ ‚|j	                  d«      }|j	                  d«      }|€J ‚|€J ‚|j	                  d«      dk(  sJ ‚|j	                  d«      dk(  sJ ‚|j                  «       dk(  sJ ‚y)	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ð ×#Ñ#Ð)JÐ#ÓK€Dð ×)Ñ)€KØ×)Ñ)Ðà ;Ñ.Ð.Ð.ð �o‰oÐ2Ó3€GØ#×'Ñ'Ð(<Ó=€LØÐÐÐØÐ#Ð#Ð#Ø�;‰;�vÓ 'Ò)Ð)Ð)Ø�;‰;�vÓ )Ò+Ð+Ð+Ø×ÑÓ )Ò+Ð+Ñ+r'   c                 ó&  — | j                  «        | j                  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«       t        j                  t        «      5  |j                  dgdg¬«       ddd«       t        j                  t        «      5  |j                  dgd¬«       ddd«       t        j                  t        «      5  |j!                  dgdg¬«       ddd«       t        j                  t        «      5  |j#                  dg«       ddd«       �ŒŠ y# 1 sw Y   ŒåxY w# 1 sw Y   ŒºxY w# 1 sw Y   Œ�xY w# 1 sw Y   ŒexY w# 1 sw Y   �ŒÆxY w)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  rF   rb   )r  rV   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ð ×#Ñ#Ð)BÐ#ÓC€Dð !Ø(ØØñ#ð	
ð !Øà  !˜*ñ#ð	
ð ˜d�OØ˜xÐ(Ø#)¨8Ð"4ñ	
ð%-€Oô2 ' Ó7ó !"Ñˆˆ>ä#2Ø�w‰wØ'¨ sÐ+Ø-Ø"ØØØ—;‘;Ø—]‘]ô	$
Ð ð /ˆŒð �w‰wÐ2×5Ñ5Ò5Ð5Ð5Ø�y‰yÐ2°1°#Ð6Ò6Ð6Ð6Ø×&Ñ&¨.Ò8Ð8Ð8ä�]‰]œ:Ó&ñ 	Ø×Ò÷	ô �]‰]œ:Ó&ñ 	4Ø�H‰H˜#˜¨6¨(ˆHÔ3÷	4ô �]‰]œ:Ó&ñ 	:Ø�J‰J F 8°qˆJÔ9÷	:ô �]‰]œ:Ó&ñ 	7Ø�K‰K˜S˜E¨f¨XˆKÔ6÷	7ô �]‰]œ:Ó&ñ 	"Ø�K‰K˜˜Ô!÷	"ñ 	"ñA!"÷(	ð 	ú÷	4ð 	4ú÷	:ð 	:ú÷	7ð 	7ú÷	"ñ 	"ús<   Ã%GÄG"Å
G.Æ G:Æ7HÇG	Ç"G+	Ç.G7	Ç:H	ÈH	c                 ó4  — | j                  «        | j                  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  |j                  dgdg¬«       d
d
d
«       t        j                  t        «      5  |j                  dgd¬«       d
d
d
«       t        j                  t        «      5  |j                  dgdg¬«       d
d
d
«       t        j                  t        «      5  |j                  }d
d
d
«       y
# 1 sw Y   Œ¥xY w# 1 sw Y   Œ{xY w# 1 sw Y   ŒPxY w# 1 sw Y   y
xY w)zv
    Test that get_collection works even with invalid configurations,
    but operations that require _embed fail
    Útest_get_invalidrt   rn   rY   r¨   Únonexistent_functionr  rF   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ð ×)Ñ)ØØ+Ô-DÈÔ-KÐLð *ó €Jð 	Ø*ØØ˜a�jñ
ð€Nð ,:€J×ÑÔ(ð �?‰?Ð0Ò0Ð0Ð0Ø�=‰=Ð$Ð$Ð$Ø×(Ñ(¨NÒ:Ð:Ð:Ø×ÑÐ(Ð(Ð(Ø×ÑÐ*Ð*Ð*ô 
�‰”zÓ	"ñ =Ø�‰˜F˜8°
¨|ˆÔ<÷=ô 
�‰”zÓ	"ñ <Ø×Ñ f X¸ÐÔ;÷<ô 
�‰”zÓ	"ñ @Ø×Ñ˜v˜h°:°,ÐÔ?÷@ô 
�‰”zÓ	"ñ %Ø×$Ñ$ˆ÷%ð %÷=ð =ú÷<ð <ú÷@ð @ú÷%ð %ús0   Â0E*Ã'E6ÄFÅFÅ*E3Å6E?ÆFÆFc                 óŽ  — | j                  «        | j                  dt        d¬«      ¬«      }|€J ‚|j                  j	                  d«      }|€J ‚|j                  «       dk(  sJ ‚|j                  «       ddik(  sJ ‚| j                  dt        d¬«      ¬«      }|€J ‚|j                  j	                  d«      }|€J ‚|j                  «       dk(  sJ ‚|j                  «       ddik(  sJ ‚| j                  d¬	«      }|j                  j	                  d«      }|€J ‚|j                  «       dk(  sJ ‚|j                  «       ddik(  sJ ‚y)
z0Test creating a collection with no EF in config.Útest_no_configrb   rY   rs   Nrt   rQ   rF   r¼   ©	r~   r   rE   r©   r„   r@   rT   Úget_or_create_collectionr…   ©ro   rŠ   r‹   s      r$   Útest_ef_no_configr@  b  sb  € à
‡L�L„NØ×#Ñ#ØÔ2IÈaÔ2Pð $ó €Dð ÐÐÐØ	×	Ñ	×	Ñ	Ð 4Ó	5€BØˆ>Ðˆ>Ø�7‰7‹9˜Ò#Ð#Ð#Ø�=‰=‹?˜u a˜jÒ(Ð(Ð(à×*Ñ*ØÔ2IÈaÔ2Pð +ó €Dð ÐÐÐØ	×	Ñ	×	Ñ	Ð 4Ó	5€BØˆ>Ðˆ>Ø�7‰7‹9˜Ò#Ð#Ð#Ø�=‰=‹?˜u a˜jÒ(Ð(Ð(à× Ñ Ð&6Ð Ó7€DØ	×	Ñ	×	Ñ	Ð 4Ó	5€BØˆ>Ðˆ>Ø�7‰7‹9˜Ò#Ð#Ð#Ø�=‰=‹?˜u a˜jÒ(Ð(Ñ(r'   c                 ó¢  — | j                  «        | j                  dt        d¬«      dddii¬«      }|€J ‚|j                  j	                  d	«      }|€J ‚|j                  «       d
k(  sJ ‚|j                  «       ddik(  sJ ‚| j                  dt        d¬«      dddii¬«      }|€J ‚|j                  j	                  d	«      }|€J ‚|j                  «       d
k(  sJ ‚|j                  «       ddik(  sJ ‚| j                  d¬«      }|j                  j	                  d	«      }|€J ‚|j                  «       d
k(  sJ ‚|j                  «       ddik(  sJ ‚y)zATest creating a collection with EF in parameter, no EF in config.Ú test_ef_with_config_exists_no_efrb   rY   r˜   r™   r’   ©r@   rt   r©   Nrt   rQ   rF   r¼   r=  r?  s      r$   rB  rB  ~  s|  € à
‡L�L„NØ×#Ñ#Ø/Ü2°qÔ9Ø ¨Ð2Ð3ð $ó €Dð
 ÐÐÐØ	×	Ñ	×	Ñ	Ð 4Ó	5€BØˆ>Ðˆ>Ø�7‰7‹9˜Ò#Ð#Ð#Ø�=‰=‹?˜u a˜jÒ(Ð(Ð(à×*Ñ*Ø/Ü2°qÔ9Ø ¨Ð2Ð3ð +ó €Dð
 ÐÐÐØ	×	Ñ	×	Ñ	Ð 4Ó	5€BØˆ>Ðˆ>Ø�7‰7‹9˜Ò#Ð#Ð#Ø�=‰=‹?˜u a˜jÒ(Ð(Ð(à× Ñ Ð&HÐ ÓI€DØ	×	Ñ	×	Ñ	Ð 4Ó	5€BØˆ>Ðˆ>Ø�7‰7‹9˜Ò#Ð#Ð#Ø�=‰=‹?˜u a˜jÒ(Ð(Ñ(r'   c                 óÎ  — | j                  «        | j                  dt        d¬«      ddit        d¬«      dœ¬«      }|€J ‚|j                  j	                  d	«      }|€J ‚|j                  «       d
k(  sJ ‚|j                  «       ddik(  sJ ‚| j                  dt        d¬«      ddit        d¬«      dœ¬«      }|€J ‚|j                  j	                  d	«      }|€J ‚|j                  «       d
k(  sJ ‚|j                  «       ddik(  sJ ‚| j                  d¬«      }|j                  j	                  d	«      }|€J ‚|j                  «       d
k(  sJ ‚|j                  «       ddik(  sJ ‚y)zQTest creating a collection with EF in parameter, EF in config. They are the same.Ú"test_ef_with_config_exists_with_efrb   rY   r™   r’   r¦   rC  Nrt   rQ   rF   r¼   r=  r?  s      r$   Ú(test_ef_with_config_exists_with_ef_validrF  ž  sŒ  € à
‡L�L„NØ×#Ñ#Ø1Ü2°qÔ9à˜hÐ'Ü"9¸aÔ"@ñ
ð $ó €Dð ÐÐÐØ	×	Ñ	×	Ñ	Ð 4Ó	5€BØˆ>Ðˆ>Ø�7‰7‹9˜Ò#Ð#Ð#Ø�=‰=‹?˜u a˜jÒ(Ð(Ð(à×*Ñ*Ø1Ü2°qÔ9à˜hÐ'Ü"9¸aÔ"@ñ
ð +ó €Dð ÐÐÐØ	×	Ñ	×	Ñ	Ð 4Ó	5€BØˆ>Ðˆ>Ø�7‰7‹9˜Ò#Ð#Ð#Ø�=‰=‹?˜u a˜jÒ(Ð(Ð(à× Ñ Ð&JÐ ÓK€DØ	×	Ñ	×	Ñ	Ð 4Ó	5€BØˆ>Ðˆ>Ø�7‰7‹9˜Ò#Ð#Ð#Ø�=‰=‹?˜u a˜jÒ(Ð(Ñ(r'   c           	      óÚ   — | j                  «        t        j                  t        «      5  | j	                  dt        d¬«      ddit        d¬«      dœ¬«       ddd«       y# 1 sw Y   yxY w)	zRTest creating a collection with EF in parameter, EF in config. They are different.rE  rb   rY   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Ü	�‰”zÓ	"ñ 
Ø× Ñ Ø5Ü6¸1Ô=à  (Ð+Ü&>À1Ô&Eñð 	!ô 	
÷
÷ 
ñ 
úó   ª.A!Á!A*c           	      óÚ   — | j                  «        t        j                  t        «      5  | j	                  dt        d¬«      ddit        d¬«      dœ¬«       ddd«       y# 1 sw Y   yxY w)	zJTest get_or_create with EF in parameter, EF in config. They are different.rE  rb   rY   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Ü	�‰”zÓ	"ñ 
Ø×'Ñ'Ø5Ü6¸1Ô=à  (Ð+Ü&>À1Ô&Eñð 	(ô 	
÷
÷ 
ñ 
úrJ  c                 óþ   — | j                  «        | j                  dddit        d¬«      dœ¬«       t        j                  t
        «      5  | j                  dt        d¬«      ¬«       d	d	d	«       y	# 1 sw Y   y	xY w)
zKTest get_collection with EF in parameter, EF in config. They are different.rE  r™   r’   rb   rY   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  à  sy   € ð ‡L�L„NØ
×ÑØ1à˜hÐ'Ü":¸qÔ"Añ
ð ô ô 
�‰”zÓ	"ñ 
Ø×ÑØ5Ü6¸1Ô=ð 	ô 	
÷
÷ 
ñ 
ús   ÁA3Á3A<c           	      óB  — | j                  «        | j                  dt        d¬«      ¬«      }|€J ‚|j                  j	                  d«      }|€J ‚|j                  «       dk(  sJ ‚|j                  «       ddik(  sJ ‚t        j                  t        «      5  | j                  dt        d¬«      dt        d¬«      i¬	«       ddd«       t        j                  t        «      5  | j                  dt        d¬«      ¬«       ddd«       y# 1 sw Y   ŒIxY w# 1 sw Y   yxY w)
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_efrb   rY   rs   Nrt   rQ   rF   rC  )r~   r   rE   r©   r„   r@   rT   r¯   r°   rä   r>  rf   r?  s      r$   rP  rP  ó  s  € ð ‡L�L„NØ×#Ñ#Ø6Ü2°qÔ9ð $ó €Dð ÐÐÐØ	×	Ñ	×	Ñ	Ð 4Ó	5€BØˆ>Ðˆ>Ø�7‰7‹9˜Ò#Ð#Ð#Ø�=‰=‹?˜u a˜jÒ(Ð(Ð(ä	�‰”zÓ	"ñ 
Ø×'Ñ'Ø:Ü7¸AÔ>Ø/Ô1HÈQÔ1OÐPð 	(ô 	
÷
ô 
�‰”zÓ	"ñ 
Ø×'Ñ'Ø:Ü7¸AÔ>ð 	(ô 	
÷
ð 
÷
ð 
ú÷
ð 
ús   Â+D	Ã"DÄ	DÄD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y)Ú#DefaultSpaceCustomEmbeddingFunctionÚ
model_namerF   c                 ó    — || _         || _        y r    )rI   Ú_model_name)r#   rS  rF   s      r$   r%   z,DefaultSpaceCustomEmbeddingFunction.__init__  s   € ØˆŒ	Ø%ˆÕr'   r(   r   c                 ó†   — t        t        t        j                  dg| j                  z  gt        j
                  ¬«      «      S rM   rN   r3   s     r$   r4   z,DefaultSpaceCustomEmbeddingFunction.__call__  rO   r'   c                   ó   — y)NÚdefault_space_custom_efr!   r!   r'   r$   r@   z(DefaultSpaceCustomEmbeddingFunction.name  s   € à(r'   c                 ó4   — | j                   | j                  dœS )N©rS  rF   )rU  rI   r"   s    r$   rT   z.DefaultSpaceCustomEmbeddingFunction.get_config  s   € Ø"×.Ñ.°t·y±yÑAÐAr'   rV   c                 ó(   — t        | d   | d   ¬«      S )NrS  rF   rZ  )rR  rZ   s    r$   r[   z5DefaultSpaceCustomEmbeddingFunction.build_from_config"  s   € ô 3Ø˜lÑ+°¸±ô
ð 	
r'   c                 ód   — | j                   dk(  ry| j                   dk(  ry| j                   dk(  ryy)NÚi_want_cosiner’   Ú	i_want_l2r^   Ú	i_want_ipÚip©rU  r"   s    r$   r_   z1DefaultSpaceCustomEmbeddingFunction.default_space*  s8   € Ø×Ñ˜Ò.ØØ×Ñ Ò,ØØ×Ñ Ò,Øàr'   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  s]   € Ø×Ñ˜Ò.Ø�:ÐØ×Ñ Ò,Ø�6ˆMØ×Ñ Ò,Ø�6ˆMØ×ÑÐ!2Ò2Ú)Ð)â)Ð)r'   Nra   )r7   r8   r9   rC   rd   r%   r
   r   r4   rB   r@   r   r   rT   r[   r	   r_   r   re  r!   r'   r$   rR  rR    s¤   „ ñ& 3ð &¨Só &ðQ˜jð Q¨Zó Qð ð)�#ò )ó ð)ðB˜D  c ™Nó Bð ð
Ø�S˜#�X‘ð
à	.ò
ó ð
ð˜uó ð
* $ u¡+ô 
*r'   rR  c                 óp  — | j                  «        | j                  dt        dd¬«      ¬«      }|€J ‚|j                  j	                  d«      }|€J ‚|j                  «       dk(  sJ ‚|j                  «       dddœk(  sJ ‚|j                  «       dk(  sJ ‚|j                  «       dgk(  sJ ‚t        r5|j                  j	                  d	«      }|€J ‚|j	                  d
«      dk(  s7J ‚|j                  j	                  d«      }|€J ‚|j	                  d
«      dk(  sJ ‚| j                  dt        dd¬«      ¬«      }|€J ‚|j                  j	                  d«      }|€J ‚|j                  «       dk(  sJ ‚|j                  «       dddœk(  sJ ‚|j                  «       dk(  sJ ‚|j                  «       dgk(  sJ ‚t        r5|j                  j	                  d	«      }|€J ‚|j	                  d
«      dk(  s7J ‚|j                  j	                  d«      }|€J ‚|j	                  d
«      dk(  sJ ‚| j                  dt        dd¬«      ¬«      }|€J ‚|j                  j	                  d«      }|€J ‚|j                  «       dk(  sJ ‚|j                  «       dddœk(  sJ ‚|j                  «       dk(  sJ ‚|j                  «       dgk(  sJ ‚t        r5|j                  j	                  d	«      }|€J ‚|j	                  d
«      dk(  s7J ‚|j                  j	                  d«      }|€J ‚|j	                  d
«      dk(  sJ ‚| j                  dt        dd¬«      ¬«      }|€J ‚|j                  j	                  d«      }|€J ‚|j                  «       dk(  sJ ‚|j                  «       dddœk(  sJ ‚|j                  «       dk(  sJ ‚|j                  «       g d¢k(  sJ ‚t        r6|j                  j	                  d	«      }|€J ‚|j	                  d
«      dk(  sJ ‚y |j                  j	                  d«      }|€J ‚|j	                  d
«      dk(  sJ ‚y )NÚ,test_default_space_custom_embedding_functionr]  rb   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@   rT   r_   re  r   r>  ©ro   rŠ   r‹   r    rÖ   s        r$   Ú6test_default_space_custom_embedding_function_no_configrl  A  s¯  € Ø
‡L�L„NØ×#Ñ#Ø;Ü>Ø&¨Aô
ð $ó €Dð ÐÐÐØ	×	Ñ	×	Ñ	Ð 4Ó	5€BØˆ>Ðˆ>Ø�7‰7‹9Ð1Ò1Ð1Ð1Ø�=‰=‹?¨_ÀQÑGÒGÐGÐGØ×ÑÓ Ò)Ð)Ð)Ø×ÑÓ  X JÒ.Ð.Ð.åØ×(Ñ(×,Ñ,¨VÓ4ˆØÐ&Ð&Ð&Ø�‰˜wÓ'¨8Ò3Ð3Ð3à×)Ñ)×-Ñ-¨gÓ6ˆØÐ'Ð'Ð'Ø×Ñ Ó(¨HÒ4Ð4Ð4à×*Ñ*Ø>Ü>Ø"¨ô
ð +ó €Dð ÐÐÐØ	×	Ñ	×	Ñ	Ð 4Ó	5€BØˆ>Ðˆ>Ø�7‰7‹9Ð1Ò1Ð1Ð1Ø�=‰=‹?¨[ÀÑCÒCÐCÐCØ×ÑÓ Ò%Ð%Ð%Ø×ÑÓ  T FÒ*Ð*Ð*åØ×(Ñ(×,Ñ,¨VÓ4ˆØÐ&Ð&Ð&Ø�‰˜wÓ'¨4Ò/Ð/Ð/à×)Ñ)×-Ñ-¨gÓ6ˆØÐ'Ð'Ð'Ø×Ñ Ó(¨DÒ0Ð0Ð0à×*Ñ*Ø>Ü>Ø"¨ô
ð +ó €Dð ÐÐÐØ	×	Ñ	×	Ñ	Ð 4Ó	5€BØˆ>Ðˆ>Ø�7‰7‹9Ð1Ò1Ð1Ð1Ø�=‰=‹?¨[ÀÑCÒCÐCÐCØ×ÑÓ Ò%Ð%Ð%Ø×ÑÓ  T FÒ*Ð*Ð*åØ×(Ñ(×,Ñ,¨VÓ4ˆØÐ&Ð&Ð&Ø�‰˜wÓ'¨4Ò/Ð/Ð/à×)Ñ)×-Ñ-¨gÓ6ˆØÐ'Ð'Ð'Ø×Ñ Ó(¨DÒ0Ð0Ð0à×*Ñ*ØDÜ>Ø(¨aô
ð +ó €Dð ÐÐÐØ	×	Ñ	×	Ñ	Ð 4Ó	5€BØˆ>Ðˆ>Ø�7‰7‹9Ð1Ò1Ð1Ð1Ø�=‰=‹?Ð->ÀqÑIÒIÐIÐIØ×ÑÓ Ò)Ð)Ð)Ø×ÑÓ Ò$:Ò:Ð:Ð:åØ×(Ñ(×,Ñ,¨VÓ4ˆØÐ&Ð&Ð&Ø�‰˜wÓ'¨8Ò3Ð3Ñ3à×)Ñ)×-Ñ-¨gÓ6ˆØÐ'Ð'Ð'Ø×Ñ Ó(¨HÒ4Ð4Ñ4r'   c                 ó˜  — | j                  «        t        r$| j                  dt        dd¬«      dddii¬«      }n#| j                  dt        dd¬«      d	ddii¬«      }|€J ‚|j                  j                  d
«      }|€J ‚|j                  «       dk(  sJ ‚|j                  «       dddœk(  sJ ‚|j                  «       dk(  sJ ‚|j                  «       g d¢k(  sJ ‚t        r6|j                  j                  d«      }|€J ‚|j                  d«      dk(  sJ ‚y |j                  j                  d	«      }|€J ‚|j                  d«      dk(  sJ ‚y )NÚ>test_default_space_custom_embedding_function_with_valid_configrc  rb   rZ  r˜   r™   r^   rC  rÎ   rt   rX  r’   rd  )
r~   r   r   rR  r©   r„   r@   rT   r_   re  rk  s        r$   rn  rn     s|  € ð ‡L�L„NÝØ×'Ñ'ØQÜBØ,°!ô ð " G¨T ?Ð3ð (ó 
‰ð ×'Ñ'ØQÜBØ,°!ô ð # W¨d OÐ4ð (ó 
ˆð ÐÐÐØ	×	Ñ	×	Ñ	Ð 4Ó	5€BØˆ>Ðˆ>Ø�7‰7‹9Ð1Ò1Ð1Ð1Ø�=‰=‹?Ð->ÀqÑIÒIÐIÐIØ×ÑÓ Ò)Ð)Ð)Ø×ÑÓ Ò$:Ò:Ð:Ð:åØ×(Ñ(×,Ñ,¨VÓ4ˆØÐ&Ð&Ð&Ø�‰˜wÓ'¨4Ò/Ð/Ñ/à×)Ñ)×-Ñ-¨gÓ6ˆØÐ'Ð'Ð'Ø×Ñ Ó(¨DÒ0Ð0Ñ0r'   c                 ó$  — | j                  «        t        j                  d¬«      5 }t        j                  d«       t        r$| j                  dt        dd¬«      dd	d
ii¬«      }n#| j                  dt        dd¬«      dd	d
ii¬«      }t        |«      dkD  sJ ‚|D �cg c]  }t        |j                  «      ‘Œ }}t        d„ |D «       «      sJ ‚|€J ‚|j                  j                  d«      }|€J ‚|j                  «       dk(  sJ ‚t        r5|j                  j                  d«      }|€J ‚|j                  d	«      d
k(  s7J ‚|j                  j                  d«      }|€J ‚|j                  d	«      d
k(  sJ ‚d d d «       y c c}w # 1 sw Y   y xY w)NT©ÚrecordÚalwaysÚ@test_default_space_custom_embedding_function_with_invalid_configr]  rb   rZ  r˜   r™   r^   rC  rÎ   r   c              3   ó@   K  — | ]  }d |j                  «       v –— Œ y­w©zspace l2 is not supportedN©Úlower©Ú.0Úmsgs     r$   ú	<genexpr>zStest_default_space_custom_embedding_function_with_invalid_config.<locals>.<genexpr>á  ó!   è ø€ ò 
Ø;>Ð'¨3¯9©9«;Ô6ñ
ùó   ‚rt   rX  )r~   ÚwarningsÚcatch_warningsÚsimplefilterr   r>  rR  rˆ   rC   ÚmessageÚanyr©   r„   r@   ©ro   ÚwrŠ   ÚwarningÚwarning_messagesr‹   r    rÖ   s           r$   rs  rs  Ç  sÀ  € ð ‡L�L„NÜ	×	 Ñ	 ¨Ô	-ð &5°Ü×Ñ˜hÔ'å!Ø×2Ñ2ØWÜ#FØ.°Aô$ð  &¨° Ð7ð 3ó ‰Dð ×2Ñ2ØWÜ#FØ.°Aô$ð  '¨°$¨Ð8ð 3ó ˆDô �1‹v˜ŠzÐˆzØ@AÖB°WœC §¡Õ0ÐBÐÐBÜñ 
ØBRô
ô 
ð 	
ð 
ð ÐÐÐØ×Ñ×#Ñ#Ð$8Ó9ˆØˆ~Ðˆ~Ø�w‰w‹yÐ5Ò5Ð5Ð5å!Ø×,Ñ,×0Ñ0°Ó8ˆKØÐ*Ð*Ð*Ø—?‘? 7Ó+¨tÒ3Ð3Ð3à×-Ñ-×1Ñ1°'Ó:ˆLØÐ+Ð+Ð+Ø×#Ñ# GÓ,°Ò4Ð4Ð4÷M&5ð &5ùò* C÷+&5ð &5ús   §A7FÂFÂ:B>FÆFÆFc                 ó@  — | j                  «        | j                  dt        dd¬«      ddi¬«      }|€J ‚|j                  j	                  d«      }|€J ‚|j                  «       d	k(  sJ ‚|j                  «       dddœk(  sJ ‚|j                  «       d
k(  sJ ‚|j                  «       g d¢k(  sJ ‚t        r6|j                  j	                  d«      }|€J ‚|j	                  d«      dk(  sJ ‚y |j                  j	                  d«      }|€J ‚|j	                  d«      dk(  sJ ‚y )NÚ:test_default_space_custom_embedding_function_with_metadatarc  rb   rZ  r•   r`  ©r@   rt   r—   rt   rX  r’   rd  r˜   r™   rÎ   ©
r~   r   rR  r©   r„   r@   rT   r_   re  r   rk  s        r$   rˆ  rˆ  ô  s@  € ð ‡L�L„NØ×#Ñ#ØIÜ>Ø(¨aô
ð  Ð%ð $ó €Dð ÐÐÐØ	×	Ñ	×	Ñ	Ð 4Ó	5€BØˆ>Ðˆ>Ø�7‰7‹9Ð1Ò1Ð1Ð1Ø�=‰=‹?Ð->ÀqÑIÒIÐIÐIØ×ÑÓ Ò)Ð)Ð)Ø×ÑÓ Ò$:Ò:Ð:Ð:åØ×(Ñ(×,Ñ,¨VÓ4ˆØÐ&Ð&Ð&Ø�‰˜wÓ'¨4Ò/Ð/Ñ/à×)Ñ)×-Ñ-¨gÓ6ˆØÐ'Ð'Ð'Ø×Ñ Ó(¨DÒ0Ð0Ñ0r'   c                 óR  — | j                  «        t        j                  d¬«      5 }t        j                  d«       | j	                  dt        dd¬«      dd	i¬
«      }t        |«      dkD  sJ ‚|D �cg c]  }t        |j                  «      ‘Œ }}t        d„ |D «       «      sJ ‚|€J ‚|j                  j                  d«      }|€J ‚|j                  «       dk(  sJ ‚|j                  «       dddœk(  sJ ‚|j                  «       dk(  sJ ‚|j                  «       dgk(  sJ ‚t         r5|j                  j                  d«      }|€J ‚|j                  d«      d	k(  s7J ‚|j                  j                  d«      }|€J ‚|j                  d«      d	k(  sJ ‚d d d «       y c c}w # 1 sw Y   y xY w)NTrp  rr  ÚBtest_default_space_custom_embedding_function_with_invalid_metadatar]  rb   rZ  r•   r^   r‰  r   c              3   ó@   K  — | ]  }d |j                  «       v –— Œ y­wru  rv  rx  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ˆ   rC   r�  r‚  r©   r„   r@   rT   r_   re  r   rƒ  s           r$   rŒ  rŒ    sÍ  € ð ‡L�L„NÜ	×	 Ñ	 ¨Ô	-ð  5°Ü×Ñ˜hÔ'à×'Ñ'ØUÜBØ*°ô ð # DÐ)ð (ó 
ˆô �1‹v˜ŠzÐˆzØ@AÖB°WœC §¡Õ0ÐBÐÐBÜñ 
ØBRô
ô 
ð 	
ð 
ð ÐÐÐØ×Ñ×#Ñ#Ð$8Ó9ˆØˆ~Ðˆ~Ø�w‰w‹yÐ5Ò5Ð5Ð5Ø�}‰}‹°ÈÑ"KÒKÐKÐKØ×ÑÓ! XÒ-Ð-Ð-Ø×"Ñ"Ó$¨¨
Ò2Ð2Ð2å!Ø×,Ñ,×0Ñ0°Ó8ˆKØÐ*Ð*Ð*Ø—?‘? 7Ó+¨tÒ3Ð3Ð3à×-Ñ-×1Ñ1°'Ó:ˆLØÐ+Ð+Ð+Ø×#Ñ# GÓ,°Ò4Ð4Ð4÷A 5ð  5ùò C÷ 5ð  5ús   §AFÁ2FÂDFÆFÆF&c                 óJ  — | j                  «        | j                  ddddiit        dd¬«      dd	i¬
«      }|€J ‚|j                  j	                  d«      }|€J ‚|j                  «       dk(  sJ ‚|j                  «       dddœk(  sJ ‚|j                  «       dk(  sJ ‚|j                  «       g d¢k(  sJ ‚t        r6|j                  j	                  d«      }|€J ‚|j	                  d«      dk(  sJ ‚y |j                  j	                  d«      }|€J ‚|j	                  d«      dk(  sJ ‚y )NÚEtest_default_space_custom_embedding_function_with_metadata_and_configr˜   r™   r`  rc  rb   rZ  r•   r^   )r@   r©   rt   r—   rt   rX  r’   rd  rÎ   rŠ  rk  s        r$   r�  r�  9  sL  € ð ‡L�L„NØ×#Ñ#ØTØ ¨˜Ð/Ü>Ø(¨aô
ð  Ð%ð $ó €Dð ÐÐÐØ	×	Ñ	×	Ñ	Ð 4Ó	5€BØˆ>Ðˆ>Ø�7‰7‹9Ð1Ò1Ð1Ð1Ø�=‰=‹?Ð->ÀqÑIÒIÐIÐIØ×ÑÓ Ò)Ð)Ð)Ø×ÑÓ Ò$:Ò:Ð:Ð:åØ×(Ñ(×,Ñ,¨VÓ4ˆØÐ&Ð&Ð&Ø�‰˜wÓ'¨4Ò/Ð/Ñ/à×)Ñ)×-Ñ-¨gÓ6ˆØÐ'Ð'Ð'Ø×Ñ Ó(¨DÒ0Ð0Ñ0r'   c                   ó   — e Zd ZU eed<   y)Ú"CustomEmbeddingFunctionQueryConfigÚtaskN)r7   r8   r9   rC   Ú__annotations__r!   r'   r$   r‘  r‘  X  s   … Ø
„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y)Ú&CustomEmbeddingFunctionWithQueryConfigNr’  rS  rF   Úquery_configc                 ó<   — || _         || _        || _        || _        y r    )rI   rU  Ú_taskÚ_query_config)r#   r’  rS  rF   r–  s        r$   r%   z/CustomEmbeddingFunctionWithQueryConfig.__init__^  s"   € ð ˆŒ	Ø%ˆÔØˆŒ
Ø)ˆÕr'   r(   r   c                 ó†   — t        t        t        j                  dg| j                  z  gt        j
                  ¬«      «      S rM   rN   r3   s     r$   r4   z/CustomEmbeddingFunctionWithQueryConfig.__call__j  rO   r'   c                 óü   — | j                   �`| j                   j                  d«      dk(  rBt        t        t	        j
                  dg| j                  z  gt        j                  ¬«      «      S | j                  |«      S )Nr’  r‡   r,   r-   )	r™  r„   r   r   r0   r1   rI   r2   r4   r3   s     r$   Úembed_queryz2CustomEmbeddingFunctionWithQueryConfig.embed_querym  s`   € Ø×ÑÐ)¨d×.@Ñ.@×.DÑ.DÀVÓ.LÐPWÒ.WÜœ
¤B§H¡H¨s¨e°d·i±iÑ.?Ð-@ÌÏ
É
Ô$SÓTÐTà—=‘= Ó'Ð'r'   c                   ó   — y)NÚcustom_ef_with_query_configr!   r!   r'   r$   r@   z+CustomEmbeddingFunctionWithQueryConfig.names  s   € à,r'   c                 ó`   — | j                   | j                  | j                  | j                  dœS )N©rS  rF   r’  r–  )rU  rI   r˜  r™  r"   s    r$   rT   z1CustomEmbeddingFunctionWithQueryConfig.get_configw  s,   € à×*Ñ*Ø—9‘9Ø—J‘JØ ×.Ñ.ñ	
ð 	
r'   rV   c                 ó¾   — | j                  d«      }| j                  d«      }| j                  d«      }| j                  d«      }|�|€J d«       ‚t        ||||¬«      S )NrS  rF   r’  r–  zThis code should not be reachedr   )r„   r•  )rV   rS  rF   r’  r–  s        r$   r[   z8CustomEmbeddingFunctionWithQueryConfig.build_from_config  sg   € ð —Z‘Z Ó-ˆ
Ø�j‰j˜ÓˆØ�z‰z˜&Ó!ˆØ—z‘z .Ó1ˆàÐ  Ø;Ð;Ó;�5ä5Ø! s°ÀLô
ð 	
r'   c                  ó   — y©Nr’   r!   r"   s    r$   r_   z4CustomEmbeddingFunctionWithQueryConfig.default_space�  s   € Ør'   c                 ó   — dgS r£  r!   r"   s    r$   re  z7CustomEmbeddingFunctionWithQueryConfig.supported_spaces’  s
   € ØˆzÐr'   )rb   N)r7   r8   r9   rC   rd   r   r‘  r%   r
   r   r4   rœ  rB   r@   r   r   rT   r[   r	   r_   r   re  r!   r'   r$   r•  r•  \  sÛ   „ ð ØEIñ
*àð
*ð ð
*ð ð	
*ð
 ÐAÑBó
*ðQ˜jð Q¨Zó Qð( ð (°
ó (ð ð-�#ò -ó ð-ð
˜D  c ™Nó 
ð ð
Ø�S˜#�X‘ð
à	1ò
ó ð
ð˜uó ð $ u¡+ô r'   r•  c           
      ó  — | j                  «        | j                  dt        dddddi¬«      ¬«      }|€J ‚|j                  j	                  d	«      }|€J ‚|j                  «       d
k(  sJ ‚|j                  «       dddddidœk(  sJ ‚|j                  «       dk(  sJ ‚|j                  «       dgk(  sJ ‚t        j                  |j                  d¬«      t        j                  g d¢gt        j                  ¬«      «      sJ ‚y )NÚ0test_custom_embedding_function_with_query_configÚdocumentrc  rb   r’  r‡   )r’  rS  rF   r–  rs   rt   rž  r   r’   úHow many people in Berlin?©r(   )r,   r,   r,   r-   )r~   r   r•  r©   r„   r@   rT   r_   re  r0   Úarray_equalrœ  r1   r2   r?  s      r$   r¦  r¦  –  s  € Ø
‡L�L„NØ×#Ñ#Ø?ÜAØØ(ØØ  'Ð*ô	
ð $ó €Dð ÐÐÐØ	×	Ñ	×	Ñ	Ð 4Ó	5€BØˆ>Ðˆ>Ø�7‰7‹9Ð5Ò5Ð5Ð5Ø�=‰=‹?Ø'ØØØ Ð)ñ	ò ð ð ð ×ÑÓ Ò)Ð)Ð)Ø×ÑÓ  X JÒ.Ð.Ð.Ü�>‰>Ø
�‰Ð9ˆÓ:Ü
�‰’/Ð"¬"¯*©*Ô5ôð ñ r'   c                 óÂ  — d}t        t        j                  |«      «      }|€J ‚|j                  d«      €J ‚|j                  d«      }|€J ‚|j	                  «       dddd dœk(  sJ ‚|j                  «       dk(  sJ ‚|j                  «       dgk(  sJ ‚t        j                  |j                  d¬	«      t        j                  g d
¢gt        j                  ¬«      «      sJ ‚y )Nzá
    {
        "embedding_function": {
            "type": "known",
            "name": "custom_ef_with_query_config",
            "config": {"model_name": "i_want_anything", "dim": 3, "task": "document"}
        }
    }
    rt   rc  rb   r§  r   r’   r¨  r©  )r+   r+   r+   r-   )r   rî   rï   r„   rT   r_   re  r0   rª  rœ  r1   r2   )ro   Újson_stringrV   r‹   s       r$   ÚNtest_deserializing_custom_embedding_function_with_query_config_no_query_configr­  ³  sî   € ð€Kô 5´T·Z±ZÀÓ5LÓM€FØÐÐÐØ�:‰:Ð*Ó+Ð7Ð7Ð7Ø	�‰Ð(Ó	)€BØˆ>Ðˆ>Ø�=‰=‹?Ø'ØØØñ	ò ð ð ð ×ÑÓ Ò)Ð)Ð)Ø×ÑÓ  X JÒ.Ð.Ð.Ü�>‰>Ø
�‰Ð9ˆÓ:Ü
�‰’/Ð"¬"¯*©*Ô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Ý 2ß UÝ 8ß &ôJÐ/°
Ñ;ô Jô	Ð&7¸
Ñ&Cô 	ð ôÐ/°
Ñ;ó ó ðð, ôÐ0°Ñ<ó ó ðð,$¨9ð $¸ó $ð<$°Yð $À4ó $ð<& ð &¨tó &ð:  9ð  °ó  ðF5¨	ð 5°dó 5ð$,:¨Ið ,:¸$ó ,:ó^)(ðX0¨Yð 0¸4ó 0ð.4"¨9ð 4"¸ó 4"ðn;" Yð ;"°4ó ;"ð| ‡�×ÑÐ*Ð3MÐÓNò(ó Oð(ðV
°Ið 
À$ó 
ð49*¨)ð 9*¸ó 9*ðxM?¨)ð M?¸ó M?ð` ‡�×ÑÐ*Ð3MÐÓNð*9¨Yð *9¸4ò *9ó Oð*9ðZ ‡�×ÑÐ*Ð3MÐÓNð8:¨	ð 8:°dò 8:ó Oð8:óv5ð@ ‡�×ÑÐ*Ð3MÐÓNð1¸9ð 1Èò 1ó Oð1ð>"¨Yð "¸4ó "ó2@ð,*6¸Ið *6È$ó *6ðZ>Øð>à	ó>ð@,Øð,à	ó,ð2H"ØðH"à	óH"ðV-%¸9ð -%Èó -%ð`)˜ið )¨Dó )ð8)¨Yð )¸4ó )ð@#)°Yð #)À4ó #)ðL
¸ið 
ÈDó 
ð
ÀYð 
ÐSWó 
ð
Øð
à	ó
ð&
°Ið 
À$ó 
ð> ô+*Ð*;¸JÑ*Gó +*ó ð+*ð\\5À9ð \5ÐQUó \5ð~$1Øð$1à	ó$1ðN*5Øð*5à	ó*5ðZ1Øð1à	ó1ð<$5Øð$5à	ó$5ðN1Øð1à	ó1ô>¨ô ð ô6Ð->¸zÑ-Jó 6ó ð6ðr¸Yð È4ó ð:Øðà	ôr'   