§
    ˜Štj9 ã            
       ó´  — d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dlmZ d dl	Z	d dl
Zd dlZd dlZd dlZd dlmZ d dlmZmZmZmZmZ d dlmZ d dlmZmZmZ d dlmZ ej        d	„ ¦   «         Z ej        d
„ ¦   «         Z!ej        d„ ¦   «         Z"dÇde#fd„Z$dÇde%de#fd„Z&ej'         (                    de!g¦  «        d„ ¦   «         Z)ej'         (                    de!g¦  «        d„ ¦   «         Z*ej'         (                    de!g¦  «        d„ ¦   «         Z+ej'         (                    de!g¦  «        d„ ¦   «         Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1g d¢g d¢gddgdœZ2d „ Z3d!„ Z4d"„ Z5g d¢g d¢gddgdœZ6d#„ Z7d$„ Z8d%„ Z9d&„ Z:d'„ Z;d(„ Z<d)„ Z=d*„ Z>d+„ Z?d,„ Z@d-„ ZAd.„ ZBd/„ ZCd0„ ZDd1„ ZEd2„ ZFd3„ ZGd4„ ZHd5„ ZId6„ ZJd7„ ZKd8„ ZLd9„ ZMd:„ ZNd;„ ZOd<„ ZPd=„ ZQd>„ ZRd?„ ZSg d¢g d¢gd@dAgdBdCdDdEœdFdGigdHœZTdI„ ZUdJ„ ZVdK„ ZWdL„ ZXdM„ ZYdN„ ZZg d¢g d¢gd@dAgdOdPdQiidOg dR¢igdHœZ[dS„ Z\dT„ Z]dU„ Z^dV„ Z_g d¢g d¢gd@dAgdBdCdDdEœdGdWdXdYœgdHœZ`dZ„ Zad[„ Zbd\„ Zcd]„ Zdd^„ Zed_„ Zfd`„ Zgg da¢g db¢gd@dAgdœZhdcg da¢g db¢giZig d¢g d¢gdddeœZjdf„ Zkdg„ Zldh„ Zmg d¢g d¢gdidjgd@dAgdBdCdDdEœdGdWdXdYœgdkœZndl„ Zodm„ Zpdn„ Zqg d¢g d¢g do¢g dp¢gg dq¢dBdCdDdrdsœdGdWdXdrdtœdudvdwdrdtœdxdydzdrdtœgg d{¢d|œZrd}„ Zsd~„ Ztg d¢g d¢gd@dAgdBdCdDdEœdFdGigd€d�gd|œZud‚„ Zvdƒ„ Zwd„„ Zxd…„ Zyd†„ Zzd‡„ Z{dˆ„ Z|d‰„ Z}dŠ„ Z~d‹„ ZdŒ„ Z€d�„ Z�dŽ„ Z‚d�„ Zƒd�„ Z„g d¢g d¢g d‘¢gg d’¢dBdCdDdEœdFdGid“dwigg d”¢d|œZ…g d•¢g d–¢gd@d—gdBd˜dDdEœdFdxigd™dšgd|œZ†d›„ Z‡dœ„ Zˆd�„ Z‰dž„ ZŠdŸ„ Z‹ej'         Œ                    duej�         Ž                    d ¦  «        ¬¡¦  «        d¢„ ¦   «         Z�ej'         Œ                    duej�         Ž                    d ¦  «        ¬¡¦  «        d£„ ¦   «         Z�d¤„ Z‘d¥„ Z’d¦„ Z“d§„ Z”d¨„ Z•d©„ Z–dª„ Z—d«„ Z˜d¬„ Z™d­„ Zšd®„ Z›d¯„ Zœd°„ Z�d±„ Zžd²„ ZŸd³„ Z d´„ Z¡dµ„ Z¢d¶„ Z£d·„ Z¤dÈd¸„Z¥dÈd¹„Z¦dÈdº„Z§ G d»„ d¼¦  «        Z¨ G d½„ d¾¦  «        Z© G d¿„ dÀ¦  «        Zª G dÁ„ dÂ¦  «        Z« G dÃ„ dÄ¦  «        Z¬ G dÅ„ dÆ¦  «        Z­dS )Éé    N)ÚdatetimeÚ	timedelta)ÚAny)ÚFastAPI)ÚDocumentÚEmbeddingFunctionÚQueryResultÚTYPE_KEYÚSPARSE_VECTOR_TYPE_VALUE)ÚSettings)ÚChromaErrorÚNotFoundErrorÚInvalidArgumentError)ÚDefaultEmbeddingFunctionc                  ó(   — t          j        ¦   «         S ©N)ÚtempfileÚmkdtemp© ó    úT/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/chromadb/test/test_api.pyÚpersist_dirr   !   s   € åÔÑÔÐr   c              #   óú   K  — t          j        t          ddddddd| ¬¦  «        ¦  «        }|V — |                     ¦   «          t          j                             | ¦  «        rt          j        | d¬¦  «         d S d S ©Núchromadb.api.segment.SegmentAPIz chromadb.db.impl.sqlite.SqliteDBú7chromadb.segment.impl.manager.local.LocalSegmentManagerT)Úchroma_api_implÚchroma_sysdb_implÚchroma_producer_implÚchroma_consumer_implÚchroma_segment_manager_implÚallow_resetÚis_persistentÚpersist_directory)Úignore_errors©	ÚchromadbÚClientr   Úclear_system_cacheÚosÚpathÚexistsÚshutilÚrmtree©r   Úclients     r   Úlocal_persist_apir1   &   ó™   è è € åŒ_ÝØ=Ø@Ø!CØ!CØ(aØØØ)ð		
ñ 		
ô 		
ñô €Fð €L€L€LØ
×ÒÑÔÐÝ	„w‡~‚~�kÑ"Ô"ð 7ÝŒ�k°Ð6Ñ6Ô6Ð6Ð6Ð6ð7ð 7r   c              #   óú   K  — t          j        t          ddddddd| ¬¦  «        ¦  «        }|V — |                     ¦   «          t          j                             | ¦  «        rt          j        | d¬¦  «         d S d S r   r&   r/   s     r   Úlocal_persist_api_cache_bustr4   ;   r2   r   ç�íµ ÷Æ°>Úreturnc                 ó.   — t          | |z
  ¦  «        |k     S r   )Úabs©ÚaÚbÚ	tolerances      r   Úapprox_equalr=   O   s   € Ýˆq�1‰u‰:Œ:˜	Ò!Ð!r   r<   c                 óš   ‡— t          | ¦  «        t          |¦  «        k    rdS t          ˆfd„t          | |¦  «        D ¦   «         ¦  «        S )NFc                 ó8   •— g | ]\  }}t          ||‰¦  «        ‘ŒS r   )r=   )Ú.0r:   r;   r<   s      €r   ú
<listcomp>z'vector_approx_equal.<locals>.<listcomp>V   s)   ø€ ÐDÐDÐD±$°!°Q•˜Q  9Ñ-Ô-ÐDÐDÐDr   )ÚlenÚallÚzipr9   s     `r   Úvector_approx_equalrE   S   sJ   ø€ Ý
ˆ1�v„v•�Q‘”ÒÐØˆuÝÐDÐDÐDÐD½#¸aÀ¹)¼)ÐDÑDÔDÑEÔEÐEr   Úapi_fixturec                 ó,  — |                      d¦  «        }|                     ¦   «          |                     d¦  «        }|                     dd¬¦  «         |                      d¦  «        }|                     d¦  «        }g d¢}|                     ddg d¢¬	¦  «        }|                     ¦   «         D ]a}||v s|d
k    rt          ||         ¦  «        dk    sJ ‚Œ(|dk    r)t          ||         ¦  «        t          |¦  «        k    sJ ‚ŒW||         �J ‚Œbd S )Nr1   ÚtestÚid1Úhello©ÚidsÚ	documentsr4   ©Ú
embeddingsrM   Ú	metadatasÚ	distancesé   ©Úquery_textsÚ	n_resultsÚincluderL   Úincluded)	ÚgetfixturevalueÚresetÚcreate_collectionÚaddÚget_collectionÚqueryÚkeysrB   Úset)rF   Úrequestr0   Ú
collectionÚapi2ÚincludesÚnnÚkeys           r   Útest_persist_index_loadingrf   Y   s7  € à×$Ò$Ð%8Ñ9Ô9€FØ
‡L‚L�N„N€NØ×)Ò)¨&Ñ1Ô1€JØ‡N‚N�u¨€NÑ0Ô0Ð0à×"Ò"Ð#AÑBÔB€DØ×$Ò$ VÑ,Ô,€JàDÐDÐD€HØ	×	Ò	ØØØEÐEÐEð 
ñ 
ô 
€Bð
 �wŠw‰yŒyð #ð #ˆØ�8ˆOˆO ¨¢ Ý�r˜#”w‘<”< 1Ò$Ð$Ð$Ð$Ð$Ø�JÒÐÝ�r˜#”w‘<”<¥3 x¡=¤=Ò0Ð0Ð0Ð0Ð0à�c”7�?�?�?�?ð#ð #r   c                 óŒ  —  G d„ dt           t                   ¦  «        }|                     d¦  «        }|                     ¦   «          |                     d |¦   «         ¬¦  «        }|                     dd¬¦  «         |                     d	¦  «        }|                     d |¦   «         ¬¦  «        }g d
¢}|                     dd|¬¦  «        }|                     ¦   «         D ]a}||v s|dk    rt          ||         ¦  «        dk    sJ ‚Œ(|dk    r)t          ||         ¦  «        t          |¦  «        k    sJ ‚ŒW||         �J ‚Œbd S )Nc                   óz   ‡ — e Zd Zd„ Zdededdfˆ fd„Zdefd„Zdeeef         ddfd	„Z	deeef         fd
„Z
ˆ xZS )ú=test_persist_index_loading_embedding_function.<locals>.TestEFc                 óN   — d„ t          t          |¦  «        ¦  «        D ¦   «         S )Nc                 ó:   — g | ]}t          j        g d ¢¦  «        ‘ŒS ©©rR   é   é   ©ÚnpÚarray©r@   Ú_s     r   rA   zZtest_persist_index_loading_embedding_function.<locals>.TestEF.__call__.<locals>.<listcomp>v   ó&   € ÐCÐCÐC¨A•B”H˜Y˜Y˜YÑ'Ô'ÐCÐCÐCr   ©ÚrangerB   ©ÚselfÚinputs     r   Ú__call__zFtest_persist_index_loading_embedding_function.<locals>.TestEF.__call__u   ó$   € ØCÐCµµs¸5±z´zÑ1BÔ1BÐCÑCÔCÐCr   ÚargsÚkwargsr6   Nc                 ó:   •—  t          ¦   «         j        |i |¤Ž d S r   ©ÚsuperÚ__init__©ry   r}   r~   Ú	__class__s      €r   r‚   zFtest_persist_index_loading_embedding_function.<locals>.TestEF.__init__x   ó%   ø€ Ø�E‰GŒGÔ˜dÐ- fÐ-Ð-Ð-Ð-Ð-r   c                 ó   — dS ©NrH   r   ©ry   s    r   ÚnamezBtest_persist_index_loading_embedding_function.<locals>.TestEF.name{   ó   € Ø�6r   Úconfigc                 ó   — d S r   r   ©ry   r‹   s     r   Úbuild_from_configzOtest_persist_index_loading_embedding_function.<locals>.TestEF.build_from_config~   ó   € ØˆDr   c                 ó   — i S r   r   rˆ   s    r   Ú
get_configzHtest_persist_index_loading_embedding_function.<locals>.TestEF.get_config�   ó   € ØˆIr   ©Ú__name__Ú
__module__Ú__qualname__r{   r   r‚   Ústrr‰   ÚdictrŽ   r‘   Ú__classcell__©r„   s   @r   ÚTestEFri   t   óÌ   ø€ € € € € ð	Dð 	Dð 	Dð	. #ð 	.°ð 	.¸ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð	˜#ð 	ð 	ð 	ð 	ð	¨D°°c°¬Nð 	¸tð 	ð 	ð 	ð 	ð	  S¨# X¤ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	r   r›   r1   rH   ©Úembedding_functionrI   rJ   rK   r4   rN   rR   rS   rL   rW   )r   r   rX   rY   rZ   r[   r\   r]   r^   rB   r_   )	rF   r`   r›   r0   ra   Úclient2rc   rd   re   s	            r   Ú-test_persist_index_loading_embedding_functionr    r   sy  € ðð ð ð ð Õ"¥8Ô,ñ ô ð ð  ×$Ò$Ð%8Ñ9Ô9€FØ
‡L‚L�N„N€NØ×)Ò)¨&ÀVÀVÁXÄXÐ)ÑNÔN€JØ‡N‚N�u¨€NÑ0Ô0Ð0à×%Ò%Ð&DÑEÔE€GØ×'Ò'¨À6À6Á8Ä8Ð'ÑLÔL€JàDÐDÐD€HØ	×	Ò	ØØØð 
ñ 
ô 
€Bð
 �wŠw‰yŒyð #ð #ˆØ�8ˆOˆO ¨¢ Ý�r˜#”w‘<”< 1Ò$Ð$Ð$Ð$Ð$Ø�JÒÐÝ�r˜#”w‘<”<¥3 x¡=¤=Ò0Ð0Ð0Ð0Ð0à�c”7�?�?�?�?ð#ð #r   c                 óH  —  G d„ dt           t                   ¦  «        }|                     d¦  «        }|                     ¦   «          |                     d |¦   «         ¬¦  «        }|                     dd¬¦  «         |                     d	¦  «        }|                     d |¦   «         ¬¦  «        }g d
¢}|                     dd|¬¦  «        }|                     ¦   «         D ]a}||v s|dk    rt          ||         ¦  «        dk    sJ ‚Œ(|dk    r)t          ||         ¦  «        t          |¦  «        k    sJ ‚ŒW||         �J ‚Œb|d         dggk    sJ ‚|d         d         d          
                    ¦   «         g d¢k    sJ ‚|d         dggk    sJ ‚|d         dggk    sJ ‚d S )Nc                   óz   ‡ — e Zd Zd„ Zdededdfˆ fd„Zdefd„Zdeeef         ddfd	„Z	deeef         fd
„Z
ˆ xZS )úCtest_persist_index_get_or_create_embedding_function.<locals>.TestEFc                 óN   — d„ t          t          |¦  «        ¦  «        D ¦   «         S )Nc                 ó:   — g | ]}t          j        g d ¢¦  «        ‘ŒS rl   rp   rs   s     r   rA   z`test_persist_index_get_or_create_embedding_function.<locals>.TestEF.__call__.<locals>.<listcomp>Ÿ   ru   r   rv   rx   s     r   r{   zLtest_persist_index_get_or_create_embedding_function.<locals>.TestEF.__call__ž   r|   r   r}   r~   r6   Nc                 ó:   •—  t          ¦   «         j        |i |¤Ž d S r   r€   rƒ   s      €r   r‚   zLtest_persist_index_get_or_create_embedding_function.<locals>.TestEF.__init__¡   r…   r   c                 ó   — dS r‡   r   rˆ   s    r   r‰   zHtest_persist_index_get_or_create_embedding_function.<locals>.TestEF.name¤   rŠ   r   r‹   c                 ó   — d S r   r   r�   s     r   rŽ   zUtest_persist_index_get_or_create_embedding_function.<locals>.TestEF.build_from_config§   r�   r   c                 ó   — i S r   r   rˆ   s    r   r‘   zNtest_persist_index_get_or_create_embedding_function.<locals>.TestEF.get_configª   r’   r   r“   rš   s   @r   r›   r£   �   rœ   r   r›   r1   rH   r�   rI   rJ   rK   r4   rN   rR   rS   rL   rW   rO   r   rm   rM   rQ   )r   r   rX   rY   Úget_or_create_collectionr[   r]   r^   rB   r_   Útolist)	rF   r`   r›   Úapira   rb   rc   rd   re   s	            r   Ú3test_persist_index_get_or_create_embedding_functionr­   ›   sð  € ðð ð ð ð Õ"¥8Ô,ñ ô ð ð  ×
!Ò
!Ð"5Ñ
6Ô
6€CØ‡I‚I�K„K€KØ×-Ò-¨fÈÈÉÌÐ-ÑRÔR€JØ‡N‚N�u¨€NÑ0Ô0Ð0à×"Ò"Ð#AÑBÔB€DØ×.Ò.¨vÈ&È&É(Ì(Ð.ÑSÔS€JàDÐDÐD€HØ	×	Ò	ØØØð 
ñ 
ô 
€Bð �wŠw‰yŒyð #ð #ˆØ�8ˆOˆO ¨¢ Ý�r˜#”w‘<”< 1Ò$Ð$Ð$Ð$Ð$Ø�JÒÐÝ�r˜#”w‘<”<¥3 x¡=¤=Ò0Ð0Ð0Ð0Ð0à�c”7�?�?�?�?àˆeŒ9˜%˜˜	Ò!Ð!Ð!Ð!ØˆlÔ˜AÔ˜qÔ!×(Ò(Ñ*Ô*¨i¨i¨iÒ7Ð7Ð7Ð7ØˆkŒ? ˜y˜kÒ)Ð)Ð)Ð)ØˆkŒ? ˜s˜eÒ#Ð#Ð#Ð#Ð#Ð#r   c                 ó  — |                      | j        ¦  «        }|                     ¦   «          |                     d¦  «        } |j        di t
          ¤Ž |                     ¦   «         dk    sJ ‚|                      | j        ¦  «        }|                     d¦  «        }|                     ¦   «         dk    sJ ‚|                     d¦  «         |                      | j        ¦  «        }| 	                    ¦   «         g k    sJ ‚d S ©NÚ	testspacern   r   )
rX   r”   rY   rZ   r[   Úbatch_recordsÚcountr\   Údelete_collectionÚlist_collections)rF   r`   r0   ra   s       r   Útest_persistrµ   Ê   s   € à×$Ò$ [Ô%9Ñ:Ô:€Fà
‡L‚L�N„N€Nà×)Ò)¨+Ñ6Ô6€Jà€J„NÐ#Ð#•]Ð#Ð#Ð#à×ÒÑÔ Ò"Ð"Ð"Ð"à×$Ò$ [Ô%9Ñ:Ô:€FØ×&Ò& {Ñ3Ô3€JØ×ÒÑÔ Ò"Ð"Ð"Ð"à
×Ò˜[Ñ)Ô)Ð)à×$Ò$ [Ô%9Ñ:Ô:€FØ×"Ò"Ñ$Ô$¨Ò*Ð*Ð*Ð*Ð*Ð*r   c                 óâ   — |                       ¦   «         }t          |t          ¦  «        sJ ‚|dz  }t          j        |¦  «        }|t          j        ¦   «         t          d¬¦  «        z
  k    sJ ‚d S )Ni Êš;é
   )Úseconds)Ú	heartbeatÚ
isinstanceÚintr   ÚfromtimestampÚnowr   )r0   Úheartbeat_nsÚheartbeat_sr¹   s       r   Útest_heartbeatrÀ   à   sp   € Ø×#Ò#Ñ%Ô%€LÝ�l¥CÑ(Ô(Ð(Ð(Ð(à %Ñ'€KÝÔ& {Ñ3Ô3€IØ•x”|‘~”~­	¸"Ð(=Ñ(=Ô(=Ñ=Ò=Ð=Ð=Ð=Ð=Ð=r   c                 ó>   — |                       ¦   «         }|dk    sJ ‚d S )Nr   )Úget_max_batch_size)r0   Ú
batch_sizes     r   Útest_max_batch_sizerÄ   é   s$   € Ø×*Ò*Ñ,Ô,€JØ˜Š>ˆ>ˆ>ˆ>ˆ>ˆ>r   c                 ó´   — t          | t          ¦  «        st          j        d¦  «         |                      ¦   «          |                      ¦   «         }|du sJ ‚d S )NúNot a FastAPI instanceT)rº   r   ÚpytestÚskiprY   Úsupports_base64_encoding)r0   rÉ   s     r   Útest_supports_base64_encodingrÊ   î   s[   € Ý�f�gÑ&Ô&ð .ÝŒÐ,Ñ-Ô-Ð-à
‡L‚L�N„N€Nà%×>Ò>Ñ@Ô@ÐØ# tÐ+Ð+Ð+Ð+Ð+Ð+r   c                 óö   — t          | t          ¦  «        st          j        d¦  «         |                      ¦   «          ddi| _        |                      ¦   «         du sJ ‚|                      ¦   «         dk    sJ ‚d S )NrÆ   Úmax_batch_sizeéd   F)rº   r   rÇ   rÈ   rY   Úpre_flight_checksrÉ   rÂ   )r0   s    r   Ú$test_supports_base64_encoding_legacyrÏ   ø   s…   € Ý�f�gÑ&Ô&ð .ÝŒÐ,Ñ-Ô-Ð-à
‡L‚L�N„N€Nð 	˜#ð €FÔð ×*Ò*Ñ,Ô,°Ð5Ð5Ð5Ð5Ø×$Ò$Ñ&Ô&¨#Ò-Ð-Ð-Ð-Ð-Ð-r   c                 ó~  — t          | t          ¦  «        st          j        d¦  «         t	          j        | j        › d�¦  «        }|j        dk    sJ ‚|                     ¦   «         €J ‚d|                     ¦   «          	                    ¦   «         v sJ ‚d|                     ¦   «          	                    ¦   «         v sJ ‚d S )NrÆ   z/pre-flight-checkséÈ   rÌ   rÉ   )
rº   r   rÇ   rÈ   ÚhttpxÚgetÚ_api_urlÚstatus_codeÚjsonr^   )r0   Úresps     r   Útest_pre_flight_checksrØ     s·   € Ý�f�gÑ&Ô&ð .ÝŒÐ,Ñ-Ô-Ð-åŒ9˜œÐ;Ð;Ð;Ñ<Ô<€DØÔ˜sÒ"Ð"Ð"Ð"Ø�9Š9‰;Œ;Ð"Ð"Ð"Ø˜tŸyšy™{œ{×/Ò/Ñ1Ô1Ð1Ð1Ð1Ð1Ø%¨¯ª©¬×)9Ò)9Ñ);Ô);Ð;Ð;Ð;Ð;Ð;Ð;r   ©çš™™™™™ñ?çffffff@çš™™™™™	@©ç333333ó?çìQ¸…ë@rÜ   zhttps://example.com/1zhttps://example.com/2©rO   rL   c                 ó°   — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž |                     ¦   «         dk    sJ ‚d S r¯   )rY   rZ   r[   r±   r²   ©r0   ra   s     r   Útest_addrã     s]   € Ø
‡L‚L�N„N€Nà×)Ò)¨+Ñ6Ô6€Jà€J„NÐ#Ð#•]Ð#Ð#Ð#à×ÒÑÔ Ò"Ð"Ð"Ð"Ð"Ð"r   c                 ó  — |                       ¦   «          |                      d¦  «        }|                      d¦  «         t          j        t
          d¬¦  «        5   |j        di t          ¤Ž d d d ¦  «         d S # 1 swxY w Y   d S ©NrH   úCollection .* does not exist©Úmatchr   )rY   rZ   r³   rÇ   Úraisesr   r[   r±   râ   s     r   Ú2test_collection_add_with_invalid_collection_throwsrê   "  sÈ   € Ø
‡L‚L�N„N€NØ×)Ò)¨&Ñ1Ô1€JØ
×Ò˜VÑ$Ô$Ð$å	Œ•}Ð,KÐ	LÑ	LÔ	Lð (ð (Øˆ
ŒÐ'Ð'�Ð'Ð'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð (ð (ó   ÁA:Á:A>ÂA>c                 óš  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž |                     ¦   «         dk    sJ ‚t          j        t          ¦  «        5  |                      d¦  «        }d d d ¦  «         n# 1 swxY w Y   |                      d¦  «        }|                     ¦   «         dk    sJ ‚d S r¯   )	rY   rZ   r[   r±   r²   rÇ   ré   Ú	Exceptionrª   râ   s     r   Útest_get_or_createrî   +  s  € Ø
‡L‚L�N„N€Nà×)Ò)¨+Ñ6Ô6€Jà€J„NÐ#Ð#•]Ð#Ð#Ð#à×ÒÑÔ Ò"Ð"Ð"Ð"å	Œ•yÑ	!Ô	!ð ;ð ;Ø×-Ò-¨kÑ:Ô:ˆ
ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð ×0Ò0°Ñ=Ô=€Jà×ÒÑÔ Ò"Ð"Ð"Ð"Ð"Ð"s   Á/BÂBÂBc                 ó°   — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž |                     ¦   «         dk    sJ ‚d S r¯   )rY   rZ   r[   Úminimal_recordsr²   râ   s     r   Útest_add_minimalrñ   B  s]   € Ø
‡L‚L�N„N€Nà×)Ò)¨+Ñ6Ô6€Jà€J„NÐ%Ð%•_Ð%Ð%Ð%à×ÒÑÔ Ò"Ð"Ð"Ð"Ð"Ð"r   c                 óœ  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž g d¢}|                     |¬¦  «        }|                     ¦   «         D ]a}||v s|dk    rt          ||         ¦  «        dk    sJ ‚Œ(|dk    r)t          ||         ¦  «        t          |¦  «        k    sJ ‚ŒW||         �J ‚Œbd S )Nr°   ©rO   rM   rP   ©rV   rL   rn   rW   r   )rY   rZ   r[   r±   rÓ   r^   rB   r_   )r0   ra   rc   Úrecordsre   s        r   Útest_get_from_dbrö   L  sî   € Ø
‡L‚L�N„N€NØ×)Ò)¨+Ñ6Ô6€JØ€J„NÐ#Ð#•]Ð#Ð#Ð#Ø7Ð7Ð7€HØ�nŠn XˆnÑ.Ô.€GØ�|Š|‰~Œ~ð (ð (ˆØ�8ˆOˆO ¨¢ Ý�w˜s”|Ñ$Ô$¨Ò)Ð)Ð)Ð)Ð)Ø�JÒÐÝ�w˜s”|Ñ$Ô$­¨H©¬Ò5Ð5Ð5Ð5Ð5à˜3”<Ð'Ð'Ð'Ð'ð(ð (r   c                 ó  — |                       ¦   «          |                      d¦  «        }|                      d¦  «         t          j        t
          d¬¦  «        5  |                     ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S ©NrH   ræ   rç   )rY   rZ   r³   rÇ   ré   r   rÓ   râ   s     r   Ú2test_collection_get_with_invalid_collection_throwsrù   [  sÀ   € Ø
‡L‚L�N„N€NØ×)Ò)¨&Ñ1Ô1€JØ
×Ò˜VÑ$Ô$Ð$å	Œ•}Ð,KÐ	LÑ	LÔ	Lð ð Ø�ŠÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð ó   ÁA<Á<B ÂB c                 ó&  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž |                     ¦   «         dk    sJ ‚|                       ¦   «          t          |                      ¦   «         ¦  «        dk    sJ ‚d S )Nr°   rn   r   r   )rY   rZ   r[   r±   r²   rB   r´   râ   s     r   Útest_reset_dbrü   d  s�   € Ø
‡L‚L�N„N€Nà×)Ò)¨+Ñ6Ô6€JØ€J„NÐ#Ð#•]Ð#Ð#Ð#Ø×ÒÑÔ Ò"Ð"Ð"Ð"à
‡L‚L�N„N€NÝˆv×&Ò&Ñ(Ô(Ñ)Ô)¨QÒ.Ð.Ð.Ð.Ð.Ð.r   c                 óî  — |                       ¦   «          |                      d¦  «        } |j        d
i t          ¤Ž g d¢}|                     g d¢d|¬¦  «        }|                     ¦   «         D ]a}||v s|dk    rt          ||         ¦  «        dk    sJ ‚Œ(|dk    r)t          ||         ¦  «        t          |¦  «        k    sJ ‚ŒW||         �J ‚Œb|                     g d¢gd|¬¦  «        }|                     ¦   «         D ]a}||v s|dk    rt          ||         ¦  «        dk    sJ ‚Œ(|dk    r)t          ||         ¦  «        t          |¦  «        k    sJ ‚ŒW||         �J ‚Œb|                     g d¢g d¢gd|¬¦  «        }|                     ¦   «         D ]a}||v s|dk    rt          ||         ¦  «        d	k    sJ ‚Œ(|dk    r)t          ||         ¦  «        t          |¦  «        k    sJ ‚ŒW||         �J ‚Œbd S )Nr°   rN   rÙ   rR   ©Úquery_embeddingsrU   rV   rL   rW   )çš™™™™™¹?rÛ   ç      @rn   r   )rY   rZ   r[   r±   r]   r^   rB   r_   ©r0   ra   rc   rd   re   s        r   Útest_get_nearest_neighborsr  o  sb  € Ø
‡L‚L�N„N€NØ×)Ò)¨+Ñ6Ô6€JØ€J„NÐ#Ð#•]Ð#Ð#Ð#àDÐDÐD€HØ	×	Ò	Ø(˜˜ØØð 
ñ 
ô 
€Bð
 �wŠw‰yŒyð #ð #ˆØ�8ˆOˆO ¨¢ Ý�r˜#”w‘<”< 1Ò$Ð$Ð$Ð$Ð$Ø�JÒÐÝ�r˜#”w‘<”<¥3 x¡=¤=Ò0Ð0Ð0Ð0Ð0à�c”7�?�?�?�?à	×	Ò	Ø)˜/˜/Ð*ØØð 
ñ 
ô 
€Bð
 �wŠw‰yŒyð #ð #ˆØ�8ˆOˆO ¨¢ Ý�r˜#”w‘<”< 1Ò$Ð$Ð$Ð$Ð$Ø�JÒÐÝ�r˜#”w‘<”<¥3 x¡=¤=Ò0Ð0Ð0Ð0Ð0à�c”7�?�?�?�?à	×	Ò	Ø)˜/˜/¨?¨?¨?Ð;ØØð 
ñ 
ô 
€Bð
 �wŠw‰yŒyð #ð #ˆØ�8ˆOˆO ¨¢ Ý�r˜#”w‘<”< 1Ò$Ð$Ð$Ð$Ð$Ø�JÒÐÝ�r˜#”w‘<”<¥3 x¡=¤=Ò0Ð0Ð0Ð0Ð0à�c”7�?�?�?�?ð#ð #r   c                 ó<  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž |                     ¦   «         dk    sJ ‚t          j        t          ¦  «        5  |                     ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S r¯   )	rY   rZ   r[   r±   r²   rÇ   ré   rí   Údeleterâ   s     r   Útest_deleter  �  sÝ   € Ø
‡L‚L�N„N€NØ×)Ò)¨+Ñ6Ô6€JØ€J„NÐ#Ð#•]Ð#Ð#Ð#Ø×ÒÑÔ Ò"Ð"Ð"Ð"å	Œ•yÑ	!Ô	!ð ð Ø×ÒÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Á/BÂBÂBc                 óH  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž |                     ¦   «         dk    sJ ‚|                     t          d         ¬¦  «        }t          |t          ¦  «        sJ ‚d|v sJ ‚|d         dk    sJ ‚d S )Nr°   rn   rL   ©rL   Údeletedr   r   )rY   rZ   r[   r±   r²   r  rº   r˜   ©r0   ra   Úresults      r   Ú!test_delete_returns_delete_resultr  §  sµ   € Ø
‡L‚L�N„N€NØ×)Ò)¨+Ñ6Ô6€JØ€J„NÐ#Ð#•]Ð#Ð#Ð#Ø×ÒÑÔ Ò"Ð"Ð"Ð"Ø×Ò¥=°Ô#7ÐÑ8Ô8€FÝ�f�dÑ#Ô#Ð#Ð#Ð#Ø˜ÐÐÐÐØ�)Ô Ò!Ð!Ð!Ð!Ð!Ð!r   c           
      ó†  — |                       ¦   «          |                      dddi¬¦  «        }|                     g d¢g d¢g d¢g d¢g d	¢g d
¢gddiddiddiddiddig¬¦  «         |                     ¦   «         dk    sJ ‚|                     ddid¬¦  «        }|d         dk    sJ ‚|                     ¦   «         dk    sJ ‚d S )Nr°   ú
hnsw:spaceÚl2©Úmetadata)rI   Úid2Úid3Úid4Úid5©rR   r   r   ©r   rR   r   ©r   r   rR   )rR   rR   r   )r   rR   rR   Úcategoryr:   r;   ©rL   rO   rP   é   rn   ©ÚwhereÚlimitr	  ro   ©rY   rZ   r[   r²   r  r
  s      r   Útest_delete_with_limitr   ²  s   € Ø
‡L‚L�N„N€NØ×)Ò)ØØ Ð%ð *ñ ô €Jð ‡N‚NØ/Ð/Ð/Ø�I�I˜y˜y˜y¨)¨)¨)°Y°Y°YÀ	À	À	ÐJà˜ÐØ˜ÐØ˜ÐØ˜ÐØ˜Ðð
ð ñ 
ô 
ð 
ð ×ÒÑÔ Ò"Ð"Ð"Ð"ð ×Ò j°#Ð%6¸aÐÑ@Ô@€FØ�)Ô Ò!Ð!Ð!Ð!Ø×ÒÑÔ Ò"Ð"Ð"Ð"Ð"Ð"r   c                 ób  — |                       ¦   «          |                      dddi¬¦  «        }|                     ddgg d¢g d¢gd	d
id	d
ig¬¦  «         |                     ¦   «         dk    sJ ‚|                     d	d
id¬¦  «        }|d         dk    sJ ‚|                     ¦   «         dk    sJ ‚d S )Nr°   r  r  r  rI   r  r  r  r  r:   r  rn   r   r  r	  r  r
  s      r   Ú#test_delete_with_limit_zero_is_noopr"  Ë  sï   € Ø
‡L‚L�N„N€NØ×)Ò)ØØ Ð%ð *ñ ô €Jð ‡N‚NØ�EˆNØ�I�I˜y˜y˜yÐ)Ø Ð$ z°3Ð&7Ð8ð ñ ô ð ð
 ×ÒÑÔ Ò"Ð"Ð"Ð"Ø×Ò j°#Ð%6¸aÐÑ@Ô@€FØ�)Ô Ò!Ð!Ð!Ð!Ø×ÒÑÔ Ò"Ð"Ð"Ð"Ð"Ð"r   c                 ó  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž t	          j        t          d¬¦  «        5  |                     dgd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr°   zlimit can only be specifiedrç   rI   r  )rL   r  r   )rY   rZ   r[   r±   rÇ   ré   Ú
ValueErrorr  râ   s     r   Ú%test_delete_with_limit_requires_wherer%  Ü  sÏ   € Ø
‡L‚L�N„N€NØ×)Ò)¨+Ñ6Ô6€JØ€J„NÐ#Ð#•]Ð#Ð#Ð#Ý	Œ•zÐ)FÐ	GÑ	GÔ	Gð 0ð 0Ø×Ò˜u˜g¨QÐÑ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð 0ð 0s   ÁA=Á=BÂBc                 óä   — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž |                     ¦   «         dk    sJ ‚|                     g d¢gd¬¦  «         d S )Nr°   rn   rÙ   rR   ©rÿ   rU   r   )rY   rZ   r[   r±   r²   r]   râ   s     r   Útest_delete_with_indexr(  ä  s}   € Ø
‡L‚L�N„N€NØ×)Ò)¨+Ñ6Ô6€JØ€J„NÐ#Ð#•]Ð#Ð#Ð#Ø×ÒÑÔ Ò"Ð"Ð"Ð"Ø×Ò   Ð&7À1ÐÑEÔEÐEÐEÐEr   c                 ó  — |                       ¦   «          |                      d¦  «        }|                      d¦  «         t          j        t
          d¬¦  «        5  |                     dg¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrH   ræ   rç   rI   r  )rY   rZ   r³   rÇ   ré   r   r  râ   s     r   Ú5test_collection_delete_with_invalid_collection_throwsr*  ì  sÉ   € Ø
‡L‚L�N„N€NØ×)Ò)¨&Ñ1Ô1€JØ
×Ò˜VÑ$Ô$Ð$å	Œ•}Ð,KÐ	LÑ	LÔ	Lð 'ð 'Ø×Ò˜u˜gÐÑ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð 'ð 'ó   ÁA?Á?BÂBc                 óä   — |                       ¦   «          |                      d¦  «        }|                     ¦   «         dk    sJ ‚ |j        di t          ¤Ž |                     ¦   «         dk    sJ ‚d S )Nr°   r   rn   r   )rY   rZ   r²   r[   r±   râ   s     r   Ú
test_countr-  õ  sz   € Ø
‡L‚L�N„N€NØ×)Ò)¨+Ñ6Ô6€JØ×ÒÑÔ Ò"Ð"Ð"Ð"Ø€J„NÐ#Ð#•]Ð#Ð#Ð#Ø×ÒÑÔ Ò"Ð"Ð"Ð"Ð"Ð"r   c                 ó  — |                       ¦   «          |                      d¦  «        }|                      d¦  «         t          j        t
          d¬¦  «        5  |                     ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S rø   )rY   rZ   r³   rÇ   ré   r   r²   râ   s     r   Ú4test_collection_count_with_invalid_collection_throwsr/  ý  sÂ   € Ø
‡L‚L�N„N€NØ×)Ò)¨&Ñ1Ô1€JØ
×Ò˜VÑ$Ô$Ð$å	Œ•}Ð,KÐ	LÑ	LÔ	Lð ð Ø×ÒÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð rú   c                 óž   — |                       ¦   «          |                      d¦  «        }|                     d¬¦  «         |j        dk    sJ ‚d S ©Nr°   Ú
testspace2©r‰   )rY   rZ   Úmodifyr‰   râ   s     r   Útest_modifyr5    sT   € Ø
‡L‚L�N„N€NØ×)Ò)¨+Ñ6Ô6€JØ×Ò˜<ÐÑ(Ô(Ð(ð Œ?˜lÒ*Ð*Ð*Ð*Ð*Ð*r   c                 ó  — |                       ¦   «          |                      d¦  «        }|                      d¦  «         t          j        t
          d¬¦  «        5  |                     d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrH   ræ   rç   Útest2r3  )rY   rZ   r³   rÇ   ré   r   r4  râ   s     r   Ú5test_collection_modify_with_invalid_collection_throwsr8    sÇ   € Ø
‡L‚L�N„N€NØ×)Ò)¨&Ñ1Ô1€JØ
×Ò˜VÑ$Ô$Ð$å	Œ•}Ð,KÐ	LÑ	LÔ	Lð (ð (Ø×Ò˜wÐÑ'Ô'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð (ð (s   ÁA>Á>BÂBc                 ó  — |                       ¦   «          |                      d¦  «         |                      d¦  «        }t          j        t          ¦  «        5  |                     d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r1  ©rY   rZ   rÇ   ré   rí   r4  )r0   Úc2s     r   Ú"test_modify_error_on_existing_namer<    s¾   € Ø
‡L‚L�N„N€Nà
×Ò˜[Ñ)Ô)Ð)Ø	×	!Ò	! ,Ñ	/Ô	/€Bå	Œ•yÑ	!Ô	!ð $ð $Ø
�	Š	�{ˆ	Ñ#Ô#Ð#ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $s   ÁA<Á<B ÂB c                 óð   — |                       ¦   «          |                      d¦  «        }t          j        t          d¬¦  «        5  |                     ddi¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr°   znot supportedrç   r  Úcosiner  r:  )r0   Úcaplogra   s      r   Útest_modify_warn_on_DF_changer@  "  s·   € Ø
‡L‚L�N„N€Nà×)Ò)¨+Ñ6Ô6€Jå	Œ•y¨Ð	8Ñ	8Ô	8ð =ð =Ø×Ò L°(Ð#;ÐÑ<Ô<Ð<ð=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =ð =ð =s   ÁA+Á+A/Á2A/c                 ó  — |                       ¦   «          dddœ}|                      d|¬¦  «        }|j        €J ‚|j        d         dk    sJ ‚|j        d         dk    sJ ‚|                      d¦  «        }|j        €J ‚|j        d         dk    sJ ‚|j        d         dk    sJ ‚|                     ddd	œ¬¦  «         |j        d         dk    sJ ‚|j        d
         dk    sJ ‚d|j        vsJ ‚|                      d¦  «        }|j        €J ‚|j        d         dk    sJ ‚|j        d
         dk    sJ ‚d|j        vsJ ‚|                      d¦  «        }|j        €J ‚|j        d         dk    sJ ‚|j        d
         dk    sJ ‚|                      d¦  «        }|j        �J ‚|                      ¦   «         }|D ]Q}|j        dk    r0|j        €J ‚|j        d         dk    sJ ‚|j        d
         dk    sJ ‚Œ=|j        dk    r	|j        �J ‚ŒRd S )NrR   rn   )r:   r;   r°   r  r:   r;   ro   )r:   ÚcrB  r2  )rY   rZ   r  r\   r4  rª   r´   r‰   )r0   Ú
metadata_ara   Úcollectionss       r   Útest_metadata_crurE  +  s°  € Ø
‡L‚L�N„N€NØ˜qÐ!Ð!€Jà×)Ò)¨+À
Ð)ÑKÔK€JØÔÐ*Ð*Ð*ØÔ˜sÔ# qÒ(Ð(Ð(Ð(ØÔ˜sÔ# qÒ(Ð(Ð(Ð(ð ×&Ò& {Ñ3Ô3€JØÔÐ*Ð*Ð*ØÔ˜sÔ# qÒ(Ð(Ð(Ð(ØÔ˜sÔ# qÒ(Ð(Ð(Ð(ð ×Ò Q¨QÐ/Ð/ÐÑ0Ô0Ð0ØÔ˜sÔ# qÒ(Ð(Ð(Ð(ØÔ˜sÔ# qÒ(Ð(Ð(Ð(Ø�jÔ)Ð)Ð)Ð)Ð)ð ×&Ò& {Ñ3Ô3€JØÔÐ*Ð*Ð*ØÔ˜sÔ# qÒ(Ð(Ð(Ð(ØÔ˜sÔ# qÒ(Ð(Ð(Ð(Ø�jÔ)Ð)Ð)Ð)Ð)ð ×0Ò0°Ñ=Ô=€JØÔÐ*Ð*Ð*ØÔ˜sÔ# qÒ(Ð(Ð(Ð(ØÔ˜sÔ# qÒ(Ð(Ð(Ð(ð ×0Ò0°Ñ>Ô>€JØÔÐ&Ð&Ð&ð ×)Ò)Ñ+Ô+€KØ!ð /ð /ˆ
ØŒ?˜kÒ)Ð)ØÔ&Ð2Ð2Ð2ØÔ& sÔ+¨qÒ0Ð0Ð0Ð0ØÔ& sÔ+¨qÒ0Ð0Ð0Ð0Ð0ØŒ_ Ò,Ð,ØÔ&Ð.Ð.Ð.øð/ð /r   c                 óÚ  — |                       ¦   «          |                      d¦  «        } |j        d	i t          ¤Ž |                     ¦   «         dk    sJ ‚g d¢}|                     g d¢gd|¬¦  «        }|                     ¦   «         D ]a}||v s|dk    rt          ||         ¦  «        dk    sJ ‚Œ(|dk    r)t          ||         ¦  «        t          |¦  «        k    sJ ‚ŒW||         �J ‚Œbd S )
Nr°   rn   rN   rÙ   rR   rþ   rL   rW   r   )	rY   rZ   r[   r±   r²   r]   r^   rB   r_   r  s        r   Útest_increment_index_onrG  \  s  € Ø
‡L‚L�N„N€NØ×)Ò)¨+Ñ6Ô6€JØ€J„NÐ#Ð#•]Ð#Ð#Ð#Ø×ÒÑÔ Ò"Ð"Ð"Ð"àDÐDÐD€Hà	×	Ò	Ø)˜/˜/Ð*ØØð 
ñ 
ô 
€Bð
 �wŠw‰yŒyð #ð #ˆØ�8ˆOˆO ¨¢ Ý�r˜#”w‘<”< 1Ò$Ð$Ð$Ð$Ð$Ø�JÒÐÝ�r˜#”w‘<”<¥3 x¡=¤=Ò0Ð0Ð0Ð0Ð0à�c”7�?�?�?�?ð#ð #r   c                 ó*  — |                       ¦   «          |                      d¦  «         |                      d¦  «        }|j        dk    sJ ‚t	          j        t          ¦  «        5  |                      d¦  «        }d d d ¦  «         d S # 1 swxY w Y   d S )Nr°   r2  )rY   rZ   r\   r‰   rÇ   ré   rí   râ   s     r   Útest_add_a_collectionrI  r  sÔ   € Ø
‡L‚L�N„N€NØ
×Ò˜[Ñ)Ô)Ð)ð ×&Ò& {Ñ3Ô3€JØŒ?˜kÒ)Ð)Ð)Ð)õ 
Œ•yÑ	!Ô	!ð 9ð 9Ø×*Ò*¨<Ñ8Ô8ˆ
ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9ð 9ð 9s   Á%BÂBÂBc                 ó¤  — dd l }|                      ¦   «          |                      dddi¬¦  «        }|j        }|                      |¦  «        }|j        dk    sJ ‚|j        |k    sJ ‚|j        ddik    sJ ‚t          j        t          ¦  «        5  |                      | 
                    ¦   «         ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r°   re   Úvaluer  )ÚuuidrY   rZ   ÚidÚget_collection_by_idr‰   r  rÇ   ré   r   Úuuid4)r0   rL  ra   Úcollection_idÚ	retrieveds        r   Útest_get_collection_by_idrR    s  € Ø€K€K€Kà
‡L‚L�N„N€NØ×)Ò)¨+ÀÈÐ@PÐ)ÑQÔQ€JØ”M€Mà×+Ò+¨MÑ:Ô:€IØŒ>˜[Ò(Ð(Ð(Ð(ØŒ<˜=Ò(Ð(Ð(Ð(ØÔ %¨Ð!1Ò1Ð1Ð1Ð1å	Œ•}Ñ	%Ô	%ð 2ð 2Ø×#Ò# D§J¢J¡L¤LÑ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð 2ð 2s   Â(CÃC	ÃC	c                 óÖ   — |                       ¦   «          t          j        t          ¦  «        5 }|                      d¦  «         d d d ¦  «         n# 1 swxY w Y   |j        j        €J ‚d S )Nr2  )rY   rÇ   ré   r   r\   rK  Útrace_id)Úhttp_clientÚerrors     r   Útest_error_includes_trace_idrW  �  s£   € Ø×ÒÑÔÐå	Œ•{Ñ	#Ô	#ð 1 uØ×"Ò" <Ñ0Ô0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð Œ;ÔÐ+Ð+Ð+Ð+Ð+s   ®AÁAÁAc                 óÔ   — |                       ¦   «          |                      d¦  «         |                      d¦  «         |                      ¦   «         }t          |¦  «        dk    sJ ‚d S )Nr°   r2  rn   ©rY   rZ   r´   rB   ©r0   rD  s     r   Útest_list_collectionsr[  ˜  si   € Ø
‡L‚L�N„N€NØ
×Ò˜[Ñ)Ô)Ð)Ø
×Ò˜\Ñ*Ô*Ð*ð ×)Ò)Ñ+Ô+€KÝˆ{ÑÔ˜qÒ Ð Ð Ð Ð Ð r   c                 óN  — |                       ¦   «          |                      d¦  «         |                      d¦  «         |                      ¦   «         }t          |¦  «        dk    sJ ‚|                       ¦   «          |                      ¦   «         }t          |¦  «        dk    sJ ‚d S )Nr°   r2  rn   r   rY  rZ  s     r   Ú
test_resetr]  ¢  s    € Ø
‡L‚L�N„N€NØ
×Ò˜[Ñ)Ô)Ð)Ø
×Ò˜\Ñ*Ô*Ð*ð ×)Ò)Ñ+Ô+€KÝˆ{ÑÔ˜qÒ Ð Ð Ð à
‡L‚L�N„N€NØ×)Ò)Ñ+Ô+€KÝˆ{ÑÔ˜qÒ Ð Ð Ð Ð Ð r   c                 óæ  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž |                     ¦   «         dk    sJ ‚|                     ¦   «         }t          |¦  «         |                     ¦   «         D ]c}|dv s|dk    rt          ||         ¦  «        dk    sJ ‚Œ(|dk    r+t          ||         ¦  «        t          g d¢¦  «        k    sJ ‚ŒY||         �J ‚Œdd S )Nr°   rn   ró   rL   rW   ©rO   rP   rM   r   )
rY   rZ   r[   r±   r²   ÚpeekÚprintr^   rB   r_   )r0   ra   r`  re   s       r   Ú	test_peekrb  °  s  € Ø
‡L‚L�N„N€NØ×)Ò)¨+Ñ6Ô6€JØ€J„NÐ#Ð#•]Ð#Ð#Ð#Ø×ÒÑÔ Ò"Ð"Ð"Ð"ð �?Š?ÑÔ€DÝ	ˆ$�K„K€KØ�yŠy‰{Œ{ð %ð %ˆØÐ:Ð:Ð:¸cÀUºl¸lÝ�t˜C”y‘>”> QÒ&Ð&Ð&Ð&Ð&Ø�JÒÐÝ�t˜C”y‘>”>¥SÐ)QÐ)QÐ)QÑ%RÔ%RÒRÐRÐRÐRÐRà˜”9Ð$Ð$Ð$Ð$ð%ð %r   c                 ó  — |                       ¦   «          |                      d¦  «        }|                      d¦  «         t          j        t
          d¬¦  «        5  |                     ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S rø   )rY   rZ   r³   rÇ   ré   r   r`  râ   s     r   Ú3test_collection_peek_with_invalid_collection_throwsrd  Â  sÀ   € Ø
‡L‚L�N„N€NØ×)Ò)¨&Ñ1Ô1€JØ
×Ò˜VÑ$Ô$Ð$å	Œ•}Ð,KÐ	LÑ	LÔ	Lð ð Ø�ŠÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð rú   c                 ó  — |                       ¦   «          |                      d¦  «        }|                      d¦  «         t          j        t
          d¬¦  «        5  |                     dg¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrH   ræ   rç   )rT   )rY   rZ   r³   rÇ   ré   r   r]   râ   s     r   Ú4test_collection_query_with_invalid_collection_throwsrf  Ë  sÉ   € Ø
‡L‚L�N„N€NØ×)Ò)¨&Ñ1Ô1€JØ
×Ò˜VÑ$Ô$Ð$å	Œ•}Ð,KÐ	LÑ	LÔ	Lð /ð /Ø×Ò f XÐÑ.Ô.Ð.ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /ð /ð /r+  c                 ó  — |                       ¦   «          |                      d¦  «        }|                      d¦  «         t          j        t
          d¬¦  «        5  |                     dgdg¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrH   ræ   rç   rI   rK   )rY   rZ   r³   rÇ   ré   r   Úupdaterâ   s     r   Ú5test_collection_update_with_invalid_collection_throwsri  Ô  sÍ   € Ø
‡L‚L�N„N€NØ×)Ò)¨&Ñ1Ô1€JØ
×Ò˜VÑ$Ô$Ð$å	Œ•}Ð,KÐ	LÑ	LÔ	Lð ;ð ;Ø×Ò˜u˜g°&°ÐÑ:Ô:Ð:ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð ;ð ;s   ÁBÂBÂBrI   r  rR   Úoneçj¼t“ð?©Ú	int_valueÚstring_valueÚfloat_valuerm  rn   ©rO   rL   rP   c                 óì  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž |                     ddg¬¦  «        }|d         d         d         dk    sJ ‚|d         d         d	         d
k    sJ ‚|d         d         d         dk    sJ ‚t          |d         d         d         t          ¦  «        sJ ‚t          |d         d         d	         t          ¦  «        sJ ‚d S )NÚtest_intrI   r  r  rP   r   rm  rR   ro  rk  rn   r   )rY   rZ   r[   Úmetadata_recordsrÓ   rº   r»   Úfloat©r0   ra   Úitemss      r   Útest_metadata_add_get_int_floatrw  ê  s  € Ø
‡L‚L�N„N€NØ×)Ò)¨*Ñ5Ô5€JØ€J„NÐ&Ð&Õ%Ð&Ð&Ð&à�NŠN  u˜~ˆNÑ.Ô.€EØ�Ô˜aÔ  Ô-°Ò2Ð2Ð2Ð2Ø�Ô˜aÔ  Ô/°5Ò8Ð8Ð8Ð8Ø�Ô˜aÔ  Ô-°Ò2Ð2Ð2Ð2Ý�e˜KÔ(¨Ô+¨KÔ8½#Ñ>Ô>Ð>Ð>Ð>Ý�e˜KÔ(¨Ô+¨MÔ:½EÑBÔBÐBÐBÐBÐBÐBr   c                 ó   — |                       ¦   «          |                      d¦  «        } |j        d
i t          ¤Ž |                     g d¢gd¬¦  «        }|d         €J ‚|d         d         d         d         dk    sJ ‚|d         d         d         d         d	k    sJ ‚t          |d         d         d         d         t          ¦  «        sJ ‚t          |d         d         d         d         t          ¦  «        sJ ‚d S )Nrr  rÙ   rR   r'  rP   r   rm  ro  rk  r   )rY   rZ   r[   rs  r]   rº   r»   rt  ru  s      r   Ú!test_metadata_add_query_int_floatry  ÷  s  € Ø
‡L‚L�N„N€NØ×)Ò)¨*Ñ5Ô5€JØ€J„NÐ&Ð&Õ%Ð&Ð&Ð&à#×)Ò)Ø)˜/˜/Ð*°að *ñ ô €Eð �ÔÐ)Ð)Ð)Ø�Ô˜aÔ  Ô# KÔ0°AÒ5Ð5Ð5Ð5Ø�Ô˜aÔ  Ô# MÔ2°eÒ;Ð;Ð;Ð;Ý�e˜KÔ(¨Ô+¨AÔ.¨{Ô;½SÑAÔAÐAÐAÐAÝ�e˜KÔ(¨Ô+¨AÔ.¨}Ô=½uÑEÔEÐEÐEÐEÐEÐEr   c                 ó  — |                       ¦   «          |                      d¦  «        } |j        d	i t          ¤Ž |                     ddi¬¦  «        }|d         d         d         dk    sJ ‚|d         d         d         dk    sJ ‚d S )
Nrr  rn  rj  ©r  rP   r   rm  rR   r   ©rY   rZ   r[   rs  rÓ   ru  s      r   Útest_metadata_get_where_stringr}    s™   € Ø
‡L‚L�N„N€NØ×)Ò)¨*Ñ5Ô5€JØ€J„NÐ&Ð&Õ%Ð&Ð&Ð&à�NŠN .°%Ð!8ˆNÑ9Ô9€EØ�Ô˜aÔ  Ô-°Ò2Ð2Ð2Ð2Ø�Ô˜aÔ  Ô0°EÒ9Ð9Ð9Ð9Ð9Ð9r   c                 ó  — |                       ¦   «          |                      d¦  «        } |j        d	i t          ¤Ž |                     ddi¬¦  «        }|d         d         d         dk    sJ ‚|d         d         d         dk    sJ ‚d S )
Nrr  rm  rR   r{  rP   r   rn  rj  r   r|  ru  s      r   Útest_metadata_get_where_intr    s™   € Ø
‡L‚L�N„N€NØ×)Ò)¨*Ñ5Ô5€JØ€J„NÐ&Ð&Õ%Ð&Ð&Ð&à�NŠN +¨qÐ!1ˆNÑ2Ô2€EØ�Ô˜aÔ  Ô-°Ò2Ð2Ð2Ð2Ø�Ô˜aÔ  Ô0°EÒ9Ð9Ð9Ð9Ð9Ð9r   c                 óH  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž |                     ddi¬¦  «        }|d         d         d         dk    sJ ‚|d         d         d	         d
k    sJ ‚|d         d         d         dk    sJ ‚d S )Nrr  ro  rk  r{  rP   r   rm  rR   rn  rj  r   r|  ru  s      r   Útest_metadata_get_where_floatr�    s¹   € Ø
‡L‚L�N„N€NØ×)Ò)¨*Ñ5Ô5€JØ€J„NÐ&Ð&Õ%Ð&Ð&Ð&à�NŠN -°Ð!7ˆNÑ8Ô8€EØ�Ô˜aÔ  Ô-°Ò2Ð2Ð2Ð2Ø�Ô˜aÔ  Ô0°EÒ9Ð9Ð9Ð9Ø�Ô˜aÔ  Ô/°5Ò8Ð8Ð8Ð8Ð8Ð8r   c                 ó€  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž |                     dgddddœg¬¦  «         |                     dg¬¦  «        }|d	         d
         d         dk    sJ ‚|d	         d
         d         dk    sJ ‚|d	         d
         d         dk    sJ ‚d S )Nrr  rI   rn   Útwoçj¼t“ @rl  ©rL   rP   r  rP   r   rm  rn  ro  r   )rY   rZ   r[   rs  rh  rÓ   ru  s      r   Ú"test_metadata_update_get_int_floatr†  %  sê   € Ø
‡L‚L�N„N€NØ×)Ò)¨*Ñ5Ô5€JØ€J„NÐ&Ð&Õ%Ð&Ð&Ð&à×ÒØˆGØ!"°EÈ%ÐPÐPÐQð ñ ô ð ð �NŠN ˜wˆNÑ'Ô'€EØ�Ô˜aÔ  Ô-°Ò2Ð2Ð2Ð2Ø�Ô˜aÔ  Ô0°EÒ9Ð9Ð9Ð9Ø�Ô˜aÔ  Ô/°5Ò8Ð8Ð8Ð8Ð8Ð8r   rK  ÚnestedÚ5rm   c                 óä   — |                       ¦   «          |                      d¦  «        }t          j        t          d¬¦  «        5   |j        di t          ¤Ž d d d ¦  «         d S # 1 swxY w Y   d S )NÚtest_metadata_validationr  rç   r   )rY   rZ   rÇ   ré   r$  r[   Úbad_metadata_recordsrâ   s     r   Útest_metadata_validation_addrŒ  ;  sµ   € Ø
‡L‚L�N„N€NØ×)Ò)Ð*DÑEÔE€JÝ	Œ•z¨Ð	4Ñ	4Ô	4ð /ð /Øˆ
ŒÐ.Ð.Õ-Ð.Ð.Ð.ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /ð /ð /s   ÁA%Á%A)Á,A)c                 ó  — |                       ¦   «          |                      d¦  «        } |j        d	i t          ¤Ž t	          j        t          d¬¦  «        5  |                     dgdddii¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
NrŠ  r  rç   rI   rK  r‡  rˆ  r…  r   )rY   rZ   r[   rs  rÇ   ré   r$  rh  râ   s     r   Útest_metadata_validation_updaterŽ  B  sí   € Ø
‡L‚L�N„N€NØ×)Ò)Ð*DÑEÔE€JØ€J„NÐ&Ð&Õ%Ð&Ð&Ð&Ý	Œ•z¨Ð	4Ñ	4Ô	4ð Mð MØ×Ò˜u˜g°'¸HÀc¸?Ð1KÐÑLÔLÐLðMð Mð Mñ Mô Mð Mð Mð Mð Mð Mð Mð Møøøð Mð Mð Mð Mð Mð Ms   ÁBÂBÂBc                 óô   — |                       ¦   «          |                      d¦  «        }t          j        t          d¬¦  «        5  |                     dddii¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚtest_where_validationr  rç   rK  r‡  rˆ  r{  )rY   rZ   rÇ   ré   r$  rÓ   râ   s     r   Útest_where_validation_getr‘  J  s¹   € Ø
‡L‚L�N„N€NØ×)Ò)Ð*AÑBÔB€JÝ	Œ•z¨Ð	1Ñ	1Ô	1ð 9ð 9Ø�Š˜g¨°# Ð7ˆÑ8Ô8Ð8ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9ð 9ð 9s   ÁA-Á-A1Á4A1c                 óú   — |                       ¦   «          |                      d¦  «        }t          j        t          d¬¦  «        5  |                     g d¢dddii¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nr�  r  rç   ©r   r   r   rK  r‡  rˆ  )rÿ   r  )rY   rZ   rÇ   ré   r$  r]   râ   s     r   Útest_where_validation_queryr”  Q  s×   € Ø
‡L‚L�N„N€NØ×)Ò)Ð*AÑBÔB€JÝ	Œ•z¨Ð	1Ñ	1Ô	1ð Wð WØ×Ò¨)¨)¨)¸GÀhÐPSÀ_Ð;UÐÑVÔVÐVðWð Wð Wñ Wô Wð Wð Wð Wð Wð Wð Wð Wøøøð Wð Wð Wð Wð Wð Ws   ÁA0Á0A4Á7A4r„  rƒ  )rm  ro  rn  c                 óæ   — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž |                     dddii¬¦  «        }t          |d         ¦  «        dk    sJ ‚d S )	NÚtest_where_ltrm  ú$ltrn   r{  rP   rR   r   ©rY   rZ   r[   Úoperator_recordsrÓ   rB   ru  s      r   r–  r–  b  s{   € Ø
‡L‚L�N„N€NØ×)Ò)¨/Ñ:Ô:€JØ€J„NÐ&Ð&Õ%Ð&Ð&Ð&Ø�NŠN +°°q¨zÐ!:ˆNÑ;Ô;€EÝˆu�[Ô!Ñ"Ô" aÒ'Ð'Ð'Ð'Ð'Ð'r   c                 óæ   — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž |                     dddii¬¦  «        }t          |d         ¦  «        dk    sJ ‚d S )	NÚtest_where_lterm  ú$lteç       @r{  rP   rn   r   r˜  ru  s      r   r›  r›  j  s|   € Ø
‡L‚L�N„N€NØ×)Ò)Ð*:Ñ;Ô;€JØ€J„NÐ&Ð&Õ%Ð&Ð&Ð&Ø�NŠN +°¸¨}Ð!=ˆNÑ>Ô>€EÝˆu�[Ô!Ñ"Ô" aÒ'Ð'Ð'Ð'Ð'Ð'r   c                 óæ   — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž |                     dddii¬¦  «        }t          |d         ¦  «        dk    sJ ‚d S )	Nr›  ro  ú$gtgffffffö¿r{  rP   rn   r   r˜  ru  s      r   Útest_where_gtr   r  s|   € Ø
‡L‚L�N„N€NØ×)Ò)Ð*:Ñ;Ô;€JØ€J„NÐ&Ð&Õ%Ð&Ð&Ð&Ø�NŠN -°%¸°Ð!?ˆNÑ@Ô@€EÝˆu�[Ô!Ñ"Ô" aÒ'Ð'Ð'Ð'Ð'Ð'r   c                 óæ   — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž |                     dddii¬¦  «        }t          |d         ¦  «        dk    sJ ‚d S )	Nr›  ro  ú$gter„  r{  rP   rR   r   r˜  ru  s      r   Útest_where_gter£  z  s|   € Ø
‡L‚L�N„N€NØ×)Ò)Ð*:Ñ;Ô;€JØ€J„NÐ&Ð&Õ%Ð&Ð&Ð&Ø�NŠN -°&¸%°Ð!AˆNÑBÔB€EÝˆu�[Ô!Ñ"Ô" aÒ'Ð'Ð'Ð'Ð'Ð'r   c                 óæ   — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž |                     dddii¬¦  «        }t          |d         ¦  «        dk    sJ ‚d S )	Nr›  rn  ú$nerƒ  r{  rP   rR   r   r˜  ru  s      r   Útest_where_ne_stringr¦  ‚  s|   € Ø
‡L‚L�N„N€NØ×)Ò)Ð*:Ñ;Ô;€JØ€J„NÐ&Ð&Õ%Ð&Ð&Ð&Ø�NŠN .°5¸%°.Ð!AˆNÑBÔB€EÝˆu�[Ô!Ñ"Ô" aÒ'Ð'Ð'Ð'Ð'Ð'r   c                 óP  — |                       ¦   «          |                      d¦  «        } |j        d
i t          ¤Ž |                     dddii¬¦  «        }t          |d         ¦  «        dk    sJ ‚|                     ddd	ii¬¦  «        }t          |d         ¦  «        dk    sJ ‚d S )Nr›  rm  r¥  rR   r{  rP   ro  ú$eqr„  r   r˜  ru  s      r   Útest_where_ne_eq_numberr©  Š  s¶   € Ø
‡L‚L�N„N€NØ×)Ò)Ð*:Ñ;Ô;€JØ€J„NÐ&Ð&Õ%Ð&Ð&Ð&Ø�NŠN +°°q¨zÐ!:ˆNÑ;Ô;€EÝˆu�[Ô!Ñ"Ô" aÒ'Ð'Ð'Ð'Ø�NŠN -°%¸°Ð!@ˆNÑAÔA€EÝˆu�[Ô!Ñ"Ô" aÒ'Ð'Ð'Ð'Ð'Ð'r   c                 óâ  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž t	          j        t          ¦  «        5  |                     dddii¬¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          ¦  «        5  |                     dddii¬¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          ¦  «        5  |                     dddd	œi¬¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          ¦  «        5  |                     d
dddiii¬¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          ¦  «        5  |                     ddidddiidœ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          ¦  «        5  |                     ddddiidddiigi¬¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          ¦  «        5  |                     ddddiigi¬¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          ¦  «        5  |                     dg i¬¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          ¦  «        5  |                     ddi¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚtest_where_valid_operatorsrm  z$invalidrn   r{  r—  Ú2rR   )r—  rŸ  ú$andrŸ  )rm  ú$orr®  ú	$containsrH   r   )rY   rZ   r[   r™  rÇ   ré   r$  rÓ   râ   s     r   r«  r«  ”  s[  € Ø
‡L‚L�N„N€NØ×)Ò)Ð*FÑGÔG€JØ€J„NÐ&Ð&Õ%Ð&Ð&Ð&Ý	Œ•zÑ	"Ô	"ð =ð =Ø�Š˜k¨J¸¨?Ð;ˆÑ<Ô<Ð<ð=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =õ 
Œ•zÑ	"Ô	"ð :ð :Ø�Š˜k¨E°3¨<Ð8ˆÑ9Ô9Ð9ð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :õ 
Œ•zÑ	"Ô	"ð Bð BØ�Š˜k°1¸QÐ+?Ð+?Ð@ˆÑAÔAÐAðBð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð Bõ 
Œ•zÑ	"Ô	"ð Bð BØ�Š˜f {°U¸A°JÐ&?Ð@ˆÑAÔAÐAðBð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð Bõ 
Œ•zÑ	"Ô	"ð 
ð 
Ø�ŠØ!&¨ 
°KÀ%ÈÀÐ3LÐMÐMð 	ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
õ
 
Œ•zÑ	"Ô	"ð 
ð 
Ø�ŠØ˜K¨%°¨Ð4°{ÀUÈAÀJÐ6OÐPÐQð 	ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
õ
 
Œ•zÑ	"Ô	"ð Cð CØ�Š˜e {°U¸A°JÐ&?Ð%@ÐAˆÑBÔBÐBðCð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cõ 
Œ•zÑ	"Ô	"ð *ð *Ø�Š˜e R˜[ˆÑ)Ô)Ð)ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *õ
 
Œ•zÑ	"Ô	"ð 4ð 4Ø�Š˜k¨6Ð2ˆÑ3Ô3Ð3ð4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4ð 4ð 4s¢   ÁA<Á<B ÂB Â CÃCÃCÃ+DÄDÄDÄ7E Å E$Å'E$Æ F0Æ0F4Æ7F4Ç#HÈHÈ
HÈ'IÉIÉIÉ5JÊJÊ!JÊ>K$Ë$K(Ë+K()rÚ   rÛ   rÜ   r  )rÞ   rß   rÜ   r  rÿ   rÍ   r'  c                 ó2  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž t	          j        t          ¦  «        5 } |j        di t          ¤Ž d d d ¦  «         n# 1 swxY w Y   dt          |j	        ¦  «        v sJ ‚d S )NÚtest_dimensionality_validationÚ	dimensionr   )
rY   rZ   r[   rð   rÇ   ré   rí   Úbad_dimensionality_recordsr—   rK  ©r0   ra   Úes      r   Ú"test_dimensionality_validation_addr¶  Ë  sÕ   € Ø
‡L‚L�N„N€NØ×)Ò)Ð*JÑKÔK€JØ€J„NÐ%Ð%•_Ð%Ð%Ð%å	Œ•yÑ	!Ô	!ð 5 QØˆ
ŒÐ4Ð4Õ3Ð4Ð4Ð4ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5à�#˜aœg™,œ,Ð&Ð&Ð&Ð&Ð&Ð&ó   ÁA4Á4A8Á;A8c                 ó2  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž t	          j        t          ¦  «        5 } |j        di t          ¤Ž d d d ¦  «         n# 1 swxY w Y   dt          |j
        ¦  «        v sJ ‚d S )NÚ$test_dimensionality_validation_queryr²  r   )rY   rZ   r[   rð   rÇ   ré   rí   r]   Úbad_dimensionality_queryr—   rK  r´  s      r   r¹  r¹  Õ  sÖ   € Ø
‡L‚L�N„N€NØ×)Ò)Ð*PÑQÔQ€JØ€J„NÐ%Ð%•_Ð%Ð%Ð%å	Œ•yÑ	!Ô	!ð 5 QØˆ
ÔÐ4Ð4Õ3Ð4Ð4Ð4ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5à�#˜aœg™,œ,Ð&Ð&Ð&Ð&Ð&Ð&r·  c                 ó€  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž t	          j        t          d¬¦  «        5  |                     dddii¬¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          d¬¦  «        5  |                     g d¢d	di¬
¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          d¬¦  «        5  |                     d	g i¬¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          d¬¦  «        5  |                     d	ddii¬¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          d¬¦  «        5  |                     dddii¬¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          ¦  «        5  |                     dddii¬¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          ¦  «        5  |                     dddiddigi¬¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          ¦  «        5  |                     dd	digi¬¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          ¦  «        5  |                     dg i¬¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          ¦  «        5  |                     ddd	digid	digi¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr«  zwhere documentrç   r—  z$nestedrn   ©Úwhere_documentr“  r¯  )rÿ   r½  ÚtextrJ   ú$not_containsr­  z$unsupportedÚdocr®  r   )	rY   rZ   r[   r™  rÇ   ré   r$  rÓ   r]   râ   s     r   Ú#test_query_document_valid_operatorsrÁ  ß  s  € Ø
‡L‚L�N„N€NØ×)Ò)Ð*FÑGÔG€JØ€J„NÐ&Ð&Õ%Ð&Ð&Ð&Ý	Œ•zÐ)9Ð	:Ñ	:Ô	:ð ?ð ?Ø�Š u¨y¸!¨nÐ&=ˆÑ>Ô>Ð>ð?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?õ 
Œ•zÐ)9Ð	:Ñ	:Ô	:ð Vð VØ×Ò¨)¨)¨)À[ÐRSÐDTÐÑUÔUÐUðVð Vð Vñ Vô Vð Vð Vð Vð Vð Vð Vøøøð Vð Vð Vð Võ 
Œ•zÐ)9Ð	:Ñ	:Ô	:ð 9ð 9Ø�Š {°BÐ&7ˆÑ8Ô8Ð8ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9õ 
Œ•zÐ)9Ð	:Ñ	:Ô	:ð Hð HØ�Š {°V¸WÐ4EÐ&FˆÑGÔGÐGðHð Hð Hñ Hô Hð Hð Hð Hð Hð Hð Høøøð Hð Hð Hð Hõ 
Œ•zÐ)9Ð	:Ñ	:Ô	:ð Lð LØ�Š ¸ÀÐ8IÐ&JˆÑKÔKÐKðLð Lð Lñ Lô Lð Lð Lð Lð Lð Lð Løøøð Lð Lð Lð Lõ 
Œ•zÑ	"Ô	"ð Ið IØ�Š v°ÀÐ/FÐ&GˆÑHÔHÐHðIð Ið Iñ Iô Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Iõ 
Œ•zÑ	"Ô	"ð 
ð 
Ø�ŠØ! ^°UÐ$;¸nÈeÐ=TÐ#UÐVð 	ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
õ
 
Œ•zÑ	"Ô	"ð Gð GØ�Š u°¸UÐ/CÐ.DÐ&EˆÑFÔFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gõ 
Œ•zÑ	"Ô	"ð 3ð 3Ø�Š u¨b kˆÑ2Ô2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3õ 
Œ•zÑ	"Ô	"ð 
ð 
Ø�Šà˜ ;°Ð"6Ð!7Ð8¸;ÈÐ:NÐOðð 	ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s´   ÁA>Á>BÂBÂ$CÃCÃCÃ2DÄDÄDÄ=E$Å$E(Å+E(Æ
F1Æ1F5Æ8F5ÇG<Ç<H ÈH È IÉIÉIÉ/JÊJÊJÊ;K Ë K$Ë'K$Ì"L3Ì3L7Ì:L7zthis is doc1 and it's great!zdoc2 is also great!)rO   rM   rL   rP   c                 ó®  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž |                     ddi¬¦  «        }t          |d         ¦  «        dk    sJ ‚|                     ddi¬¦  «        }t          |d         ¦  «        dk    sJ ‚|                     dd	i¬¦  «        }t          |d         ¦  «        d
k    sJ ‚d S )NÚtest_get_where_documentr¯  Údoc1r¼  rP   rR   Úgreatrn   Úbadr   r   )rY   rZ   r[   Úcontains_recordsrÓ   rB   ru  s      r   rÃ  rÃ    sä   € Ø
‡L‚L�N„N€NØ×)Ò)Ð*CÑDÔD€JØ€J„NÐ&Ð&Õ%Ð&Ð&Ð&à�NŠN¨;¸Ð*?ˆNÑ@Ô@€EÝˆu�[Ô!Ñ"Ô" aÒ'Ð'Ð'Ð'à�NŠN¨;¸Ð*@ˆNÑAÔA€EÝˆu�[Ô!Ñ"Ô" aÒ'Ð'Ð'Ð'à�NŠN¨;¸Ð*>ˆNÑ?Ô?€EÝˆu�[Ô!Ñ"Ô" aÒ'Ð'Ð'Ð'Ð'Ð'r   c                 ó>  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž |                     g d¢ddid¬¦  «        }t          |d         d         ¦  «        dk    sJ ‚|                     g d	¢dd
id¬¦  «        }t          |d         d         ¦  «        dk    sJ ‚t          j        t          ¦  «        5 }|                     g d	¢ddid¬¦  «        }dt          |j
        ¦  «        v sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )NÚtest_query_where_documentr  r¯  rÄ  rR   )rÿ   r½  rU   rP   r   r“  rÅ  rn   rÆ  Ú
datapointsr   )rY   rZ   r[   rÇ  r]   rB   rÇ   ré   rí   r—   rK  )r0   ra   rv  rµ  s       r   rÉ  rÉ  %  s–  € Ø
‡L‚L�N„N€NØ×)Ò)Ð*EÑFÔF€JØ€J„NÐ&Ð&Õ%Ð&Ð&Ð&à×ÒØ"˜˜°KÀÐ3HÐTUð ñ ô €Eõ ˆu�[Ô! !Ô$Ñ%Ô%¨Ò*Ð*Ð*Ð*à×ÒØ"˜˜°KÀÐ3IÐUVð ñ ô €Eõ ˆu�[Ô! !Ô$Ñ%Ô%¨Ò*Ð*Ð*Ð*å	Œ•yÑ	!Ô	!ð , QØ× Ò Ø&˜Y˜Y¸ÀUÐ7KÐWXð !ñ 
ô 
ˆð �s 1¤7™|œ|Ð+Ð+Ð+Ð+Ð+ð	,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ,ð ,s   Ã5DÄDÄDc                 ó¨  — |                       ¦   «          |                      d¦  «        } |j        d	i t          ¤Ž |                     ddi¬¦  «         |                     ¦   «         dk    sJ ‚|                     ddi¬¦  «         |                     ¦   «         dk    sJ ‚|                     ddi¬¦  «         |                     ¦   «         dk    sJ ‚d S )
NÚtest_delete_where_documentr¯  rÄ  r¼  rR   rÆ  rÅ  r   r   )rY   rZ   r[   rÇ  r  r²   râ   s     r   rÌ  rÌ  ;  sí   € Ø
‡L‚L�N„N€NØ×)Ò)Ð*FÑGÔG€JØ€J„NÐ&Ð&Õ%Ð&Ð&Ð&à×Ò k°6Ð%:ÐÑ;Ô;Ð;Ø×ÒÑÔ Ò"Ð"Ð"Ð"à×Ò k°5Ð%9ÐÑ:Ô:Ð:Ø×ÒÑÔ Ò"Ð"Ð"Ð"à×Ò k°7Ð%;ÐÑ<Ô<Ð<Ø×ÒÑÔ Ò"Ð"Ð"Ð"Ð"Ð"r   )gÍÌÌÌÌÌô?g      @rÜ   )gffffffö?g®Gáz@rÜ   )rI   r  r  r  rÀ  )rm  rn  ro  Úis)rm  ro  rn  rÍ  ro   g /Ý$@Úthreeé   gj¼t“@Úfour)z this document is first and greatz!this document is second and greatz this document is third and greatz!this document is fourth and great)rO   rL   rP   rM   c           	      ó6  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž |                     dddddiiddd	iigid
digi¬¦  «        }t          |d         ¦  «        dk    sJ ‚|                     dddddiidddiigiddddiidddiigigi¬¦  «        }t          |d         ¦  «        dk    sJ ‚|                     dddddiidddiigiddddiidddiigigi¬¦  «        }t          |d         ¦  «        dk    sJ ‚d S )NÚtest_logical_operatorsr­  r®  rm  r¢  ro   ro  r—  gffffffþ?rÍ  rÀ  r{  rP   r¨  rn  rÎ  rÏ  rÐ  rn   rR   rƒ  rj  r   ©rY   rZ   r[   Úlogical_operator_recordsrÓ   rB   ru  s      r   Útest_where_logical_operatorsrÕ  a  sÐ  € Ø
‡L‚L�N„N€NØ×)Ò)Ð*BÑCÔC€JØ€J„NÐ.Ð.Õ-Ð.Ð.Ð.à�NŠNàØ˜+¨° {Ð3°mÀeÈSÀ\Ð5RÐSÐTØ�u�ðð
ð ñ ô €Eõ ˆu�[Ô!Ñ"Ô" aÒ'Ð'Ð'Ð'à�NŠNààØ$ u¨a jÐ1Ø'¨%°Ð)9Ð:ððð Ø$ u¨a jÐ1Ø'¨%°¨Ð9ðððð
ð ñ ô €Eõ$ ˆu�[Ô!Ñ"Ô" aÒ'Ð'Ð'Ð'à�NŠNààØ$ u¨a jÐ1Ø'¨%°¨Ð8ððð Ø$ u¨a jÐ1Ø'¨%°¨Ð8ðððð
ð ñ ô €Eõ$ ˆu�[Ô!Ñ"Ô" aÒ'Ð'Ð'Ð'Ð'Ð'r   c                 óÜ  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž |                     dddiddigi¬¦  «        }t          |d         ¦  «        dk    sJ ‚|                     d	ddidd
igi¬¦  «        }t          |d         ¦  «        dk    sJ ‚|                     d	ddidd
igidddii¬¦  «        }t          |d         ¦  «        dk    sJ ‚d S )NÚtest_document_logical_operatorsr­  r¯  ÚfirstrÀ  r¼  rP   rR   r®  Úsecondrn   rm  r¥  )r½  r  r   rÓ  ru  s      r   Ú%test_where_document_logical_operatorsrÚ  ™  sQ  € Ø
‡L‚L�N„N€NØ×)Ò)Ð*KÑLÔL€JØ€J„NÐ.Ð.Õ-Ð.Ð.Ð.à�NŠNàØ˜gÐ&Ø˜eÐ$ðð
ð ñ ô €Eõ ˆu�[Ô!Ñ"Ô" aÒ'Ð'Ð'Ð'à�NŠNàØ˜gÐ&Ø˜hÐ'ðð
ð ñ ô €Eõ ˆu�[Ô!Ñ"Ô" aÒ'Ð'Ð'Ð'à�NŠNàØ˜gÐ&Ø˜hÐ'ðð
ð ˜% ˜ð
ð ñ 
ô 
€Eõ ˆu�[Ô!Ñ"Ô" aÒ'Ð'Ð'Ð'Ð'Ð'r   r“  úthis document is firstúthis document is secondc                 óX  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž g d¢}|                     g d¢|d¬¦  «        }|d         �J ‚|d         d         d         d	k    sJ ‚|d
         d         d         d         dk    sJ ‚t          |d         ¦  «        t          |¦  «        k    sJ ‚g d¢}|                     g d¢|d¬¦  «        }|d
         �J ‚|d         d         d         d	k    sJ ‚t          |d         ¦  «        t          |¦  «        k    sJ ‚|                     g d¢g d¢gg d¬¦  «        }|d         �J ‚|d
         �J ‚|d         �J ‚|d         �J ‚|d         d         d         d	k    sJ ‚|d         d         d         dk    sJ ‚d S )NÚtest_query_include©rP   rM   rQ   r“  rR   ©rÿ   rV   rU   rO   rL   r   rI   rP   rm  rW   )rO   rM   rQ   )rR   rn   rÞ   rn   rM   rQ   r  r   )rY   rZ   r[   rõ   r]   r_   ©r0   ra   rV   rv  s       r   rÞ  rÞ  Í  s&  € Ø
‡L‚L�N„N€NØ×)Ò)Ð*>Ñ?Ô?€JØ€J„NÐÐ•WÐÐÐà5Ð5Ð5€GØ×ÒØ"˜˜ØØð ñ ô €Eð
 �ÔÐ&Ð&Ð&Ø�Œ<˜Œ?˜1Ô Ò&Ð&Ð&Ð&Ø�Ô˜aÔ  Ô# KÔ0°AÒ5Ð5Ð5Ð5Ýˆu�ZÔ Ñ!Ô!¥S¨¡\¤\Ò1Ð1Ð1Ð1à6Ð6Ð6€GØ×ÒØ"˜˜ØØð ñ ô €Eð
 �ÔÐ%Ð%Ð%Ø�Œ<˜Œ?˜1Ô Ò&Ð&Ð&Ð&Ýˆu�ZÔ Ñ!Ô!¥S¨¡\¤\Ò1Ð1Ð1Ð1à×ÒØ#˜)˜) [ [ [Ð1ØØð ñ ô €Eð
 �ÔÐ%Ð%Ð%Ø�ÔÐ%Ð%Ð%Ø�ÔÐ&Ð&Ð&Ø�ÔÐ%Ð%Ð%Ø�Œ<˜Œ?˜1Ô Ò&Ð&Ð&Ð&Ø�Œ<˜Œ?˜1Ô Ò&Ð&Ð&Ð&Ð&Ð&r   c                 ó|  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž ddg}|                     |ddi¬¦  «        }|d         �J ‚|d         d	         d
k    sJ ‚|d         d	         d         dk    sJ ‚|d         d	         dk    sJ ‚t          |d         ¦  «        t          |¦  «        k    sJ ‚ddg}|                     |¬¦  «        }|d         �J ‚|d         d	         d
k    sJ ‚t          |d         d         d	         d¦  «        sJ ‚t          |d         ¦  «        t          |¦  «        k    sJ ‚|                     g ¬¦  «        }|d         �J ‚|d         �J ‚|d         �J ‚|d         d	         d
k    sJ ‚|d         g k    sJ ‚t          j        t          d¬¦  «        5  |                     ddg¬¦  «        }d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  |                     d ¬¦  «        }d d d ¦  «         d S # 1 swxY w Y   d S )NÚtest_get_includerP   rM   rm  rR   )rV   r  rO   rL   r   rI   rÛ  rW   rô   rÞ   rV   rç   Ú	undefinedr   )
rY   rZ   r[   rõ   rÓ   r_   r=   rÇ   ré   r$  rá  s       r   rã  rã  ô  s  € Ø
‡L‚L�N„N€NØ×)Ò)Ð*<Ñ=Ô=€JØ€J„NÐÐ•WÐÐÐà˜KÐ(€GØ�NŠN 7°;ÀÐ2BˆNÑCÔC€EØ�ÔÐ&Ð&Ð&Ø�Œ<˜Œ?˜eÒ#Ð#Ð#Ð#Ø�Ô˜aÔ  Ô-°Ò2Ð2Ð2Ð2Ø�Ô˜aÔ Ð$<Ò<Ð<Ð<Ð<Ýˆu�ZÔ Ñ!Ô!¥S¨¡\¤\Ò1Ð1Ð1Ð1à˜[Ð)€GØ�NŠN 7ˆNÑ+Ô+€EØ�ÔÐ%Ð%Ð%Ø�Œ<˜Œ?˜eÒ#Ð#Ð#Ð#Ý˜˜lÔ+¨AÔ.¨qÔ1°3Ñ7Ô7Ð7Ð7Ð7Ýˆu�ZÔ Ñ!Ô!¥S¨¡\¤\Ò1Ð1Ð1Ð1à�NŠN 2ˆNÑ&Ô&€EØ�ÔÐ%Ð%Ð%Ø�ÔÐ%Ð%Ð%Ø�ÔÐ&Ð&Ð&Ø�Œ<˜Œ?˜eÒ#Ð#Ð#Ð#Ø�Ô Ò"Ð"Ð"Ð"å	Œ•z¨Ð	3Ñ	3Ô	3ð Cð CØ—’¨°[Ð'A�ÑBÔBˆðCð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cõ 
Œ•z¨Ð	3Ñ	3Ô	3ð -ð -Ø—’ t�Ñ,Ô,ˆð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -s$   ÇG'Ç'G+Ç.G+ÈH1È1H5È8H5c                 ó  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž |                     g d¢g d¢d¬¦  «        }|d         d         d         dk    sJ ‚|d         d         d	         d
k    sJ ‚d S )NÚtest_query_orderrÝ   rß  rn   rà  rM   r   rÜ  rR   rÛ  r   ©rY   rZ   r[   rõ   r]   ru  s      r   ræ  ræ    s´   € Ø
‡L‚L�N„N€NØ×)Ò)Ð*<Ñ=Ô=€JØ€J„NÐÐ•WÐÐÐà×ÒØ)Ð)Ð)Ø7Ð7Ð7Øð ñ ô €Eð �Ô˜aÔ  Ô#Ð'@Ò@Ð@Ð@Ð@Ø�Ô˜aÔ  Ô#Ð'?Ò?Ð?Ð?Ð?Ð?Ð?r   c                 ó¢  — |                       ¦   «          |                      d¦  «        }t          j        t          ¦  «        5 }|                     g d¢dgi g¬¦  «         d d d ¦  «         n# 1 swxY w Y   dt          |j        ¦  «        v sJ ‚t          j        t          ¦  «        5 }|                     d¬¦  «         d d d ¦  «         n# 1 swxY w Y   dt          |j        ¦  «        v sJ ‚t          j        t          ¦  «        5 }| 	                    ddg¬¦  «         d d d ¦  «         n# 1 swxY w Y   dt          |j        ¦  «        v sJ ‚d S )	NÚtest_invalid_idr“  rR   rp  ÚIDr  Úvalidr   )
rY   rZ   rÇ   ré   r$  r[   r—   rK  rÓ   r  r´  s      r   ré  ré  +  sý  € Ø
‡L‚L�N„N€NØ×)Ò)Ð*;Ñ<Ô<€Jå	Œ•zÑ	"Ô	"ð F aØ�Š ) ) )°!°ÀÀˆÑEÔEÐEðFð Fð Fñ Fô Fð Fð Fð Fð Fð Fð Føøøð Fð Fð Fð Fà•3�q”w‘<”<ÐÐÐÐõ 
Œ•zÑ	"Ô	"ð  aØ�Š˜1ˆÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð à•3�q”w‘<”<ÐÐÐÐõ 
Œ•zÑ	"Ô	"ð , aØ×Ò˜w¨˜lÐÑ+Ô+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,à•3�q”w‘<”<ÐÐÐÐÐÐs6   ÁA,Á,A0Á3A0Â(CÃCÃCÄD,Ä,D0Ä3D0c                 óô  — d}|                       ¦   «          |                      d¬¦  «        } |j        di t          ¤Ž |                     g d¢d¬¦  «        }|d         d         d         d	k    sJ ‚|                       ¦   «          |                      dd
dddœ¬¦  «        } |j        di t          ¤Ž |                     g d¢d¬¦  «        }|d         d         d         d|z
  k    sJ ‚|d         d         d         d|z   k     sJ ‚|                       ¦   «          |                      dddi¬¦  «        } |j        di t          ¤Ž |                     g d¢d¬¦  «        }|d         d         d         dk     sJ ‚d S )Ngê-�™—q=Útest_index_paramsr3  )ç333333ã?gìQ¸…ëñ?gš™™™™™ù?rR   r'  rQ   r   rÏ  r>  é   r  )r  zhnsw:construction_efzhnsw:M©r‰   r  r  Úipéûÿÿÿr   rç  )r0   ÚEPSra   rv  s       r   rí  rí  >  sê  € Ø
€Cà
‡L‚L�N„N€NØ×)Ò)Ð/BÐ)ÑCÔC€JØ€J„NÐÐ•WÐÐÐØ×ÒØ)Ð)Ð)Øð ñ ô €Eð �Ô˜aÔ  Ô# aÒ'Ð'Ð'Ð'ð ‡L‚L�N„N€NØ×)Ò)Ø Ø (À"ÐPQÐRÐRð *ñ ô €Jð €J„NÐÐ•WÐÐÐØ×ÒØ)Ð)Ð)Øð ñ ô €Eð �Ô˜aÔ  Ô# a¨#¡gÒ-Ð-Ð-Ð-Ø�Ô˜aÔ  Ô# a¨#¡gÒ-Ð-Ð-Ð-ð ‡L‚L�N„N€NØ×)Ò)Ø ¨L¸$Ð+?ð *ñ ô €Jð €J„NÐÐ•WÐÐÐØ×ÒØ)Ð)Ð)Øð ñ ô €Eð �Ô˜aÔ  Ô# bÒ(Ð(Ð(Ð(Ð(Ð(r   c                 óè   — |                       ¦   «          t          j        t          ¦  «        5  |                      dddi¬¦  «        } |j        di t          ¤Ž d d d ¦  «         d S # 1 swxY w Y   d S )Nrí  r  Úfoobarrð  r   )rY   rÇ   ré   r   rZ   r[   rõ   râ   s     r   Útest_invalid_index_paramsrö  e  sÂ   € Ø
‡L‚L�N„N€Nå	ŒÕ+Ñ	,Ô	,ð "ð "Ø×-Ò-Ø$°¸hÐ/Gð .ñ 
ô 
ˆ
ð 	ˆ
ŒÐ!Ð!�Ð!Ð!Ð!ð	"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð "ð "s   ®,A'Á'A+Á.A+c                 óV  — |                      d¦  «        } |                      ¦   «          |                      dddi¬¦  «        }|                     dd¬¦  «         |                      d	¦  «        }|                     d¦  «        }|j        d         dk    sJ ‚g d
¢}|                     dd|¬¦  «        }|                     ¦   «         D ]a}||v s|dk    rt          ||         ¦  «        dk    sJ ‚Œ(|dk    r)t          ||         ¦  «        t          |¦  «        k    sJ ‚ŒW||         �J ‚Œbd S )Nr1   rH   r  rñ  r  rI   rJ   rK   r4   rN   rR   rS   rL   rW   )
rX   rY   rZ   r[   r\   r  r]   r^   rB   r_   )r0   r`   ra   rb   rc   rd   re   s          r   Ú!test_persist_index_loading_paramsrø  o  se  € Ø×$Ò$Ð%8Ñ9Ô9€FØ
‡L‚L�N„N€NØ×)Ò)ØØ Ð%ð *ñ ô €Jð ‡N‚N�u¨€NÑ0Ô0Ð0à×"Ò"Ð#AÑBÔB€DØ×$Ò$Øñô €Jð Ô˜|Ô,°Ò4Ð4Ð4Ð4ØDÐDÐD€HØ	×	Ò	ØØØð 
ñ 
ô 
€Bð
 �wŠw‰yŒyð #ð #ˆØ�8ˆOˆO ¨¢ Ý�r˜#”w‘<”< 1Ò$Ð$Ð$Ð$Ð$Ø�JÒÐÝ�r˜#”w‘<”<¥3 x¡=¤=Ò0Ð0Ð0Ð0Ð0à�c”7�?�?�?�?ð#ð #r   c           	      óº  — |                       ¦   «          |                      d¦  «        }t          j                             dd¦  «                             t          j        ¦  «                             ¦   «         }|                     |d„ t          t          |¦  «        ¦  «        D ¦   «         ¬¦  «         |                     ¦   «         t          |¦  «        k    sJ ‚d S )Nr°   iÐ  é   c                 ó   — g | ]}d |› �‘ŒS )zhttp://example.com/r   ©r@   Úis     r   rA   z"test_add_large.<locals>.<listcomp>—  s!   € ÐJÐJÐJ¨1Ð& 1Ð&Ð&ÐJÐJÐJr   rà   )rY   rZ   rq   ÚrandomÚrandÚastypeÚfloat32r«   r[   rw   rB   r²   )r0   ra   Úlarge_recordss      r   Útest_add_larger  �  sÁ   € Ø
‡L‚L�N„N€Nà×)Ò)¨+Ñ6Ô6€Jõ ”I—N’N 4¨Ñ-Ô-×4Ò4µR´ZÑ@Ô@×GÒGÑIÔI€Mà‡N‚NØ ØJÐJµµc¸-Ñ6HÔ6HÑ0IÔ0IÐJÑJÔJð ñ ô ð ð
 ×ÒÑÔ¥ ]Ñ!3Ô!3Ò3Ð3Ð3Ð3Ð3Ð3r   c                 óŽ   — |                       ¦   «          |                      ¦   «         }dd l}|                     d|¦  «        sJ ‚d S )Nr   z\d+\.\d+\.\d+)rY   Úget_versionÚrerè   )r0   Úversionr  s      r   Útest_get_versionr  ž  sL   € Ø
‡L‚L�N„N€NØ× Ò Ñ"Ô"€Gð €I€I€Ià�8Š8Ð$ gÑ.Ô.Ð.Ð.Ð.Ð.Ð.r   c                 óB  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž t	          |                      ¦   «         ¦  «        dk    sJ ‚|                      d¦  «         t	          |                      ¦   «         ¦  «        dk    sJ ‚d S )NÚtest_delete_collectionrR   r   r   )rY   rZ   r[   rõ   rB   r´   r³   râ   s     r   r
  r
  ©  s    € Ø
‡L‚L�N„N€NØ×)Ò)Ð*BÑCÔC€JØ€J„NÐÐ•WÐÐÐåˆv×&Ò&Ñ(Ô(Ñ)Ô)¨QÒ.Ð.Ð.Ð.Ø
×ÒÐ5Ñ6Ô6Ð6Ýˆv×&Ò&Ñ(Ô(Ñ)Ô)¨QÒ.Ð.Ð.Ð.Ð.Ð.r   c                  ó”   — t          ¦   «         } d„ t          d¦  «        D ¦   «         } | |¦  «        }t          |¦  «        dk    sJ ‚d S )Nc                 ó   — g | ]}d ‘ŒS )zthis is a testr   rs   s     r   rA   z*test_default_embedding.<locals>.<listcomp>¶  s   € Ð0Ð0Ð0 ÐÐ0Ð0Ð0r   é@   )r   rw   rB   )rž   ÚdocsrO   s      r   Útest_default_embeddingr  ´  sT   € Ý1Ñ3Ô3ÐØ0Ð0¥e¨B¡i¤iÐ0Ñ0Ô0€DØ#Ð# DÑ)Ô)€JÝˆz‰?Œ?˜bÒ Ð Ð Ð Ð Ð r   c                 ó€  — t           j                             dd¦  «                             t           j        ¦  «                             ¦   «         }t           j                             dd¦  «                             t           j        ¦  «                             ¦   «         }d„ t          t          |¦  «        ¦  «        D ¦   «         }d„ t          t          |¦  «        ¦  «        D ¦   «         }|                      ¦   «          |  	                    d¦  «        }| 
                    ||¬¦  «         |  	                    d¦  «        }| 
                    ||¬¦  «         t          |                      ¦   «         ¦  «        dk    sJ ‚|                     ¦   «         t          |¦  «        k    sJ ‚|                     ¦   «         t          |¦  «        k    sJ ‚|                     |d	         d
¬¦  «        }|                     |d	         d
¬¦  «        }t          |d         ¦  «        d	k    sJ ‚t          |d         ¦  «        d	k    sJ ‚t          |d         d	         ¦  «        d	k    sJ ‚t          |d         d	         ¦  «        d	k    sJ ‚|d         d	         d	         |d	         k    sJ ‚|d         d	         d	         |d	         k    sJ ‚d S )Nr·   rú  c                 ó   — g | ]}d |› �‘ŒS )zhttp://example.com/1/r   rü  s     r   rA   z-test_multiple_collections.<locals>.<listcomp>¾  ó!   € ÐIÐIÐI¨AÐ' AÐ'Ð'ÐIÐIÐIr   c                 ó   — g | ]}d |› �‘ŒS )zhttp://example.com/2/r   rü  s     r   rA   z-test_multiple_collections.<locals>.<listcomp>¿  r  r   Úcoll1rà   Úcoll2rn   r   rR   r'  rL   )rq   rþ  rÿ  r   r  r«   rw   rB   rY   rZ   r[   r´   r²   r]   )	r0   Úembeddings1Úembeddings2Úids1Úids2r  r  Úresults1Úresults2s	            r   Útest_multiple_collectionsr  »  sn  € Ý”)—.’.  SÑ)Ô)×0Ò0µ´Ñ<Ô<×CÒCÑEÔE€KÝ”)—.’.  SÑ)Ô)×0Ò0µ´Ñ<Ô<×CÒCÑEÔE€KØIÐIµµs¸;Ñ7GÔ7GÑ1HÔ1HÐIÑIÔI€DØIÐIµµs¸;Ñ7GÔ7GÑ1HÔ1HÐIÑIÔI€Dà
‡L‚L�N„N€NØ×$Ò$ WÑ-Ô-€EØ	‡I‚I˜¨$€IÑ/Ô/Ð/à×$Ò$ WÑ-Ô-€EØ	‡I‚I˜¨$€IÑ/Ô/Ð/åˆv×&Ò&Ñ(Ô(Ñ)Ô)¨QÒ.Ð.Ð.Ð.Ø�;Š;‰=Œ=�C Ñ,Ô,Ò,Ð,Ð,Ð,Ø�;Š;‰=Œ=�C Ñ,Ô,Ò,Ð,Ð,Ð,à�{Š{¨K¸¬NÀaˆ{ÑHÔH€HØ�{Š{¨K¸¬NÀaˆ{ÑHÔH€Hõ ˆx˜ŒÑÔ !Ò#Ð#Ð#Ð#Ýˆx˜ŒÑÔ !Ò#Ð#Ð#Ð#Ýˆx˜Œ˜qÔ!Ñ"Ô" QÒ&Ð&Ð&Ð&Ýˆx˜Œ˜qÔ!Ñ"Ô" QÒ&Ð&Ð&Ð&à�EŒ?˜1Ô˜aÔ  D¨¤GÒ+Ð+Ð+Ð+Ø�EŒ?˜1Ô˜aÔ  D¨¤GÒ+Ð+Ð+Ð+Ð+Ð+r   c                 ó�  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž t          d         d         gg d¢gdgddigdœ} |j        di |¤Ž |                     |d	         d
g d¢¬¦  «        }t          |d         d         ¦  «        d
k    sJ ‚|d         d         d         |d         d         k    sJ ‚|d         d         d         |d         d         k    sJ ‚|d         d         d         d         dk    sJ ‚t          |d	         d         d         |d	         d         ¦  «        sJ ‚d S )NÚtest_update_queryrL   r   ©r   çš™™™™™É?ç333333Ó?zupdated documentÚfooÚbar)rL   rO   rM   rP   rO   rR   ró   rþ   rM   rP   r   )rY   rZ   r[   rõ   rh  r]   rB   rE   )r0   ra   Úupdated_recordsÚresultss       r   r  r  Ù  s�  € Ø
‡L‚L�N„N€NØ×)Ò)Ð*=Ñ>Ô>€JØ€J„NÐÐ•WÐÐÐõ ˜”˜qÔ!Ð"Ø&��Ð'Ø(Ð)Ø˜e�nÐ%ð	ð €Oð €JÔÐ(Ð(˜Ð(Ð(Ð(ð ×ÒØ(¨Ô6ØØ8Ð8Ð8ð ñ ô €Gõ
 ˆw�uŒ~˜aÔ Ñ!Ô! QÒ&Ð&Ð&Ð&Ø�5Œ>˜!Ô˜QÔ ?°5Ô#9¸!Ô#<Ò<Ð<Ð<Ð<Ø�;Ô Ô" 1Ô%¨¸Ô)EÀaÔ)HÒHÐHÐHÐHØ�;Ô Ô" 1Ô% eÔ,°Ò5Ð5Ð5Ð5ÝØ�Ô˜aÔ  Ô# _°\Ô%BÀ1Ô%Eñô ð ð ð ð ð r   c                 ó²  — |                       ¦   «          |                      d¦  «        } |j        d
i t          ¤Ž g d¢}|                     g d¢gd|¬¦  «        }|                     ¦   «         D ]g}||v s|dk    r"t          ||         d         ¦  «        dk    sJ ‚Œ.|d	k    r)t          ||         ¦  «        t          |¦  «        k    sJ ‚Œ]||         �J ‚Œhd S )Nr°   rN   rÙ   r  rþ   rL   r   rn   rW   r   )rY   rZ   r[   rõ   r]   r^   rB   r_   )r0   ra   rc   r%  re   s        r   Ú<test_get_nearest_neighbors_where_n_results_more_than_elementr'  ö  s  € Ø
‡L‚L�N„N€NØ×)Ò)¨+Ñ6Ô6€JØ€J„NÐÐ•WÐÐÐàDÐDÐD€HØ×ÒØ)˜/˜/Ð*ØØð ñ ô €Gð
 �|Š|‰~Œ~ð (ð (ˆØ�(ˆ?ˆ?˜c Ušl˜lÝ�w˜s”| A”Ñ'Ô'¨1Ò,Ð,Ð,Ð,Ð,Ø�JÒÐÝ�w˜s”|Ñ$Ô$­¨H©¬Ò5Ð5Ð5Ð5Ð5à˜3”<Ð'Ð'Ð'Ð'ð(ð (r   c                 ó\  — |                       ¦   «          |                      d¦  «        } |j        d	i t          ¤Ž t	          j        t          ¦  «        5 }|                     g d¢gdg d¢¬¦  «         d d d ¦  «         n# 1 swxY w Y   dt          |j	        ¦  «        v sJ ‚|j
        t          k    sJ ‚t	          j        t          ¦  «        5 }|                     g d¢gdg d¢¬¦  «         d d d ¦  «         n# 1 swxY w Y   dt          |j	        ¦  «        v sJ ‚|j
        t          k    sJ ‚d S )
Nr°   rÙ   éÿÿÿÿrN   rþ   z<Number of requested results -1, cannot be negative, or zero.rj  r»   r   )rY   rZ   r[   rõ   rÇ   ré   Ú	TypeErrorr]   r—   rK  Útyper$  )r0   ra   Úexcs      r   Útest_invalid_n_results_paramr-  
  sÚ  € Ø
‡L‚L�N„N€NØ×)Ò)¨+Ñ6Ô6€JØ€J„NÐÐ•WÐÐÐÝ	Œ•yÑ	!Ô	!ð 
 SØ×ÒØ-˜o˜oÐ.ØØIÐIÐIð 	ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð JÍSØŒ	ñNô Nð ð ð ð ð Œ8•yÒ Ð Ð Ð å	Œ•zÑ	"Ô	"ð 
 cØ×ÒØ-˜o˜oÐ.ØØIÐIÐIð 	ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð •C˜œ	‘N”NÐ"Ð"Ð"Ð"ØŒ8•zÒ!Ð!Ð!Ð!Ð!Ð!s$   ÁA?Á?BÂBÃC7Ã7C;Ã>C;)gš™™™™™@gìQ¸…ë	@gÍÌÌÌÌÌ@©rI   r  r  rn  )rÛ  rÜ  zthis document is third)ç      @r/  rÚ   )rÜ   gö(\�Âõ@gÍÌÌÌÌÌ@r  Ú
one_of_onez this document is even more firstzthis document is new and fourthc                 óD  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž |                     ¦   «         dk    sJ ‚ |j        di t          ¤Ž |                     ¦   «         dk    sJ ‚|                     g d¢t          d         d         ¬¦  «        }t          |d         d         t          d         d         ¦  «        sJ ‚|d	         d         t          d	         d         k    sJ ‚|d
         d         t          d
         d         k    sJ ‚| 	                    |d         dg d¢¬¦  «        }t          |d         d         d         t          d         d         ¦  «        sJ ‚|d	         d         d         t          d	         d         k    sJ ‚|d
         d         d         t          d
         d         k    sJ ‚| 
                    t          d         d         ¬¦  «         |                     t          d         d         g d¢gddig¬¦  «         |                     ¦   «         dk    sJ ‚|                     g d¢dg¬¦  «        }t          |d         d         g d¢¦  «        sJ ‚|d	         d         ddik    sJ ‚|d
         d         �J ‚d S )NrH   ro   rÏ  r_  rL   r   )rV   rL   rO   rP   rM   rR   rþ   rn   r  )rÚ   ç®Gáz®ï?g®Gáz®@rn  za new string valuer  r  r   )rY   rZ   r[   Úinitial_recordsr²   ÚupsertÚnew_recordsrÓ   rE   r]   r  )r0   ra   Ú
get_resultÚquery_results       r   Útest_upsertr8  @  s  € Ø
‡L‚L�N„N€NØ×)Ò)¨&Ñ1Ô1€Jà€J„NÐ%Ð%•_Ð%Ð%Ð%Ø×ÒÑÔ Ò"Ð"Ð"Ð"à€JÔÐ$Ð$�Ð$Ð$Ð$Ø×ÒÑÔ Ò"Ð"Ð"Ð"à—’Ø8Ð8Ð8½kÈ%Ô>PÐQRÔ>Sð  ñ ô €Jõ Ø�<Ô  Ô#¥[°Ô%>¸qÔ%Añô ð ð ð ð �kÔ" 1Ô%­°[Ô)AÀ!Ô)DÒDÐDÐDÐDØ�kÔ" 1Ô%­°[Ô)AÀ!Ô)DÒDÐDÐDÐDà×#Ò#Ø# LÔ1ØØ8Ð8Ð8ð $ñ ô €Lõ
 Ø�\Ô" 1Ô% aÔ(­+°lÔ*CÀAÔ*Fñô ð ð ð ð ˜Ô$ QÔ'¨Ô*­k¸+Ô.FÀqÔ.IÒIÐIÐIÐIØ˜Ô$ QÔ'¨Ô*­k¸+Ô.FÀqÔ.IÒIÐIÐIÐIà×Ò�/¨%Ô0°Ô3ÐÑ4Ô4Ð4Ø×ÒÝ˜EÔ" 1Ô%Ø%Ð%Ð%Ð&Ø"Ð$8Ð9Ð:ð ñ ô ð ð
 ×ÒÑÔ Ò"Ð"Ð"Ð"à—’Ø8Ð8Ð8¸u¸gð  ñ ô €Jõ ˜z¨,Ô7¸Ô:Ð<MÐ<MÐ<MÑNÔNÐNÐNÐNØ�kÔ" 1Ô%¨.Ð:NÐ)OÒOÐOÐOÐOØ�kÔ" 1Ô%Ð-Ð-Ð-Ð-Ð-r   c                 ó  — |                       ¦   «          |                      d¦  «        }|                      d¦  «         t          j        t
          d¬¦  «        5   |j        di t          ¤Ž d d d ¦  «         d S # 1 swxY w Y   d S rå   )rY   rZ   r³   rÇ   ré   r   r4  r3  râ   s     r   Ú5test_collection_upsert_with_invalid_collection_throwsr:  n  sÉ   € Ø
‡L‚L�N„N€NØ×)Ò)¨&Ñ1Ô1€JØ
×Ò˜VÑ$Ô$Ð$å	Œ•}Ð,KÐ	LÑ	LÔ	Lð -ð -Øˆ
ÔÐ,Ð,�OÐ,Ð,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -rë   c                 ó„  — |                       ¦   «          |                      d¦  «        }g d¢g d¢gddgdœ}t          j        t          ¦  «        5 } |j        di |¤Ž d d d ¦  «         n# 1 swxY w Y   dt          |j        ¦  «        v sJ ‚t          j        t          ¦  «        5 }|                     g d¢gd	¬
¦  «         d d d ¦  «         n# 1 swxY w Y   dt          |j        ¦  «        v sJ ‚dgdgdggdgdgdgggddgdœ}t          j        t          ¦  «        5 } |j	        di |¤Ž d d d ¦  «         n# 1 swxY w Y   dt          |j        ¦  «        v sJ ‚g d¢gg d¢ggddgdœ}t          j        t          ¦  «        5 } |j
        di |¤Ž d d d ¦  «         n# 1 swxY w Y   dt          |j        ¦  «        v sJ ‚d S )NÚtest_invalid_embeddings)Ú0r=  r=  )z1.2z2.24ú3.2rI   r  rà   Ú	embedding)z1.1z2.3r>  rR   r'  r   rÞ   rß   rÜ   rÙ   rÝ   r   )rY   rZ   rÇ   ré   r$  r[   r—   rK  r]   rh  r4  )r0   ra   Úinvalid_recordsrµ  s       r   r<  r<  z  s!  € Ø
‡L‚L�N„N€NØ×)Ò)Ð*CÑDÔD€Jð '��Ð(>Ð(>Ð(>Ð?Ø�uˆ~ðð €Oõ 
Œ•zÑ	"Ô	"ð * aØˆ
ŒÐ)Ð)˜Ð)Ð)Ð)ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *à�#˜aœg™,œ,Ð&Ð&Ð&Ð&õ 
Œ•zÑ	"Ô	"ð 
 aØ×ÒØ3Ð3Ð3Ð4Øð 	ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð
 �#˜aœg™,œ,Ð&Ð&Ð&Ð&ð ˜˜a˜S 1 #�¨#¨°°¸¸Ð(>Ð?Ø�uˆ~ðð €Oõ 
Œ•zÑ	"Ô	"ð - aØˆ
ÔÐ,Ð,˜OÐ,Ð,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -à�#˜aœg™,œ,Ð&Ð&Ð&Ð&ð (˜˜Ð(Ð+;Ð+;Ð+;Ð*<Ð=Ø�uˆ~ðð €Oõ 
Œ•zÑ	"Ô	"ð - aØˆ
ÔÐ,Ð,˜OÐ,Ð,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -à�#˜aœg™,œ,Ð&Ð&Ð&Ð&Ð&Ð&sH   ÁA*Á*A.Á1A.Â&CÃCÃCÄD8Ä8D<Ä?D<ÆFÆF!Æ$F!c                 ó2  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž t	          j        t          ¦  «        5 } |j        di t          ¤Ž d d d ¦  «         n# 1 swxY w Y   dt          |j
        ¦  «        v sJ ‚d S )NÚ$test_dimensionality_update_exceptionr²  r   )rY   rZ   r[   rð   rÇ   ré   rí   rh  r³  r—   rK  r´  s      r   Ú$test_dimensionality_exception_updaterC  ¥  óÖ   € Ø
‡L‚L�N„N€NØ×)Ò)Ð*PÑQÔQ€JØ€J„NÐ%Ð%•_Ð%Ð%Ð%å	Œ•yÑ	!Ô	!ð 8 QØˆ
ÔÐ7Ð7Õ6Ð7Ð7Ð7ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8à�#˜aœg™,œ,Ð&Ð&Ð&Ð&Ð&Ð&r·  c                 ó2  — |                       ¦   «          |                      d¦  «        } |j        di t          ¤Ž t	          j        t          ¦  «        5 } |j        di t          ¤Ž d d d ¦  «         n# 1 swxY w Y   dt          |j
        ¦  «        v sJ ‚d S )NÚ$test_dimensionality_upsert_exceptionr²  r   )rY   rZ   r[   rð   rÇ   ré   rí   r4  r³  r—   rK  r´  s      r   Ú$test_dimensionality_exception_upsertrG  ²  rD  r·  Úwin32)ÚrerunsÚ	conditionc                 ó”   — t           j                             d¦  «        rt          j        d¦  «         |                      ¦   «          d S )NÚCHROMA_INTEGRATION_TEST_ONLYú"Skipping test for integration test)r*   ÚenvironrÓ   rÇ   rÈ   r¹   )Ú
client_ssls    r   Útest_ssl_self_signedrP  ½  sB   € å	„z‡~‚~Ð4Ñ5Ô5ð :ÝŒÐ8Ñ9Ô9Ð9Ø×ÒÑÔÐÐÐr   c                 ó  — t           j                             d¦  «        rt          j        d¦  «         |                      ¦   «          | j        j        j        }t          j	        t          ¦  «        5 }t          j        d|¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          |j        ¦  «        |j        |j        j        ¦  «        }|                      ¦   «          dd                     |¦  «        v sJ ‚d S )NrL  rM  T)ÚsslÚportÚCERTIFICATE_VERIFY_FAILEDÚ )r*   rN  rÓ   rÇ   rÈ   r¹   Ú_serverÚ	_settingsÚchroma_server_http_portré   r$  r'   Ú
HttpClientÚ	tracebackÚformat_exceptionr+  rK  Ú__traceback__r)   Újoin)rO  Ú_portrµ  Ústack_traces       r   Ú'test_ssl_self_signed_without_ssl_verifyr`  Å  s!  € å	„z‡~‚~Ð4Ñ5Ô5ð :ÝŒÐ8Ñ9Ô9Ð9Ø×ÒÑÔÐØÔÔ(Ô@€EÝ	Œ•zÑ	"Ô	"ð 2 aÝÔ ¨5Ð1Ñ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2åÔ,ÝˆQŒW‰Œ�q”w ¤Ô 5ñô €Kð ×!Ò!Ñ#Ô#Ð#Ø&¨"¯'ª'°+Ñ*>Ô*>Ð>Ð>Ð>Ð>Ð>Ð>s   Á2BÂBÂBc                 óÂ  ‡	— |                       ¦   «          |                      d¦  «        }d}d}t          j                             dd¦  «                             t          j        ¦  «                             ¦   «         }d„ t          |¦  «        D ¦   «         }| 	                    ||¬¦  «         d„ t          d|d¦  «        D ¦   «         Š	t          j                             |¦  «                             t          j        ¦  «                             ¦   «         }| 
                    |‰	|g ¬	¦  «        }d
„ |d         D ¦   «         }t          ˆ	fd„|D ¦   «         ¦  «        sJ ‚d S )NÚtest_query_id_filtering_smallrÍ   rú  c                 ó   — g | ]}|› ‘ŒS r   r   rü  s     r   rA   z9test_query_id_filtering_small_dataset.<locals>.<listcomp>Û  ó   € Ð
.Ð
.Ð
.�aˆaˆ6Ð
.Ð
.Ð
.r   rà   c                 ó   — g | ]}|› ‘ŒS r   r   rü  s     r   rA   z9test_query_id_filtering_small_dataset.<locals>.<listcomp>â  ó   € Ð;Ð;Ð;˜A�A�Ð;Ð;Ð;r   r   r·   ©rÿ   rL   rU   rV   c                 ó   — g | ]	}|D ]}|‘ŒŒ
S r   r   ©r@   ÚsublistÚitems      r   rA   z9test_query_id_filtering_small_dataset.<locals>.<listcomp>ë  ó%   € ÐOÐOÐO ÀwÐOÐO¸t˜ÐOÐOÐOÐOr   rL   c              3   ó    •K  — | ]}|‰v V — Œ	d S r   r   ©r@   rM  Ú	query_idss     €r   ú	<genexpr>z8test_query_id_filtering_small_dataset.<locals>.<genexpr>ì  ó'   øè è € Ð:Ð: 2ˆr�YˆÐ:Ð:Ð:Ð:Ð:Ð:r   ©rY   rZ   rq   rþ  rÿ  r   r  r«   rw   r[   r]   rC   )
r0   ra   Únum_vectorsÚdimÚsmall_recordsrL   Úquery_embeddingr%  Úall_returned_idsro  s
            @r   Ú%test_query_id_filtering_small_datasetrx  Ô  s\  ø€ Ø
‡L‚L�N„N€NØ×)Ò)Ð*IÑJÔJ€Jà€KØ
€CÝ”I—N’N 3¨Ñ,Ô,×3Ò3µB´JÑ?Ô?×FÒFÑHÔH€MØ
.Ð
.�5 Ñ-Ô-Ð
.Ñ
.Ô
.€Cà‡N‚NØ Øð ñ ô ð ð
 <Ð;¥ q¨+°rÑ!:Ô!:Ð;Ñ;Ô;€IÝ”i—n’n SÑ)Ô)×0Ò0µ´Ñ<Ô<×CÒCÑEÔE€OØ×ÒØ(ØØØð	 ñ ô €Gð PÐO¨G°E¬NÐOÑOÔOÐÝÐ:Ð:Ð:Ð:Ð)9Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:r   c                 ó|  ‡‡— |                       ¦   «          |                      d¦  «        }d}dŠt          j                             |‰¦  «                             t          j        ¦  «                             ¦   «         }d„ t          |¦  «        D ¦   «         }| 	                    ||¬¦  «         d„ t          d|d¦  «        D ¦   «         Št          j                             ‰¦  «                             t          j        ¦  «                             ¦   «         }| 
                    |‰|g ¬	¦  «        }d
„ |d         D ¦   «         }t          ˆfd„|D ¦   «         ¦  «        sJ ‚ˆfd„t          d¦  «        D ¦   «         }| 
                    |‰dg ¬	¦  «        }	|	d         D ]}
t          ˆfd„|
D ¦   «         ¦  «        sJ ‚Œ d S )NÚtest_query_id_filtering_mediuméè  rú  c                 ó   — g | ]}|› ‘ŒS r   r   rü  s     r   rA   z:test_query_id_filtering_medium_dataset.<locals>.<listcomp>ö  rd  r   rà   c                 ó   — g | ]}|› ‘ŒS r   r   rü  s     r   rA   z:test_query_id_filtering_medium_dataset.<locals>.<listcomp>ý  rf  r   r   r·   rg  c                 ó   — g | ]	}|D ]}|‘ŒŒ
S r   r   ri  s      r   rA   z:test_query_id_filtering_medium_dataset.<locals>.<listcomp>  rl  r   rL   c              3   ó    •K  — | ]}|‰v V — Œ	d S r   r   rn  s     €r   rp  z9test_query_id_filtering_medium_dataset.<locals>.<genexpr>  rq  r   c                 ó¬   •— g | ]P}t           j                             ‰¦  «                             t           j        ¦  «                             ¦   «         ‘ŒQS r   )rq   rþ  rÿ  r   r  r«   )r@   rt   rt  s     €r   rA   z:test_query_id_filtering_medium_dataset.<locals>.<listcomp>
  sP   ø€ ð ð ð Ø<=�Œ	�Š�sÑÔ×"Ò"¥2¤:Ñ.Ô.×5Ò5Ñ7Ô7ðð ð r   ro   c              3   ó    •K  — | ]}|‰v V — Œ	d S r   r   rn  s     €r   rp  z9test_query_id_filtering_medium_dataset.<locals>.<genexpr>  s'   øè è € Ð8Ð8 r�2˜�?Ð8Ð8Ð8Ð8Ð8Ð8r   rr  )r0   ra   rs  Úmedium_recordsrL   rv  r%  rw  Úmulti_query_embeddingsÚmulti_resultsÚ
result_setrt  ro  s              @@r   Ú&test_query_id_filtering_medium_datasetr†  ï  sú  øø€ Ø
‡L‚L�N„N€NØ×)Ò)Ð*JÑKÔK€Jà€KØ
€CÝ”Y—^’^ K°Ñ5Ô5×<Ò<½R¼ZÑHÔH×OÒOÑQÔQ€NØ
.Ð
.�5 Ñ-Ô-Ð
.Ñ
.Ô
.€Cà‡N‚NØ!Øð ñ ô ð ð
 <Ð;¥ q¨+°rÑ!:Ô!:Ð;Ñ;Ô;€Iå”i—n’n SÑ)Ô)×0Ò0µ´Ñ<Ô<×CÒCÑEÔE€OØ×ÒØ(ØØØð	 ñ ô €Gð PÐO¨G°E¬NÐOÑOÔOÐÝÐ:Ð:Ð:Ð:Ð)9Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:ðð ð ð ÝAFÀqÁÄðñ ô Ðð ×$Ò$Ø/ØØØð	 %ñ ô €Mð $ EÔ*ð 9ð 9ˆ
ÝÐ8Ð8Ð8Ð8¨ZÐ8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8ð9ð 9r   c                 ó”  ‡— |                       ¦   «          |                      d¦  «        }d}d}t          j                             ||¦  «                             t          j        ¦  «                             ¦   «         }d„ t          |¦  «        D ¦   «         }d„ t          |¦  «        D ¦   «         }| 	                    |||¬¦  «         d„ t          dd	¦  «        D ¦   «         }| 
                    |¬
¦  «         d„ t          d	d¦  «        D ¦   «         }|dz   }	d„ t          ||	¦  «        D ¦   «         }
t          j                             t          |¦  «        t          |
¦  «        z   |¦  «                             t          j        ¦  «                             ¦   «         }d„ t          t          |¦  «        ¦  «        D ¦   «         }|                     |||
z   |¬¦  «         d„ t          dd¦  «        D ¦   «         d„ t          dd¦  «        D ¦   «         z   d„ t          |dz   |dz   ¦  «        D ¦   «         z   Šdg}t          j                             |¦  «                             t          j        ¦  «                             ¦   «         }|                     |‰|	|¬¦  «        }d„ |d         D ¦   «         }t          ˆfd„|D ¦   «         ¦  «        sJ ‚t          |d         ¦  «        D ]>\  }}t          |¦  «        D ])\  }}||v s||
v r|d         |         |         d         sJ ‚Œ*Œ?|d         }|                     ||d|¬¦  «        }|d         d         d         d         sJ ‚|d         }t!          j        t$          ¦  «        5 }|                     ||d|¬¦  «         d d d ¦  «         n# 1 swxY w Y   dt'          |j        ¦  «        v sJ ‚d S ) NÚtest_query_id_filtering_e2erú  rÍ   c                 ó   — g | ]}|› ‘ŒS r   r   rü  s     r   rA   z/test_query_id_filtering_e2e.<locals>.<listcomp>  rd  r   c                 ó   — g | ]}d |i‘ŒS )Úindexr   rü  s     r   rA   z/test_query_id_filtering_e2e.<locals>.<listcomp>   s   € Ð:Ð:Ð: !�'˜1�Ð:Ð:Ð:r   rp  c                 ó   — g | ]}|› ‘ŒS r   r   rü  s     r   rA   z/test_query_id_filtering_e2e.<locals>.<listcomp>(  s   € Ð3Ð3Ð3 ˜�VÐ3Ð3Ð3r   r·   é   r  c                 ó   — g | ]}|› ‘ŒS r   r   rü  s     r   rA   z/test_query_id_filtering_e2e.<locals>.<listcomp>,  s   € Ð<Ð<Ð<¨ ˜fÐ<Ð<Ð<r   é2   rï  c                 ó   — g | ]}|› ‘ŒS r   r   rü  s     r   rA   z/test_query_id_filtering_e2e.<locals>.<listcomp>.  s   € ÐMÐMÐM A˜A˜ÐMÐMÐMr   c                 ó   — g | ]}|d dœ‘ŒS )T)r‹  Úupsertedr   rü  s     r   rA   z/test_query_id_filtering_e2e.<locals>.<listcomp>5  s-   € ð ð ð Ø+,�! Ð&Ð&ðð ð r   c                 ó   — g | ]}|› ‘ŒS r   r   rü  s     r   rA   z/test_query_id_filtering_e2e.<locals>.<listcomp>@  s   € Ð&Ð&Ð&�AˆAˆÐ&Ð&Ð&r   r  c                 ó   — g | ]}|› ‘ŒS r   r   rü  s     r   rA   z/test_query_id_filtering_e2e.<locals>.<listcomp>A  s   € Ð
)Ð
)Ð
)�aˆaˆ6Ð
)Ð
)Ð
)r   é#   é-   c                 ó   — g | ]}|› ‘ŒS r   r   rü  s     r   rA   z/test_query_id_filtering_e2e.<locals>.<listcomp>B  s'   € ð 
ð 
ð 
ØˆqˆFð
ð 
ð 
r   é   rP   rg  c                 ó   — g | ]	}|D ]}|‘ŒŒ
S r   r   ri  s      r   rA   z/test_query_id_filtering_e2e.<locals>.<listcomp>P  rl  r   rL   c              3   ó    •K  — | ]}|‰v V — Œ	d S r   r   )r@   rM  Úvalid_query_idss     €r   rp  z.test_query_id_filtering_e2e.<locals>.<genexpr>Q  s(   øè è € Ð@Ð@¨ˆr�_Ð$Ð@Ð@Ð@Ð@Ð@Ð@r   r’  r   rR   zError finding id)rY   rZ   rq   rþ  rÿ  r   r  r«   rw   r[   r  rB   r4  r]   rC   Ú	enumeraterÇ   ré   rí   r—   rK  )r0   ra   rt  rs  rO   rL   rP   Úids_to_deleteÚids_to_upsert_existingÚnew_num_vectorsÚids_to_upsert_newÚupsert_embeddingsÚupsert_metadatasrc   rv  r%  rw  Úresult_indexÚid_listÚ
item_indexÚitem_idÚupserted_idÚ
deleted_idrV  r›  s                           @r   rˆ  rˆ    sy  ø€ Ø
‡L‚L�N„N€NØ×)Ò)Ð*GÑHÔH€Jà
€CØ€KÝ”—’ ¨SÑ1Ô1×8Ò8½¼ÑDÔD×KÒKÑMÔM€JØ
.Ð
.�5 Ñ-Ô-Ð
.Ñ
.Ô
.€CØ:Ð:¥u¨[Ñ'9Ô'9Ð:Ñ:Ô:€Ià‡N‚NØØØð ñ ô ð ð 4Ð3¥U¨2¨r¡]¤]Ð3Ñ3Ô3€MØ×Ò˜-ÐÑ(Ô(Ð(ð =Ð<­e°B¸©m¬mÐ<Ñ<Ô<ÐØ! BÑ&€OØMÐM­¨{¸OÑ)LÔ)LÐMÑMÔMÐõ 	Œ	�Š•sÐ1Ñ2Ô2µSÐ9JÑ5KÔ5KÑKÈSÑQÔQß	Š•”
Ñ	Ô	ß	Š‰Œð ð
ð Ý05µcÐ:KÑ6LÔ6LÑ0MÔ0Mðñ ô Ðð ×ÒØ$Ø"Ð%6Ñ6Ø"ð ñ ô ð ð 	'Ð&�˜q "™œÐ&Ñ&Ô&Ø
)Ð
)�5  R™=œ=Ð
)Ñ
)Ô
)ñ	*ð
ð 
Ý! +°¡/°;ÀÑ3CÑDÔDð
ñ 
ô 
ñ	
ð ð ˆ}€HÝ”i—n’n SÑ)Ô)×0Ò0µ´Ñ<Ô<×CÒCÑEÔE€OØ×ÒØ(ØØ!Øð	 ñ ô €Gð PÐO¨G°E¬NÐOÑOÔOÐÝÐ@Ð@Ð@Ð@Ð/?Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@å!*¨7°5¬>Ñ!:Ô!:ð Rð RÑˆ�gÝ#,¨WÑ#5Ô#5ð 	Rð 	RÑˆJ˜ØÐ0Ð0Ð0°GÐ?PÐ4PÐ4Pà˜{Ô+¨LÔ9¸*ÔEÀjÔQÐQÐQÐQøð	Rð
 )¨Ô+€Kà×ÒØ(ØØØð	 ñ ô €Gð �;Ô Ô" 1Ô% jÔ1Ð1Ð1Ð1à˜qÔ!€Jå	Œ•yÑ	!Ô	!ð 
 UØ×ÒØ,ØØØð	 	ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð ¥ U¤[Ñ!1Ô!1Ð1Ð1Ð1Ð1Ð1Ð1s   Í?N%Î%N)Î,N)c                  óN  — ddl m}   | g d¢g d¢¬¦  «          | g g ¬¦  «         t          j        t          d¬¦  «        5   | dd	d
g¬¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5   | ddgd¬¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5   | g d¢d	d
g¬¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5   | g d¢g d¢¬¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5   | g d¢g d¢¬¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5   | g d¢g d¢¬¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5   | g d¢g d¢¬¦  «         ddd¦  «         n# 1 swxY w Y    | g d¢g d¢¬¦  «          | g d¢g d¢¬¦  «          | g d¢g d¢¬¦  «         t          j        t          d¬¦  «        5   | ddgd	dg¬¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5   | ddgd	d
g¬¦  «         ddd¦  «         n# 1 swxY w Y    | dgdg¬¦  «          | ddgddg¬¦  «         t          j        t          d¬¦  «        5   | g d ¢g d¢¬¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5   | g d!¢g d"¢¬¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5   | g d#¢g d$¢¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )%z.Test SparseVector validation in __post_init__.r   ©ÚSparseVector©r   rn   r  ©r   ç      à?çÍÌÌÌÌÌì?©ÚindicesÚvaluesz*Expected SparseVector indices to be a listrç   Ú
not_a_listr   r   Nz)Expected SparseVector values to be a listrR   ú,indices and values must have the same length©r   rR   rn   z%SparseVector indices must be integers)r   Únot_intrn   r  ú)SparseVector indices must be non-negative©r   r)  rn   ú#SparseVector values must be numbers)r   Ú
not_numberr!  )ç        ç      ð?r�  rm   )rR   ç      @ro   )rÍ   r{  i'  é*   ç…ëQ¸	@TFú2indices must be sorted in strictly ascending order)r   rn   rR   )r   rR   rR   rn   )r   r   r!  çš™™™™™Ù?)r  ro   rR   )r®  r!  r   )Úchromadb.base_typesr«  rÇ   ré   r$  rª  s    r   Útest_validate_sparse_vectorrÃ  o  s
  € à0Ð0Ð0Ð0Ð0Ð0ð €L˜˜˜¨?¨?¨?Ð;Ñ;Ô;Ð;ð €L˜ BÐ'Ñ'Ô'Ð'õ 
Œ•zÐ)UÐ	VÑ	VÔ	Vð >ð >Øˆ˜\°3¸°*Ð=Ñ=Ô=Ð=ð>ð >ð >ñ >ô >ð >ð >ð >ð >ð >ð >øøøð >ð >ð >ð >õ 
Œ•zÐ)TÐ	UÑ	UÔ	Uð :ð :Øˆ˜a ˜V¨LÐ9Ñ9Ô9Ð9ð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :õ 
ŒÝÐHð
ñ 
ô 
ð ;ð ;ð 	ˆ˜Y˜Y˜Y°°S¨zÐ:Ñ:Ô:Ð:ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;õ 
Œ•zÐ)PÐ	QÑ	QÔ	Qð Hð HØˆÐ.Ð.Ð.°°°ÐGÑGÔGÐGðHð Hð Hñ Hô Hð Hð Hð Hð Hð Hð Høøøð Hð Hð Hð Hõ 
Œ•zÐ)TÐ	UÑ	UÔ	Uð Að AØˆ˜Z˜Z˜Z°°°Ð@Ñ@Ô@Ð@ðAð Að Añ Aô Að Að Að Að Að Að Aøøøð Að Að Að Aõ 
Œ•zÐ)NÐ	OÑ	OÔ	Oð Ið IØˆ˜Y˜Y˜YÐ/GÐ/GÐ/GÐHÑHÔHÐHðIð Ið Iñ Iô Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Iõ 
Œ•zÐ)PÐ	QÑ	QÔ	Qð Fð FØˆ˜_˜_˜_°_°_°_ÐEÑEÔEÐEðFð Fð Fñ Fô Fð Fð Fð Fð Fð Fð Føøøð Fð Fð Fð Fð €L˜˜˜¨9¨9¨9Ð5Ñ5Ô5Ð5ð €L˜˜˜¨;¨;¨;Ð7Ñ7Ô7Ð7ð €LÐ+Ð+Ð+°O°O°OÐDÑDÔDÐDõ 
Œ•zÐ)NÐ	OÑ	OÔ	Oð 9ð 9Øˆ˜a ˜V¨S°$¨KÐ8Ñ8Ô8Ð8ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9õ 
Œ•zÐ)PÐ	QÑ	QÔ	Qð ;ð ;Øˆ˜a ˜Y°°S¨zÐ:Ñ:Ô:Ð:ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð €L˜"˜ t fÐ-Ñ-Ô-Ð-ð €L˜!˜Q˜¨¨u¨Ð6Ñ6Ô6Ð6õ 
ŒÝÐNð
ñ 
ô 
ð @ð @ð 	ˆ˜Y˜Y˜Y¨¨¨Ð?Ñ?Ô?Ð?ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @õ 
ŒÝÐNð
ñ 
ô 
ð Hð Hð 	ˆ˜\˜\˜\Ð2FÐ2FÐ2FÐGÑGÔGÐGðHð Hð Hñ Hô Hð Hð Hð Hð Hð Hð Høøøð Hð Hð Hð Hõ 
ŒÝÐNð
ñ 
ô 
ð @ð @ð 	ˆ˜Y˜Y˜Y¨¨¨Ð?Ñ?Ô?Ð?ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @ð @ð @sØ   Á AÁA Á#A ÂBÂB"Â%B"ÃC"Ã"C&Ã)C&ÄD&Ä&D*Ä-D*ÅE*Å*E.Å1E.ÆF.Æ.F2Æ5F2ÇG2Ç2G6Ç9G6ÉI)É)I-É0I-ÊJ-Ê-J1Ê4J1Ë3LÌLÌLÌ7MÍMÍMÍ;NÎNÎ!Nc                  ó¢  — ddl m}  ddlm}  |g d¢g d¢¬¦  «        } |g d¢g d¢¬¦  «        }d	|d
dœ}d|ddœ} | |¦  «          | |¦  «         d |g g ¬¦  «        dœ} | |¦  «         t	          j        t          d¬¦  «        5  d |ddgdg¬¦  «        dœ}ddd¦  «         n# 1 swxY w Y   ddddgidœ}t	          j        t          d¬¦  «        5   | |¦  «         ddd¦  «         n# 1 swxY w Y   t	          j        t          d¬¦  «        5  d |g d¢g d¢¬¦  «        dœ}	ddd¦  «         n# 1 swxY w Y   t	          j        t          d¬¦  «        5  d  |ddgdd!g¬¦  «        dœ}
ddd¦  «         n# 1 swxY w Y   d" |ddgddg¬¦  «         |g d#¢g d$¢¬¦  «        d%d&œ} | |¦  «         d'g d(¢g d)¢dœd*œ}t	          j        t          d¬¦  «        5   | |¦  «         ddd¦  «         n# 1 swxY w Y    |t          t          d+¦  «        ¦  «        d,„ t          d+¦  «        D ¦   «         ¬¦  «        }d-|d.œ} | |¦  «         dS )/z<Test that sparse vectors are properly validated in metadata.r   )Úvalidate_metadatarª  r¬  r­  r°  ©rR   ro   rÏ  )r   rÁ  rî  z
document 1r®  )r¾  Úsparse_embeddingÚscorez
document 2çš™™™™™é?zempty sparse)r¾  Ú
sparse_vecr´  rç   ÚinvalidrR   r   )r¾  rÇ  Nzmissing indicesr²  r   zRExpected metadata value to be a str, int, float, bool, SparseVector, list, or Noner·  znegative indexr¸  r  r¹  znon-numeric valueÚnot_a_numberzmultiple sparse vectors)rn   ro   rÏ  )r!  rÁ  r®  r¾  )r¾  Úsparse_1Úsparse_2Úregular_fieldÚsome_configrµ  ©r¼  r�  r/  )r‹   Úsparse_vectorr{  c                 ó2   — g | ]}t          |¦  «        d z  ‘ŒS )gü©ñÒMbP?)rt  rü  s     r   rA   z=test_sparse_vector_in_metadata_validation.<locals>.<listcomp>  s#   € Ð6Ð6Ð6 Q•�a‘”˜5Ñ Ð6Ð6Ð6r   zlarge sparse)r¾  Úlarge_sparse_vec)	Úchromadb.api.typesrÅ  rÂ  r«  rÇ   ré   r$  Úlistrw   )rÅ  r«  Úsparse_vector_1Úsparse_vector_2Ú
metadata_1Ú
metadata_2Úmetadata_emptyÚinvalid_metadataÚinvalid_metadata_2Úinvalid_metadata_3Úinvalid_metadata_4Úmetadata_multipleÚmetadata_nestedÚlarge_sparseÚmetadata_larges                  r   Ú)test_sparse_vector_in_metadata_validationrä  Á  s×  € à4Ð4Ð4Ð4Ð4Ð4Ø0Ð0Ð0Ð0Ð0Ð0ð #�l¨9¨9¨9¸_¸_¸_ÐMÑMÔM€OØ"�l¨9¨9¨9¸_¸_¸_ÐMÑMÔM€Oð Ø+Øðð €Jð Ø+Øðð €Jð
 Ð�jÑ!Ô!Ð!ØÐ�jÑ!Ô!Ð!ð Ø"�l¨2°bÐ9Ñ9Ô9ðð €Nð Ð�nÑ%Ô%Ð%õ 
ŒÝÐHð
ñ 
ô 
ð 
ð 
ð Ø , °a¸°VÀSÀEÐ JÑ JÔ Jð
ð 
Ðð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð "Ø%¨¨S zÐ2ðð Ðõ 
ŒÝØbð
ñ 
ô 
ð .ð .ð 	ÐÐ,Ñ-Ô-Ð-ð	.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .õ 
Œ•zÐ)TÐ	UÑ	UÔ	Uð 
ð 
à$Ø , Ø"˜
˜
¨?¨?¨?ð!ñ !ô !ð
ð 
Ðð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
õ 
Œ•zÐ)NÐ	OÑ	OÔ	Oð 
ð 
à'Ø , Ø˜A˜¨¨^Ð'<ð!ñ !ô !ð
ð 
Ðð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð *Ø �L¨!¨Q¨¸¸c¸
ÐCÑCÔCØ �L¨¨¨¸?¸?¸?ÐKÑKÔKØð	ð Ðð ÐÐ'Ñ(Ô(Ð(ð  Ø%. Y Y¸/¸/¸/ÐJÐJðð €Oõ 
ŒÝØbð
ñ 
ô 
ð +ð +ð 	Ð˜/Ñ*Ô*Ð*ð	+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð  �<Ý•U˜4‘[”[Ñ!Ô!Ø6Ð6­%°©+¬+Ð6Ñ6Ô6ðñ ô €Lð -À,ÐOÐO€NØÐ�nÑ%Ô%Ð%Ð%Ð%sZ   ÂB'Â'B+Â.B+ÃC.Ã.C2Ã5C2ÄD5Ä5D9Ä<D9ÅE<Å<F ÆF ÇG6Ç6G:Ç=G:c                  ó\  — ddl m} m} ddlm} dt
          t          dg d¢dg d¢id	œ} | |¦  «        }t          |d
         |¦  «        sJ ‚|d
         j        g d¢k    sJ ‚|d
         j	        g d¢k    sJ ‚ ||¦  «          |g d¢g d¢¬¦  «        }d|d	œ} | |¦  «        }|d
         |u sJ ‚ ||¦  «         dt
          t          dg d¢dg d¢id	œ}t          j        t          d¬¦  «        5   | |¦  «         ddd¦  «         n# 1 swxY w Y   dt
          t          dg d¢dg d¢id	œ}	t          j        t          d¬¦  «        5   | |	¦  «         ddd¦  «         n# 1 swxY w Y   dt
          t          dg d¢dg d¢id	œ}
t          j        t          d¬¦  «        5   | |
¦  «         ddd¦  «         n# 1 swxY w Y   dt
          t          dddgdg d¢id	œ}t          j        t          d¬¦  «        5   | |¦  «         ddd¦  «         n# 1 swxY w Y   dddidœ} | |¦  «        }t          |d          t          ¦  «        sJ ‚|d          d         dk    sJ ‚d!t
          t          dg dg id	œ} | |¦  «        }t          |d
         |¦  «        sJ ‚|d
         j        g k    sJ ‚|d
         j	        g k    sJ ‚t
          t          ddd"gdd#d$git
          t          ddd%gdd&d'gid(d)œ} | |¦  «        }t          |d*         |¦  «        sJ ‚t          |d+         |¦  «        sJ ‚|d         d(k    sJ ‚dS ),zNTest that dict-format sparse vectors are normalized to SparseVector instances.r   )Únormalize_metadatarÅ  rª  ztest documentr±  r¬  r²  rÑ  ©r¾  Úsparserè  rÆ  )r®  ç      ø?r½  r°  Úunsorted)r  r   rn   )r/  r¼  r�  rÀ  rç   NÚ
duplicates)r   rn   rn   Únegative)r)  r   rn   zindices must be non-negativeÚmismatchrn   r´  Úregularre   rK  )r¾  r‹   r‹   ÚemptyrR   r¼  r�  ro   r/  ç      @r¾  )Úsparse1Úsparse2rî  rñ  rò  )rÕ  ræ  rÅ  rÂ  r«  r
   r   rº   r±  r²  rÇ   ré   r$  r˜   )ræ  rÅ  r«  Úmetadata_dict_formatÚ
normalizedÚsparse_instanceÚmetadata_instance_formatÚnormalized2Úmetadata_unsortedÚmetadata_duplicatesÚmetadata_negativeÚmetadata_mismatchÚmetadata_regular_dictÚnormalized3rÛ  Únormalized4rà  Únormalized5s                     r   Ú,test_sparse_vector_dict_format_normalizationr   !  s®  € àHÐHÐHÐHÐHÐHÐHÐHØ0Ð0Ð0Ð0Ð0Ð0ð  åÕ.Ø�y�y�yØ�o�o�oð
ðð Ðð $Ð#Ð$8Ñ9Ô9€Jå�j Ô*¨LÑ9Ô9Ð9Ð9Ð9Ø�hÔÔ'¨9¨9¨9Ò4Ð4Ð4Ð4Ø�hÔÔ&¨/¨/¨/Ò9Ð9Ð9Ð9ð Ð�jÑ!Ô!Ð!ð #�l¨9¨9¨9¸_¸_¸_ÐMÑMÔM€OàØ!ð ð  Ðð %Ð$Ð%=Ñ>Ô>€Kà�xÔ  OÐ3Ð3Ð3Ð3ØÐ�kÑ"Ô"Ð"ð åÕ.Ø�y�y�yØ�o�o�oð
ðð Ðõ 
ŒÝÐNð
ñ 
ô 
ð .ð .ð 	ÐÐ,Ñ-Ô-Ð-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð åÕ.Ø�y�y�yØ�o�o�oð
ðð Ðõ 
ŒÝÐNð
ñ 
ô 
ð 0ð 0ð 	ÐÐ.Ñ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð åÕ.Ø�z�z�zØ�o�o�oð
ðð Ðõ 
Œ•zÐ)GÐ	HÑ	HÔ	Hð .ð .ØÐÐ,Ñ-Ô-Ð-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð
 åÕ.Ø˜˜1�vØ�o�o�oð
ðð Ðõ 
ŒÝÐHð
ñ 
ô 
ð .ð .ð 	ÐÐ,Ñ-Ô-Ð-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð Ø˜'Ð"ðð Ðð %Ð$Ð%:Ñ;Ô;€KÝ�k (Ô+­TÑ2Ô2Ð2Ð2Ð2Ø�xÔ  Ô'¨7Ò2Ð2Ð2Ð2ð ÝÕ5°yÀ"ÀhÐPRÐSðð €Nð %Ð$ ^Ñ4Ô4€KÝ�k (Ô+¨\Ñ:Ô:Ð:Ð:Ð:Ø�xÔ Ô(¨BÒ.Ð.Ð.Ð.Ø�xÔ Ô'¨2Ò-Ð-Ð-Ð-õ
 Õ.Ø˜˜1�vØ�s˜C�jð
õ Õ.Ø˜˜1�vØ�s˜C�jð
ð
 ðð Ðð %Ð$Ð%6Ñ7Ô7€KÝ�k )Ô,¨lÑ;Ô;Ð;Ð;Ð;Ý�k )Ô,¨lÑ;Ô;Ð;Ð;Ð;Ø�yÔ! RÒ'Ð'Ð'Ð'Ð'Ð'sH   Ã,DÄDÄDÅEÅEÅ"EÆF2Æ2F6Æ9F6Ç1H	È	HÈHc                  ó  — ddl m} m}  | dddgi¦  «          | dg d¢i¦  «          | dd	d
gi¦  «          | dg d¢i¦  «          | ddgdddœ¦  «         t          j        t
          d¬¦  «        5   | dg i¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t
          d¬¦  «        5   | dddgi¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t
          d¬¦  «        5   | dddgi¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t
          d¬¦  «        5   | dddgi¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t
          d¬¦  «        5   | ddggi¦  «         ddd¦  «         n# 1 swxY w Y    |dddgi¦  «          |dg d¢i¦  «          |ddi¦  «         t          j        t
          d¬¦  «        5   |dg i¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z6Test that list metadata values are properly validated.r   ©rÅ  Úvalidate_update_metadataÚtagsÚactionÚcomedyÚscoresrm   Úratingsr  rÜ   Úflags)TFTr:   r;   r  rH   )r  r²   r‰   z	non-emptyrç   Nz	same typerR   Úvalsré  TÚyeszstr, int, float, or boolr‡  )rÕ  rÅ  r  rÇ   ré   r$  r  s     r   Útest_list_metadata_validationr     s!  € àNÐNÐNÐNÐNÐNÐNÐNð Ð�v ¨(Ð3Ð4Ñ5Ô5Ð5ØÐ�x   Ð+Ñ,Ô,Ð,ØÐ�y 3¨ *Ð-Ñ.Ô.Ð.ØÐ�wÐ 3Ð 3Ð 3Ð4Ñ5Ô5Ð5ð Ð  S˜z°A¸vÐFÐFÑGÔGÐGõ 
Œ•z¨Ð	5Ñ	5Ô	5ð (ð (ØÐ˜6 2˜,Ñ'Ô'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (õ 
Œ•z¨Ð	5Ñ	5Ô	5ð .ð .ØÐ˜6 C¨ 8Ð,Ñ-Ô-Ð-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .õ 
Œ•z¨Ð	5Ñ	5Ô	5ð .ð .ØÐ˜6 A s 8Ð,Ñ-Ô-Ð-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .õ 
Œ•z¨Ð	5Ñ	5Ô	5ð 3ð 3ØÐ˜6 D¨% =Ð1Ñ2Ô2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3õ 
Œ•zÐ)CÐ	DÑ	DÔ	Dð 2ð 2ØÐ˜6 X J <Ð0Ñ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð Ð˜f x°Ð&:Ð;Ñ<Ô<Ð<ØÐ˜h¨	¨	¨	Ð2Ñ3Ô3Ð3ð Ð˜f d˜^Ñ,Ô,Ð,õ 
Œ•z¨Ð	5Ñ	5Ô	5ð /ð /Ø Ð  &¨" Ñ.Ô.Ð.ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /ð /ð /sl   Á1BÂBÂBÂ1CÃCÃCÃ3DÄDÄDÄ5EÅEÅEÅ7FÆFÆFÇ$G?Ç?HÈHc                  óü  — ddl m}   | dddii¦  «          | dddii¦  «          | ddd	ii¦  «          | d
ddii¦  «          | dddii¦  «          | dddii¦  «         t          j        t          ¦  «        5   | ddddgii¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5   | ddddiii¦  «         ddd¦  «         n# 1 swxY w Y    | ddddiidddiigi¦  «         dS )zMTest that $contains/$not_contains are accepted in where clauses for metadata.r   ©Úvalidate_wherer  r¯  r  r  r¾  r  r  r	  Tr¿  Údraftr:   r;   Nr‡  r­  ÚyearrŸ  éä  )rÕ  r  rÇ   ré   r$  r  s    r   Útest_where_contains_validationr  Ë  s  € à1Ð1Ð1Ð1Ð1Ð1ð €N�F˜[¨(Ð3Ð4Ñ5Ô5Ð5Ø€N�H˜{¨BÐ/Ð0Ñ1Ô1Ð1Ø€N�I ¨SÐ1Ð2Ñ3Ô3Ð3Ø€N�G˜k¨4Ð0Ð1Ñ2Ô2Ð2ð €N�F˜_¨gÐ6Ð7Ñ8Ô8Ð8Ø€N�H˜°Ð2Ð3Ñ4Ô4Ð4õ 
Œ•zÑ	"Ô	"ð <ð <Øˆ˜ ¨s°C¨jÐ 9Ð:Ñ;Ô;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <õ 
Œ•zÑ	"Ô	"ð Bð BØˆ˜ ¨x¸Ð.>Ð ?Ð@ÑAÔAÐAðBð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð Bð €NØ	�6˜K¨Ð2Ð3°f¸uÀd¸mÐ5LÐMÐNñô ð ð ð s$   Á:BÂBÂBÂ<CÃCÃ!Cc                 óV   — |                       ¦   «         }|j        dk    o
|j        dk    S )zvReturn True when the client is backed by the Python local segment API
    (which does not yet support array metadata).r   r   )Úget_settingsr   r!   )r0   Úsettingss     r   Ú_is_python_local_segmentr  ç  s;   € ð ×"Ò"Ñ$Ô$€HàÔ Ð$EÒEð 	EØÔ0ØDòEðr   c           	      ó  — t          | ¦  «        rt          j        d¦  «         |                      ¦   «          |                      d¦  «        }|                     g d¢g d¢g d¢g d¢gddgd	d
œdgdd
œddgdd
œg¬¦  «         |                     dg¬¦  «        }t          |d         ¦  «        dk    sJ ‚t          |d         d         d         ¦  «        ddgk    sJ ‚|d         d         d         d	k    sJ ‚|                     dddii¬¦  «        }t          d„ |d         D ¦   «         ¦  «        }|d	dgk    sJ ‚|                     dddii¬¦  «        }t          |d         ¦  «        dk    sJ ‚|d         d         d         dk    sJ ‚|                     dddii¬¦  «        }t          |d         ¦  «        dk    sJ ‚|d         d         d         dk    sJ ‚|                     dddii¬¦  «        }t          |d         ¦  «        dk    sJ ‚dS )zNEnd-to-end test: write array metadata, read it back, and query with $contains.ú8Python local segment does not support array metadata yetÚtest_array_metadata_e2er.  r  r  r  r  r  r  )r  r  Údramaiå  Úthrilleriæ  r  rI   r  rP   rR   r   r  r  r¯  r{  c                 ó   — g | ]
}|d          ‘ŒS )r  r   )r@   Úms     r   rA   z+test_array_metadata_e2e.<locals>.<listcomp>
	  s   € Ð8Ð8Ð8 �!�F”)Ð8Ð8Ð8r   r¿  ÚromanceN)	r  rÇ   rÈ   rY   rZ   r[   rÓ   rB   Úsorted)r0   ra   rv  rL   s       r   r  r  ò  s…  € å Ñ'Ô'ð PÝŒÐNÑOÔOÐOØ
‡L‚L�N„N€NØ×)Ò)Ð*CÑDÔD€JØ‡N‚NØ!Ð!Ð!Ø�I�I˜y˜y˜y¨)¨)¨)Ð4à Ð)°4Ð8Ð8Ø�Y¨Ð-Ð-Ø 
Ð+°TÐ:Ð:ð
ð ñ ô ð ð �NŠN ˜wˆNÑ'Ô'€EÝˆu�[Ô!Ñ"Ô" aÒ'Ð'Ð'Ð'Ý�%˜Ô$ QÔ'¨Ô/Ñ0Ô0°X¸xÐ4HÒHÐHÐHÐHØ�Ô˜aÔ  Ô(¨DÒ0Ð0Ð0Ð0ð �NŠN &¨;¸Ð*AÐ!BˆNÑCÔC€EÝ
Ð8Ð8 U¨;Ô%7Ð8Ñ8Ô8Ñ
9Ô
9€CØ�4˜�,ÒÐÐÐð �NŠN &¨;¸Ð*@Ð!AˆNÑBÔB€EÝˆu�[Ô!Ñ"Ô" aÒ'Ð'Ð'Ð'Ø�Ô˜aÔ  Ô(¨DÒ0Ð0Ð0Ð0ð �NŠN &¨?¸HÐ*EÐ!FˆNÑGÔG€EÝˆu�[Ô!Ñ"Ô" aÒ'Ð'Ð'Ð'Ø�Ô˜aÔ  Ô(¨DÒ0Ð0Ð0Ð0ð �NŠN &¨;¸	Ð*BÐ!CˆNÑDÔD€EÝˆu�[Ô!Ñ"Ô" aÒ'Ð'Ð'Ð'Ð'Ð'r   c                 ó¨  — t          | ¦  «        rt          j        d¦  «         |                      ¦   «          |                      d¦  «        }|                     ddgg d¢g d¢gdg d¢idd	d
gig¬¦  «         |                     dddii¬¦  «        }t          |d         ¦  «        dk    sJ ‚|d         d         dk    sJ ‚|                     ddd
ii¬¦  «        }t          |d         ¦  «        dk    sJ ‚|d         d         dk    sJ ‚|                     dddii¬¦  «        }t          |d         ¦  «        dk    sJ ‚|d         d         dk    sJ ‚dS )z(End-to-end: $contains on integer arrays.r  Útest_int_array_e2erI   r  r  r  r  )r·   rï  r�  é(   r�  r  r¯  rï  r{  rL   rR   r   r¿  r·   N)r  rÇ   rÈ   rY   rZ   r[   rÓ   rB   ru  s      r   Ú$test_array_metadata_int_contains_e2er$  	  s•  € å Ñ'Ô'ð PÝŒÐNÑOÔOÐOØ
‡L‚L�N„N€NØ×)Ò)Ð*>Ñ?Ô?€JØ‡N‚NØ�EˆNØ�I�I˜y˜y˜yÐ)à�|�|�|Ð$Ø˜˜B�xÐ ð
ð ñ ô ð ð �NŠN (¨[¸"Ð,=Ð!>ˆNÑ?Ô?€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð!Ø�Œ<˜Œ?˜eÒ#Ð#Ð#Ð#à�NŠN (¨[¸"Ð,=Ð!>ˆNÑ?Ô?€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð!Ø�Œ<˜Œ?˜eÒ#Ð#Ð#Ð#à�NŠN (¨_¸bÐ,AÐ!BˆNÑCÔC€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð!Ø�Œ<˜Œ?˜eÒ#Ð#Ð#Ð#Ð#Ð#r   c                 óº  — t          | ¦  «        rt          j        d¦  «         |                      ¦   «          |                      d¦  «        }|                     dgg d¢gdddgig¬¦  «         |                     dd	dii¬
¦  «        }t          |d         ¦  «        dk    sJ ‚|                     dgddgig¬¦  «         |                     dd	dii¬
¦  «        }t          |d         ¦  «        dk    sJ ‚|                     dd	dii¬
¦  «        }t          |d         ¦  «        dk    sJ ‚|                     dg¬¦  «        }|d         d         d         dgk    sJ ‚dS )z8End-to-end: updating array metadata replaces old values.r  Útest_array_update_e2erI   r  r  Úold_aÚold_br  r¯  r{  rL   rR   Únew_xr…  r   r  rP   N)	r  rÇ   rÈ   rY   rZ   r[   rÓ   rB   rh  ru  s      r   Útest_array_metadata_update_e2er*  8	  s¢  € å Ñ'Ô'ð PÝŒÐNÑOÔOÐOØ
‡L‚L�N„N€NØ×)Ò)Ð*AÑBÔB€JØ‡N‚NØˆGØ�I�I�;Ø˜W gÐ.Ð/Ð0ð ñ ô ð ð �NŠN &¨;¸Ð*@Ð!AˆNÑBÔB€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð!ð ×ÒØˆGØ˜W˜IÐ&Ð'ð ñ ô ð ð �NŠN &¨;¸Ð*@Ð!AˆNÑBÔB€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð!ð �NŠN &¨;¸Ð*@Ð!AˆNÑBÔB€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð!ð �NŠN ˜wˆNÑ'Ô'€EØ�Ô˜aÔ  Ô(¨W¨IÒ5Ð5Ð5Ð5Ð5Ð5r   c                 óî  — t          | ¦  «        rt          j        d¦  «         |                      ¦   «          |                      d¦  «        }|                     dgg d¢gddddgd	œg¬
¦  «         |                     dg¬¦  «        }|d         d         }|d         dk    sJ ‚|d         dk    sJ ‚t          |d         ¦  «        ddgk    sJ ‚|                     dddii¬¦  «        }t          |d         ¦  «        dk    sJ ‚|                     dddii¬¦  «        }t          |d         ¦  «        dk    sJ ‚|                     ddddiidddiigi¬¦  «        }t          |d         ¦  «        dk    sJ ‚dS )z8End-to-end: records with both scalar and array metadata.r  Útest_mixed_e2erI   r  ÚAlicer¾  ÚadminÚuser)r‰   rÈ  r  r  r  rP   r   r‰   rÈ  r  r¨  r{  rL   rR   r¯  r­  r¢  r#  N)	r  rÇ   rÈ   rY   rZ   r[   rÓ   r   rB   )r0   ra   rv  Úmds       r   Ú)test_array_metadata_mixed_with_scalar_e2er1  [	  sÑ  € å Ñ'Ô'ð PÝŒÐNÑOÔOÐOØ
‡L‚L�N„N€NØ×)Ò)Ð*:Ñ;Ô;€JØ‡N‚NØˆGØ�I�I�;Ø#¨b¸7ÀFÐ:KÐLÐLÐMð ñ ô ð ð �NŠN ˜wˆNÑ'Ô'€EØ	ˆ{Ô	˜AÔ	€BØˆfŒ:˜Ò Ð Ð Ð ØˆgŒ;˜"ÒÐÐÐÝ�"�V”*ÑÔ '¨6Ð!2Ò2Ð2Ð2Ð2ð �NŠN '¨E°2¨;Ð!7ˆNÑ8Ô8€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð!ð �NŠN &¨;¸Ð*@Ð!AˆNÑBÔB€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð!ð �NŠNàØ˜6 2˜,Ð'Ø˜+ wÐ/Ð0ðð
ð ñ ô €Eõ ˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð!Ð!Ð!r   c                 óz  — t          | ¦  «        rt          j        d¦  «         |                      ¦   «          |                      d¦  «        }|                     dgg d¢gddig¬¦  «         |                     dgddd	gig¬
¦  «         |                     dddii¬¦  «        }t          |d         ¦  «        dk    s
J d¦   «         ‚|                     dddii¬¦  «        }t          |d         ¦  «        dk    sJ ‚|                     dg¬¦  «        }t          |d         d         d         ¦  «        dd	gk    sJ ‚dS )zREnd-to-end: changing a metadata field from scalar to array removes the old scalar.r  Útest_scalar_to_arrayrI   r  r  Ú
old_scalarr  Únew_aÚnew_br…  r¨  r{  rL   r   z+Stale scalar value should have been removedr¯  rR   r  rP   N)
r  rÇ   rÈ   rY   rZ   r[   rh  rÓ   rB   r   ru  s      r   Ú-test_metadata_type_change_scalar_to_array_e2er7  �	  sz  € å Ñ'Ô'ð PÝŒÐNÑOÔOÐOØ
‡L‚L�N„N€NØ×)Ò)Ð*@ÑAÔA€Jð ‡N‚NØˆGØ�I�I�;Ø˜LÐ)Ð*ð ñ ô ð ð
 ×ÒØˆGØ˜W gÐ.Ð/Ð0ð ñ ô ð ð �NŠN &¨5°,Ð*?Ð!@ˆNÑAÔA€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð#PÑ!Ô!Ð!ð �NŠN &¨;¸Ð*@Ð!AˆNÑBÔB€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð!ð �NŠN ˜wˆNÑ'Ô'€EÝ�%˜Ô$ QÔ'¨Ô/Ñ0Ô0°W¸gÐ4FÒFÐFÐFÐFÐFÐFr   c                 ó\  — t          | ¦  «        rt          j        d¦  «         |                      ¦   «          |                      d¦  «        }|                     dgg d¢gdddgig¬¦  «         |                     dgdd	ig¬
¦  «         |                     dddii¬¦  «        }t          |d         ¦  «        dk    s
J d¦   «         ‚|                     ddd	ii¬¦  «        }t          |d         ¦  «        dk    sJ ‚|                     dg¬¦  «        }|d         d         d         d	k    sJ ‚dS )zVEnd-to-end: changing a metadata field from array to scalar removes the old array rows.r  Útest_array_to_scalarrI   r  r  r'  r(  r  Ú
new_scalarr…  r¯  r{  rL   r   z)Stale array rows should have been removedr¨  rR   r  rP   N©	r  rÇ   rÈ   rY   rZ   r[   rh  rÓ   rB   ru  s      r   Ú-test_metadata_type_change_array_to_scalar_e2er<  ¡	  sm  € å Ñ'Ô'ð PÝŒÐNÑOÔOÐOØ
‡L‚L�N„N€NØ×)Ò)Ð*@ÑAÔA€Jð ‡N‚NØˆGØ�I�I�;Ø˜W gÐ.Ð/Ð0ð ñ ô ð ð
 ×ÒØˆGØ˜LÐ)Ð*ð ñ ô ð ð �NŠN &¨;¸Ð*@Ð!AˆNÑBÔB€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð#NÑ!Ô!Ð!ð �NŠN &¨5°,Ð*?Ð!@ˆNÑAÔA€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð!ð �NŠN ˜wˆNÑ'Ô'€EØ�Ô˜aÔ  Ô(¨LÒ8Ð8Ð8Ð8Ð8Ð8r   c                 ó‚  — t          | ¦  «        rt          j        d¦  «         |                      ¦   «          |                      d¦  «        }|                     dgg d¢gddig¬¦  «         |                     dgg d¢gddd	gig¬¦  «         |                     dd
dii¬¦  «        }t          |d         ¦  «        dk    s
J d¦   «         ‚|                     dddii¬¦  «        }t          |d         ¦  «        dk    sJ ‚|                     dg¬¦  «        }t          |d         d         d         ¦  «        dd	gk    sJ ‚dS )zFEnd-to-end: upsert (not update) correctly cleans up when type changes.r  Útest_upsert_type_changerI   r  r  Ú
scalar_valr  Úarr_aÚarr_br¨  r{  rL   r   z*Stale scalar from upsert should be removedr¯  rR   r  rP   N)	r  rÇ   rÈ   rY   rZ   r4  rÓ   rB   r   ru  s      r   Ú(test_metadata_type_change_via_upsert_e2erB  Á	  sƒ  € å Ñ'Ô'ð PÝŒÐNÑOÔOÐOØ
‡L‚L�N„N€NØ×)Ò)Ð*CÑDÔD€Jð ×ÒØˆGØ�I�I�;Ø˜LÐ)Ð*ð ñ ô ð ð
 ×ÒØˆGØ�I�I�;Ø˜W gÐ.Ð/Ð0ð ñ ô ð ð �NŠN &¨5°,Ð*?Ð!@ˆNÑAÔA€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð#OÑ!Ô!Ð!ð �NŠN &¨;¸Ð*@Ð!AˆNÑBÔB€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð!à�NŠN ˜wˆNÑ'Ô'€EÝ�%˜Ô$ QÔ'¨Ô/Ñ0Ô0°W¸gÐ4FÒFÐFÐFÐFÐFÐFr   c                 ó
  — t          | ¦  «        rt          j        d¦  «         |                      ¦   «          |                      d¦  «        }|                     dgg d¢gddig¬¦  «         |                     dgddgig¬	¦  «         |                     dgdd
ig¬	¦  «         |                     dddii¬¦  «        }t          |d         ¦  «        dk    s
J d¦   «         ‚|                     dddii¬¦  «        }t          |d         ¦  «        dk    s
J d¦   «         ‚|                     ddd
ii¬¦  «        }t          |d         ¦  «        dk    sJ ‚|                     dg¬¦  «        }|d         d         d         d
k    sJ ‚dS )z;End-to-end: scalar -> array -> scalar leaves no stale data.r  Útest_rapid_fliprI   r  r  Úoriginalr  Úmid_ar…  Úfinal_scalarr¨  r{  rL   r   zOriginal scalar should be goner¯  z!Intermediate array should be gonerR   r  rP   Nr;  ru  s      r   Ú!test_metadata_rapid_type_flip_e2erH  à	  sÚ  € å Ñ'Ô'ð PÝŒÐNÑOÔOÐOØ
‡L‚L�N„N€NØ×)Ò)Ð*;Ñ<Ô<€Jà‡N‚NØˆGØ�I�I�;Ø˜JÐ'Ð(ð ñ ô ð ð
 ×ÒØˆGØ˜W˜IÐ&Ð'ð ñ ô ð ð ×ÒØˆGØ˜NÐ+Ð,ð ñ ô ð ð �NŠN &¨5°*Ð*=Ð!>ˆNÑ?Ô?€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð#CÑ!Ô!Ð!ð �NŠN &¨;¸Ð*@Ð!AˆNÑBÔB€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð#FÑ!Ô!Ð!ð �NŠN &¨5°.Ð*AÐ!BˆNÑCÔC€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð!à�NŠN ˜wˆNÑ'Ô'€EØ�Ô˜aÔ  Ô(¨NÒ:Ð:Ð:Ð:Ð:Ð:r   c                 óæ  — t          | ¦  «        rt          j        d¦  «         |                      ¦   «          |                      d¦  «        }|                     dgg d¢gdddgdœg¬	¦  «         |                     dgd
dgddœg¬¦  «         |                     dddii¬¦  «        }t          |d         ¦  «        dk    s
J d¦   «         ‚|                     ddd
ii¬¦  «        }t          |d         ¦  «        dk    sJ ‚|                     dddii¬¦  «        }t          |d         ¦  «        dk    s
J d¦   «         ‚|                     dddii¬¦  «        }t          |d         ¦  «        dk    sJ ‚dS )zNEnd-to-end: one update changes 'color' scalar->array AND 'tags' array->scalar.r  Útest_mixed_type_changerI   r  Úredr'  r(  )Úcolorr  r  ÚblueÚgreenr:  r…  rL  r¨  r{  rL   r   zOld color scalar should be goner¯  rR   r  zOld tags array should be goneNr;  ru  s      r   Ú1test_metadata_mixed_simultaneous_type_changes_e2erO  
  s¿  € å Ñ'Ô'ð PÝŒÐNÑOÔOÐOØ
‡L‚L�N„N€NØ×)Ò)Ð*BÑCÔC€Jà‡N‚NØˆGØ�I�I�;Ø"¨W°gÐ,>Ð?Ð?Ð@ð ñ ô ð ð
 ×ÒØˆGØ$ gÐ.¸ÐEÐEÐFð ñ ô ð ð �NŠN '¨E°5¨>Ð!:ˆNÑ;Ô;€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð#DÑ!Ô!Ð!ð �NŠN '¨K¸Ð+@Ð!AˆNÑBÔB€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð!ð �NŠN &¨;¸Ð*@Ð!AˆNÑBÔB€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð#BÑ!Ô!Ð!ð �NŠN &¨5°,Ð*?Ð!@ˆNÑAÔA€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð!Ð!Ð!r   c                 ó  — t          | ¦  «        rt          j        d¦  «         |                      ¦   «          |                      d¦  «        }|                     dgg d¢gdddœg¬¦  «         |                     dgd	d
dgig¬¦  «         |                     dgd	dig¬¦  «         |                     dg¬¦  «        }t          |d         ¦  «        dk    sJ ‚d	|d         d         vsJ d|d         d         › �¦   «         ‚|d         d         d         dk    sJ ‚|                     d	ddii¬¦  «        }t          |d         ¦  «        dk    sJ ‚|                     d	dd
ii¬¦  «        }t          |d         ¦  «        dk    sJ ‚dS )zBEnd-to-end: add scalar, update to array, then delete key entirely.r  Útest_delete_after_type_changerI   r  r?  r  )r  Úkeepr  r  r@  rA  r…  Nr  rL   rR   rP   r   z tags key should be deleted, got rR  r¨  r{  r¯  r;  ru  s      r   Ú*test_metadata_delete_after_type_change_e2erS  '
  sæ  € å Ñ'Ô'ð PÝŒÐNÑOÔOÐOØ
‡L‚L�N„N€NØ×)Ò)Ð*IÑJÔJ€Jà‡N‚NØˆGØ�I�I�;Ø(°%Ð8Ð8Ð9ð ñ ô ð ð
 ×ÒØˆGØ˜W gÐ.Ð/Ð0ð ñ ô ð ð ×ÒØˆGØ˜D�>Ð"ð ñ ô ð ð �NŠN ˜wˆNÑ'Ô'€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð!à�e˜KÔ(¨Ô+Ð+Ð+Ð+ØA¨%°Ô*<¸QÔ*?ÐAÐAñ 	,Ô+Ð+à�Ô˜aÔ  Ô(¨EÒ1Ð1Ð1Ð1ð �NŠN &¨5°,Ð*?Ð!@ˆNÑAÔA€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð!à�NŠN &¨;¸Ð*@Ð!AˆNÑBÔB€EÝˆu�UŒ|ÑÔ Ò!Ð!Ð!Ð!Ð!Ð!r   c                  óv  — ddl m} m} ddlm}  | g d¢ddt
          t          dddgd	d
dgidœd |ddgddg¬¦  «        dœddigg d¢¬¦  «        }t          |d         d         d         |¦  «        sJ ‚t          |d         d         d         |¦  «        sJ ‚d|d         d         vsJ ‚ ||¦  «         |d         d         d         j        ddgk    sJ ‚|d         d         d         j	        d
dgk    sJ ‚|d         d         d         j        ddgk    sJ ‚|d         d         d         j	        ddgk    sJ ‚dS )zITest that dict-format sparse vectors work in normalize_insert_record_set.r   )Únormalize_insert_record_setÚvalidate_insert_record_setrª  ©rÄ  Údoc2Údoc3NÚtest1r±  rn   r²  r¼  r�  rç  r7  rR   ro   ré  r½  r°  r¾  Útest3)zdoc onezdoc twoz	doc three)rL   rO   rP   rM   rP   rè  )
rÕ  rU  rV  rÂ  r«  r
   r   rº   r±  r²  )rU  rV  r«  Ú
record_sets       r   Ú,test_sparse_vector_dict_format_in_record_setr]  L
  sð  € ðð ð ð ð ð ð ð ð 1Ð0Ð0Ð0Ð0Ð0ð -Ð,Ø$Ð$Ð$Øð  åÕ6Ø  1˜vØ˜s C˜jððð ð  Ø&˜,°°1¨v¸sÀC¸jÐIÑIÔIðð ð �WÐð
ð 6Ð5Ð5ð%ñ ô €Jõ, �j Ô-¨aÔ0°Ô:¸LÑIÔIÐIÐIÐIÝ�j Ô-¨aÔ0°Ô:¸LÑIÔIÐIÐIÐIØ˜: kÔ2°1Ô5Ð5Ð5Ð5Ð5ð Ð˜zÑ*Ô*Ð*ð �kÔ" 1Ô% hÔ/Ô7¸A¸q¸6ÒAÐAÐAÐAØ�kÔ" 1Ô% hÔ/Ô6¸3À¸*ÒDÐDÐDÐDØ�kÔ" 1Ô% hÔ/Ô7¸A¸q¸6ÒAÐAÐAÐAØ�kÔ" 1Ô% hÔ/Ô6¸3À¸*ÒDÐDÐDÐDÐDÐDr   c            
      óì  — ddl m}   | g d¢gg d¢gddgddgd	d
gggddiddiddiggg d¢gg d¢gdœ¦  «        }|                     ¦   «         }t          |¦  «        dk    sJ ‚t          |d         ¦  «        dk    sJ ‚|d         d         d         dk    sJ ‚|d         d         d         dk    sJ ‚|d         d         d         ddgk    sJ ‚|d         d         d         ddik    sJ ‚|d         d         d         dk    sJ ‚|d         D ] }d|v sJ ‚d|v sJ ‚d|v sJ ‚d|v sJ ‚d|v sJ ‚Œ! | ddgg d¢gdd gg d!¢gd"dgdgdgggd#did#d$igd"gd%d&gg d¢gddgddggdœ¦  «        }|                     ¦   «         }t          |¦  «        d$k    sJ ‚t          |d         ¦  «        d$k    sJ ‚t          |d         ¦  «        dk    sJ ‚|d         d         ddd#did%d'œk    sJ ‚|d         d         dd d#d$id&d'œk    sJ ‚|d         d         d(d)dgdd*œk    sJ ‚|d         d         d+d,dgd-d*œk    sJ ‚|d         d$         d.d/dgd0d*œk    sJ ‚ | g g g g g g dœ¦  «        }|                     ¦   «         }|g k    sJ ‚ | g d¢gg d1¢gd"ddid"ddiggg d2¢gg d3¢gdœ¦  «        }|                     ¦   «         }t          |¦  «        dk    sJ ‚t          |d         ¦  «        dk    sJ ‚|d         d         dddidd4œk    sJ ‚|d         d         d5d6d7œk    sJ ‚|d         d$         d8ddid0d4œk    sJ ‚ | dd5ggd"d"d"d"g gdœ¦  «        }|                     ¦   «         }t          |¦  «        dk    sJ ‚t          |d         ¦  «        d$k    sJ ‚|d         d         ddik    sJ ‚|d         d         dd5ik    sJ ‚ | d9ggd:ggd9d;iggd<d=gggd>ggd?ggd@œ¦  «        }|dA         d9ggk    sJ ‚|                     dB¦  «        d:ggk    sJ ‚dC|v sJ ‚t          |¦  «        dDk    sJ ‚|                     ¦   «         }t          |d         ¦  «        dk    sJ ‚|d         d         d         d9k    sJ ‚t          dE¦  «         d"S )FzTTest the SearchResult.rows() method for converting column-major to row-major format.r   )ÚSearchResultr.  rW  r¼  r�  r/  rð  ç      @g      @re   r:   r;   rB  )r¯  rÉ  çffffffæ?)ÚdocumentrÈ  r  )rL   rM   rO   rP   r  ÚselectrR   ro   rM  rI   rb  rÄ  r?  r  rÈ  r¯  Úa1Úa2)Úb1Úb2Úb3Údoc_a1Údoc_a2)Údoc_b1Údoc_b2Údoc_b3NÚxrn   r®  rÁ  )rM  rb  r  rÈ  rf  rk  )rM  rb  r?  rÈ  rg  rl  rÉ  rh  rm  ra  )NrX  N)r¯  Nra  )rb  r  rÈ  )rM  r  rÈ  r  rX  )rM  rb  r  rH   ztest docTr   r   r2  rC   )rL   rM   rP   rO   r  rc  rL   rM   rP   é   z%All SearchResult.rows() tests passed!)rÕ  r_  ÚrowsrB   rÓ   ra  )r_  r  rp  Úrows       r   Útest_search_result_rowsrr  y
  s  € à/Ð/Ð/Ð/Ð/Ð/ð ˆ\à)Ð)Ð)Ð*Ø2Ð2Ð2Ð3Ø  #˜J¨¨c¨
°S¸#°JÐ?Ð@Ø! 3˜<¨%°¨¸¸s°|ÐDÐEØ&��Ð'Ø8Ð8Ð8Ð9ð	
ð 	
ñ	ô 	€Fð �;Š;‰=Œ=€DÝˆt‰9Œ9˜Š>ˆ>ˆ>ˆ>Ýˆt�AŒw‰<Œ<˜1ÒÐÐÐð �Œ7�1Œ:�dÔ˜uÒ$Ð$Ð$Ð$Ø�Œ7�1Œ:�jÔ! VÒ+Ð+Ð+Ð+Ø�Œ7�1Œ:�kÔ" s¨C jÒ0Ð0Ð0Ð0Ø�Œ7�1Œ:�jÔ! e¨S \Ò1Ð1Ð1Ð1Ø�Œ7�1Œ:�gÔ #Ò%Ð%Ð%Ð%ð �AŒwð ð ˆØ�sˆ{ˆ{ˆ{ˆ{Ø˜SÐ Ð Ð Ð Ø˜cÐ!Ð!Ð!Ð!Ø˜SÐ Ð Ð Ð Ø˜#ˆ~ˆ~ˆ~ˆ~ˆ~ð ˆ\à˜4�LÐ"4Ð"4Ð"4Ð5Ø# XÐ.Ð0NÐ0NÐ0NÐOàØ�˜˜ ˜uÐ%ðð   ˜8 c¨1 XÐ.°Ð5Ø˜S�z ? ? ?Ð3Ø" GÐ,¨{¸GÐ.DÐEð
	
ð 
	
ñô €Fð �;Š;‰=Œ=€DÝˆt‰9Œ9˜Š>ˆ>ˆ>ˆ>Ýˆt�AŒw‰<Œ<˜1ÒÐÐÐÝˆt�AŒw‰<Œ<˜1ÒÐÐÐð �Œ7�1Œ:ØØØ˜!�HØð	ð ò ð ð ð ð �Œ7�1Œ:ØØØ˜!�HØð	ð ò ð ð ð ð �Œ7�1Œ:ØØØ�UØð	ð ò ð ð ð ð �Œ7�1Œ:ØØØ�UØð	ð ò ð ð ð ð �Œ7�1Œ:ØØØ�UØð	ð ò ð ð ð ð ˆ\àØØØØØð	
ð 	
ñ	ô 	€Fð �;Š;‰=Œ=€DØ�2Š:ˆ:ˆ:ˆ:ð ˆ\à)Ð)Ð)Ð*Ø.Ð.Ð.Ð/ØØ ˜8 T¨C°¨8Ð4Ð5Ø'Ð'Ð'Ð(Ø8Ð8Ð8Ð9ð	
ð 	
ñ	ô 	€Fð �;Š;‰=Œ=€DÝˆt‰9Œ9˜Š>ˆ>ˆ>ˆ>Ýˆt�AŒw‰<Œ<˜1ÒÐÐÐð �Œ7�1Œ: °C¸°8ÀcÐJÐJÒJÐJÐJÐJð �Œ7�1Œ: °6Ð:Ð:Ò:Ð:Ð:Ð:ð �Œ7�1Œ: °C¸°8ÀcÐJÐJÒJÐJÐJÐJð ˆ\à˜E�NÐ#ØØØØØ�dð	
ð 	
ñ	ô 	€Fð �;Š;‰=Œ=€DÝˆt‰9Œ9˜Š>ˆ>ˆ>ˆ>Ýˆt�AŒw‰<Œ<˜1ÒÐÐÐØ�Œ7�1Œ:˜$ ˜Ò&Ð&Ð&Ð&Ø�Œ7�1Œ:˜$ ˜Ò&Ð&Ð&Ð&ð ˆ\à�H�:Ø%˜,˜Ø" D˜>Ð*Ð+Ø  #˜J˜<˜.Ø�v�hØ�w�ið	
ð 	
ñ	ô 	€Fð �%Œ=˜f˜X˜JÒ&Ð&Ð&Ð&Ø�:Š:�kÑ"Ô"¨
 | nÒ4Ð4Ð4Ð4Ø˜&Ð Ð Ð Ð Ýˆv‰;Œ;˜!ÒÐÐÐð �;Š;‰=Œ=€DÝˆt�AŒw‰<Œ<˜1ÒÐÐÐØ�Œ7�1Œ:�dÔ˜vÒ%Ð%Ð%Ð%å	Ð
1Ñ2Ô2Ð2Ð2Ð2r   c                  óÞ	  — ddl } ddlm}m}m}  | |ddgd¬¦  «         |dd	gd
d¬¦  «        g¦  «        }|                     ¦   «         }dddiddddidddidddgddddœigidœidddidddiddd	gd
dddœigidœigigi}||k    sJ ‚ | |ddgd¬¦  «         |dd	gd
d¬¦  «        gddgd¬¦  «        }|                     ¦   «         }dddiddddidddidddgddddœigidœidddidddiddd	gd
dddœigidœigigi}	||	k    sJ ‚ | |ddgd¬¦  «         |dd	gd
d¬¦  «         |d¦  «        g¦  «        }
|
                     ¦   «         }d|v sJ ‚d|d         d         v sJ ‚|d         d         d         }t          |¦  «        dk    sJ ‚ | j        t          d¬¦  «        5   | |ddgd¬¦  «         |dd	gd¬¦  «        gdg¬ ¦  «        }|                     ¦   «          ddd¦  «         n# 1 swxY w Y    | j        t          d!¬¦  «        5   | |ddgd¬¦  «         |dd	gd¬¦  «        gdd"g¬ ¦  «        }|                     ¦   «          ddd¦  «         n# 1 swxY w Y    | j        t          d#¬¦  «        5   |g ¦  «        }|                     ¦   «          ddd¦  «         n# 1 swxY w Y    | j        t          d$¬¦  «        5   | |d¦  «        gd%¬&¦  «        }|                     ¦   «          ddd¦  «         n# 1 swxY w Y    | j        t          d$¬¦  «        5   | |d¦  «        gd¬&¦  «        }|                     ¦   «          ddd¦  «         n# 1 swxY w Y    | |ddgd¬¦  «         |dd	gd
d¬¦  «        gd'dgdd¬(¦  «        }|                     ¦   «         }dddidddd)idddidddgddddœigidœiddd*idddiddd	gd
dddœigidœigigi}||k    sJ ‚ | |ddgd¬¦  «         |dd	gd¬¦  «        gd¬+¦  «        }|                     ¦   «         }dddidddd,idddidddgddddœigidœiddd,idddiddd	gddddœigidœigigi}||k    sJ ‚ | j        t          d-¬¦  «        5   | |ddgd¬¦  «         |dd	gd¬¦  «        gd.d.gd¬/¦  «        }|                     ¦   «          ddd¦  «         n# 1 swxY w Y   t          d0¦  «         dS )1z9Test the Rrf (Reciprocal Rank Fusion) to_dict conversion.r   N)ÚRrfÚKnnÚValr   r   T)r]   Úreturn_rankr!  rÁ  rÇ  )r]   re   rw  ú$mulú$valr)  ú$sumú$divr¼  é<   ú$knnú
#embeddingé   ©r]   re   r  rw  ©ÚleftÚrightr�  rÍ   )ÚranksÚweightsÚkr`  rR   ro   z/Number of weights .* must match number of ranksrç   )r„  r…  z All weights must be non-negativeg      ð¿zRRF requires at least one rankzk must be positiverò  )r†  r/  )r„  r…  Ú	normalizer†  g      è?g      Ð?)r„  r‡  r®  zSum of weights must be positiver»  )r„  r…  r‡  zAll RRF tests passed!)
rÇ   Ú&chromadb.execution.expression.operatorrt  ru  rv  Úto_dictrB   ré   r$  ra  )rÇ   rt  ru  rv  Úrrfr  ÚexpectedÚrrf_weightedÚresult_weightedÚexpected_weightedÚ	rrf_threeÚresult_threeÚtermsÚrrf_badÚrrf_negativeÚ	rrf_emptyÚ	rrf_neg_kÚ
rrf_zero_kÚrrf_normalizedÚresult_normalizedÚexpected_normalizedÚrrf_normalize_defaultsÚresult_defaultsÚexpected_defaultsÚrrf_zero_weightss                            r   Útest_rrf_to_dictrž  &  sF
  € ð €M€M€MØDÐDÐDÐDÐDÐDÐDÐDÐDÐDð ˆ#àˆC�s˜C�j¨dÐ3Ñ3Ô3ØˆC�s˜C�jÐ&8ÀdÐKÑKÔKð	
ñô €Cð �[Š[‰]Œ]€Fð 	Ø�RˆLààØ%+¨S Mà &Ø%+¨R Là(.Ø69¸3°ZØ3?Ø57Ø;?ð	1*ð 1*ð%&ð
)"ð&ð!ð !ðð& Ø%+¨S Mà &Ø%+¨R Là(.Ø69¸3°ZØ3EØ57Ø;?ð	1*ð 1*ð%&ð
)"ð&ð!ð !ðð'%ð'ð*
ð,€Hð\ �XÒÐÐÐð �3àˆC�s˜C�j¨dÐ3Ñ3Ô3ØˆC�s˜C�jÐ&8ÀdÐKÑKÔKð
ð �c�
Ø
ðñ ô €Lð #×*Ò*Ñ,Ô,€Oð 	Ø�RˆLààØ%+¨S Mà &Ø%+¨S Mà(.Ø69¸3°ZØ3?Ø57Ø;?ð	1*ð 1*ð%&ð
)"ð&ð!ð !ðð& Ø%+¨S Mà &Ø%+¨S Mà(.Ø69¸3°ZØ3EØ57Ø;?ð	1*ð 1*ð%&ð
)"ð&ð!ð !ðð'%ð'ð*
ð,Ðð\ Ð/Ò/Ð/Ð/Ð/ð �àˆC�s˜C�j¨dÐ3Ñ3Ô3ØˆC�s˜C�jÐ&8ÀdÐKÑKÔKØˆC�‰HŒHð	
ñô €Ið ×$Ò$Ñ&Ô&€Lð �\Ð!Ð!Ð!Ð!Ø�\ &Ô)¨!Ô,Ð,Ð,Ð,Ð,Ø˜Ô  Ô# FÔ+€EÝˆu‰:Œ:˜Š?ˆ?ˆ?ˆ?ð 
ˆŒÝÐKð
ñ 
ô 
ð 
ð 
ð �#à�˜3 ˜*°$Ð7Ñ7Ô7Ø�˜3 ˜*°$Ð7Ñ7Ô7ðð �Eð
ñ 
ô 
ˆð 	�ŠÑÔÐð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ˆŒ•zÐ)KÐ	LÑ	LÔ	Lð ð Ø�sà�˜3 ˜*°$Ð7Ñ7Ô7Ø�˜3 ˜*°$Ð7Ñ7Ô7ðð ˜$�Kð
ñ 
ô 
ˆð 	×ÒÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð 
ˆŒ•zÐ)IÐ	JÑ	JÔ	Jð ð Ø�C˜‘G”Gˆ	Ø×ÒÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð
 
ˆŒ•zÐ)=Ð	>Ñ	>Ô	>ð ð Ø�C˜˜˜S™œ˜
 bÐ)Ñ)Ô)ˆ	Ø×ÒÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð
 
ˆŒ•zÐ)=Ð	>Ñ	>Ô	>ð ð Ø�S˜#˜#˜c™(œ(˜ qÐ)Ñ)Ô)ˆ
Ø×ÒÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð �SàˆC�s˜C�j¨dÐ3Ñ3Ô3ØˆC�s˜C�jÐ&8ÀdÐKÑKÔKð
ð �c�
ØØ
ðñ ô €Nð '×.Ò.Ñ0Ô0Ðð 	Ø�RˆLààØ%+¨T Nà &Ø%+¨S Mà(.Ø69¸3°ZØ3?Ø57Ø;?ð	1*ð 1*ð%&ð
)"ð&ð!ð !ðð& Ø%+¨T Nà &Ø%+¨S Mà(.Ø69¸3°ZØ3EØ57Ø;?ð	1*ð 1*ð%&ð
)"ð&ð!ð !ðð'%ð'ð*
ð,Ðð\ Ð 3Ò3Ð3Ð3Ð3ð !˜SàˆC�s˜C�j¨dÐ3Ñ3Ô3ØˆC�s˜C�j¨dÐ3Ñ3Ô3ð
ð ðñ ô Ðð -×4Ò4Ñ6Ô6€Oð 	Ø�RˆLààØ%+¨S Mà &Ø%+¨R Là(.Ø69¸3°ZØ3?Ø57Ø;?ð	1*ð 1*ð%&ð
)"ð&ð!ð !ðð& Ø%+¨S Mà &Ø%+¨R Là(.Ø69¸3°ZØ3?Ø57Ø;?ð	1*ð 1*ð%&ð
)"ð&ð!ð !ðð'%ð'ð*
ð,Ðð\ Ð/Ò/Ð/Ð/Ð/ð 
ˆŒ•zÐ)JÐ	KÑ	KÔ	Kð 	#ð 	#Ø˜3à�˜3 ˜*°$Ð7Ñ7Ô7Ø�˜3 ˜*°$Ð7Ñ7Ô7ðð ˜#�JØð
ñ 
ô 
Ðð 	× Ò Ñ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#õ 
Ð
!Ñ"Ô"Ð"Ð"Ð"sn   Æ*?G5Ç5G9Ç<G9ÈA I#É#I'É*I'Ê J1Ê1J5Ê8J5Ë,LÌLÌLÌ-,M%Í%M)Í,M)ÒASÓSÓSc            	      ól  — ddl } ddlm}m}m}m}m}  | |d¦  «         ||j        d¬¦  «        ¬¦  «        }|                     ¦   «         dgdd	gddœidœk    sJ ‚ | |d
¦  «         |d¦  «        g ||j         |d¦  «        gd¬¦  «        ¬¦  «        }|                     ¦   «         d
dgdd	dgddœidœk    sJ ‚ | |d¦  «        g ||j        gd¬¦  «        ¬¦  «        }| 	                    |                     ¦   «         ¦  «                             ¦   «         |                     ¦   «         k    sJ ‚ |¦   «         }|                     ¦   «         i k    sJ ‚| 	                    i ¦  «                             ¦   «         i k    sJ ‚ | j
        t          d¬¦  «        5  | 	                    ddd	gddœii¦  «         ddd¦  «         n# 1 swxY w Y    | j
        t          d¬¦  «        5  | 	                    ddgi¦  «         ddd¦  «         n# 1 swxY w Y    | j
        t          d¬¦  «        5  | 	                    g dd	gddœidœ¦  «         ddd¦  «         n# 1 swxY w Y    | j
        t          d¬¦  «        5  | 	                    dd	gddœi¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z?Test GroupBy, MinK, and MaxK serialization and deserialization.r   N)ÚGroupByÚMinKÚMaxKÚKeyÚ	Aggregater  ro   ©r^   r†  ©r^   Ú	aggregateú$min_kú#scorer  Úpriorityr  z$max_kzrequires 'keys' fieldrç   r§  úrequires 'aggregate' fieldr^   zkeys cannot be emptyzUnknown aggregate operatorz$unknown)rÇ   rˆ  r   r¡  r¢  r£  r¤  ÚSCOREr‰  Ú	from_dictré   r$  )	rÇ   r   r¡  r¢  r£  r¤  Úgroup_byrE  Úempty_group_bys	            r   Útest_group_by_serializationr°  i  s¶  € à€M€M€Mðð ð ð ð ð ð ð ð ð ð ð ð ð ð ˆw˜C˜C 
™OœO°t°tÀÄÈaÐ7PÑ7PÔ7PÐQÑQÔQ€HØ×ÒÑÔØ�Ø¨(¨¸!Ð <Ð <Ð=ð"ð "ò ð ð ð ð ˆwØˆc�&‰kŒk˜3˜3˜z™?œ?Ð+Ø�$˜SœY¨¨¨J©¬Ð8¸AÐ>Ñ>Ô>ðñ ô €Hð ×ÒÑÔØ˜Ð$Ø¨(°JÐ)?ÀaÐ HÐ HÐIð"ð "ò ð ð ð ð ˆw˜S˜S ™_œ_Ð-¸¸ÀCÄIÀ;ÐRSÐ9TÑ9TÔ9TÐUÑUÔU€HØ×Ò˜X×-Ò-Ñ/Ô/Ñ0Ô0×8Ò8Ñ:Ô:¸h×>NÒ>NÑ>PÔ>PÒPÐPÐPÐPð �W‘Y”Y€NØ×!Ò!Ñ#Ô# rÒ)Ð)Ð)Ð)Ø×Ò˜RÑ Ô ×(Ò(Ñ*Ô*¨bÒ0Ð0Ð0Ð0ð 
ˆŒ•zÐ)@Ð	AÑ	AÔ	Að Sð SØ×Ò˜;¨¸X¸JÈQÐ3OÐ3OÐ(PÐQÑRÔRÐRðSð Sð Sñ Sô Sð Sð Sð Sð Sð Sð Søøøð Sð Sð Sð Sð 
ˆŒ•zÐ)EÐ	FÑ	FÔ	Fð 2ð 2Ø×Ò˜6 J <Ð0Ñ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð 
ˆŒ•zÐ)?Ð	@Ñ	@Ô	@ð 
ð 
Ø×ÒØ x¸8¸*È1Ð1MÐ1MÐ&NÐOÐOñ	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð
 
ˆŒ•zÐ)EÐ	FÑ	FÔ	Fð Hð HØ×Ò˜Z°8°*À1Ð)EÐ)EÐFÑGÔGÐGðHð Hð Hñ Hô Hð Hð Hð Hð Hð Hð Hð Høøøð Hð Hð Hð Hð Hð HsH   Æ G
Ç
GÇGÇ,HÈHÈHÈ3IÉI"É%I"Ê J)Ê)J-Ê0J-c                   óH   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ ZdS )ÚTestSearchDictSupportz%Test Search class dict input support.c                 ó¸   — ddl m} ddlm}  |ddi¬¦  «        }|j        €J ‚t          |j        |¦  «        sJ ‚ |dddid	d
diigi¬¦  «        }|j        €J ‚dS )z-Test Search accepts dict for where parameter.r   ©ÚSearch©ÚWhereÚstatusÚactiver{  Nr­  rÈ  rŸ  r®  )Ú"chromadb.execution.expression.planrµ  rˆ  r·  Ú_whererº   )ry   rµ  r·  Úsearchs       r   Útest_search_with_dict_wherez1TestSearchDictSupport.test_search_with_dict_where¢  s¦   € à=Ð=Ð=Ð=Ð=Ð=Ø@Ð@Ð@Ð@Ð@Ð@ð �˜x¨Ð2Ð3Ñ3Ô3ˆØŒ}Ð(Ð(Ð(Ý˜&œ-¨Ñ/Ô/Ð/Ð/Ð/ð �˜v¨°8Ð(<¸wÈÐPSÈÐ>UÐ'VÐWÐXÑXÔXˆØŒ}Ð(Ð(Ð(Ð(Ð(r   c                 ó°   — ddl m} ddlm}  |ddddgii¬¦  «        }|j        €J ‚t          |j        |¦  «        sJ ‚ |d
di¬¦  «        }|j        €J ‚d	S )z,Test Search accepts dict for rank parameter.r   r´  ©ÚRankr}  r]   r   r   ©ÚrankNry  r®  )rº  rµ  rˆ  rÀ  Ú_rankrº   )ry   rµ  rÀ  r¼  s       r   Útest_search_with_dict_rankz0TestSearchDictSupport.test_search_with_dict_rank°  sš   € à=Ð=Ð=Ð=Ð=Ð=Ø?Ð?Ð?Ð?Ð?Ð?ð �˜f w°°c°
Ð&;Ð<Ð=Ñ=Ô=ˆØŒ|Ð'Ð'Ð'Ý˜&œ,¨Ñ-Ô-Ð-Ð-Ð-ð �˜f c˜]Ð+Ñ+Ô+ˆØŒ|Ð'Ð'Ð'Ð'Ð'r   c                 óØ   — ddl m}  |dddœ¬¦  «        }|j        j        dk    sJ ‚|j        j        dk    sJ ‚ |d¬¦  «        }|j        j        dk    sJ ‚|j        j        dk    sJ ‚dS )z5Test Search accepts dict and int for limit parameter.r   r´  r·   r  ©r  Úoffset©r  N)rº  rµ  Ú_limitr  rÇ  ©ry   rµ  r¼  s      r   Útest_search_with_dict_limitz1TestSearchDictSupport.test_search_with_dict_limit¾  s¢   € à=Ð=Ð=Ð=Ð=Ð=ð �¨°aÐ8Ð8Ð9Ñ9Ô9ˆØŒ}Ô" bÒ(Ð(Ð(Ð(ØŒ}Ô# qÒ(Ð(Ð(Ð(ð �˜bÐ!Ñ!Ô!ˆØŒ}Ô" bÒ(Ð(Ð(Ð(ØŒ}Ô# qÒ(Ð(Ð(Ð(Ð(Ð(r   c                 ó    — ddl m}  |dddgi¬¦  «        }|j        €J ‚ |ddg¬¦  «        }|j        €J ‚ |dd	h¬¦  «        }|j        €J ‚dS )
z=Test Search accepts dict, list, and set for select parameter.r   r´  r^   ú	#documentr©  ©rc  Nú	#metadatar~  )rº  rµ  Ú_selectrÊ  s      r   Útest_search_with_dict_selectz2TestSearchDictSupport.test_search_with_dict_selectÌ  s”   € à=Ð=Ð=Ð=Ð=Ð=ð � ¨°hÐ(?Ð@ÐAÑAÔAˆØŒ~Ð)Ð)Ð)ð � ¨[Ð9Ð:Ñ:Ô:ˆØŒ~Ð)Ð)Ð)ð � ¨\Ð:Ð;Ñ;Ô;ˆØŒ~Ð)Ð)Ð)Ð)Ð)r   c                 ó¾   — ddl m} ddlm}  | |d¦  «        dk    dddd	giid
dg¬¦  «        }|j        €J ‚|j        €J ‚|j        j        d
k    sJ ‚|j        €J ‚dS )z2Test Search with mixed expression and dict inputs.r   r´  ©r£  r¸  r¹  r}  r]   r   r   r·   rÍ  ©r  rÂ  r  rc  N)	rº  rµ  rˆ  r£  r»  rÃ  rÉ  r  rÐ  )ry   rµ  r£  r¼  s       r   Útest_search_mixed_inputsz.TestSearchDictSupport.test_search_mixed_inputsÜ  s­   € à=Ð=Ð=Ð=Ð=Ð=Ø>Ð>Ð>Ð>Ð>Ð>à�Ø�#�h‘-”- 8Ò+Ø˜7 S¨# JÐ/Ð0ØØ�=ð	
ñ 
ô 
ˆð Œ}Ð(Ð(Ð(ØŒ|Ð'Ð'Ð'ØŒ}Ô" bÒ(Ð(Ð(Ð(ØŒ~Ð)Ð)Ð)Ð)Ð)r   c                 óž   — ddl m}  |¦   «                              ddi¦  «                             ddi¦  «        }|j        €J ‚|j        €J ‚dS )z)Test Search builder methods accept dicts.r   r´  r¸  r¹  ry  r®  N)rº  rµ  r  rÂ  r»  rÃ  rÊ  s      r   Ú&test_search_builder_methods_with_dictsz<TestSearchDictSupport.test_search_builder_methods_with_dictsì  sd   € à=Ð=Ð=Ð=Ð=Ð=à�‘”—’ ¨8Ð 4Ñ5Ô5×:Ò:¸FÀC¸=ÑIÔIˆØŒ}Ð(Ð(Ð(ØŒ|Ð'Ð'Ð'Ð'Ð'r   c                 óô  — ddl }ddlm}  |j        t          d¬¦  «        5   |d¬¦  «         ddd¦  «         n# 1 swxY w Y    |j        t          d¬¦  «        5   |d	¬
¦  «         ddd¦  «         n# 1 swxY w Y    |j        t          d¬¦  «        5   |d¬¦  «         ddd¦  «         n# 1 swxY w Y    |j        t          d¬¦  «        5   |d¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z(Test Search rejects invalid input types.r   Nr´  zwhere must berç   rË  r{  zrank must ber®  rÁ  zlimit must beÚ10rÈ  zselect must beé{   rÎ  )rÇ   rº  rµ  ré   r*  )ry   rÇ   rµ  s      r   Útest_search_invalid_inputsz0TestSearchDictSupport.test_search_invalid_inputsô  s/  € àˆˆˆØ=Ð=Ð=Ð=Ð=Ð=àˆVŒ]�9¨OÐ<Ñ<Ô<ð 	$ð 	$ØˆF˜Ð#Ñ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð ˆVŒ]�9¨NÐ;Ñ;Ô;ð 	ð 	ØˆF˜ÐÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ˆVŒ]�9¨OÐ<Ñ<Ô<ð 	ð 	ØˆF˜ÐÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ˆVŒ]�9Ð,<Ð=Ñ=Ô=ð 	ð 	ØˆF˜#ÐÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	sC   ¢;»?Á?ÁA6Á6A:Á=A:ÂB1Â1B5Â8B5ÃC-Ã-C1Ã4C1c                 óD  — ddl }ddlm} ddlm}m}m}  |dgddgdd	œid
œ¬¦  «        }t          |j        |¦  «        sJ ‚ | |d¦  «         ||j	        d¬	¦  «        ¬
¦  «        } ||¬¦  «        j        |u sJ ‚ |¦   «          
                    |¦  «        j        j        €J ‚ |j        t          d¬¦  «        5   |d¬¦  «         ddd¦  «         n# 1 swxY w Y    |j        t          d¬¦  «        5   |ddgi¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zATest Search accepts group_by as dict, object, and builder method.r   Nr´  )r   r¡  r£  r  r¨  r©  ro   r¥  r¦  ©r®  zgroup_by must berç   rË  r«  r^   )rÇ   rº  rµ  rˆ  r   r¡  r£  rº   Ú	_group_byr¬  r®  r§  ré   r*  r$  )ry   rÇ   rµ  r   r¡  r£  r¼  r®  s           r   Útest_search_with_group_byz/TestSearchDictSupport.test_search_with_group_by  s  € àˆˆˆØ=Ð=Ð=Ð=Ð=Ð=ØMÐMÐMÐMÐMÐMÐMÐMÐMÐMð �à#˜Ø&°(°À!Ð(DÐ(DÐEðð ð
ñ 
ô 
ˆõ ˜&Ô*¨GÑ4Ô4Ð4Ð4Ð4ð �7   J¡¤¸4¸4ÀSÄYÐRSÐ;TÑ;TÔ;TÐUÑUÔUˆØˆv˜xÐ(Ñ(Ô(Ô2°hÐ>Ð>Ð>Ð>Øˆv‰xŒx× Ò  Ñ*Ô*Ô4Ô>ÐJÐJÐJð ˆVŒ]�9Ð,>Ð?Ñ?Ô?ð 	'ð 	'ØˆF˜IÐ&Ñ&Ô&Ð&ð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'àˆVŒ]�:Ð-IÐJÑJÔJð 	4ð 	4ØˆF˜V j \Ð2Ð3Ñ3Ô3Ð3ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4ð 	4ð 	4s$   Â=CÃCÃCÃ8DÄDÄDc           	      óÞ  — ddl m} ddlm}m}m}m}  |¦   «                               |ddg¬¦  «        ¦  «                             d¦  «        }| 	                    ¦   «         d         i k    sJ ‚ |¦   «          
                     | |d	¦  «         ||j        d
¬¦  «        ¬¦  «        ¦  «        }| 	                    ¦   «         d         }|d         d	gk    sJ ‚|d         ddgd
dœik    sJ ‚dS )z*Test Search serializes group_by correctly.r   r´  )r   r¡  r£  ru  r   r   ©r]   r·   r®  r  ro   r¥  r¦  r^   r§  r¨  r©  N)rº  rµ  rˆ  r   r¡  r£  ru  rÂ  r  r‰  r®  r¬  )ry   rµ  r   r¡  r£  ru  r¼  r  s           r   Ú"test_search_group_by_serializationz8TestSearchDictSupport.test_search_group_by_serialization  s0  € à=Ð=Ð=Ð=Ð=Ð=ØRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRð �‘”—’˜s˜s¨#¨s¨Ð4Ñ4Ô4Ñ5Ô5×;Ò;¸BÑ?Ô?ˆØ�~Š~ÑÔ 
Ô+¨rÒ1Ð1Ð1Ð1ð �‘”×"Ò"ØˆG˜˜˜Z™œ°D°D¸c¼iÈ1Ð4MÑ4MÔ4MÐNÑNÔNñ
ô 
ˆð —’Ñ!Ô! *Ô-ˆØ�fŒ~ * Ò-Ð-Ð-Ð-Ø�kÔ" x¸8¸*È1Ð1MÐ1MÐ&NÒNÐNÐNÐNÐNÐNr   N)r”   r•   r–   Ú__doc__r½  rÄ  rË  rÑ  rÕ  r×  rÛ  rß  râ  r   r   r   r²  r²  Ÿ  s¦   € € € € € Ø/Ð/ð)ð )ð )ð(ð (ð (ð)ð )ð )ð*ð *ð *ð *ð *ð *ð (ð (ð (ðð ð ð"4ð 4ð 4ð4Oð Oð Oð Oð Or   r²  c                   ó`   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestWhereFromDictz"Test Where.from_dict() conversion.c                 ó¾   — ddl m}m} |                     ddi¦  «        }t	          ||¦  «        sJ ‚|                     dddii¦  «        }t	          ||¦  «        sJ ‚dS )z Test simple equality conversion.r   )r·  ÚEqr¸  r¹  r¨  N)rˆ  r·  rç  r­  rº   )ry   r·  rç  r  s       r   Útest_simple_equalityz&TestWhereFromDict.test_simple_equality4  s�   € àDÐDÐDÐDÐDÐDÐDÐDð —’ ¨8Ð 4Ñ5Ô5ˆÝ˜% Ñ$Ô$Ð$Ð$Ð$ð —’ ¨E°8Ð+<Ð =Ñ>Ô>ˆÝ˜% Ñ$Ô$Ð$Ð$Ð$Ð$Ð$r   c                 óÔ  — ddl m}m}m}m}m}m} |                     dddii¦  «        }t          ||¦  «        sJ ‚|                     dddii¦  «        }t          ||¦  «        sJ ‚|                     dd	dii¦  «        }t          ||¦  «        sJ ‚|                     dd
dii¦  «        }t          ||¦  «        sJ ‚|                     dddii¦  «        }t          ||¦  «        sJ ‚dS )z%Test comparison operator conversions.r   )r·  ÚNeÚGtÚGteÚLtÚLter¸  r¥  ÚinactiverÈ  rŸ  r®  r¢  r—  r¼  rœ  N)	rˆ  r·  rê  rë  rì  rí  rî  r­  rº   )ry   r·  rê  rë  rì  rí  rî  r  s           r   Útest_comparison_operatorsz+TestWhereFromDict.test_comparison_operators@  s3  € àVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVð —’ ¨E°:Ð+>Ð ?Ñ@Ô@ˆÝ˜% Ñ$Ô$Ð$Ð$Ð$ð —’ ¨5°#¨,Ð 7Ñ8Ô8ˆÝ˜% Ñ$Ô$Ð$Ð$Ð$ð —’ ¨6°3¨-Ð 8Ñ9Ô9ˆÝ˜% Ñ%Ô%Ð%Ð%Ð%ð —’ ¨5°#¨,Ð 7Ñ8Ô8ˆÝ˜% Ñ$Ô$Ð$Ð$Ð$ð —’ ¨6°3¨-Ð 8Ñ9Ô9ˆÝ˜% Ñ%Ô%Ð%Ð%Ð%Ð%Ð%r   c                 óÎ   — ddl m}m}m} |                     ddddgii¦  «        }t          ||¦  «        sJ ‚|                     dddd	gii¦  «        }t          ||¦  «        sJ ‚d
S )z%Test membership operator conversions.r   )r·  ÚInÚNinr¸  ú$inr¹  Úpendingz$ninr	  ÚarchivedN)rˆ  r·  rò  ró  r­  rº   )ry   r·  rò  ró  r  s        r   Útest_membership_operatorsz+TestWhereFromDict.test_membership_operatorsX  s–   € àIÐIÐIÐIÐIÐIÐIÐIÐIÐIð —’ ¨E°H¸iÐ3HÐ+IÐ JÑKÔKˆÝ˜% Ñ$Ô$Ð$Ð$Ð$ð —’ ¨F°YÀ
Ð4KÐ+LÐ MÑNÔNˆÝ˜% Ñ%Ô%Ð%Ð%Ð%Ð%Ð%r   c                 óz  — ddl m}m}m}m}m} |                     dddii¦  «        }t          ||¦  «        sJ ‚|                     dddii¦  «        }t          ||¦  «        sJ ‚|                     ddd	ii¦  «        }t          ||¦  «        sJ ‚|                     dd
dii¦  «        }t          ||¦  «        sJ ‚dS )z!Test string operator conversions.r   )r·  ÚContainsÚNotContainsÚRegexÚNotRegexr¾  r¯  rJ   r¿  Úspamz$regexz^test.*z
$not_regexz\d+N)rˆ  r·  rù  rú  rû  rü  r­  rº   )ry   r·  rù  rú  rû  rü  r  s          r   Útest_string_operatorsz'TestWhereFromDict.test_string_operatorsd  s  € ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð —’ ¨+°wÐ)?Ð @ÑAÔAˆÝ˜% Ñ*Ô*Ð*Ð*Ð*ð —’ ¨/¸6Ð)BÐ CÑDÔDˆÝ˜% Ñ-Ô-Ð-Ð-Ð-ð —’ ¨(°IÐ)>Ð ?Ñ@Ô@ˆÝ˜% Ñ'Ô'Ð'Ð'Ð'ð —’ ¨,¸Ð)?Ð @ÑAÔAˆÝ˜% Ñ*Ô*Ð*Ð*Ð*Ð*Ð*r   c                 ó†  — ddl m}m}m} |                     dddii¦  «        }t          ||¦  «        sJ ‚|                     ¦   «         dddiik    sJ ‚|                     dddii¦  «        }t          ||¦  «        sJ ‚|                     ¦   «         dddiik    sJ ‚|                     ddd	ii¦  «        }t          ||¦  «        sJ ‚|                     ¦   «         ddd	iik    sJ ‚|                     d
ddii¦  «        }t          ||¦  «        sJ ‚|                     ¦   «         d
ddiik    sJ ‚|                     dddii¦  «        }t          ||¦  «        sJ ‚|                     ¦   «         dddiik    sJ ‚|                     dddii¦  «        }t          ||¦  «        sJ ‚|                     ¦   «         dddiik    sJ ‚dS )zNTest $contains/$not_contains with all scalar types for metadata array queries.r   )r·  rù  rú  r  r¯  r  r  r¾  r  r  r	  Tr¿  r  N)rˆ  r·  rù  rú  r­  rº   r‰  )ry   r·  rù  rú  r  s        r   Útest_array_contains_operatorsz/TestWhereFromDict.test_array_contains_operators~  s(  € àWÐWÐWÐWÐWÐWÐWÐWÐWÐWð —’ ¨+°xÐ)@Ð AÑBÔBˆÝ˜% Ñ*Ô*Ð*Ð*Ð*Ø�}Š}‰Œ 6¨K¸Ð+BÐ"CÒCÐCÐCÐCð —’ ¨K¸Ð+<Ð =Ñ>Ô>ˆÝ˜% Ñ*Ô*Ð*Ð*Ð*Ø�}Š}‰Œ 8¨k¸2Ð->Ð"?Ò?Ð?Ð?Ð?ð —’ ¨[¸#Ð,>Ð ?Ñ@Ô@ˆÝ˜% Ñ*Ô*Ð*Ð*Ð*Ø�}Š}‰Œ 9¨{¸CÐ.@Ð"AÒAÐAÐAÐAð —’ ¨;¸Ð*=Ð >Ñ?Ô?ˆÝ˜% Ñ*Ô*Ð*Ð*Ð*Ø�}Š}‰Œ 7¨[¸$Ð,?Ð"@Ò@Ð@Ð@Ð@ð —’ ¨/¸7Ð)CÐ DÑEÔEˆÝ˜% Ñ-Ô-Ð-Ð-Ð-Ø�}Š}‰Œ 6¨O¸WÐ+EÐ"FÒFÐFÐFÐFà—’ ¨O¸QÐ+?Ð @ÑAÔAˆÝ˜% Ñ-Ô-Ð-Ð-Ð-Ø�}Š}‰Œ 8¨o¸qÐ-AÐ"BÒBÐBÐBÐBÐBÐBr   c                 óD  — ddl }ddlm}  |j        t          d¬¦  «        5  |                     dddd	gii¦  «         ddd¦  «         n# 1 swxY w Y    |j        t          d
¬¦  «        5  |                     ddddiii¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z:Test $contains/$not_contains reject invalid operand types.r   Nr¶  z\$contains requiresrç   r  r¯  rR   rn   z\$not_contains requiresr¿  r‡  T)rÇ   rˆ  r·  ré   r*  r­  ©ry   rÇ   r·  s      r   Ú$test_array_contains_invalid_operandsz6TestWhereFromDict.test_array_contains_invalid_operandsŸ  s]  € àˆˆˆØ@Ð@Ð@Ð@Ð@Ð@àˆVŒ]�9Ð,BÐCÑCÔCð 	=ð 	=Ø�OŠO˜V k°A°q°6Ð%:Ð;Ñ<Ô<Ð<ð	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=ð ˆVŒ]�9Ð,FÐGÑGÔGð 	Kð 	KØ�OŠO˜V o¸À$Ð7GÐ%HÐIÑJÔJÐJð	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	Kð 	Kð 	Ks#   ¢A
Á
AÁAÁ,BÂBÂBc                 óâ  — ddl m}m}  |d¦  «                             d¦  «         |d¦  «                             d¦  «         |d¦  «                             d¦  «         |d	¦  «                             d
¦  «         |d¦  «                             d¦  «        g}|D ]P}|                     ¦   «         }|                     |¦  «        }|                     ¦   «         |k    sJ d|› �¦   «         ‚ŒQdS )z5Test $contains round-trips through to_dict/from_dict.r   )r·  r£  r  r  r  r¾  r  r  r	  Tr  zRound-trip failed for N)rˆ  r·  r£  ÚcontainsÚnot_containsr‰  r­  )ry   r·  r£  ÚcasesrE  ÚdÚrestoreds          r   Útest_array_contains_round_tripz0TestWhereFromDict.test_array_contains_round_tripª  s  € àEÐEÐEÐEÐEÐEÐEÐEð ˆC�‰KŒK× Ò  Ñ*Ô*ØˆC�‰MŒM×"Ò" 2Ñ&Ô&ØˆC�	‰NŒN×#Ò# CÑ(Ô(ØˆC�‰LŒL×!Ò! $Ñ'Ô'ØˆC�‰KŒK×$Ò$ WÑ-Ô-ð
ˆð ð 	Ið 	IˆHØ× Ò Ñ"Ô"ˆAØ—’ qÑ)Ô)ˆHØ×#Ò#Ñ%Ô%¨Ò*Ð*Ð*Ð,HÀQÐ,HÐ,HÑ*Ô*Ð*Ð*ð	Ið 	Ir   c                 ó   — ddl m}m}m}  |d¦  «                             d¦  «         |d¦  «        dk    z  }t          ||¦  «        sJ ‚|                     ¦   «         }|                     |¦  «        }|                     ¦   «         |k    sJ ‚dS )z:Test $contains combined with other operators via $and/$or.r   ©r·  ÚAndr£  r  r  r  r  N)rˆ  r·  r  r£  r  rº   r‰  r­  )ry   r·  r  r£  r  r  r	  s          r   Ú test_array_contains_in_compositez2TestWhereFromDict.test_array_contains_in_compositeº  s¤   € àJÐJÐJÐJÐJÐJÐJÐJÐJÐJà��V‘”×%Ò% hÑ/Ô/°C°C¸±K´KÀ$Ò4FÑGˆÝ˜% Ñ%Ô%Ð%Ð%Ð%Ø�MŠM‰OŒOˆØ—?’? 1Ñ%Ô%ˆØ×ÒÑ!Ô! QÒ&Ð&Ð&Ð&Ð&Ð&r   c                 ó  — ddl }ddlm} |j                             d¦  «        }|                     ¦   «         dddiik    sJ ‚|j                             d¦  «        }|                     ¦   «         dddiik    sJ ‚dD ]”} |j        t          d	¬
¦  «        5  |j                             |¦  «         ddd¦  «         n# 1 swxY w Y    |j        t          d¬
¦  «        5  |j                             |¦  «         ddd¦  «         n# 1 swxY w Y   Œ• |d¦  «                             d¦  «                             ¦   «         dddiik    sJ ‚ |d¦  «                             d¦  «                             ¦   «         dddiik    sJ ‚dS )z9Key.DOCUMENT.contains/not_contains must receive a string.r   NrÓ  rJ   rÍ  r¯  r¿  )r¾  r¿  TFz)\$contains on #document requires a stringrç   z-\$not_contains on #document requires a stringr  r¾  r	  T)	rÇ   rˆ  r£  ÚDOCUMENTr  r‰  r  ré   r*  )ry   rÇ   r£  ÚexprÚ	bad_values        r   Ú&test_document_contains_requires_stringz8TestWhereFromDict.test_document_contains_requires_stringÄ  sM  € àˆˆˆØ>Ð>Ð>Ð>Ð>Ð>ð Œ|×$Ò$ WÑ-Ô-ˆØ�|Š|‰~Œ~ +°¸WÐ/EÐ!FÒFÐFÐFÐFàŒ|×(Ò(¨Ñ1Ô1ˆØ�|Š|‰~Œ~ +°ÀÐ/IÐ!JÒJÐJÐJÐJð 1ð 		5ð 		5ˆIØ�”ÝÐ!Mðñ ô ð 1ð 1ð ”×%Ò% iÑ0Ô0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð
 �”ÝÐ!Qðñ ô ð 5ð 5ð ”×)Ò)¨)Ñ4Ô4Ð4ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5øð ˆs�8‰}Œ}×%Ò% bÑ)Ô)×1Ò1Ñ3Ô3¸À;ÐPRÐBSÐ7TÒTÐTÐTÐTØˆs�7‰|Œ|×(Ò(¨Ñ.Ô.×6Ò6Ñ8Ô8Ø�o tÐ,ð=
ò 
ð 
ð 
ð 
ð 
ð 
s$   ÂB=Â=C	ÃC	ÃDÄD
	ÄD
	c                 óÚ   — ddl m}m}m} |                     dddidddiigi¦  «        }t          ||¦  «        sJ ‚|                     d	ddidd
igi¦  «        }t          ||¦  «        sJ ‚dS )z"Test logical operator conversions.r   )r·  r  ÚOrr­  r¸  r¹  rÈ  rŸ  r®  r®  rõ  N)rˆ  r·  r  r  r­  rº   )ry   r·  r  r  r  s        r   rÒ  z(TestWhereFromDict.test_logical_operatorsâ  s«   € àIÐIÐIÐIÐIÐIÐIÐIÐIÐIð —’Ø�x Ð*¨W°u¸c°lÐ,CÐDÐEñ
ô 
ˆõ ˜% Ñ%Ô%Ð%Ð%Ð%ð —’ ¨(°HÐ)=ÀÈ)Ð?TÐ(UÐ VÑWÔWˆÝ˜% Ñ$Ô$Ð$Ð$Ð$Ð$Ð$r   c                 ó„   — ddl m}m} |                     ddddiddigidd	d
iigi¦  «        }t	          ||¦  «        sJ ‚dS )zTest nested logical operations.r   )r·  r  r­  r®  r¸  r¹  rõ  rÈ  r¢  r®  N)rˆ  r·  r  r­  rº   )ry   r·  r  r  s       r   Útest_nested_logical_operatorsz/TestWhereFromDict.test_nested_logical_operatorsð  s{   € àEÐEÐEÐEÐEÐEÐEÐEà—’àØ˜h¨Ð1°H¸iÐ3HÐIÐJØ˜v s˜mÐ,ððñ
ô 
ˆõ ˜% Ñ%Ô%Ð%Ð%Ð%Ð%Ð%r   c                 óp   — ddl m}m} |                     ddddgii¦  «        }t	          ||¦  «        sJ ‚dS )zTest special key handling.r   )r·  rò  z#idrô  rI   r  N)rˆ  r·  rò  r­  rº   )ry   r·  rò  r  s       r   Útest_special_keysz#TestWhereFromDict.test_special_keysþ  sW   € àDÐDÐDÐDÐDÐDÐDÐDð —’ ¨°¸°Ð(?Ð @ÑAÔAˆÝ˜% Ñ$Ô$Ð$Ð$Ð$Ð$Ð$r   c                 ó¸  — ddl }ddlm}  |j        t          d¬¦  «        5  |                     d¦  «         ddd¦  «         n# 1 swxY w Y    |j        t          d¬¦  «        5  |                     i ¦  «         ddd¦  «         n# 1 swxY w Y    |j        t          d¬¦  «        5  |                     d	g i¦  «         ddd¦  «         dS # 1 swxY w Y   dS )
zTest invalid Where dict inputs.r   Nr¶  úExpected dictrç   ú
not a dictúcannot be emptyzrequires at least one conditionr­  )rÇ   rˆ  r·  ré   r*  r­  r$  r  s      r   Útest_invalid_where_dictsz*TestWhereFromDict.test_invalid_where_dicts  s°  € àˆˆˆØ@Ð@Ð@Ð@Ð@Ð@àˆVŒ]�9¨OÐ<Ñ<Ô<ð 	*ð 	*Ø�OŠO˜LÑ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð ˆVŒ]�:Ð->Ð?Ñ?Ô?ð 	 ð 	 Ø�OŠO˜BÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð ˆVŒ]�:Ð-NÐOÑOÔOð 	*ð 	*Ø�OŠO˜V R˜LÑ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð 	*ð 	*s5   ¢AÁAÁAÁ&BÂBÂBÂ*CÃCÃCN)r”   r•   r–   rã  rè  rð  r÷  rþ  r   r  r
  r  r  rÒ  r  r  r  r   r   r   rå  rå  1  sç   € € € € € Ø,Ð,ð
%ð 
%ð 
%ð&ð &ð &ð0
&ð 
&ð 
&ð+ð +ð +ð4Cð Cð CðB	Kð 	Kð 	KðIð Ið Ið 'ð 'ð 'ð
ð 
ð 
ð<%ð %ð %ð&ð &ð &ð%ð %ð %ð*ð *ð *ð *ð *r   rå  c                   ó<   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚTestRankFromDictz!Test Rank.from_dict() conversion.c                 ó‚   — ddl m}m} |                     ddi¦  «        }t	          ||¦  «        sJ ‚|j        dk    sJ ‚dS )zTest Val conversion.r   )rÀ  rv  ry  r®  N)rˆ  rÀ  rv  r­  rº   rK  )ry   rÀ  rv  rÂ  s       r   Útest_val_conversionz$TestRankFromDict.test_val_conversion  s^   € àDÐDÐDÐDÐDÐDÐDÐDà�~Š~˜v s˜mÑ,Ô,ˆÝ˜$ Ñ$Ô$Ð$Ð$Ð$ØŒz˜SÒ Ð Ð Ð Ð Ð r   c                 óÒ  — ddl }ddlm}m} |                     ddddgii¦  «        }t          ||¦  «        sJ ‚t          |j        |j        ¦  «        r) |j        |j         |j	        ddg¦  «        ¦  «        sJ ‚n|j        ddgk    sJ ‚|j
        dk    sJ ‚|j        d	k    sJ ‚|                     dddgd
dddœi¦  «        }|j
        d
k    sJ ‚|j        dk    sJ ‚|j        sJ ‚dS )zTest KNN conversion.r   N)rÀ  ru  r}  r]   r   r   r~  r  rÇ  é   Tr€  )Únumpyrˆ  rÀ  ru  r­  rº   r]   ÚndarrayÚallcloserr   re   r  rw  )ry   rq   rÀ  ru  rÂ  s        r   Útest_knn_conversionz$TestRankFromDict.test_knn_conversion   sT  € àÐÐÐØDÐDÐDÐDÐDÐDÐDÐDð �~Š~˜v¨°#°s°Ð'<Ð=Ñ>Ô>ˆÝ˜$ Ñ$Ô$Ð$Ð$Ð$å�d”j "¤*Ñ-Ô-ð 	,à�2”;˜tœz¨8¨2¬8°S¸#°JÑ+?Ô+?Ñ@Ô@Ð@Ð@Ð@Ð@à”: # s Ò+Ð+Ð+Ð+ØŒx˜<Ò'Ð'Ð'Ð'ØŒz˜RÒÐÐÐð �~Š~àØ! 3˜ZØ-Ø Ø#'ð	ð ðñ	
ô 	
ˆð ŒxÐ-Ò-Ð-Ð-Ð-ØŒz˜SÒ Ð Ð Ð ØÔÐÐÐÐÐr   c                 óž  — ddl m}m}m}m}m} |                     dddiddigi¦  «        }t          ||¦  «        sJ ‚|                     dddiddid	œi¦  «        }t          ||¦  «        sJ ‚|                     d
ddiddigi¦  «        }t          ||¦  «        sJ ‚|                     dddiddid	œi¦  «        }t          ||¦  «        sJ ‚dS )z%Test arithmetic operator conversions.r   )rÀ  ÚSumÚSubÚMulÚDivrz  ry  r®  r!  z$subr¼  r�  rx  r�  r{  N)rˆ  rÀ  r*  r+  r,  r-  r­  rº   )ry   rÀ  r*  r+  r,  r-  rÂ  s          r   Útest_arithmetic_operatorsz*TestRankFromDict.test_arithmetic_operators@  s&  € àSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSð �~Š~˜v¨°¨¸À°}Ð'EÐFÑGÔGˆÝ˜$ Ñ$Ô$Ð$Ð$Ð$ð �~Š~˜v°¸°ÈÐQTÈÐ'VÐ'VÐWÑXÔXˆÝ˜$ Ñ$Ô$Ð$Ð$Ð$ð �~Š~˜v¨°¨¸À°}Ð'EÐFÑGÔGˆÝ˜$ Ñ$Ô$Ð$Ð$Ð$ð �~Š~˜v°¸°ÈÐQTÈÐ'VÐ'VÐWÑXÔXˆÝ˜$ Ñ$Ô$Ð$Ð$Ð$Ð$Ð$r   c                 ó   — ddl m}m}m}m} |                     dddii¦  «        }t          ||¦  «        sJ ‚|                     dddii¦  «        }t          ||¦  «        sJ ‚|                     ddd	ii¦  «        }t          ||¦  «        sJ ‚d
S )zTest math function conversions.r   )rÀ  ÚAbsÚExpÚLogz$absry  g      à¿z$expr¼  z$logr�  N)rˆ  rÀ  r0  r1  r2  r­  rº   )ry   rÀ  r0  r1  r2  rÂ  s         r   Útest_math_functionsz$TestRankFromDict.test_math_functionsT  sÂ   € àNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNð �~Š~˜v¨° ~Ð6Ñ7Ô7ˆÝ˜$ Ñ$Ô$Ð$Ð$Ð$ð �~Š~˜v¨° }Ð5Ñ6Ô6ˆÝ˜$ Ñ$Ô$Ð$Ð$Ð$ð �~Š~˜v¨° }Ð5Ñ6Ô6ˆÝ˜$ Ñ$Ô$Ð$Ð$Ð$Ð$Ð$r   c                 óÖ   — ddl m}m}m} |                     dddiddigi¦  «        }t          ||¦  «        sJ ‚|                     dddiddigi¦  «        }t          ||¦  «        sJ ‚dS )	zTest min/max conversions.r   )rÀ  ÚMaxÚMinz$maxry  r®  rÉ  z$minN)rˆ  rÀ  r5  r6  r­  rº   )ry   rÀ  r5  r6  rÂ  s        r   Útest_aggregation_functionsz+TestRankFromDict.test_aggregation_functionsd  sœ   € àIÐIÐIÐIÐIÐIÐIÐIÐIÐIð �~Š~˜v¨°¨¸À°}Ð'EÐFÑGÔGˆÝ˜$ Ñ$Ô$Ð$Ð$Ð$ð �~Š~˜v¨°¨¸À°}Ð'EÐFÑGÔGˆÝ˜$ Ñ$Ô$Ð$Ð$Ð$Ð$Ð$r   c                 ó”   — ddl m}m} |                     ddddddgiid	d
igidd	did	digigi¦  «        }t	          ||¦  «        sJ ‚dS )z%Test complex nested rank expressions.r   )rÀ  r*  rz  rx  r}  r]   r   r   ry  rÉ  r®  N)rˆ  rÀ  r*  r­  rº   )ry   rÀ  r*  rÂ  s       r   Útest_complex_rank_expressionz-TestRankFromDict.test_complex_rank_expressionp  sŒ   € àDÐDÐDÐDÐDÐDÐDÐDà�~Š~àØ˜v¨°#°s°Ð'<Ð=ÀÈ¸}ÐMÐNØ˜v s˜m¨f°c¨]Ð;Ð<ððñ
ô 
ˆõ ˜$ Ñ$Ô$Ð$Ð$Ð$Ð$Ð$r   c                 óL  — ddl }ddlm}  |j        t          d¬¦  «        5  |                     d¦  «         ddd¦  «         n# 1 swxY w Y    |j        t          d¬¦  «        5  |                     i ¦  «         ddd¦  «         n# 1 swxY w Y    |j        t          d¬¦  «        5  |                     d	d
dgidœ¦  «         ddd¦  «         n# 1 swxY w Y    |j        t          d¬¦  «        5  |                     ddi¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zTest invalid Rank dict inputs.r   Nr¿  r  rç   r  r  zexactly one operatorr®  r]   r   )ry  r}  zrequires a numberry  znot a number)rÇ   rˆ  rÀ  ré   r*  r­  r$  )ry   rÇ   rÀ  s      r   Útest_invalid_rank_dictsz(TestRankFromDict.test_invalid_rank_dicts~  sR  € àˆˆˆØ?Ð?Ð?Ð?Ð?Ð?àˆVŒ]�9¨OÐ<Ñ<Ô<ð 	)ð 	)Ø�NŠN˜<Ñ(Ô(Ð(ð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð ˆVŒ]�:Ð->Ð?Ñ?Ô?ð 	ð 	Ø�NŠN˜2ÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ˆVŒ]�:Ð-CÐDÑDÔDð 	Dð 	DØ�NŠN C°'¸C¸5Ð1AÐBÐBÑCÔCÐCð	Dð 	Dð 	Dñ 	Dô 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Døøøð 	Dð 	Dð 	Dð 	Dð ˆVŒ]�9Ð,?Ð@Ñ@Ô@ð 	5ð 	5Ø�NŠN˜F NÐ3Ñ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	5ð 	5sG   ¢AÁAÁAÁ&BÂBÂBÂ*CÃCÃCÃ4DÄDÄ DN)r”   r•   r–   rã  r"  r(  r.  r3  r7  r9  r;  r   r   r   r   r     s„   € € € € € Ø+Ð+ð!ð !ð !ð ð  ð  ð@%ð %ð %ð(%ð %ð %ð 
%ð 
%ð 
%ð%ð %ð %ð5ð 5ð 5ð 5ð 5r   r   c                   ó6   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚTestLimitFromDictz"Test Limit.from_dict() conversion.c                 ót   — ddl m} |                     ddi¦  «        }|j        dk    sJ ‚|j        dk    sJ ‚dS )zTest limit without offset.r   ©ÚLimitr  rï  N©rˆ  r@  r­  r  rÇ  ©ry   r@  r  s      r   Útest_limit_onlyz!TestLimitFromDict.test_limit_only“  sU   € à@Ð@Ð@Ð@Ð@Ð@à—’ ¨" Ñ.Ô.ˆØŒ{˜bÒ Ð Ð Ð ØŒ|˜qÒ Ð Ð Ð Ð Ð r   c                 ól   — ddl m} |                     ddi¦  «        }|j        dk    sJ ‚|j        �J ‚dS )zTest offset without limit.r   r?  rÇ  r·   N)rˆ  r@  r­  rÇ  r  rB  s      r   Útest_offset_onlyz"TestLimitFromDict.test_offset_only›  sP   € à@Ð@Ð@Ð@Ð@Ð@à—’ ¨2 Ñ/Ô/ˆØŒ|˜rÒ!Ð!Ð!Ð!ØŒ{Ð"Ð"Ð"Ð"Ð"r   c                 óv   — ddl m} |                     dddœ¦  «        }|j        dk    sJ ‚|j        dk    sJ ‚dS )zTest both limit and offset.r   r?  rï  r·   rÆ  NrA  rB  s      r   Útest_limit_and_offsetz'TestLimitFromDict.test_limit_and_offset£  sY   € à@Ð@Ð@Ð@Ð@Ð@à—’¨"¸Ð ;Ð ;Ñ<Ô<ˆØŒ{˜bÒ Ð Ð Ð ØŒ|˜rÒ!Ð!Ð!Ð!Ð!Ð!r   c                 óÀ  — ddl }ddlm}  |j        t          d¬¦  «        5  |                     ddi¦  «         ddd¦  «         n# 1 swxY w Y    |j        t          d¬¦  «        5  |                     ddi¦  «         ddd¦  «         n# 1 swxY w Y    |j        t          d¬¦  «        5  |                     d	di¦  «         ddd¦  «         dS # 1 swxY w Y   dS )
zTest Limit validation.r   Nr?  zmust be positiverç   r  r)  zmust be non-negativerÇ  ©rÇ   rˆ  r@  ré   r$  r­  ©ry   rÇ   r@  s      r   Útest_validationz!TestLimitFromDict.test_validation«  s»  € àˆˆˆØ@Ð@Ð@Ð@Ð@Ð@ð ˆVŒ]�:Ð-?Ð@Ñ@Ô@ð 	+ð 	+Ø�OŠO˜W b˜MÑ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð ˆVŒ]�:Ð-?Ð@Ñ@Ô@ð 	*ð 	*Ø�OŠO˜W a˜LÑ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð ˆVŒ]�:Ð-CÐDÑDÔDð 	,ð 	,Ø�OŠO˜X r˜NÑ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð 	,ð 	,s5   ¢AÁA
ÁA
Á(BÂBÂBÂ.CÃCÃCc                 ó¼  — ddl }ddlm}  |j        t          d¬¦  «        5  |                     d¦  «         ddd¦  «         n# 1 swxY w Y    |j        t          d¬¦  «        5  |                     dd	i¦  «         ddd¦  «         n# 1 swxY w Y    |j        t          d¬¦  «        5  |                     d
di¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zTest type validation.r   Nr?  r  rç   r  zmust be an integerr  Ú20rÇ  g      %@)rÇ   rˆ  r@  ré   r*  r­  rJ  s      r   Útest_invalid_typesz$TestLimitFromDict.test_invalid_types¼  sµ  € àˆˆˆØ@Ð@Ð@Ð@Ð@Ð@àˆVŒ]�9¨OÐ<Ñ<Ô<ð 	*ð 	*Ø�OŠO˜LÑ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð ˆVŒ]�9Ð,@ÐAÑAÔAð 	-ð 	-Ø�OŠO˜W d˜OÑ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð ˆVŒ]�9Ð,@ÐAÑAÔAð 	.ð 	.Ø�OŠO˜X tÐ,Ñ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð 	.ð 	.s5   ¢AÁAÁAÁ&B
Â
BÂBÂ,CÃCÃCc                 óª   — ddl }ddlm}  |j        t          d¬¦  «        5  |                     dddœ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )	ú"Test rejection of unexpected keys.r   Nr?  úUnexpected keysrç   r·   re   )r  rË  rI  rJ  s      r   Útest_unexpected_keysz&TestLimitFromDict.test_unexpected_keysÊ  s³   € àˆˆˆØ@Ð@Ð@Ð@Ð@Ð@àˆVŒ]�:Ð->Ð?Ñ?Ô?ð 	=ð 	=Ø�OŠO b°UÐ;Ð;Ñ<Ô<Ð<ð	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ó   ¢AÁAÁAN)
r”   r•   r–   rã  rC  rE  rG  rK  rN  rR  r   r   r   r=  r=  �  st   € € € € € Ø,Ð,ð!ð !ð !ð#ð #ð #ð"ð "ð "ð,ð ,ð ,ð".ð .ð .ð=ð =ð =ð =ð =r   r=  c                   ó6   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚTestSelectFromDictz#Test Select.from_dict() conversion.c                 óÈ   — ddl m}m} |                     dg d¢i¦  «        }|j        |j        v sJ ‚|j        |j        v sJ ‚|j        |j        v sJ ‚|j        |j        v sJ ‚dS )zTest special key conversion.r   ©ÚSelectr£  r^   )rÍ  r~  rÏ  r©  N)	rˆ  rX  r£  r­  r  r^   Ú	EMBEDDINGÚMETADATAr¬  ©ry   rX  r£  rc  s       r   r  z$TestSelectFromDict.test_special_keysÖ  sš   € àFÐFÐFÐFÐFÐFÐFÐFà×!Ò!ØÐGÐGÐGÐHñ
ô 
ˆð Œ|˜vœ{Ð*Ð*Ð*Ð*ØŒ} ¤Ð+Ð+Ð+Ð+ØŒ|˜vœ{Ð*Ð*Ð*Ð*ØŒy˜FœKÐ'Ð'Ð'Ð'Ð'Ð'r   c                 óÀ   — ddl m}m} |                     dg d¢i¦  «        } |d¦  «        |j        v sJ ‚ |d¦  «        |j        v sJ ‚ |d¦  «        |j        v sJ ‚dS )	z!Test regular metadata field keys.r   rW  r^   )ÚtitleÚauthorÚdater]  r^  r_  N)rˆ  rX  r£  r­  r^   r[  s       r   Útest_metadata_keysz%TestSelectFromDict.test_metadata_keysâ  s�   € àFÐFÐFÐFÐFÐFÐFÐFà×!Ò! 6Ð+FÐ+FÐ+FÐ"GÑHÔHˆØˆs�7‰|Œ|˜vœ{Ð*Ð*Ð*Ð*Øˆs�8‰}Œ} ¤Ð+Ð+Ð+Ð+Øˆs�6‰{Œ{˜fœkÐ)Ð)Ð)Ð)Ð)Ð)r   c                 ó°   — ddl m}m} |                     dg d¢i¦  «        }|j        |j        v sJ ‚ |d¦  «        |j        v sJ ‚|j        |j        v sJ ‚dS )z&Test mix of special and metadata keys.r   rW  r^   )rÍ  r]  r©  r]  N)rˆ  rX  r£  r­  r  r^   r¬  r[  s       r   Útest_mixed_keysz"TestSelectFromDict.test_mixed_keysë  s„   € àFÐFÐFÐFÐFÐFÐFÐFà×!Ò! 6Ð+KÐ+KÐ+KÐ"LÑMÔMˆØŒ|˜vœ{Ð*Ð*Ð*Ð*Øˆs�7‰|Œ|˜vœ{Ð*Ð*Ð*Ð*ØŒy˜FœKÐ'Ð'Ð'Ð'Ð'Ð'r   c                 ót   — ddl m} |                     dg i¦  «        }t          |j        ¦  «        dk    sJ ‚dS )zTest empty keys list.r   ©rX  r^   N)rˆ  rX  r­  rB   r^   )ry   rX  rc  s      r   Útest_empty_keysz"TestSelectFromDict.test_empty_keysô  sL   € àAÐAÐAÐAÐAÐAà×!Ò! 6¨2 ,Ñ/Ô/ˆÝ�6”;ÑÔ 1Ò$Ð$Ð$Ð$Ð$Ð$r   c                 ó¾  — ddl }ddlm}  |j        t          d¬¦  «        5  |                     d¦  «         ddd¦  «         n# 1 swxY w Y    |j        t          d¬¦  «        5  |                     dd	i¦  «         ddd¦  «         n# 1 swxY w Y    |j        t          d
¬¦  «        5  |                     ddgi¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zTest Select validation.r   Nrd  r  rç   r  zmust be a list/tuple/setr^   z
not a listzmust be a stringrÚ  )rÇ   rˆ  rX  ré   r*  r­  ©ry   rÇ   rX  s      r   rK  z"TestSelectFromDict.test_validationû  s½  € àˆˆˆØAÐAÐAÐAÐAÐAàˆVŒ]�9¨OÐ<Ñ<Ô<ð 	+ð 	+Ø×Ò˜\Ñ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð ˆVŒ]�9Ð,FÐGÑGÔGð 	5ð 	5Ø×Ò˜f lÐ3Ñ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð ˆVŒ]�9Ð,>Ð?Ñ?Ô?ð 	.ð 	.Ø×Ò˜f s e˜_Ñ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð 	.ð 	.s5   ¢AÁAÁAÁ&B
Â
BÂBÂ,CÃCÃCc                 óª   — ddl }ddlm}  |j        t          d¬¦  «        5  |                     g ddœ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )rP  r   Nrd  rQ  rç   re   )r^   rË  )rÇ   rˆ  rX  ré   r$  r­  rg  s      r   rR  z'TestSelectFromDict.test_unexpected_keys	  sµ   € àˆˆˆØAÐAÐAÐAÐAÐAàˆVŒ]�:Ð->Ð?Ñ?Ô?ð 	=ð 	=Ø×Ò b°UÐ;Ð;Ñ<Ô<Ð<ð	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=ð 	=ð 	=rS  N)
r”   r•   r–   rã  r  r`  rb  re  rK  rR  r   r   r   rU  rU  Ó  st   € € € € € Ø-Ð-ð
(ð 
(ð 
(ð*ð *ð *ð(ð (ð (ð%ð %ð %ð.ð .ð .ð=ð =ð =ð =ð =r   rU  c                   ó6   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚTestRoundTripConversionz9Test that to_dict() and from_dict() round-trip correctly.c                 óî   — ddl m}m}m}  | |d¦  «        dk     |d¦  «        dk    g¦  «        }|                     ¦   «         }|                     |¦  «        }|                     ¦   «         |k    sJ ‚dS )z!Test Where round-trip conversion.r   r  r¸  r¹  rÈ  r®  N)rˆ  r·  r  r£  r‰  r­  )ry   r·  r  r£  rE  Ú	dict_formr	  s          r   Útest_where_round_tripz-TestRoundTripConversion.test_where_round_trip  s“   € àJÐJÐJÐJÐJÐJÐJÐJÐJÐJà�3˜˜˜H™œ¨Ò1°3°3°w±<´<À#Ò3EÐFÑGÔGˆØ×$Ò$Ñ&Ô&ˆ	Ø—?’? 9Ñ-Ô-ˆØ×ÒÑ!Ô! YÒ.Ð.Ð.Ð.Ð.Ð.r   c                 ó  ‡‡	— ddl Š	ddlm}m}m}  |ddg¬¦  «        dz   |d¦  «        dz  z   }|                     ¦   «         }|                     |¦  «        }|                     ¦   «         }ˆˆ	fd	„Š ‰||¦  «        sJ ‚dS )
z Test Rank round-trip conversion.r   N)rÀ  ru  rv  r   r   rá  rÉ  r®  c                 óZ  •— t          | t          ¦  «        �rt          |t          ¦  «        �rd| v r˜d|v r”| d         |d         }}d|v r€d|v r| ‰j        |d         ‰j        ¬¦  «        } ‰j        |d         ‰j        ¬¦  «        } ‰j        ||¦  «        sdS |D ]*}|dk    r"||         |                     |¦  «        k    r dS Œ+dS t          |                      ¦   «         ¦  «        t          |                     ¦   «         ¦  «        k    rdS | D ]} ‰| |         ||         ¦  «        s dS ŒdS t          | t          ¦  «        r`t          |t          ¦  «        rKt          | ¦  «        t          |¦  «        k    rdS t          ˆfd„t          | |¦  «        D ¦   «         ¦  «        S | |k    S )Nr}  r]   ©ÚdtypeFTc              3   ó6   •K  — | ]\  }} ‰||¦  «        V — Œd S r   r   )r@   r:   r;   Úcompare_dictss      €r   rp  zVTestRoundTripConversion.test_rank_round_trip.<locals>.compare_dicts.<locals>.<genexpr>E  s3   øè è € ÐGÐG±4°1°a˜=˜=¨¨AÑ.Ô.ÐGÐGÐGÐGÐGÐGr   )rº   r˜   rr   r  r'  rÓ   r_   r^   rÖ  rB   rC   rD   )	Úd1Úd2Úknn1Úknn2Úq1Úq2re   rs  rq   s	          €€r   rs  zCTestRoundTripConversion.test_rank_round_trip.<locals>.compare_dicts*  sÆ  ø€ Ý˜"�dÑ#Ô#ñ  ­
°2µtÑ(<Ô(<ñ  Ø˜R�<�< F¨b L Là!# F¤¨R°¬Z˜$�DØ $��¨7°d¨?¨?à%˜RœX d¨7¤m¸2¼:ÐFÑFÔF˜Ø%˜RœX d¨7¤m¸2¼:ÐFÑFÔF˜Ø*˜rœ{¨2¨rÑ2Ô2ð )Ø#( 5à#'ð -ð -˜CØ" gš~˜~°$°s´)¸t¿xºxÈ¹}¼}Ò2LÐ2LØ', u uøØ#˜tõ �r—w’w‘y”y‘>”>¥S¨¯ª©¬¡^¤^Ò3Ð3Ø ˜5Øð %ð %�CØ(˜=¨¨C¬°"°S´'Ñ:Ô:ð %Ø$˜u˜uð%à�tÝ˜B¥Ñ%Ô%ð  ­*°R½Ñ*>Ô*>ð  Ý�r‘7”7�c "™gœgÒ%Ð%Ø ˜5ÝÐGÐGÐGÐG½3¸rÀ2¹;¼;ÐGÑGÔGÑGÔGÐGà˜R’x�r   )r%  rˆ  rÀ  ru  rv  r‰  r­  )
ry   rÀ  ru  rv  rE  rl  r	  Úrestored_dictrs  rq   s
           @@r   Útest_rank_round_tripz,TestRoundTripConversion.test_rank_round_trip  sË   øø€ àÐÐÐØIÐIÐIÐIÐIÐIÐIÐIÐIÐIà�3˜c 3˜ZÐ(Ñ(Ô(¨3Ñ.°°°S±´¸C±Ñ?ˆØ×$Ò$Ñ&Ô&ˆ	Ø—>’> )Ñ,Ô,ˆØ ×(Ò(Ñ*Ô*ˆð	 ð 	 ð 	 ð 	 ð 	 ð 	 ð> ˆ}˜]¨IÑ6Ô6Ð6Ð6Ð6Ð6Ð6r   c                 ó²   — ddl m}  |dd¬¦  «        }|                     ¦   «         }|                     |¦  «        }|                     ¦   «         |k    sJ ‚dS )z!Test Limit round-trip conversion.r   r?  rï  r·   rÆ  N)rˆ  r@  r‰  r­  )ry   r@  rE  rl  r	  s        r   Útest_limit_round_tripz-TestRoundTripConversion.test_limit_round_tripK  sm   € à@Ð@Ð@Ð@Ð@Ð@à�5˜r¨"Ð-Ñ-Ô-ˆØ×$Ò$Ñ&Ô&ˆ	Ø—?’? 9Ñ-Ô-ˆØ×ÒÑ!Ô! YÒ.Ð.Ð.Ð.Ð.Ð.r   c                 ó,  — ddl m}m}  ||j         |d¦  «        |j        h¬¦  «        }|                     ¦   «         }|                     |¦  «        }t          |                     ¦   «         d         ¦  «        t          |d         ¦  «        k    sJ ‚dS )z"Test Select round-trip conversion.r   rW  r]  ©r^   r^   N)rˆ  rX  r£  r  r¬  r‰  r­  r_   )ry   rX  r£  rE  rl  r	  s         r   Útest_select_round_tripz.TestRoundTripConversion.test_select_round_tripT  s    € àFÐFÐFÐFÐFÐFÐFÐFà�6 ¤¨c¨c°'©l¬l¸C¼IÐFÐGÑGÔGˆØ×$Ò$Ñ&Ô&ˆ	Ø×#Ò# IÑ.Ô.ˆå�8×#Ò#Ñ%Ô% fÔ-Ñ.Ô.µ#°iÀÔ6GÑ2HÔ2HÒHÐHÐHÐHÐHÐHr   c                 ó¨  ‡
‡— ddl Šddlm} ddlm}m}m}m}  | |d¦  «        dk     |ddg¬	¦  «         |d
¬¦  «         ||j        h¬¦  «        ¬¦  «        }| 	                    ¦   «         } ||d         r|d         nd|d         r|d         nd|d         |d         ¬¦  «        }| 	                    ¦   «         }	ˆ
ˆfd„Š
 ‰
|	|¦  «        sJ ‚dS )z+Test Search round-trip through dict inputs.r   Nr´  )r£  ru  r@  rX  r¸  r¹  r   r   rá  r·   rÈ  r  rÔ  ÚfilterrÂ  r  rc  c                 óê  •— t          | t          ¦  «        �r×t          |t          ¦  «        �rÁd| v �rd|v �r| d         |d         }}t          |t          ¦  «        rÞt          |t          ¦  «        rÉd|v rÅd|v rÁ|d         |d         }}d|v r­d|v r© ‰
j        |d         ‰
j        ¬¦  «        } ‰
j        |d         ‰
j        ¬¦  «        } ‰
j        ||¦  «        sdS |D ]*}|dk    r"||         |                     |¦  «        k    r dS Œ+| D ]*}|dk    r"| |         |                     |¦  «        k    r dS Œ+dS t          |                      ¦   «         ¦  «        t          |                     ¦   «         ¦  «        k    rdS | D ]i}t          | |         t          ¦  «        r7t          ||         t          ¦  «        r ‰	| |         ||         ¦  «        s dS ŒT| |         ||         k    r dS ŒjdS | |k    S )NrÂ  r}  r]   rp  FT)rº   r˜   rr   r  r'  rÓ   r_   r^   )rt  ru  Úrank1Úrank2rv  rw  rx  ry  re   Úcompare_search_dictsrq   s            €€r   r†  zLTestRoundTripConversion.test_search_round_trip.<locals>.compare_search_dicts{  s%  ø€ Ý˜"�dÑ#Ô#ñ ! ­
°2µtÑ(<Ô(<ñ ! à˜R�<‘< F¨b L¡LØ#% f¤:¨r°&¬z˜5�EÝ! %­Ñ.Ô.ð ,µ:¸eÅTÑ3JÔ3Jð ,Ø! U˜?˜?¨v¸¨¨Ø).¨v¬¸¸f¼ $˜DØ&¨$˜˜°7¸d°?°?Ø%- R¤X¨d°7¬mÀ2Ä:Ð%NÑ%NÔ%N Ø%- R¤X¨d°7¬mÀ2Ä:Ð%NÑ%NÔ%N Ø'2 r¤{°2°rÑ':Ô':ð !1Ø+0¨5à+/ð !5ð !5 CØ'*¨g¢~ ~¸$¸s¼)ÀtÇxÂxÐPSÁ}Ä}Ò:TÐ:TØ/4¨u¨uøà+-ð !5ð !5 CØ'*¨f¢} }¸¸C¼ÀBÇFÂFÈ3ÁKÄKÒ9OÐ9OØ/4¨u¨uøØ'+ tõ �r—w’w‘y”y‘>”>¥S¨¯ª©¬¡^¤^Ò3Ð3Ø ˜5Øð %ð %�CÝ! " S¤'­4Ñ0Ô0ð %µZÀÀ3ÄÍÑ5NÔ5Nð %Ø3Ð3°B°s´G¸RÀ¼WÑEÔEð )Ø#( 5 5ð)à˜Cœ B s¤GÒ+Ð+Ø$˜u˜uð ,à�tà˜R’x�r   )
r%  rº  rµ  rˆ  r£  ru  r@  rX  r  r‰  )ry   rµ  r£  ru  r@  rX  Úoriginal_searchÚsearch_dictÚ
new_searchÚnew_dictr†  rq   s             @@r   Útest_search_round_tripz.TestRoundTripConversion.test_search_round_trip^  s]  øø€ àÐÐÐØ=Ð=Ð=Ð=Ð=Ð=ØRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRà ˜&Ø�#�h‘-”- 8Ò+Ø�˜C ˜:Ð&Ñ&Ô&Ø�%˜b�/‘/”/Ø�6 ¤˜~Ð.Ñ.Ô.ð	
ñ 
ô 
ˆð &×-Ò-Ñ/Ô/ˆð �VØ+6°xÔ+@ÐJ�+˜hÔ'Ð'ÀdØ(3°FÔ(;ÐE�˜VÔ$Ð$ÀØ˜gÔ&Ø˜xÔ(ð	
ñ 
ô 
ˆ
ð ×%Ò%Ñ'Ô'ˆð"	 ð "	 ð "	 ð "	 ð "	 ð "	 ðH $Ð# H¨kÑ:Ô:Ð:Ð:Ð:Ð:Ð:r   c           
      óÂ  — ddl m} ddlm}m}m}  | |d¦  «        dk     | |d¦  «        g ||j        gd¬¦  «        ¬	¦  «        ¬
¦  «        }|                     ¦   «         }|d         d         dgk    sJ ‚|d         d         ddgddœik    sJ ‚ ||                     |d         ¦  «        ¬¦  «        }|                     ¦   «         d         |d         k    sJ ‚dS )z%Test Search round-trip with group_by.r   r´  )r£  r   r¡  r¸  r¹  r  ro   r¥  r¦  )r  r®  r®  r^   r§  r¨  r©  rÝ  N)	rº  rµ  rˆ  r£  r   r¡  r¬  r‰  r­  )ry   rµ  r£  r   r¡  rE  rˆ  r	  s           r   Ú$test_search_round_trip_with_group_byz<TestRoundTripConversion.test_search_round_trip_with_group_by¡  sI  € à=Ð=Ð=Ð=Ð=Ð=ØMÐMÐMÐMÐMÐMÐMÐMÐMÐMà�6Ø�#�h‘-”- 8Ò+Ø�WØ�c˜*‘o”oÐ&Ø˜$ S¤Y K°1Ð5Ñ5Ô5ðñ ô ð
ñ 
ô 
ˆð ×&Ò&Ñ(Ô(ˆØ˜:Ô& vÔ.°:°,Ò>Ð>Ð>Ð>Ø˜:Ô& {Ô3Ø ˜z°Ð2Ð2ð8
ò 
ð 
ð 
ð 
ð
 �6 7×#4Ò#4°[ÀÔ5LÑ#MÔ#MÐNÑNÔNˆØ×ÒÑ!Ô! *Ô-°¸ZÔ1HÒHÐHÐHÐHÐHÐHr   N)
r”   r•   r–   rã  rm  r{  r}  r€  r‹  r�  r   r   r   rj  rj    s�   € € € € € ØCÐCð/ð /ð /ð+7ð +7ð +7ðZ/ð /ð /ðIð Ið IðA;ð A;ð A;ðFIð Ið Ið Ið Ir   rj  )r5   )r6   N)®r*   r-   Úsysr   rZ  r   r   Útypingr   rÒ   r%  rq   rÇ   r'   Úchromadb.server.fastapiÚchromadb.api.fastapir   rÕ  r   r   r	   r
   r   Úchromadb.configr   Úchromadb.errorsr   r   r   Ú"chromadb.utils.embedding_functionsr   Úfixturer   r1   r4   Úboolr=   rt  rE   ÚmarkÚparametrizerf   r    r­   rµ   rÀ   rÄ   rÊ   rÏ   rØ   r±   rã   rê   rî   rð   rñ   rö   rù   rü   r  r  r  r   r"  r%  r(  r*  r-  r/  r5  r8  r<  r@  rE  rG  rI  rR  rW  r[  r]  rb  rd  rf  ri  rs  rw  ry  r}  r  r�  r†  r‹  rŒ  rŽ  r‘  r”  r™  r–  r›  r   r£  r¦  r©  r«  r³  rº  Úbad_number_of_results_queryr¶  r¹  rÁ  rÇ  rÃ  rÉ  rÌ  rÔ  rÕ  rÚ  rõ   rÞ  rã  ræ  ré  rí  rö  rø  r  r  r
  r  r  r  r'  r-  r3  r5  r8  r:  r<  rC  rG  ÚflakyÚplatformÚ
startswithrP  r`  rx  r†  rˆ  rÃ  rä  r   r  r  r  r  r$  r*  r1  r7  r<  rB  rH  rO  rS  r]  rr  rž  r°  r²  rå  r   r=  rU  rj  r   r   r   ú<module>r�     sr  ðà 	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ø €€€à €€€Ø Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (ðð ð ð ð ð ð ð ð ð ð ð ð ð ð %Ð $Ð $Ð $Ð $Ð $ðð ð ð ð ð ð ð ð ð ð
 HÐ GÐ GÐ GÐ GÐ Gð „ðð ñ „ðð „ð7ð 7ñ „ð7ð( „ð7ð 7ñ „ð7ð&"ð "¨$ð "ð "ð "ð "ðFð F¨ð F¸$ð Fð Fð Fð Fð „×Ò˜Ð):Ð(;Ñ<Ô<ð#ð #ñ =Ô<ð#ð0 „×Ò˜Ð):Ð(;Ñ<Ô<ð%#ð %#ñ =Ô<ð%#ðP „×Ò˜Ð):Ð(;Ñ<Ô<ð+$ð +$ñ =Ô<ð+$ð\ „×Ò˜Ð):Ð(;Ñ<Ô<ð+ð +ñ =Ô<ð+ð*>ð >ð >ðð ð ð
,ð ,ð ,ð.ð .ð .ð<ð <ð <ð #�?�?Ð$4Ð$4Ð$4Ð5Ø#Ð%<Ð=ðð €ð#ð #ð #ð(ð (ð (ð#ð #ð #ð$ #�?�?Ð$4Ð$4Ð$4Ð5Ø#Ð%<Ð=ðð €ð#ð #ð #ð(ð (ð (ðð ð ð/ð /ð /ð+#ð +#ð +#ð\ð ð ð"ð "ð "ð#ð #ð #ð2#ð #ð #ð"0ð 0ð 0ðFð Fð Fð'ð 'ð 'ð#ð #ð #ðð ð ð+ð +ð +ð(ð (ð (ð$ð $ð $ð=ð =ð =ð./ð ./ð ./ðb#ð #ð #ð,
9ð 
9ð 
9ð2ð 2ð 2ð ,ð ,ð ,ð!ð !ð !ð!ð !ð !ð%ð %ð %ð$ð ð ð/ð /ð /ð;ð ;ð ;ð #�?�?Ð$4Ð$4Ð$4Ð5Ø�5ˆ>à¨¸uÐEÐEØ	�aÐððð Ð ð
Cð 
Cð 
CðFð Fð Fð:ð :ð :ð:ð :ð :ð9ð 9ð 9ð9ð 9ð 9ð  #�?�?Ð$4Ð$4Ð$4Ð5Ø�5ˆ>Ø˜X s˜OÐ,¨w¸	¸	¸	Ð.BÐCðð Ð ð/ð /ð /ðMð Mð Mð9ð 9ð 9ðWð Wð Wð #�?�?Ð$4Ð$4Ð$4Ð5Ø�5ˆ>à¨¸uÐEÐEØ¨¸uÐEÐEððð Ð ð(ð (ð (ð(ð (ð (ð(ð (ð (ð(ð (ð (ð(ð (ð (ð(ð (ð (ð$4ð $4ð $4ðR (Ð'Ð'Ð)>Ð)>Ð)>Ð?Ø�5ˆ>ðð Ð ð Ð-Ð-Ð-Ð/DÐ/DÐ/DÐEðÐ ð
 )˜˜Ð*:Ð*:Ð*:Ð;Øðð Ð ð'ð 'ð 'ð'ð 'ð 'ð)
ð )
ð )
ðZ #�?�?Ð$4Ð$4Ð$4Ð5Ø0Ð2GÐHØ�5ˆ>à¨¸uÐEÐEØ¨¸uÐEÐEðð	ð Ð ð(ð (ð (ð,ð ,ð ,ð,#ð #ð #ð" 	ˆˆØÐÐØÐÐØÐÐð	ð (Ð'Ð'à¨¸uÈEÐRÐRØ¨¸uÈEÐRÐRØ¨¸wÈeÐTÐTØ¨¸vÈUÐSÐSð	ðð ð ðð Ð ð.5(ð 5(ð 5(ðp$(ð $(ð $(ðT �9�9Ð.Ð.Ð.Ð/Ø�5ˆ>à¨¸uÐEÐEØ	�aÐðð +Ð,EÐFðð €ð$'ð $'ð $'ðN-ð -ð -ðJ@ð @ð @ð$ ð  ð  ð&$)ð $)ð $)ðN"ð "ð "ð#ð #ð #ð<4ð 4ð 4ð"/ð /ð /ð/ð /ð /ð!ð !ð !ð,ð ,ð ,ð<ð ð ð:(ð (ð (ð("ð "ð "ð4 �9�9Ð.Ð.Ð.Ð0@Ð0@Ð0@ÐAØ Ð Ð à¨¸uÐEÐEØ	�aÐØ	˜Ð!ðð
ð ð ðð €ð  #�?�?Ð$4Ð$4Ð$4Ð5Ø�5ˆ>à¨ÀeÐLÐLØ	�aÐðð
 	+Ø)ððð €ð+.ð +.ð +.ð\-ð -ð -ð%'ð %'ð %'ðV'ð 'ð 'ð'ð 'ð 'ð „×Ò˜! s¤|×'>Ò'>¸wÑ'GÔ'GÐÑHÔHðð ñ IÔHðð „×Ò˜! s¤|×'>Ò'>¸wÑ'GÔ'GÐÑHÔHð?ð ?ñ IÔHð?ð;ð ;ð ;ð6&9ð &9ð &9ðRT2ð T2ð T2ðnO@ð O@ð O@ðd]&ð ]&ð ]&ð@|(ð |(ð |(ð~(/ð (/ð (/ðVð ð ð8ð ð ð'(ð '(ð '(ðT$ð $ð $ð8 6ð  6ð  6ðF#"ð #"ð #"ðLGð Gð Gð@9ð 9ð 9ð@Gð Gð Gð>";ð ";ð ";ðJ"ð "ð "ðD""ð ""ð ""ðJ*Eð *Eð *EðZj3ð j3ð j3ð j3ðZ@#ð @#ð @#ð @#ðF
2Hð 2Hð 2Hð 2HðlOOð OOð OOð OOð OOñ OOô OOð OOðda*ð a*ð a*ð a*ð a*ñ a*ô a*ð a*ðHx5ð x5ð x5ð x5ð x5ñ x5ô x5ð x5ðv@=ð @=ð @=ð @=ð @=ñ @=ô @=ð @=ðF<=ð <=ð <=ð <=ð <=ñ <=ô <=ð <=ð~eIð eIð eIð eIð eIñ eIô eIð eIð eIð eIr   