Ë
    lQêj9 ã            
       ó’  — 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jN                  jQ                  de!g«      d„ «       Z)ejN                  jQ                  de!g«      d„ «       Z*ejN                  jQ                  de!g«      d„ «       Z+ejN                  jQ                  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.„ ZCd/„ ZDd0„ ZEd1„ ZFd2„ ZGd3„ ZHd4„ ZId5„ ZJd6„ ZKd7„ ZLd8„ ZMd9„ ZNd:„ ZOd;„ ZPd<„ ZQd=„ ZRd>„ ZSg d¢g d¢gd?d@gdAdBdCdDœdEdFigdGœZTdH„ ZUdI„ ZVdJ„ ZWdK„ ZXdL„ ZYdM„ ZZg d¢g d¢gd?d@gdNdOdPiidNg dQ¢igdGœZ[dR„ Z\dS„ Z]dT„ Z^dU„ Z_g d¢g d¢gd?d@gdAdBdCdDœdFdVdWdXœgdGœZ`dY„ ZadZ„ Zbd[„ Zcd\„ Zdd]„ Zed^„ Zfd_„ Zgg d`¢g da¢gd?d@gdœZhdbg d`¢g da¢giZig d¢g d¢gdcddœZjde„ Zkdf„ Zldg„ Zmg d¢g d¢gdhdigd?d@gdAdBdCdDœdFdVdWdXœgdjœZndk„ Zodl„ Zpdm„ Zqg d¢g d¢g dn¢g do¢gg dp¢dAdBdCdqdrœdFdVdWdqdsœdtdudvdqdsœdwdxdydqdsœgg dz¢d{œZrd|„ Zsd}„ Ztg d~¢g d¢gd?d@gdAdBdCdDœdEdFi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‘¢dAdBdCdDœdEdFid’dvigg d“¢d{œZ…g d”¢g d•¢gd?d–gdAd—dCdDœdEdwigd˜d™gd{œZ†dš„ Z‡d›„ Zˆdœ„ Z‰d�„ ZŠdž„ Z‹ejN                  �j                  dte�j                  �j                  dŸ«      ¬ «      d¡„ «       Z�ejN                  �j                  dte�j                  �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­y)Èé    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© ó    ú[/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/chromadb/test/test_api.pyÚpersist_dirr   !   s   € ä×ÑÓÐr   c              #   óî   K  — t        j                  t        ddddddd| ¬«      «      }|–— |j                  «        t        j
                  j                  | «      rt        j                  | d¬«       y y ­w©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   &   ój   è ø€ ä�_‰_ÜØ=Ø@Ø!CØ!CØ(aØØØ)ô		
ó€Fð ‚LØ
×ÑÔÜ	‡w�w‡~�~�kÔ"Ü�‰�k°Ö6ð #ùó   ‚A3A5c              #   óî   K  — t        j                  t        ddddddd| ¬«      «      }|–— |j                  «        t        j
                  j                  | «      rt        j                  | d¬«       y y ­wr   r&   r/   s     r   Úlocal_persist_api_cache_bustr5   ;   r2   r3   Úreturnc                 ó$   — t        | |z
  «      |k  S r   )Úabs©ÚaÚbÚ	tolerances      r   Úapprox_equalr=   O   s   € Üˆq�1‰u‹:˜	Ñ!Ð!r   r<   c                 ó¤   — t        | «      t        |«      k7  ryt        t        | |«      D � �cg c]  \  } }t        | ||«      ‘Œ c}} «      S c c}} w )NF)ÚlenÚallÚzipr=   r9   s      r   Úvector_approx_equalrB   S   sA   € Ü
ˆ1ƒv”�Q“ÒØÜ¼#¸aÀ»)×D±$°!°Q”˜Q  9Õ-ÓDÓEÐEùÓDs   ­A
Úapi_fixturec                 ó¼  — |j                  d«      }|j                  «        |j                  d«      }|j                  dd¬«       |j                  d«      }|j	                  d«      }g d¢}|j                  ddg d¢¬	«      }|j                  «       D ]H  }||v s|d
k(  rt        ||   «      dk(  rŒJ ‚|dk(  rt        ||   «      t        |«      k(  rŒ@J ‚||   €ŒHJ ‚ y )Nr1   ÚtestÚid1Úhello©ÚidsÚ	documentsr5   ©Ú
embeddingsrJ   Ú	metadatasÚ	distancesé   ©Úquery_textsÚ	n_resultsÚincluderI   Úincluded)	ÚgetfixturevalueÚresetÚcreate_collectionÚaddÚget_collectionÚqueryÚkeysr?   Úset)rC   Úrequestr0   Ú
collectionÚapi2ÚincludesÚnnÚkeys           r   Útest_persist_index_loadingrc   Y   sê   € à×$Ñ$Ð%8Ó9€FØ
‡L�L„NØ×)Ñ)¨&Ó1€JØ‡N�N�u¨€NÔ0à×"Ñ"Ð#AÓB€DØ×$Ñ$ VÓ,€JâD€HØ	×	Ñ	ØØÚEð 
ó 
€Bð
 �w‰w‹yò #ˆØ�8‰O ¨¢Ü�r˜#‘w“< 1Ó$Ð$Ð$Ø�JÒÜ�r˜#‘w“<¤3 x£=Ó0Ð0Ð0à�c‘7‘?Ð"�?ñ#r   c                 ó   —  G d„ dt         t           «      }|j                  d«      }|j                  «        |j	                  d |«       ¬«      }|j                  dd¬«       |j                  d	«      }|j                  d |«       ¬«      }g d
¢}|j                  dd|¬«      }|j                  «       D ]H  }||v s|dk(  rt        ||   «      dk(  rŒJ ‚|dk(  rt        ||   «      t        |«      k(  rŒ@J ‚||   €ŒHJ ‚ y )Nc                   ón   ‡ — 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                 óz   — t        t        |«      «      D �cg c]  }t        j                  g d¢«      ‘Œ c}S c c}w ©N©rO   é   é   ©Úranger?   ÚnpÚarray©ÚselfÚinputÚ_s      r   Ú__call__zFtest_persist_index_loading_embedding_function.<locals>.TestEF.__call__u   ó(   € Ü16´s¸5³zÓ1BÖC¨A”B—H‘HšYÕ'ÒCÐCùÒCó   —8ÚargsÚkwargsr6   Nc                 ó$   •— t        ‰| �  |i |¤Ž y r   ©ÚsuperÚ__init__©rq   rw   rx   Ú	__class__s      €r   r|   zFtest_persist_index_loading_embedding_function.<locals>.TestEF.__init__x   ó   ø€ Ü‰GÑ˜dÐ- fÓ-r   c                  ó   — y©NrE   r   ©rq   s    r   ÚnamezBtest_persist_index_loading_embedding_function.<locals>.TestEF.name{   ó   € Ør   Úconfigc                  ó   — y r   r   ©rq   r…   s     r   Úbuild_from_configzOtest_persist_index_loading_embedding_function.<locals>.TestEF.build_from_config~   ó   € Ør   c                 ó   — i S r   r   r‚   s    r   Ú
get_configzHtest_persist_index_loading_embedding_function.<locals>.TestEF.get_config�   ó   € ØˆIr   ©Ú__name__Ú
__module__Ú__qualname__rt   r   r|   Ústrrƒ   Údictrˆ   r‹   Ú__classcell__©r~   s   @r   ÚTestEFrf   t   ó^   ø„ ò	Dð	. #ð 	.°ð 	.¸õ 	.ð	˜#ó 	ð	¨D°°c°©Nð 	¸tó 	ð	  S¨# X¡÷ 	r   r•   r1   rE   ©Úembedding_functionrF   rG   rH   r5   rK   rO   rP   rI   rT   )r   r   rU   rV   rW   rX   rY   rZ   r[   r?   r\   )	rC   r]   r•   r0   r^   Úclient2r`   ra   rb   s	            r   Ú-test_persist_index_loading_embedding_functionrš   r   s  € ôÔ"¤8Ñ,ô ð  ×$Ñ$Ð%8Ó9€FØ
‡L�L„NØ×)Ñ)¨&ÁVÃXÐ)ÓN€JØ‡N�N�u¨€NÔ0à×%Ñ%Ð&DÓE€GØ×'Ñ'¨Á6Ã8Ð'ÓL€JâD€HØ	×	Ñ	ØØØð 
ó 
€Bð
 �w‰w‹yò #ˆØ�8‰O ¨¢Ü�r˜#‘w“< 1Ó$Ð$Ð$Ø�JÒÜ�r˜#‘w“<¤3 x£=Ó0Ð0Ð0à�c‘7‘?Ð"�?ñ#r   c                 óˆ  —  G d„ dt         t           «      }|j                  d«      }|j                  «        |j	                  d |«       ¬«      }|j                  dd¬«       |j                  d	«      }|j	                  d |«       ¬«      }g d
¢}|j                  dd|¬«      }|j                  «       D ]H  }||v s|dk(  rt        ||   «      dk(  rŒJ ‚|dk(  rt        ||   «      t        |«      k(  rŒ@J ‚||   €ŒHJ ‚ |d   dggk(  sJ ‚|d   d   d   j                  «       g d¢k(  sJ ‚|d   dggk(  sJ ‚|d   dggk(  sJ ‚y )Nc                   ón   ‡ — 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                 óz   — t        t        |«      «      D �cg c]  }t        j                  g d¢«      ‘Œ c}S c c}w rh   rl   rp   s      r   rt   zLtest_persist_index_get_or_create_embedding_function.<locals>.TestEF.__call__ž   ru   rv   rw   rx   r6   Nc                 ó$   •— t        ‰| �  |i |¤Ž y r   rz   r}   s      €r   r|   zLtest_persist_index_get_or_create_embedding_function.<locals>.TestEF.__init__¡   r   r   c                  ó   — yr�   r   r‚   s    r   rƒ   zHtest_persist_index_get_or_create_embedding_function.<locals>.TestEF.name¤   r„   r   r…   c                  ó   — y 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   rE   r—   rF   rG   rH   r5   rK   rO   rP   rI   rT   rL   r   ri   rJ   rN   )r   r   rU   rV   Úget_or_create_collectionrX   rZ   r[   r?   r\   Útolist)	rC   r]   r•   Úapir^   r_   r`   ra   rb   s	            r   Ú3test_persist_index_get_or_create_embedding_functionr¦   ›   sv  € ôÔ"¤8Ñ,ô ð  ×
!Ñ
!Ð"5Ó
6€CØ‡I�I„KØ×-Ñ-¨fÉËÐ-ÓR€JØ‡N�N�u¨€NÔ0à×"Ñ"Ð#AÓB€DØ×.Ñ.¨vÉ&Ë(Ð.ÓS€JâD€HØ	×	Ñ	ØØØð 
ó 
€Bð �w‰w‹yò #ˆØ�8‰O ¨¢Ü�r˜#‘w“< 1Ó$Ð$Ð$Ø�JÒÜ�r˜#‘w“<¤3 x£=Ó0Ð0Ð0à�c‘7‘?Ð"�?ð#ð ˆe‰9˜%˜˜	Ò!Ð!Ð!ØˆlÑ˜AÑ˜qÑ!×(Ñ(Ó*ªiÒ7Ð7Ð7Øˆk‰? ˜y˜kÒ)Ð)Ð)Øˆk‰? ˜s˜eÒ#Ð#Ñ#r   c                 óÖ  — |j                  | j                  «      }|j                  «        |j                  d«      } |j                  di t
        ¤Ž |j                  «       dk(  sJ ‚|j                  | j                  «      }|j                  d«      }|j                  «       dk(  sJ ‚|j                  d«       |j                  | j                  «      }|j                  «       g k(  sJ ‚y ©NÚ	testspacerj   r   )
rU   rŽ   rV   rW   rX   Úbatch_recordsÚcountrY   Údelete_collectionÚlist_collections)rC   r]   r0   r^   s       r   Útest_persistr®   Ê   sÑ   € à×$Ñ$ [×%9Ñ%9Ó:€Fà
‡L�L„Nà×)Ñ)¨+Ó6€Jà€J‡N�NÑ#”]Ò#à×ÑÓ Ò"Ð"Ð"à×$Ñ$ [×%9Ñ%9Ó:€FØ×&Ñ& {Ó3€JØ×ÑÓ Ò"Ð"Ð"à
×Ñ˜[Ô)à×$Ñ$ [×%9Ñ%9Ó:€FØ×"Ñ"Ó$¨Ò*Ð*Ñ*r   c                 óÈ   — | j                  «       }t        |t        «      sJ ‚|dz  }t        j                  |«      }|t        j
                  «       t        d¬«      z
  kD  sJ ‚y )Ni Êš;é
   )Úseconds)Ú	heartbeatÚ
isinstanceÚintr   ÚfromtimestampÚnowr   )r0   Úheartbeat_nsÚheartbeat_sr²   s       r   Útest_heartbeatr¹   à   sX   € Ø×#Ñ#Ó%€LÜ�l¤CÔ(Ð(Ð(à %Ñ'€KÜ×&Ñ& {Ó3€IØ”x—|‘|“~¬	¸"Ô(=Ñ=Ò=Ð=Ñ=r   c                 ó2   — | j                  «       }|dkD  sJ ‚y )Nr   )Úget_max_batch_size)r0   Ú
batch_sizes     r   Útest_max_batch_sizer½   é   s   € Ø×*Ñ*Ó,€JØ˜Š>Ð‰>r   c                 óš   — t        | t        «      st        j                  d«       | j	                  «        | j                  «       }|du sJ ‚y )NúNot a FastAPI instanceT)r³   r   ÚpytestÚskiprV   Úsupports_base64_encoding)r0   rÂ   s     r   Útest_supports_base64_encodingrÃ   î   s?   € Ü�fœgÔ&Ü�‰Ð,Ô-à
‡L�L„Nà%×>Ñ>Ó@ÐØ# tÑ+Ð+Ñ+r   c                 óÒ   — t        | t        «      st        j                  d«       | j	                  «        ddi| _        | j                  «       du sJ ‚| j                  «       dk(  sJ ‚y )Nr¿   Úmax_batch_sizeéd   F)r³   r   rÀ   rÁ   rV   Úpre_flight_checksrÂ   r»   )r0   s    r   Ú$test_supports_base64_encoding_legacyrÈ   ø   sc   € Ü�fœgÔ&Ü�‰Ð,Ô-à
‡L�L„Nð 	˜#ð €FÔð ×*Ñ*Ó,°Ñ5Ð5Ð5Ø×$Ñ$Ó&¨#Ò-Ð-Ñ-r   c                 ó`  — t        | t        «      st        j                  d«       t	        j
                  | j                  › d�«      }|j                  dk(  sJ ‚|j                  «       €J ‚d|j                  «       j                  «       v sJ ‚d|j                  «       j                  «       v sJ ‚y )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‰9˜Ÿ™Ð(Ð(:Ð;Ó<€DØ×Ñ˜sÒ"Ð"Ð"Ø�9‰9‹;Ð"Ð"Ð"Ø˜tŸy™y›{×/Ñ/Ó1Ñ1Ð1Ð1Ø%¨¯©«×)9Ñ)9Ó);Ñ;Ð;Ñ;r   ©çš™™™™™ñ?çffffff@çš™™™™™	@©ç333333ó?çìQ¸…ë@rÕ   zhttps://example.com/1zhttps://example.com/2©rL   rI   c                 óœ   — | j                  «        | j                  d«      } |j                  di t        ¤Ž |j	                  «       dk(  sJ ‚y r¨   )rV   rW   rX   rª   r«   ©r0   r^   s     r   Útest_addrÜ     sC   € Ø
‡L�L„Nà×)Ñ)¨+Ó6€Jà€J‡N�NÑ#”]Ò#à×ÑÓ Ò"Ð"Ñ"r   c                 óô   — | j                  «        | j                  d«      }| j                  d«       t        j                  t
        d¬«      5   |j                  di t        ¤Ž d d d «       y # 1 sw Y   y xY w©NrE   úCollection .* does not exist©Úmatchr   )rV   rW   r¬   rÀ   Úraisesr   rX   rª   rÛ   s     r   Ú2test_collection_add_with_invalid_collection_throwsrã   "  s^   € Ø
‡L�L„NØ×)Ñ)¨&Ó1€JØ
×Ñ˜VÔ$ä	�‰”}Ð,KÔ	Lñ (Øˆ
�‰Ñ'œÒ'÷(÷ (ñ (úó   ÁA.Á.A7c                 óf  — | j                  «        | j                  d«      } |j                  di t        ¤Ž |j	                  «       dk(  sJ ‚t        j                  t        «      5  | j                  d«      }d d d «       | j                  d«      }|j	                  «       dk(  sJ ‚y # 1 sw Y   Œ0xY wr¨   )	rV   rW   rX   rª   r«   rÀ   râ   Ú	Exceptionr£   rÛ   s     r   Útest_get_or_createrç   +  s�   € Ø
‡L�L„Nà×)Ñ)¨+Ó6€Jà€J‡N�NÑ#”]Ò#à×ÑÓ Ò"Ð"Ð"ä	�‰”yÓ	!ñ ;Ø×-Ñ-¨kÓ:ˆ
÷;ð ×0Ñ0°Ó=€Jà×ÑÓ Ò"Ð"Ñ"÷;ð ;ús   Á&B'Â'B0c                 óœ   — | j                  «        | j                  d«      } |j                  di t        ¤Ž |j	                  «       dk(  sJ ‚y r¨   )rV   rW   rX   Úminimal_recordsr«   rÛ   s     r   Útest_add_minimalrê   B  sC   € Ø
‡L�L„Nà×)Ñ)¨+Ó6€Jà€J‡N�NÑ%”_Ò%à×ÑÓ Ò"Ð"Ñ"r   c                 óT  — | j                  «        | j                  d«      } |j                  di t        ¤Ž g d¢}|j	                  |¬«      }|j                  «       D ]H  }||v s|dk(  rt        ||   «      dk(  rŒJ ‚|dk(  rt        ||   «      t        |«      k(  rŒ@J ‚||   €ŒHJ ‚ y )Nr©   ©rL   rJ   rM   ©rS   rI   rj   rT   r   )rV   rW   rX   rª   rÌ   r[   r?   r\   )r0   r^   r`   Úrecordsrb   s        r   Útest_get_from_dbrï   L  s­   € Ø
‡L�L„NØ×)Ñ)¨+Ó6€JØ€J‡N�NÑ#”]Ò#Ú7€HØ�n‰n XˆnÓ.€GØ�|‰|‹~ò (ˆØ�8‰O ¨¢Ü�w˜s‘|Ó$¨Ó)Ð)Ð)Ø�JÒÜ�w˜s‘|Ó$¬¨H«Ó5Ð5Ð5à˜3‘<Ñ'Ð'Ð'ñ(r   c                 óè   — | j                  «        | j                  d«      }| j                  d«       t        j                  t
        d¬«      5  |j                  «        d d d «       y # 1 sw Y   y xY w©NrE   rß   rà   )rV   rW   r¬   rÀ   râ   r   rÌ   rÛ   s     r   Ú2test_collection_get_with_invalid_collection_throwsrò   [  sW   € Ø
‡L�L„NØ×)Ñ)¨&Ó1€JØ
×Ñ˜VÔ$ä	�‰”}Ð,KÔ	Lñ Ø�‰Ô÷÷ ñ úó   ÁA(Á(A1c                 óø   — | j                  «        | j                  d«      } |j                  di t        ¤Ž |j	                  «       dk(  sJ ‚| j                  «        t        | j                  «       «      dk(  sJ ‚y )Nr©   rj   r   r   )rV   rW   rX   rª   r«   r?   r­   rÛ   s     r   Útest_reset_dbrõ   d  sh   € Ø
‡L�L„Nà×)Ñ)¨+Ó6€JØ€J‡N�NÑ#”]Ò#Ø×ÑÓ Ò"Ð"Ð"à
‡L�L„NÜˆv×&Ñ&Ó(Ó)¨QÒ.Ð.Ñ.r   c                 ó*  — | j                  «        | j                  d«      } |j                  d
i t        ¤Ž g d¢}|j	                  g d¢d|¬«      }|j                  «       D ]H  }||v s|dk(  rt        ||   «      dk(  rŒJ ‚|dk(  rt        ||   «      t        |«      k(  rŒ@J ‚||   €ŒHJ ‚ |j	                  g d¢gd|¬«      }|j                  «       D ]H  }||v s|dk(  rt        ||   «      dk(  rŒJ ‚|dk(  rt        ||   «      t        |«      k(  rŒ@J ‚||   €ŒHJ ‚ |j	                  g d¢g d¢gd|¬«      }|j                  «       D ]H  }||v s|dk(  rt        ||   «      d	k(  rŒJ ‚|dk(  rt        ||   «      t        |«      k(  rŒ@J ‚||   €ŒHJ ‚ y )Nr©   rK   rÒ   rO   ©Úquery_embeddingsrR   rS   rI   rT   )çš™™™™™¹?rÔ   ç      @rj   r   )rV   rW   rX   rª   rZ   r[   r?   r\   ©r0   r^   r`   ra   rb   s        r   Útest_get_nearest_neighborsrü   o  sÕ  € Ø
‡L�L„NØ×)Ñ)¨+Ó6€JØ€J‡N�NÑ#”]Ò#âD€HØ	×	Ñ	Ú(ØØð 
ó 
€Bð
 �w‰w‹yò #ˆØ�8‰O ¨¢Ü�r˜#‘w“< 1Ó$Ð$Ð$Ø�JÒÜ�r˜#‘w“<¤3 x£=Ó0Ð0Ð0à�c‘7‘?Ð"�?ð#ð 
×	Ñ	Ú)Ð*ØØð 
ó 
€Bð
 �w‰w‹yò #ˆØ�8‰O ¨¢Ü�r˜#‘w“< 1Ó$Ð$Ð$Ø�JÒÜ�r˜#‘w“<¤3 x£=Ó0Ð0Ð0à�c‘7‘?Ð"�?ð#ð 
×	Ñ	Ú)ª?Ð;ØØð 
ó 
€Bð
 �w‰w‹yò #ˆØ�8‰O ¨¢Ü�r˜#‘w“< 1Ó$Ð$Ð$Ø�JÒÜ�r˜#‘w“<¤3 x£=Ó0Ð0Ð0à�c‘7‘?Ð"�?ñ#r   c                 ó  — | j                  «        | j                  d«      } |j                  di t        ¤Ž |j	                  «       dk(  sJ ‚t        j                  t        «      5  |j                  «        d d d «       y # 1 sw Y   y xY wr¨   )	rV   rW   rX   rª   r«   rÀ   râ   ræ   ÚdeleterÛ   s     r   Útest_deleterÿ   �  sp   € Ø
‡L�L„NØ×)Ñ)¨+Ó6€JØ€J‡N�NÑ#”]Ò#Ø×ÑÓ Ò"Ð"Ð"ä	�‰”yÓ	!ñ Ø×ÑÔ÷÷ ñ ús   Á&B Â B	c                 ó  — | j                  «        | j                  d«      } |j                  di t        ¤Ž |j	                  «       dk(  sJ ‚|j                  t        d   ¬«      }t        |t        «      sJ ‚d|v sJ ‚|d   dk\  sJ ‚y )Nr©   rj   rI   ©rI   Údeletedr   r   )rV   rW   rX   rª   r«   rþ   r³   r’   ©r0   r^   Úresults      r   Ú!test_delete_returns_delete_resultr  §  sŒ   € Ø
‡L�L„NØ×)Ñ)¨+Ó6€JØ€J‡N�NÑ#”]Ò#Ø×ÑÓ Ò"Ð"Ð"Ø×Ñ¤=°Ñ#7ÐÓ8€FÜ�fœdÔ#Ð#Ð#Ø˜ÑÐÐØ�)Ñ Ò!Ð!Ñ!r   c           
      óH  — | j                  «        | j                  dddi¬«      }|j                  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¬«       |j                  «       dk(  sJ ‚|j	                  ddid¬«      }|d   dk(  sJ ‚|j                  «       dk(  sJ ‚y )Nr©   ú
hnsw:spaceÚl2©Úmetadata)rF   Úid2Úid3Úid4Úid5©rO   r   r   ©r   rO   r   ©r   r   rO   )rO   rO   r   )r   rO   rO   Úcategoryr:   r;   ©rI   rL   rM   é   rj   ©ÚwhereÚlimitr  rk   ©rV   rW   rX   r«   rþ   r  s      r   Útest_delete_with_limitr  ²  sÛ   € Ø
‡L�L„NØ×)Ñ)ØØ Ð%ð *ó €Jð ‡N�NÚ/Úšyª)²YÂ	ÐJà˜ÐØ˜ÐØ˜ÐØ˜ÐØ˜Ðð
ð ô 
ð ×ÑÓ Ò"Ð"Ð"ð ×Ñ j°#Ð%6¸aÐÓ@€FØ�)Ñ Ò!Ð!Ð!Ø×ÑÓ Ò"Ð"Ñ"r   c                 ó$  — | j                  «        | j                  dddi¬«      }|j                  ddgg d¢g d¢gd	d
id	d
ig¬«       |j                  «       dk(  sJ ‚|j	                  d	d
id¬«      }|d   dk(  sJ ‚|j                  «       dk(  sJ ‚y )Nr©   r  r  r	  rF   r  r  r  r  r:   r  rj   r   r  r  r  r  s      r   Ú#test_delete_with_limit_zero_is_noopr  Ë  s¼   € Ø
‡L�L„NØ×)Ñ)ØØ Ð%ð *ó €Jð ‡N�NØ�EˆNÚšyÐ)Ø Ð$ z°3Ð&7Ð8ð ô ð
 ×ÑÓ Ò"Ð"Ð"Ø×Ñ j°#Ð%6¸aÐÓ@€FØ�)Ñ Ò!Ð!Ð!Ø×ÑÓ Ò"Ð"Ñ"r   c                 óú   — | j                  «        | j                  d«      } |j                  di t        ¤Ž t	        j
                  t        d¬«      5  |j                  dgd¬«       d d d «       y # 1 sw Y   y xY w)Nr©   zlimit can only be specifiedrà   rF   r  )rI   r  r   )rV   rW   rX   rª   rÀ   râ   Ú
ValueErrorrþ   rÛ   s     r   Ú%test_delete_with_limit_requires_wherer  Ü  se   € Ø
‡L�L„NØ×)Ñ)¨+Ó6€JØ€J‡N�NÑ#”]Ò#Ü	�‰”zÐ)FÔ	Gñ 0Ø×Ñ˜u˜g¨QÐÔ/÷0÷ 0ñ 0ús   ÁA1Á1A:c                 óÈ   — | j                  «        | j                  d«      } |j                  di t        ¤Ž |j	                  «       dk(  sJ ‚|j                  g d¢gd¬«       y )Nr©   rj   rÒ   rO   ©rø   rR   r   )rV   rW   rX   rª   r«   rZ   rÛ   s     r   Útest_delete_with_indexr!  ä  sY   € Ø
‡L�L„NØ×)Ñ)¨+Ó6€JØ€J‡N�NÑ#”]Ò#Ø×ÑÓ Ò"Ð"Ð"Ø×Ñ¢Ð&7À1ÐÕEr   c                 óî   — | j                  «        | j                  d«      }| j                  d«       t        j                  t
        d¬«      5  |j                  dg¬«       d d d «       y # 1 sw Y   y xY w)NrE   rß   rà   rF   r  )rV   rW   r¬   rÀ   râ   r   rþ   rÛ   s     r   Ú5test_collection_delete_with_invalid_collection_throwsr#  ì  s`   € Ø
‡L�L„NØ×)Ñ)¨&Ó1€JØ
×Ñ˜VÔ$ä	�‰”}Ð,KÔ	Lñ 'Ø×Ñ˜u˜gÐÔ&÷'÷ 'ñ 'úó   ÁA+Á+A4c                 óÆ   — | j                  «        | j                  d«      }|j                  «       dk(  sJ ‚ |j                  di t        ¤Ž |j                  «       dk(  sJ ‚y )Nr©   r   rj   r   )rV   rW   r«   rX   rª   rÛ   s     r   Ú
test_countr&  õ  sZ   € Ø
‡L�L„NØ×)Ñ)¨+Ó6€JØ×ÑÓ Ò"Ð"Ð"Ø€J‡N�NÑ#”]Ò#Ø×ÑÓ Ò"Ð"Ñ"r   c                 óè   — | j                  «        | j                  d«      }| j                  d«       t        j                  t
        d¬«      5  |j                  «        d d d «       y # 1 sw Y   y xY wrñ   )rV   rW   r¬   rÀ   râ   r   r«   rÛ   s     r   Ú4test_collection_count_with_invalid_collection_throwsr(  ý  sY   € Ø
‡L�L„NØ×)Ñ)¨&Ó1€JØ
×Ñ˜VÔ$ä	�‰”}Ð,KÔ	Lñ Ø×ÑÔ÷÷ ñ úró   c                 óŒ   — | j                  «        | j                  d«      }|j                  d¬«       |j                  dk(  sJ ‚y ©Nr©   Ú
testspace2©rƒ   )rV   rW   Úmodifyrƒ   rÛ   s     r   Útest_modifyr.    s@   € Ø
‡L�L„NØ×)Ñ)¨+Ó6€JØ×Ñ˜<ÐÔ(ð �?‰?˜lÒ*Ð*Ñ*r   c                 óì   — | j                  «        | j                  d«      }| j                  d«       t        j                  t
        d¬«      5  |j                  d¬«       d d d «       y # 1 sw Y   y xY w)NrE   rß   rà   Útest2r,  )rV   rW   r¬   rÀ   râ   r   r-  rÛ   s     r   Ú5test_collection_modify_with_invalid_collection_throwsr1    s^   € Ø
‡L�L„NØ×)Ñ)¨&Ó1€JØ
×Ñ˜VÔ$ä	�‰”}Ð,KÔ	Lñ (Ø×Ñ˜wÐÔ'÷(÷ (ñ (ús   ÁA*Á*A3c                 óè   — | j                  «        | j                  d«       | j                  d«      }t        j                  t        «      5  |j                  d¬«       d d d «       y # 1 sw Y   y xY wr*  ©rV   rW   rÀ   râ   ræ   r-  )r0   Úc2s     r   Ú"test_modify_error_on_existing_namer5    sX   € Ø
‡L�L„Nà
×Ñ˜[Ô)Ø	×	!Ñ	! ,Ó	/€Bä	�‰”yÓ	!ñ $Ø
�	‰	�{ˆ	Ô#÷$÷ $ñ $ús   ÁA(Á(A1c                 óÎ   — | j                  «        | j                  d«      }t        j                  t        d¬«      5  |j                  ddi¬«       d d d «       y # 1 sw Y   y xY w)Nr©   znot supportedrà   r  Úcosiner	  r3  )r0   Úcaplogr^   s      r   Útest_modify_warn_on_DF_changer9  "  sT   € Ø
‡L�L„Nà×)Ñ)¨+Ó6€Jä	�‰”y¨Ô	8ñ =Ø×Ñ L°(Ð#;ÐÔ<÷=÷ =ñ =ús   ½AÁA$c                 óX  — | j                  «        dddœ}| j                  d|¬«      }|j                  €J ‚|j                  d   dk(  sJ ‚|j                  d   dk(  sJ ‚| j                  d«      }|j                  €J ‚|j                  d   dk(  sJ ‚|j                  d   dk(  sJ ‚|j	                  ddd	œ¬«       |j                  d   dk(  sJ ‚|j                  d
   dk(  sJ ‚d|j                  vsJ ‚| j                  d«      }|j                  €J ‚|j                  d   dk(  sJ ‚|j                  d
   dk(  sJ ‚d|j                  vsJ ‚| j                  d«      }|j                  €J ‚|j                  d   dk(  sJ ‚|j                  d
   dk(  sJ ‚| j                  d«      }|j                  �J ‚| j                  «       }|D ]f  }|j                  dk(  r7|j                  €J ‚|j                  d   dk(  sJ ‚|j                  d
   dk(  rŒGJ ‚|j                  dk(  sŒY|j                  €ŒfJ ‚ y )NrO   rj   )r:   r;   r©   r	  r:   r;   rk   )r:   Úcr;  r+  )rV   rW   r
  rY   r-  r£   r­   rƒ   )r0   Ú
metadata_ar^   Úcollectionss       r   Útest_metadata_crur>  +  s“  € Ø
‡L�L„NØ˜qÑ!€Jà×)Ñ)¨+À
Ð)ÓK€JØ×ÑÐ*Ð*Ð*Ø×Ñ˜sÑ# qÒ(Ð(Ð(Ø×Ñ˜sÑ# qÒ(Ð(Ð(ð ×&Ñ& {Ó3€JØ×ÑÐ*Ð*Ð*Ø×Ñ˜sÑ# qÒ(Ð(Ð(Ø×Ñ˜sÑ# qÒ(Ð(Ð(ð ×Ñ Q¨QÑ/ÐÔ0Ø×Ñ˜sÑ# qÒ(Ð(Ð(Ø×Ñ˜sÑ# qÒ(Ð(Ð(Ø�j×)Ñ)Ñ)Ð)Ð)ð ×&Ñ& {Ó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Ø×&Ñ& sÑ+¨qÓ0Ð0Ð0Ø�_‰_ Ó,Ø×&Ñ&Ñ.Ð.Ð.ñ/r   c                 óˆ  — | j                  «        | j                  d«      } |j                  d	i t        ¤Ž |j	                  «       dk(  sJ ‚g d¢}|j                  g d¢gd|¬«      }|j                  «       D ]H  }||v s|dk(  rt        ||   «      dk(  rŒJ ‚|dk(  rt        ||   «      t        |«      k(  rŒ@J ‚||   €ŒHJ ‚ y )
Nr©   rj   rK   rÒ   rO   r÷   rI   rT   r   )	rV   rW   rX   rª   r«   rZ   r[   r?   r\   rû   s        r   Útest_increment_index_onr@  \  sÓ   € Ø
‡L�L„NØ×)Ñ)¨+Ó6€JØ€J‡N�NÑ#”]Ò#Ø×ÑÓ Ò"Ð"Ð"âD€Hà	×	Ñ	Ú)Ð*ØØð 
ó 
€Bð
 �w‰w‹yò #ˆØ�8‰O ¨¢Ü�r˜#‘w“< 1Ó$Ð$Ð$Ø�JÒÜ�r˜#‘w“<¤3 x£=Ó0Ð0Ð0à�c‘7‘?Ð"�?ñ#r   c                 ó  — | j                  «        | j                  d«       | j                  d«      }|j                  dk(  sJ ‚t	        j
                  t        «      5  | j                  d«      }d d d «       y # 1 sw Y   y xY w)Nr©   r+  )rV   rW   rY   rƒ   rÀ   râ   ræ   rÛ   s     r   Útest_add_a_collectionrB  r  sp   € Ø
‡L�L„NØ
×Ñ˜[Ô)ð ×&Ñ& {Ó3€JØ�?‰?˜kÒ)Ð)Ð)ô 
�‰”yÓ	!ñ 9Ø×*Ñ*¨<Ó8ˆ
÷9÷ 9ñ 9ús   ÁA8Á8Bc                 ó”  — dd l }| j                  «        | j                  dddi¬«      }|j                  }| j	                  |«      }|j
                  dk(  sJ ‚|j                  |k(  sJ ‚|j                  ddik(  sJ ‚t        j                  t        «      5  | j	                  |j                  «       «       d d d «       y # 1 sw Y   y xY w)Nr   r©   rb   Úvaluer	  )ÚuuidrV   rW   ÚidÚget_collection_by_idrƒ   r
  rÀ   râ   r   Úuuid4)r0   rE  r^   Úcollection_idÚ	retrieveds        r   Útest_get_collection_by_idrK    s³   € Ûà
‡L�L„NØ×)Ñ)¨+ÀÈÐ@PÐ)ÓQ€JØ—M‘M€Mà×+Ñ+¨MÓ:€IØ�>‰>˜[Ò(Ð(Ð(Ø�<‰<˜=Ò(Ð(Ð(Ø×Ñ %¨Ð!1Ò1Ð1Ð1ä	�‰”}Ó	%ñ 2Ø×#Ñ# D§J¡J£LÔ1÷2÷ 2ñ 2ús   Â B>Â>Cc                 óÒ   — | j                  «        t        j                  t        «      5 }| j	                  d«       d d d «       j
                  j                  €J ‚y # 1 sw Y   Œ"xY w)Nr+  )rV   rÀ   râ   r   rY   rD  Útrace_id)Úhttp_clientÚerrors     r   Útest_error_includes_trace_idrP  �  sW   € Ø×ÑÔä	�‰”{Ó	#ð 1 uØ×"Ñ" <Ô0÷1ð �;‰;×ÑÐ+Ð+Ñ+÷1ð 1ús   ªAÁA&c                 ó¨   — | j                  «        | j                  d«       | j                  d«       | j                  «       }t        |«      dk(  sJ ‚y )Nr©   r+  rj   ©rV   rW   r­   r?   ©r0   r=  s     r   Útest_list_collectionsrT  ˜  sJ   € Ø
‡L�L„NØ
×Ñ˜[Ô)Ø
×Ñ˜\Ô*ð ×)Ñ)Ó+€KÜˆ{Ó˜qÒ Ð Ñ r   c                 ó  — | j                  «        | j                  d«       | j                  d«       | j                  «       }t        |«      dk(  sJ ‚| j                  «        | j                  «       }t        |«      dk(  sJ ‚y )Nr©   r+  rj   r   rR  rS  s     r   Ú
test_resetrV  ¢  st   € Ø
‡L�L„NØ
×Ñ˜[Ô)Ø
×Ñ˜\Ô*ð ×)Ñ)Ó+€KÜˆ{Ó˜qÒ Ð Ð à
‡L�L„NØ×)Ñ)Ó+€KÜˆ{Ó˜qÒ Ð Ñ r   c                 óŒ  — | j                  «        | j                  d«      } |j                  di t        ¤Ž |j	                  «       dk(  sJ ‚|j                  «       }t        |«       |j                  «       D ]J  }|dv s|dk(  rt        ||   «      dk(  rŒJ ‚|dk(  rt        ||   «      t        g d¢«      k(  rŒBJ ‚||   €ŒJJ ‚ y )Nr©   rj   rì   rI   rT   ©rL   rM   rJ   r   )
rV   rW   rX   rª   r«   ÚpeekÚprintr[   r?   r\   )r0   r^   rY  rb   s       r   Ú	test_peekr[  °  sÆ   € Ø
‡L�L„NØ×)Ñ)¨+Ó6€JØ€J‡N�NÑ#”]Ò#Ø×ÑÓ Ò"Ð"Ð"ð �?‰?Ó€DÜ	ˆ$„KØ�y‰y‹{ò %ˆØÐ:Ñ:¸cÀUºlÜ�t˜C‘y“> QÓ&Ð&Ð&Ø�JÒÜ�t˜C‘y“>¤SÒ)QÓ%RÓRÐRÐRà˜‘9Ñ$Ð$Ð$ñ%r   c                 óè   — | j                  «        | j                  d«      }| j                  d«       t        j                  t
        d¬«      5  |j                  «        d d d «       y # 1 sw Y   y xY wrñ   )rV   rW   r¬   rÀ   râ   r   rY  rÛ   s     r   Ú3test_collection_peek_with_invalid_collection_throwsr]  Â  sW   € Ø
‡L�L„NØ×)Ñ)¨&Ó1€JØ
×Ñ˜VÔ$ä	�‰”}Ð,KÔ	Lñ Ø�‰Ô÷÷ ñ úró   c                 óî   — | j                  «        | j                  d«      }| j                  d«       t        j                  t
        d¬«      5  |j                  dg¬«       d d d «       y # 1 sw Y   y xY w)NrE   rß   rà   )rQ   )rV   rW   r¬   rÀ   râ   r   rZ   rÛ   s     r   Ú4test_collection_query_with_invalid_collection_throwsr_  Ë  s`   € Ø
‡L�L„NØ×)Ñ)¨&Ó1€JØ
×Ñ˜VÔ$ä	�‰”}Ð,KÔ	Lñ /Ø×Ñ f XÐÔ.÷/÷ /ñ /úr$  c                 óò   — | j                  «        | j                  d«      }| j                  d«       t        j                  t
        d¬«      5  |j                  dgdg¬«       d d d «       y # 1 sw Y   y xY w)NrE   rß   rà   rF   rH   )rV   rW   r¬   rÀ   râ   r   ÚupdaterÛ   s     r   Ú5test_collection_update_with_invalid_collection_throwsrb  Ô  sd   € Ø
‡L�L„NØ×)Ñ)¨&Ó1€JØ
×Ñ˜VÔ$ä	�‰”}Ð,KÔ	Lñ ;Ø×Ñ˜u˜g°&°ÐÔ:÷;÷ ;ñ ;ús   ÁA-Á-A6rF   r  rO   Úoneçj¼t“ð?©Ú	int_valueÚstring_valueÚfloat_valuerf  rj   ©rL   rI   rM   c                 óf  — | j                  «        | j                  d«      } |j                  di t        ¤Ž |j	                  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 ‚y )NÚtest_intrF   r  r  rM   r   rf  rO   rh  rd  rj   r   )rV   rW   rX   Úmetadata_recordsrÌ   r³   r´   Úfloat©r0   r^   Úitemss      r   Útest_metadata_add_get_int_floatrp  ê  sÖ   € Ø
‡L�L„NØ×)Ñ)¨*Ó5€JØ€J‡N�NÑ&Ô%Ò&à�N‰N  u˜~ˆNÓ.€EØ�Ñ˜aÑ  Ñ-°Ò2Ð2Ð2Ø�Ñ˜aÑ  Ñ/°5Ò8Ð8Ð8Ø�Ñ˜aÑ  Ñ-°Ò2Ð2Ð2Ü�e˜KÑ(¨Ñ+¨KÑ8¼#Ô>Ð>Ð>Ü�e˜KÑ(¨Ñ+¨MÑ:¼EÔBÐBÑBr   c                 óp  — | j                  «        | j                  d«      } |j                  d
i t        ¤Ž |j	                  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 ‚y )Nrk  rÒ   rO   r   rM   r   rf  rh  rd  r   )rV   rW   rX   rl  rZ   r³   r´   rm  rn  s      r   Ú!test_metadata_add_query_int_floatrr  ÷  sé   € Ø
‡L�L„NØ×)Ñ)¨*Ó5€JØ€J‡N�NÑ&Ô%Ò&à#×)Ñ)Ú)Ð*°að *ó €Eð �ÑÐ)Ð)Ð)Ø�Ñ˜aÑ  Ñ# KÑ0°AÒ5Ð5Ð5Ø�Ñ˜aÑ  Ñ# MÑ2°eÒ;Ð;Ð;Ü�e˜KÑ(¨Ñ+¨AÑ.¨{Ñ;¼SÔAÐAÐAÜ�e˜KÑ(¨Ñ+¨AÑ.¨}Ñ=¼uÔEÐEÑEr   c                 óÚ   — | j                  «        | j                  d«      } |j                  d	i t        ¤Ž |j	                  ddi¬«      }|d   d   d   dk(  sJ ‚|d   d   d   dk(  sJ ‚y )
Nrk  rg  rc  ©r  rM   r   rf  rO   r   ©rV   rW   rX   rl  rÌ   rn  s      r   Útest_metadata_get_where_stringrv    s|   € Ø
‡L�L„NØ×)Ñ)¨*Ó5€JØ€J‡N�NÑ&Ô%Ò&à�N‰N .°%Ð!8ˆNÓ9€EØ�Ñ˜aÑ  Ñ-°Ò2Ð2Ð2Ø�Ñ˜aÑ  Ñ0°EÒ9Ð9Ñ9r   c                 óÚ   — | j                  «        | j                  d«      } |j                  d	i t        ¤Ž |j	                  ddi¬«      }|d   d   d   dk(  sJ ‚|d   d   d   dk(  sJ ‚y )
Nrk  rf  rO   rt  rM   r   rg  rc  r   ru  rn  s      r   Útest_metadata_get_where_intrx    s|   € Ø
‡L�L„NØ×)Ñ)¨*Ó5€JØ€J‡N�NÑ&Ô%Ò&à�N‰N +¨qÐ!1ˆNÓ2€EØ�Ñ˜aÑ  Ñ-°Ò2Ð2Ð2Ø�Ñ˜aÑ  Ñ0°EÒ9Ð9Ñ9r   c                 óú   — | j                  «        | j                  d«      } |j                  di t        ¤Ž |j	                  ddi¬«      }|d   d   d   dk(  sJ ‚|d   d   d	   d
k(  sJ ‚|d   d   d   dk(  sJ ‚y )Nrk  rh  rd  rt  rM   r   rf  rO   rg  rc  r   ru  rn  s      r   Útest_metadata_get_where_floatrz    s™   € Ø
‡L�L„NØ×)Ñ)¨*Ó5€JØ€J‡N�NÑ&Ô%Ò&à�N‰N -°Ð!7ˆNÓ8€EØ�Ñ˜aÑ  Ñ-°Ò2Ð2Ð2Ø�Ñ˜aÑ  Ñ0°EÒ9Ð9Ð9Ø�Ñ˜aÑ  Ñ/°5Ò8Ð8Ñ8r   c                 ó*  — | j                  «        | j                  d«      } |j                  di t        ¤Ž |j	                  dgddddœg¬«       |j                  dg¬«      }|d	   d
   d   dk(  sJ ‚|d	   d
   d   dk(  sJ ‚|d	   d
   d   dk(  sJ ‚y )Nrk  rF   rj   Útwoçj¼t“ @re  ©rI   rM   r  rM   r   rf  rg  rh  r   )rV   rW   rX   rl  ra  rÌ   rn  s      r   Ú"test_metadata_update_get_int_floatr  %  s½   € Ø
‡L�L„NØ×)Ñ)¨*Ó5€JØ€J‡N�NÑ&Ô%Ò&à×ÑØˆGØ!"°EÈ%ÑPÐQð ô ð �N‰N ˜wˆNÓ'€EØ�Ñ˜aÑ  Ñ-°Ò2Ð2Ð2Ø�Ñ˜aÑ  Ñ0°EÒ9Ð9Ð9Ø�Ñ˜aÑ  Ñ/°5Ò8Ð8Ñ8r   rD  ÚnestedÚ5ri   c                 óÒ   — | j                  «        | j                  d«      }t        j                  t        d¬«      5   |j
                  di t        ¤Ž d d d «       y # 1 sw Y   y xY w)NÚtest_metadata_validationr
  rà   r   )rV   rW   rÀ   râ   r  rX   Úbad_metadata_recordsrÛ   s     r   Útest_metadata_validation_addr…  ;  sQ   € Ø
‡L�L„NØ×)Ñ)Ð*DÓE€JÜ	�‰”z¨Ô	4ñ /Øˆ
�‰Ñ.Ô-Ò.÷/÷ /ñ /úó   ½AÁA&c                 ó  — | j                  «        | j                  d«      } |j                  d	i t        ¤Ž t	        j
                  t        d¬«      5  |j                  dgdddii¬«       d d d «       y # 1 sw Y   y xY w)
Nrƒ  r
  rà   rF   rD  r€  r�  r~  r   )rV   rW   rX   rl  rÀ   râ   r  ra  rÛ   s     r   Útest_metadata_validation_updaterˆ  B  ss   € Ø
‡L�L„NØ×)Ñ)Ð*DÓE€JØ€J‡N�NÑ&Ô%Ò&Ü	�‰”z¨Ô	4ñ MØ×Ñ˜u˜g°'¸HÀc¸?Ð1KÐÔL÷M÷ Mñ Mús   ÁA5Á5A>c                 óÒ   — | j                  «        | j                  d«      }t        j                  t        d¬«      5  |j                  dddii¬«       d d d «       y # 1 sw Y   y xY w)NÚtest_where_validationr  rà   rD  r€  r�  rt  )rV   rW   rÀ   râ   r  rÌ   rÛ   s     r   Útest_where_validation_getr‹  J  sV   € Ø
‡L�L„NØ×)Ñ)Ð*AÓB€JÜ	�‰”z¨Ô	1ñ 9Ø�‰˜g¨°# Ð7ˆÔ8÷9÷ 9ñ 9úr†  c                 óØ   — | j                  «        | j                  d«      }t        j                  t        d¬«      5  |j                  g d¢dddii¬«       d d d «       y # 1 sw Y   y xY w)	NrŠ  r  rà   ©r   r   r   rD  r€  r�  )rø   r  )rV   rW   rÀ   râ   r  rZ   rÛ   s     r   Útest_where_validation_queryrŽ  Q  s`   € Ø
‡L�L„NØ×)Ñ)Ð*AÓB€JÜ	�‰”z¨Ô	1ñ WØ×Ñª)¸GÀhÐPSÀ_Ð;UÐÔV÷W÷ Wñ Wús   ½A Á A)r}  r|  )rf  rh  rg  c                 óÄ   — | j                  «        | j                  d«      } |j                  di t        ¤Ž |j	                  dddii¬«      }t        |d   «      dk(  sJ ‚y )	NÚtest_where_ltrf  ú$ltrj   rt  rM   rO   r   ©rV   rW   rX   Úoperator_recordsrÌ   r?   rn  s      r   r�  r�  b  s^   € Ø
‡L�L„NØ×)Ñ)¨/Ó:€JØ€J‡N�NÑ&Ô%Ò&Ø�N‰N +°°q¨zÐ!:ˆNÓ;€EÜˆu�[Ñ!Ó" aÒ'Ð'Ñ'r   c                 óÄ   — | j                  «        | j                  d«      } |j                  di t        ¤Ž |j	                  dddii¬«      }t        |d   «      dk(  sJ ‚y )	NÚtest_where_lterf  ú$lteç       @rt  rM   rj   r   r’  rn  s      r   r•  r•  j  s_   € Ø
‡L�L„NØ×)Ñ)Ð*:Ó;€JØ€J‡N�NÑ&Ô%Ò&Ø�N‰N +°¸¨}Ð!=ˆNÓ>€EÜˆu�[Ñ!Ó" aÒ'Ð'Ñ'r   c                 óÄ   — | j                  «        | j                  d«      } |j                  di t        ¤Ž |j	                  dddii¬«      }t        |d   «      dk(  sJ ‚y )	Nr•  rh  ú$gtgffffffö¿rt  rM   rj   r   r’  rn  s      r   Útest_where_gtrš  r  s_   € Ø
‡L�L„NØ×)Ñ)Ð*:Ó;€JØ€J‡N�NÑ&Ô%Ò&Ø�N‰N -°%¸°Ð!?ˆNÓ@€EÜˆu�[Ñ!Ó" aÒ'Ð'Ñ'r   c                 óÄ   — | j                  «        | j                  d«      } |j                  di t        ¤Ž |j	                  dddii¬«      }t        |d   «      dk(  sJ ‚y )	Nr•  rh  ú$gter}  rt  rM   rO   r   r’  rn  s      r   Útest_where_gter�  z  s_   € Ø
‡L�L„NØ×)Ñ)Ð*:Ó;€JØ€J‡N�NÑ&Ô%Ò&Ø�N‰N -°&¸%°Ð!AˆNÓB€EÜˆu�[Ñ!Ó" aÒ'Ð'Ñ'r   c                 óÄ   — | j                  «        | j                  d«      } |j                  di t        ¤Ž |j	                  dddii¬«      }t        |d   «      dk(  sJ ‚y )	Nr•  rg  ú$ner|  rt  rM   rO   r   r’  rn  s      r   Útest_where_ne_stringr   ‚  s_   € Ø
‡L�L„NØ×)Ñ)Ð*:Ó;€JØ€J‡N�NÑ&Ô%Ò&Ø�N‰N .°5¸%°.Ð!AˆNÓB€EÜˆu�[Ñ!Ó" aÒ'Ð'Ñ'r   c                 ó  — | j                  «        | j                  d«      } |j                  d
i t        ¤Ž |j	                  dddii¬«      }t        |d   «      dk(  sJ ‚|j	                  ddd	ii¬«      }t        |d   «      dk(  sJ ‚y )Nr•  rf  rŸ  rO   rt  rM   rh  ú$eqr}  r   r’  rn  s      r   Útest_where_ne_eq_numberr£  Š  s�   € Ø
‡L�L„NØ×)Ñ)Ð*:Ó;€JØ€J‡N�NÑ&Ô%Ò&Ø�N‰N +°°q¨zÐ!:ˆNÓ;€EÜˆu�[Ñ!Ó" aÒ'Ð'Ð'Ø�N‰N -°%¸°Ð!@ˆNÓA€EÜˆu�[Ñ!Ó" aÒ'Ð'Ñ'r   c                 ób  — | j                  «        | j                  d«      } |j                  di t        ¤Ž t	        j
                  t        «      5  |j                  dddii¬«       d d d «       t	        j
                  t        «      5  |j                  dddii¬«       d d d «       t	        j
                  t        «      5  |j                  dddd	œi¬«       d d d «       t	        j
                  t        «      5  |j                  d
dddiii¬«       d d d «       t	        j
                  t        «      5  |j                  ddidddiidœ¬«       d d d «       t	        j
                  t        «      5  |j                  ddddiidddiigi¬«       d d d «       t	        j
                  t        «      5  |j                  ddddiigi¬«       d d d «       t	        j
                  t        «      5  |j                  dg i¬«       d d d «       t	        j
                  t        «      5  |j                  ddi¬«       d d d «       y # 1 sw Y   �ŒÚxY w# 1 sw Y   �Œ¯xY w# 1 sw Y   �ŒƒxY w# 1 sw Y   �ŒVxY w# 1 sw Y   �Œ&xY w# 1 sw Y   ŒòxY w# 1 sw Y   ŒÃxY w# 1 sw Y   Œ™xY w# 1 sw Y   y xY w)NÚtest_where_valid_operatorsrf  z$invalidrj   rt  r‘  Ú2rO   )r‘  r™  ú$andr™  )rf  ú$orr¨  ú	$containsrE   r   )rV   rW   rX   r“  rÀ   râ   r  rÌ   rÛ   s     r   r¥  r¥  ”  st  € Ø
‡L�L„NØ×)Ñ)Ð*FÓG€JØ€J‡N�NÑ&Ô%Ò&Ü	�‰”zÓ	"ñ =Ø�‰˜k¨J¸¨?Ð;ˆÔ<÷=ô 
�‰”zÓ	"ñ :Ø�‰˜k¨E°3¨<Ð8ˆÔ9÷:ô 
�‰”zÓ	"ñ BØ�‰˜k°1¸QÑ+?Ð@ˆÔA÷Bô 
�‰”zÓ	"ñ BØ�‰˜f {°U¸A°JÐ&?Ð@ˆÔA÷Bô 
�‰”zÓ	"ñ 
Ø�‰Ø!&¨ 
°KÀ%ÈÀÐ3LÑMð 	ô 	
÷
ô
 
�‰”zÓ	"ñ 
Ø�‰Ø˜K¨%°¨Ð4°{ÀUÈAÀJÐ6OÐPÐQð 	ô 	
÷
ô
 
�‰”zÓ	"ñ CØ�‰˜e {°U¸A°JÐ&?Ð%@ÐAˆÔB÷Cô 
�‰”zÓ	"ñ *Ø�‰˜e R˜[ˆÔ)÷*ô
 
�‰”zÓ	"ñ 4Ø�‰˜k¨6Ð2ˆÔ3÷4ð 4÷?=ñ =ú÷:ñ :ú÷Bñ Bú÷Bñ Bú÷
ñ 
ú÷

ð 
ú÷
Cð Cú÷*ð *ú÷
4ð 4úsl   ÁI Â	IÃIÃ:I'Ä4I4Å1JÆ1JÇ,JÈ"J%É I
ÉIÉI$É'I1É4I>ÊJ
ÊJÊJ"Ê%J.)rÓ   rÔ   rÕ   rú   )r×   rØ   rÕ   rú   rø   rÆ   r   c                 ó,  — | j                  «        | j                  d«      } |j                  di t        ¤Ž t	        j
                  t        «      5 } |j                  di t        ¤Ž d d d «       dt        j                  «      v sJ ‚y # 1 sw Y   Œ#xY w)NÚtest_dimensionality_validationÚ	dimensionr   )
rV   rW   rX   ré   rÀ   râ   ræ   Úbad_dimensionality_recordsr‘   rD  ©r0   r^   Úes      r   Ú"test_dimensionality_validation_addr°  Ë  sx   € Ø
‡L�L„NØ×)Ñ)Ð*JÓK€JØ€J‡N�NÑ%”_Ò%ä	�‰”yÓ	!ð 5 QØˆ
�‰Ñ4Ô3Ò4÷5àœ#˜aŸg™g›,Ñ&Ð&Ñ&÷5ð 5úó   ÁB
Â
Bc                 ó,  — | j                  «        | j                  d«      } |j                  di t        ¤Ž t	        j
                  t        «      5 } |j                  di t        ¤Ž d d d «       dt        j                  «      v sJ ‚y # 1 sw Y   Œ#xY w)NÚ$test_dimensionality_validation_queryr¬  r   )rV   rW   rX   ré   rÀ   râ   ræ   rZ   Úbad_dimensionality_queryr‘   rD  r®  s      r   r³  r³  Õ  sz   € Ø
‡L�L„NØ×)Ñ)Ð*PÓQ€JØ€J‡N�NÑ%”_Ò%ä	�‰”yÓ	!ð 5 QØˆ
×ÑÑ4Ô3Ò4÷5àœ#˜aŸg™g›,Ñ&Ð&Ñ&÷5ð 5úr±  c                 óö  — | j                  «        | j                  d«      } |j                  di t        ¤Ž t	        j
                  t        d¬«      5  |j                  dddii¬«       d d d «       t	        j
                  t        d¬«      5  |j                  g d¢d	di¬
«       d d d «       t	        j
                  t        d¬«      5  |j                  d	g i¬«       d d d «       t	        j
                  t        d¬«      5  |j                  d	ddii¬«       d d d «       t	        j
                  t        d¬«      5  |j                  dddii¬«       d d d «       t	        j
                  t        «      5  |j                  dddii¬«       d d d «       t	        j
                  t        «      5  |j                  dddiddigi¬«       d d d «       t	        j
                  t        «      5  |j                  dd	digi¬«       d d d «       t	        j
                  t        «      5  |j                  dg i¬«       d d d «       t	        j
                  t        «      5  |j                  ddd	digid	digi¬«       d d d «       y # 1 sw Y   �ŒxY w# 1 sw Y   �ŒæxY w# 1 sw Y   �Œ»xY w# 1 sw Y   �ŒŽxY w# 1 sw Y   �ŒaxY w# 1 sw Y   �Œ6xY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒÚxY w# 1 sw Y   Œ°xY w# 1 sw Y   y xY w)Nr¥  zwhere documentrà   r‘  z$nestedrj   ©Úwhere_documentr�  r©  )rø   r·  ÚtextrG   ú$not_containsr§  z$unsupportedÚdocr¨  r   )	rV   rW   rX   r“  rÀ   râ   r  rÌ   rZ   rÛ   s     r   Ú#test_query_document_valid_operatorsr»  ß  sÅ  € Ø
‡L�L„NØ×)Ñ)Ð*FÓG€JØ€J‡N�NÑ&Ô%Ò&Ü	�‰”zÐ)9Ô	:ñ ?Ø�‰ u¨y¸!¨nÐ&=ˆÔ>÷?ô 
�‰”zÐ)9Ô	:ñ VØ×Ñª)À[ÐRSÐDTÐÔU÷Vô 
�‰”zÐ)9Ô	:ñ 9Ø�‰ {°BÐ&7ˆÔ8÷9ô 
�‰”zÐ)9Ô	:ñ HØ�‰ {°V¸WÐ4EÐ&FˆÔG÷Hô 
�‰”zÐ)9Ô	:ñ LØ�‰ ¸ÀÐ8IÐ&JˆÔK÷Lô 
�‰”zÓ	"ñ IØ�‰ v°ÀÐ/FÐ&GˆÔH÷Iô 
�‰”zÓ	"ñ 
Ø�‰Ø! ^°UÐ$;¸nÈeÐ=TÐ#UÐVð 	ô 	
÷
ô
 
�‰”zÓ	"ñ GØ�‰ u°¸UÐ/CÐ.DÐ&EˆÔF÷Gô 
�‰”zÓ	"ñ 3Ø�‰ u¨b kˆÔ2÷3ô 
�‰”zÓ	"ñ 
Ø�‰à˜ ;°Ð"6Ð!7Ð8¸;ÈÐ:NÐOðð 	ô 	
÷
ð 
÷A?ñ ?ú÷Vñ Vú÷9ñ 9ú÷Hñ Hú÷Lñ Lú÷Iñ Iú÷
ñ 
ú÷
Gð Gú÷3ð 3ú÷
ð 
úsx   ÁI<ÂJ	ÃJÄ J#Ä:J0Å2J=Æ*K
Ç&KÈK#ÉK/É<JÊ	JÊJ Ê#J-Ê0J:Ê=KË
KËK Ë#K,Ë/K8zthis is doc1 and it's great!zdoc2 is also great!)rL   rJ   rI   rM   c                 ó\  — | j                  «        | j                  d«      } |j                  di t        ¤Ž |j	                  ddi¬«      }t        |d   «      dk(  sJ ‚|j	                  ddi¬«      }t        |d   «      dk(  sJ ‚|j	                  dd	i¬«      }t        |d   «      d
k(  sJ ‚y )NÚtest_get_where_documentr©  Údoc1r¶  rM   rO   Úgreatrj   Úbadr   r   )rV   rW   rX   Úcontains_recordsrÌ   r?   rn  s      r   r½  r½    sµ   € Ø
‡L�L„NØ×)Ñ)Ð*CÓD€JØ€J‡N�NÑ&Ô%Ò&à�N‰N¨;¸Ð*?ˆNÓ@€EÜˆu�[Ñ!Ó" aÒ'Ð'Ð'à�N‰N¨;¸Ð*@ˆNÓA€EÜˆu�[Ñ!Ó" aÒ'Ð'Ð'à�N‰N¨;¸Ð*>ˆNÓ?€EÜˆu�[Ñ!Ó" aÒ'Ð'Ñ'r   c                 óê  — | j                  «        | j                  d«      } |j                  di t        ¤Ž |j	                  g d¢ddid¬«      }t        |d   d   «      dk(  sJ ‚|j	                  g d	¢dd
id¬«      }t        |d   d   «      dk(  sJ ‚t        j                  t        «      5 }|j	                  g d	¢ddid¬«      }dt        |j                  «      v sJ ‚	 d d d «       y # 1 sw Y   y xY w)NÚtest_query_where_documentr  r©  r¾  rO   )rø   r·  rR   rM   r   r�  r¿  rj   rÀ  Ú
datapointsr   )rV   rW   rX   rÁ  rZ   r?   rÀ   râ   ræ   r‘   rD  )r0   r^   ro  r¯  s       r   rÃ  rÃ  %  s  € Ø
‡L�L„NØ×)Ñ)Ð*EÓF€JØ€J‡N�NÑ&Ô%Ò&à×ÑÚ"°KÀÐ3HÐTUð ó €Eô ˆu�[Ñ! !Ñ$Ó%¨Ò*Ð*Ð*à×ÑÚ"°KÀÐ3IÐUVð ó €Eô ˆu�[Ñ! !Ñ$Ó%¨Ò*Ð*Ð*ä	�‰”yÓ	!ð , QØ× Ñ Ú&¸ÀUÐ7KÐWXð !ó 
ˆð œs 1§7¡7›|Ñ+Ð+Ñ+÷	,÷ ,ñ ,ús   Â-2C)Ã)C2c                 óh  — | j                  «        | j                  d«      } |j                  d	i t        ¤Ž |j	                  ddi¬«       |j                  «       dk(  sJ ‚|j	                  ddi¬«       |j                  «       dk(  sJ ‚|j	                  ddi¬«       |j                  «       dk(  sJ ‚y )
NÚtest_delete_where_documentr©  r¾  r¶  rO   rÀ  r¿  r   r   )rV   rW   rX   rÁ  rþ   r«   rÛ   s     r   rÆ  rÆ  ;  sµ   € Ø
‡L�L„NØ×)Ñ)Ð*FÓG€JØ€J‡N�NÑ&Ô%Ò&à×Ñ k°6Ð%:ÐÔ;Ø×ÑÓ Ò"Ð"Ð"à×Ñ k°5Ð%9ÐÔ:Ø×ÑÓ Ò"Ð"Ð"à×Ñ k°7Ð%;ÐÔ<Ø×ÑÓ Ò"Ð"Ñ"r   )gÍÌÌÌÌÌô?g      @rÕ   )gffffffö?g®Gáz@rÕ   )rF   r  r  r  rº  )rf  rg  rh  Úis)rf  rh  rg  rÇ  rk   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)rL   rI   rM   rJ   c           	      óä  — | j                  «        | j                  d«      } |j                  di t        ¤Ž |j	                  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 ‚|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 ‚|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 ‚y )NÚtest_logical_operatorsr§  r¨  rf  rœ  rk   rh  r‘  gffffffþ?rÇ  rº  rt  rM   r¢  rg  rÈ  rÉ  rÊ  rj   rO   r|  rc  r   ©rV   rW   rX   Úlogical_operator_recordsrÌ   r?   rn  s      r   Útest_where_logical_operatorsrÏ  a  s›  € Ø
‡L�L„NØ×)Ñ)Ð*BÓC€JØ€J‡N�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                 óŠ  — | j                  «        | j                  d«      } |j                  di t        ¤Ž |j	                  dddiddigi¬«      }t        |d   «      dk(  sJ ‚|j	                  d	ddidd
igi¬«      }t        |d   «      dk(  sJ ‚|j	                  d	ddidd
igidddii¬«      }t        |d   «      dk(  sJ ‚y )NÚtest_document_logical_operatorsr§  r©  Úfirstrº  r¶  rM   rO   r¨  Úsecondrj   rf  rŸ  )r·  r  r   rÍ  rn  s      r   Ú%test_where_document_logical_operatorsrÔ  ™  s  € Ø
‡L�L„NØ×)Ñ)Ð*KÓL€JØ€J‡N�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  — | j                  «        | j                  d«      } |j                  di t        ¤Ž g d¢}|j	                  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¢}|j	                  g d¢|d¬«      }|d
   �J ‚|d   d   d   d	k(  sJ ‚t        |d   «      t        |«      k(  sJ ‚|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 ‚y )NÚtest_query_include©rM   rJ   rN   r�  rO   ©rø   rS   rR   rL   rI   r   rF   rM   rf  rT   )rL   rJ   rN   )rO   rj   r×   rj   rJ   rN   r  r   )rV   rW   rX   rî   rZ   r\   ©r0   r^   rS   ro  s       r   rØ  rØ  Í  sÈ  € Ø
‡L�L„NØ×)Ñ)Ð*>Ó?€JØ€J‡N�NÑ”WÒâ5€GØ×ÑÚ"ØØð ó €Eð
 �ÑÐ&Ð&Ð&Ø�‰<˜‰?˜1Ñ Ò&Ð&Ð&Ø�Ñ˜aÑ  Ñ# KÑ0°AÒ5Ð5Ð5Üˆu�ZÑ Ó!¤S¨£\Ò1Ð1Ð1â6€GØ×ÑÚ"ØØð ó €Eð
 �ÑÐ%Ð%Ð%Ø�‰<˜‰?˜1Ñ Ò&Ð&Ð&Üˆu�ZÑ Ó!¤S¨£\Ò1Ð1Ð1à×ÑÚ#¢[Ð1ØØð ó €Eð
 �ÑÐ%Ð%Ð%Ø�ÑÐ%Ð%Ð%Ø�ÑÐ&Ð&Ð&Ø�ÑÐ%Ð%Ð%Ø�‰<˜‰?˜1Ñ Ò&Ð&Ð&Ø�‰<˜‰?˜1Ñ Ò&Ð&Ñ&r   c                 ó€  — | j                  «        | j                  d«      } |j                  di t        ¤Ž ddg}|j	                  |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}|j	                  |¬«      }|d   �J ‚|d   d	   d
k(  sJ ‚t        |d   d   d	   d«      sJ ‚t        |d   «      t        |«      k(  sJ ‚|j	                  g ¬«      }|d   �J ‚|d   �J ‚|d   �J ‚|d   d	   d
k(  sJ ‚|d   g k(  sJ ‚t        j                  t        d¬«      5  |j	                  ddg¬«      }d d d «       t        j                  t        d¬«      5  |j	                  d ¬«      }d d d «       y # 1 sw Y   Œ@xY w# 1 sw Y   y xY w)NÚtest_get_includerM   rJ   rf  rO   )rS   r  rL   rI   r   rF   rÕ  rT   rí   r×   rS   rà   Ú	undefinedr   )
rV   rW   rX   rî   rÌ   r\   r=   rÀ   râ   r  rÛ  s       r   rÝ  rÝ  ô  s%  € Ø
‡L�L„NØ×)Ñ)Ð*<Ó=€JØ€J‡N�NÑ”WÒà˜KÐ(€GØ�N‰N 7°;ÀÐ2BˆNÓC€EØ�ÑÐ&Ð&Ð&Ø�‰<˜‰?˜eÒ#Ð#Ð#Ø�Ñ˜aÑ  Ñ-°Ò2Ð2Ð2Ø�Ñ˜aÑ Ð$<Ò<Ð<Ð<Üˆu�ZÑ Ó!¤S¨£\Ò1Ð1Ð1à˜[Ð)€GØ�N‰N 7ˆNÓ+€EØ�ÑÐ%Ð%Ð%Ø�‰<˜‰?˜eÒ#Ð#Ð#Ü˜˜lÑ+¨AÑ.¨qÑ1°3Ô7Ð7Ð7Üˆu�ZÑ Ó!¤S¨£\Ò1Ð1Ð1à�N‰N 2ˆNÓ&€EØ�ÑÐ%Ð%Ð%Ø�ÑÐ%Ð%Ð%Ø�ÑÐ&Ð&Ð&Ø�‰<˜‰?˜eÒ#Ð#Ð#Ø�Ñ Ò"Ð"Ð"ä	�‰”z¨Ô	3ñ CØ—‘¨°[Ð'A�ÓBˆ÷Cô 
�‰”z¨Ô	3ñ -Ø—‘ t�Ó,ˆ÷-ð -÷Cð Cú÷-ð -ús   ÅF(ÆF4Æ(F1Æ4F=c                 óâ   — | j                  «        | j                  d«      } |j                  di t        ¤Ž |j	                  g d¢g d¢d¬«      }|d   d   d   dk(  sJ ‚|d   d   d	   d
k(  sJ ‚y )NÚtest_query_orderrÖ   rÙ  rj   rÚ  rJ   r   rÖ  rO   rÕ  r   ©rV   rW   rX   rî   rZ   rn  s      r   rà  rà    s‰   € Ø
‡L�L„NØ×)Ñ)Ð*<Ó=€JØ€J‡N�NÑ”WÒà×ÑÚ)Ú7Øð ó €Eð �Ñ˜aÑ  Ñ#Ð'@Ò@Ð@Ð@Ø�Ñ˜aÑ  Ñ#Ð'?Ò?Ð?Ñ?r   c                 ól  — | j                  «        | j                  d«      }t        j                  t        «      5 }|j                  g d¢dgi g¬«       d d d «       dt        j                  «      v sJ ‚t        j                  t        «      5 }|j                  d¬«       d d d «       dt        |j                  «      v sJ ‚t        j                  t        «      5 }|j                  ddg¬«       d d d «       dt        |j                  «      v sJ ‚y # 1 sw Y   Œ¿xY w# 1 sw Y   Œ~xY w# 1 sw Y   Œ;xY w)	NÚtest_invalid_idr�  rO   ri  ÚIDr  Úvalidr   )
rV   rW   rÀ   râ   r  rX   r‘   rD  rÌ   rþ   r®  s      r   rã  rã  +  s  € Ø
‡L�L„NØ×)Ñ)Ð*;Ó<€Jä	�‰”zÓ	"ð F aØ�‰¢)°!°ÀÀˆÔE÷Fà”3�q—w‘w“<ÑÐÐô 
�‰”zÓ	"ð  aØ�‰˜1ˆÔ÷à”3�q—w‘w“<ÑÐÐô 
�‰”zÓ	"ð , aØ×Ñ˜w¨˜lÐÔ+÷,à”3�q—w‘w“<ÑÐÑ÷Fð Fú÷
ð ú÷
,ð ,ús#   »DÂDÃD*ÄDÄD'Ä*D3c                 ór  — d}| j                  «        | j                  d¬«      } |j                  di t        ¤Ž |j	                  g d¢d¬«      }|d   d   d   d	kD  sJ ‚| j                  «        | j                  dd
dddœ¬«      } |j                  di t        ¤Ž |j	                  g d¢d¬«      }|d   d   d   d|z
  kD  sJ ‚|d   d   d   d|z   k  sJ ‚| j                  «        | j                  dddi¬«      } |j                  di t        ¤Ž |j	                  g d¢d¬«      }|d   d   d   dk  sJ ‚y )Ngê-�™—q=Útest_index_paramsr,  )ç333333ã?gìQ¸…ëñ?gš™™™™™ù?rO   r   rN   r   rÉ  r7  é   r  )r  zhnsw:construction_efzhnsw:M©rƒ   r
  r  Úipéûÿÿÿr   rá  )r0   ÚEPSr^   ro  s       r   rç  rç  >  s†  € Ø
€Cà
‡L�L„NØ×)Ñ)Ð/BÐ)ÓC€JØ€J‡N�NÑ”WÒØ×ÑÚ)Øð ó €Eð �Ñ˜aÑ  Ñ# aÒ'Ð'Ð'ð ‡L�L„NØ×)Ñ)Ø Ø (À"ÐPQÑRð *ó €Jð €J‡N�NÑ”WÒØ×ÑÚ)Øð ó €Eð �Ñ˜aÑ  Ñ# a¨#¡gÒ-Ð-Ð-Ø�Ñ˜aÑ  Ñ# a¨#¡gÒ-Ð-Ð-ð ‡L�L„NØ×)Ñ)Ø ¨L¸$Ð+?ð *ó €Jð €J‡N�NÑ”WÒØ×ÑÚ)Øð ó €Eð �Ñ˜aÑ  Ñ# bÒ(Ð(Ñ(r   c                 óÖ   — | j                  «        t        j                  t        «      5  | j	                  dddi¬«      } |j
                  di t        ¤Ž d d d «       y # 1 sw Y   y xY w)Nrç  r  Úfoobarrê  r   )rV   rÀ   râ   r   rW   rX   rî   rÛ   s     r   Útest_invalid_index_paramsrð  e  s_   € Ø
‡L�L„Nä	�‰Ô+Ó	,ñ "Ø×-Ñ-Ø$°¸hÐ/Gð .ó 
ˆ
ð 	ˆ
�‰Ñ!œÒ!÷	"÷ "ñ "ús   ª,AÁA(c                 óè  — |j                  d«      } | j                  «        | j                  dddi¬«      }|j                  dd¬«       |j                  d	«      }|j	                  d«      }|j
                  d   dk(  sJ ‚g d
¢}|j                  dd|¬«      }|j                  «       D ]H  }||v s|dk(  rt        ||   «      dk(  rŒJ ‚|dk(  rt        ||   «      t        |«      k(  rŒ@J ‚||   €ŒHJ ‚ y )Nr1   rE   r  rë  r	  rF   rG   rH   r5   rK   rO   rP   rI   rT   )
rU   rV   rW   rX   rY   r
  rZ   r[   r?   r\   )r0   r]   r^   r_   r`   ra   rb   s          r   Ú!test_persist_index_loading_paramsrò  o  s  € Ø×$Ñ$Ð%8Ó9€FØ
‡L�L„NØ×)Ñ)ØØ Ð%ð *ó €Jð ‡N�N�u¨€NÔ0à×"Ñ"Ð#AÓB€DØ×$Ñ$Øó€Jð ×Ñ˜|Ñ,°Ò4Ð4Ð4ÚD€HØ	×	Ñ	ØØØð 
ó 
€Bð
 �w‰w‹yò #ˆØ�8‰O ¨¢Ü�r˜#‘w“< 1Ó$Ð$Ð$Ø�JÒÜ�r˜#‘w“<¤3 x£=Ó0Ð0Ð0à�c‘7‘?Ð"�?ñ#r   c                 óŽ  — | j                  «        | j                  d«      }t        j                  j	                  dd«      j                  t        j                  «      j                  «       }|j                  |t        t        |«      «      D �cg c]  }d|› �‘Œ	 c}¬«       |j                  «       t        |«      k(  sJ ‚y c c}w )Nr©   iÐ  é   zhttp://example.com/rÙ   )rV   rW   rn   ÚrandomÚrandÚastypeÚfloat32r¤   rX   rm   r?   r«   )r0   r^   Úlarge_recordsÚis       r   Útest_add_largerû  �  s¡   € Ø
‡L�L„Nà×)Ñ)¨+Ó6€Jô —I‘I—N‘N 4¨Ó-×4Ñ4´R·Z±ZÓ@×GÑGÓI€Mà‡N�NØ Ü05´c¸-Ó6HÓ0IÖJ¨1Ð" 1 #Ò&ÒJð ô ð
 ×ÑÓ¤ ]Ó!3Ò3Ð3Ñ3ùò Ks   ÂC
c                 ót   — | j                  «        | j                  «       }dd l}|j                  d|«      sJ ‚y )Nr   z\d+\.\d+\.\d+)rV   Úget_versionÚrerá   )r0   Úversionrþ  s      r   Útest_get_versionr   ž  s3   € Ø
‡L�L„NØ× Ñ Ó"€Gó à�8‰8Ð$ gÔ.Ð.Ñ.r   c                 ó  — | j                  «        | j                  d«      } |j                  di t        ¤Ž t	        | j                  «       «      dk(  sJ ‚| j                  d«       t	        | j                  «       «      dk(  sJ ‚y )NÚtest_delete_collectionrO   r   r   )rV   rW   rX   rî   r?   r­   r¬   rÛ   s     r   r  r  ©  st   € Ø
‡L�L„NØ×)Ñ)Ð*BÓC€JØ€J‡N�NÑ”WÒäˆv×&Ñ&Ó(Ó)¨QÒ.Ð.Ð.Ø
×ÑÐ5Ô6Üˆv×&Ñ&Ó(Ó)¨QÒ.Ð.Ñ.r   c                  ó‚   — t        «       } t        d«      D �cg c]  }d‘Œ }} | |«      }t        |«      dk(  sJ ‚y c c}w )Né@   zthis is a test)r   rm   r?   )r˜   rs   ÚdocsrL   s       r   Útest_default_embeddingr  ´  sD   € Ü1Ó3ÐÜ&+¨B£iÖ0 ÒÐ0€DÐ0Ù# DÓ)€JÜˆz‹?˜bÒ Ð Ñ ùò 1s   ˜	<c                 ó€  — t         j                  j                  dd«      j                  t         j                  «      j                  «       }t         j                  j                  dd«      j                  t         j                  «      j                  «       }t        t        |«      «      D �cg c]  }d|› �‘Œ	 }}t        t        |«      «      D �cg c]  }d|› �‘Œ	 }}| j                  «        | j                  d«      }|j                  ||¬«       | j                  d«      }|j                  ||¬«       t        | j                  «       «      dk(  sJ ‚|j                  «       t        |«      k(  sJ ‚|j                  «       t        |«      k(  sJ ‚|j                  |d	   d
¬«      }|j                  |d	   d
¬«      }	t        |d   «      d	kD  sJ ‚t        |	d   «      d	kD  sJ ‚t        |d   d	   «      d	kD  sJ ‚t        |	d   d	   «      d	kD  sJ ‚|d   d	   d	   |d	   k(  sJ ‚|	d   d	   d	   |d	   k(  sJ ‚y c c}w c c}w )Nr°   rô  zhttp://example.com/1/zhttp://example.com/2/Úcoll1rÙ   Úcoll2rj   r   rO   r   rI   )rn   rõ  rö  r÷  rø  r¤   rm   r?   rV   rW   rX   r­   r«   rZ   )
r0   Úembeddings1Úembeddings2rú  Úids1Úids2r  r	  Úresults1Úresults2s
             r   Útest_multiple_collectionsr  »  s  € Ü—)‘)—.‘.  SÓ)×0Ñ0´·±Ó<×CÑCÓE€KÜ—)‘)—.‘.  SÓ)×0Ñ0´·±Ó<×CÑCÓE€KÜ16´s¸;Ó7GÓ1HÖI¨AÐ# A 3Ò'ÐI€DÐIÜ16´s¸;Ó7GÓ1HÖI¨AÐ# A 3Ò'ÐI€DÐIà
‡L�L„NØ×$Ñ$ WÓ-€EØ	‡I�I˜¨$€IÔ/à×$Ñ$ WÓ-€EØ	‡I�I˜¨$€IÔ/äˆv×&Ñ&Ó(Ó)¨QÒ.Ð.Ð.Ø�;‰;‹=œC Ó,Ò,Ð,Ð,Ø�;‰;‹=œC Ó,Ò,Ð,Ð,à�{‰{¨K¸©NÀaˆ{ÓH€HØ�{‰{¨K¸©NÀaˆ{ÓH€Hô ˆx˜‰Ó !Ò#Ð#Ð#Üˆx˜‰Ó !Ò#Ð#Ð#Üˆx˜‰˜qÑ!Ó" QÒ&Ð&Ð&Üˆx˜‰˜qÑ!Ó" QÒ&Ð&Ð&à�E‰?˜1Ñ˜aÑ  D¨¡GÒ+Ð+Ð+Ø�E‰?˜1Ñ˜aÑ  D¨¡GÒ+Ð+Ñ+ùò1 JùÚIs   Â-H6ÃH;c                 óÞ  — | j                  «        | j                  d«      } |j                  di t        ¤Ž t        d   d   gg d¢gdgddigdœ} |j                  di |¤Ž |j                  |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 ‚y )NÚtest_update_queryrI   r   ©rù   çš™™™™™É?ç333333Ó?zupdated documentÚfooÚbar)rI   rL   rJ   rM   rL   rO   rì   r÷   rJ   rM   r   )rV   rW   rX   rî   ra  rZ   r?   rB   )r0   r^   Úupdated_recordsÚresultss       r   r  r  Ù  sR  € Ø
‡L�L„NØ×)Ñ)Ð*=Ó>€JØ€J‡N�NÑ”WÒô ˜‘˜qÑ!Ð"Ú&Ð'Ø(Ð)Ø˜e�nÐ%ñ	€Oð €J×ÑÑ(˜Ò(ð ×ÑØ(¨Ñ6ØÚ8ð ó €Gô
 ˆw�u‰~˜aÑ Ó! QÒ&Ð&Ð&Ø�5‰>˜!Ñ˜QÑ ?°5Ñ#9¸!Ñ#<Ò<Ð<Ð<Ø�;Ñ Ñ" 1Ñ%¨¸Ñ)EÀaÑ)HÒHÐHÐHØ�;Ñ Ñ" 1Ñ% eÑ,°Ò5Ð5Ð5ÜØ�Ñ˜aÑ  Ñ# _°\Ñ%BÀ1Ñ%Eôð ñ r   c                 ód  — | j                  «        | j                  d«      } |j                  d
i t        ¤Ž g d¢}|j	                  g d¢gd|¬«      }|j                  «       D ]K  }||v s|dk(  rt        ||   d   «      dk(  rŒ!J ‚|d	k(  rt        ||   «      t        |«      k(  rŒCJ ‚||   €ŒKJ ‚ y )Nr©   rK   rÒ   r  r÷   rI   r   rj   rT   r   )rV   rW   rX   rî   rZ   r[   r?   r\   )r0   r^   r`   r  rb   s        r   Ú<test_get_nearest_neighbors_where_n_results_more_than_elementr  ö  sÄ   € Ø
‡L�L„NØ×)Ñ)¨+Ó6€JØ€J‡N�NÑ”WÒâD€HØ×ÑÚ)Ð*ØØð ó €Gð
 �|‰|‹~ò (ˆØ�(‰?˜c UšlÜ�w˜s‘| A‘Ó'¨1Ó,Ð,Ð,Ø�JÒÜ�w˜s‘|Ó$¬¨H«Ó5Ð5Ð5à˜3‘<Ñ'Ð'Ð'ñ(r   c                 óF  — | j                  «        | j                  d«      } |j                  d	i t        ¤Ž t	        j
                  t        «      5 }|j                  g d¢gdg d¢¬«       d d d «       dt        j                  «      v sJ ‚|j                  t        k(  sJ ‚t	        j
                  t        «      5 }|j                  g d¢gdg d¢¬«       d d d «       dt        |j                  «      v sJ ‚|j                  t        k(  sJ ‚y # 1 sw Y   Œ¡xY w# 1 sw Y   ŒDxY w)
Nr©   rÒ   éÿÿÿÿrK   r÷   z<Number of requested results -1, cannot be negative, or zero.rc  r´   r   )rV   rW   rX   rî   rÀ   râ   Ú	TypeErrorrZ   r‘   rD  Útyper  )r0   r^   Úexcs      r   Útest_invalid_n_results_paramr!  
  s  € Ø
‡L�L„NØ×)Ñ)¨+Ó6€JØ€J‡N�NÑ”WÒÜ	�‰”yÓ	!ð 
 SØ×ÑÚ-Ð.ØÚIð 	ô 	
÷
ð JÌSØ�	‰	óNñ ð ð ð �8‰8”yÒ Ð Ð ä	�‰”zÓ	"ð 
 cØ×ÑÚ-Ð.ØÚIð 	ô 	
÷
ð ”C˜Ÿ	™	“NÑ"Ð"Ð"Ø�8‰8”zÒ!Ð!Ñ!÷%
ð 
ú÷
ð 
ús   ÁDÂ:DÄDÄD )gš™™™™™@gìQ¸…ë	@gÍÌÌÌÌÌ@©rF   r  r  rg  )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                 óØ  — | j                  «        | j                  d«      } |j                  di t        ¤Ž |j	                  «       dk(  sJ ‚ |j
                  di t        ¤Ž |j	                  «       dk(  sJ ‚|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 ‚|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 ‚|j                  t        d   d   ¬«       |j                  t        d   d   g d¢gddig¬«       |j	                  «       dk(  sJ ‚|j                  g d¢dg¬«      }t        |d   d   g d¢«      sJ ‚|d	   d   ddik(  sJ ‚|d
   d   �J ‚y )NrE   rk   rÉ  rX  rI   r   )rS   rI   rL   rM   rJ   rO   r÷   rj   r  )rÓ   ç®Gáz®ï?g®Gáz®@rg  za new string valuer  r  r   )rV   rW   rX   Úinitial_recordsr«   ÚupsertÚnew_recordsrÌ   rB   rZ   rþ   )r0   r^   Ú
get_resultÚquery_results       r   Útest_upsertr,  @  sy  € Ø
‡L�L„NØ×)Ñ)¨&Ó1€Jà€J‡N�NÑ%”_Ò%Ø×ÑÓ Ò"Ð"Ð"à€J×ÑÑ$œÒ$Ø×ÑÓ Ò"Ð"Ð"à—‘Ú8¼kÈ%Ñ>PÐQRÑ>Sð  ó €Jô Ø�<Ñ  Ñ#¤[°Ñ%>¸qÑ%Aôð ð ð �kÑ" 1Ñ%¬°[Ñ)AÀ!Ñ)DÒDÐDÐDØ�kÑ" 1Ñ%¬°[Ñ)AÀ!Ñ)DÒDÐDÐDà×#Ñ#Ø# LÑ1ØÚ8ð $ó €Lô
 Ø�\Ñ" 1Ñ% aÑ(¬+°lÑ*CÀAÑ*Fôð ð ð ˜Ñ$ QÑ'¨Ñ*¬k¸+Ñ.FÀqÑ.IÒIÐIÐIØ˜Ñ$ QÑ'¨Ñ*¬k¸+Ñ.FÀqÑ.IÒIÐIÐIà×Ñœ/¨%Ñ0°Ñ3ÐÔ4Ø×ÑÜ˜EÑ" 1Ñ%Ú%Ð&Ø"Ð$8Ð9Ð:ð ô ð
 ×ÑÓ Ò"Ð"Ð"à—‘Ú8¸u¸gð  ó €Jô ˜z¨,Ñ7¸Ñ:Ò<MÔNÐNÐNØ�kÑ" 1Ñ%¨.Ð:NÐ)OÒOÐOÐOØ�kÑ" 1Ñ%Ð-Ð-Ñ-r   c                 óô   — | j                  «        | j                  d«      }| j                  d«       t        j                  t
        d¬«      5   |j                  di t        ¤Ž d d d «       y # 1 sw Y   y xY wrÞ   )rV   rW   r¬   rÀ   râ   r   r(  r'  rÛ   s     r   Ú5test_collection_upsert_with_invalid_collection_throwsr.  n  s`   € Ø
‡L�L„NØ×)Ñ)¨&Ó1€JØ
×Ñ˜VÔ$ä	�‰”}Ð,KÔ	Lñ -Øˆ
×ÑÑ,œOÒ,÷-÷ -ñ -úrä   c                 óz  — | j                  «        | j                  d«      }g d¢g d¢gddgdœ}t        j                  t        «      5 } |j
                  di |¤Ž d d d «       dt        j                  «      v sJ ‚t        j                  t        «      5 }|j                  g d¢gd	¬
«       d d d «       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 «       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 «       dt        |j                  «      v sJ ‚y # 1 sw Y   �Œ3xY w# 1 sw Y   ŒîxY w# 1 sw Y   Œ˜xY w# 1 sw Y   ŒHxY w)NÚtest_invalid_embeddings)Ú0r1  r1  )z1.2z2.24ú3.2rF   r  rÙ   Ú	embedding)z1.1z2.3r2  rO   r   r   r×   rØ   rÕ   rÒ   rÖ   r   )rV   rW   rÀ   râ   r  rX   r‘   rD  rZ   ra  r(  )r0   r^   Úinvalid_recordsr¯  s       r   r0  r0  z  sÆ  € Ø
‡L�L„NØ×)Ñ)Ð*CÓD€Jò 'Ò(>Ð?Ø�uˆ~ñ€Oô 
�‰”zÓ	"ð * aØˆ
�‰Ñ)˜Ò)÷*àœ#˜aŸg™g›,Ñ&Ð&Ð&ô 
�‰”zÓ	"ð 
 aØ×ÑÚ3Ð4Øð 	ô 	
÷
ð
 œ#˜aŸg™g›,Ñ&Ð&Ð&ð ˜˜a˜S 1 #�¨#¨°°¸¸Ð(>Ð?Ø�uˆ~ñ€Oô 
�‰”zÓ	"ð - aØˆ
×ÑÑ,˜OÒ,÷-àœ#˜aŸg™g›,Ñ&Ð&Ð&ò (Ð(Ò+;Ð*<Ð=Ø�uˆ~ñ€Oô 
�‰”zÓ	"ð - aØˆ
×ÑÑ,˜OÒ,÷-àœ#˜aŸg™g›,Ñ&Ð&Ñ&÷9*ñ *ú÷

ð 
ú÷-ð -ú÷-ð -ús0   ÁFÂFÃ;F%ÅF1ÆFÆF"Æ%F.Æ1F:c                 ó,  — | j                  «        | j                  d«      } |j                  di t        ¤Ž t	        j
                  t        «      5 } |j                  di t        ¤Ž d d d «       dt        j                  «      v sJ ‚y # 1 sw Y   Œ#xY w)NÚ$test_dimensionality_update_exceptionr¬  r   )rV   rW   rX   ré   rÀ   râ   ræ   ra  r­  r‘   rD  r®  s      r   Ú$test_dimensionality_exception_updater7  ¥  óz   € Ø
‡L�L„NØ×)Ñ)Ð*PÓQ€JØ€J‡N�NÑ%”_Ò%ä	�‰”yÓ	!ð 8 QØˆ
×ÑÑ7Ô6Ò7÷8àœ#˜aŸg™g›,Ñ&Ð&Ñ&÷8ð 8úr±  c                 ó,  — | j                  «        | j                  d«      } |j                  di t        ¤Ž t	        j
                  t        «      5 } |j                  di t        ¤Ž d d d «       dt        j                  «      v sJ ‚y # 1 sw Y   Œ#xY w)NÚ$test_dimensionality_upsert_exceptionr¬  r   )rV   rW   rX   ré   rÀ   râ   ræ   r(  r­  r‘   rD  r®  s      r   Ú$test_dimensionality_exception_upsertr;  ²  r8  r±  Úwin32)ÚrerunsÚ	conditionc                 óŒ   — t         j                  j                  d«      rt        j                  d«       | j                  «        y )NÚCHROMA_INTEGRATION_TEST_ONLYú"Skipping test for integration test)r*   ÚenvironrÌ   rÀ   rÁ   r²   )Ú
client_ssls    r   Útest_ssl_self_signedrD  ½  s,   € ä	‡z�z‡~�~Ð4Ô5Ü�‰Ð8Ô9Ø×ÑÕr   c                 ó0  — t         j                  j                  d«      rt        j                  d«       | j                  «        | j                  j                  j                  }t        j                  t        «      5 }t        j                  d|¬«       d d d «       t        j                  t        j                   «      |j                   |j                   j"                  «      }| j%                  «        ddj'                  |«      v sJ ‚y # 1 sw Y   ŒwxY w)Nr@  rA  T)ÚsslÚportÚCERTIFICATE_VERIFY_FAILEDÚ )r*   rB  rÌ   rÀ   rÁ   r²   Ú_serverÚ	_settingsÚchroma_server_http_portrâ   r  r'   Ú
HttpClientÚ	tracebackÚformat_exceptionr  rD  Ú__traceback__r)   Újoin)rC  Ú_portr¯  Ústack_traces       r   Ú'test_ssl_self_signed_without_ssl_verifyrT  Å  sÈ   € ä	‡z�z‡~�~Ð4Ô5Ü�‰Ð8Ô9Ø×ÑÔØ×Ñ×(Ñ(×@Ñ@€EÜ	�‰”zÓ	"ð 2 aÜ×Ñ ¨5Õ1÷2ä×,Ñ,ÜˆQ�W‰W‹�q—w‘w §¡× 5Ñ 5ó€Kð ×!Ñ!Ô#Ø&¨"¯'©'°+Ó*>Ñ>Ð>Ñ>÷2ð 2ús   Á>DÄDc                 ó¶  ‡— | j                  «        | j                  d«      }d}d}t        j                  j	                  dd«      j                  t        j                  «      j                  «       }t        |«      D �cg c]  }|› ‘Œ }}|j                  ||¬«       t        d|d«      D �cg c]  }|› ‘Œ c}Št        j                  j	                  |«      j                  t        j                  «      j                  «       }|j                  |‰|g ¬«      }|d   D �	�
cg c]  }	|	D ]  }
|
‘Œ Œ }}	}
t        ˆfd	„|D «       «      sJ ‚y c c}w c c}w c c}
}	w )
NÚtest_query_id_filtering_smallrÆ   rô  rÙ   r   r°   ©rø   rI   rR   rS   rI   c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr   r   ©Ú.0rF  Ú	query_idss     €r   ú	<genexpr>z8test_query_id_filtering_small_dataset.<locals>.<genexpr>ì  ó   øè ø€ Ò: 2ˆr�YŒÑ:ùó   ƒ©rV   rW   rn   rõ  rö  r÷  rø  r¤   rm   rX   rZ   r@   )r0   r^   Únum_vectorsÚdimÚsmall_recordsrú  rI   Úquery_embeddingr  ÚsublistÚitemÚall_returned_idsr[  s               @r   Ú%test_query_id_filtering_small_datasetrg  Ô  s;  ø€ Ø
‡L�L„NØ×)Ñ)Ð*IÓJ€Jà€KØ
€CÜ—I‘I—N‘N 3¨Ó,×3Ñ3´B·J±JÓ?×FÑFÓH€MÜ  Ó-Ö
.�aˆaˆS‰6Ð
.€CÐ
.à‡N�NØ Øð ô ô
 "' q¨+°rÓ!:Ö;˜A�A�3‘Ò;€IÜ—i‘i—n‘n SÓ)×0Ñ0´·±Ó<×CÑCÓE€OØ×ÑØ(ØØØð	 ó €Gð -4°E©N×O ÀwÒO¸tšÐO˜ÐOÐÑOÜÓ:Ð)9Ô:Ô:Ð:Ñ:ùò# /ùò <ùó Ps   Á?
EÂ-
EÄ!Ec                 óê  ‡— | j                  «        | j                  d«      }d}d}t        j                  j	                  ||«      j                  t        j                  «      j                  «       }t        |«      D �cg c]  }|› ‘Œ }}|j                  ||¬«       t        d|d«      D �cg c]  }|› ‘Œ c}Št        j                  j	                  |«      j                  t        j                  «      j                  «       }|j                  |‰|g ¬«      }|d   D �	�
cg c]  }	|	D ]  }
|
‘Œ Œ }}	}
t        ˆfd	„|D «       «      sJ ‚t        d
«      D �cg c]L  }t        j                  j	                  |«      j                  t        j                  «      j                  «       ‘ŒN }}|j                  |‰dg ¬«      }|d   D ]  }t        ˆfd„|D «       «      rŒJ ‚ y c c}w c c}w c c}
}	w c c}w )NÚtest_query_id_filtering_mediuméè  rô  rÙ   r   r°   rW  rI   c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr   r   rY  s     €r   r\  z9test_query_id_filtering_medium_dataset.<locals>.<genexpr>  r]  r^  rk   c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr   r   rY  s     €r   r\  z9test_query_id_filtering_medium_dataset.<locals>.<genexpr>  s   øè ø€ Ò8 r�2˜”?Ñ8ùr^  r_  )r0   r^   r`  ra  Úmedium_recordsrú  rI   rc  r  rd  re  rf  rs   Úmulti_query_embeddingsÚmulti_resultsÚ
result_setr[  s                   @r   Ú&test_query_id_filtering_medium_datasetrq  ï  sÕ  ø€ Ø
‡L�L„NØ×)Ñ)Ð*JÓK€Jà€KØ
€CÜ—Y‘Y—^‘^ K°Ó5×<Ñ<¼R¿Z¹ZÓH×OÑOÓQ€NÜ  Ó-Ö
.�aˆaˆS‰6Ð
.€CÐ
.à‡N�NØ!Øð ô ô
 "' q¨+°rÓ!:Ö;˜A�A�3‘Ò;€Iä—i‘i—n‘n SÓ)×0Ñ0´·±Ó<×CÑCÓE€OØ×ÑØ(ØØØð	 ó €Gð -4°E©N×O ÀwÒO¸tšÐO˜ÐOÐÑOÜÓ:Ð)9Ô:Ô:Ð:Ð:ô BGÀqÃöØ<=Œ�	‰	�‰�sÓ×"Ñ"¤2§:¡:Ó.×5Ñ5Õ7ðÐð ð ×$Ñ$Ø/ØØØð	 %ó €Mð $ EÑ*ò 9ˆ
ÜÓ8¨ZÔ8Õ8Ð8Ð8ñ9ùò= /ùò <ùó Pùòs   Á?
G Â-
G%Ä!G*ÅAG0c                 óL  ‡— | j                  «        | j                  d«      }d}d}t        j                  j	                  ||«      j                  t        j                  «      j                  «       }t        |«      D �cg c]  }|› ‘Œ }}t        |«      D �cg c]  }d|i‘Œ }}|j                  |||¬«       t        dd«      D �cg c]  }|› ‘Œ }}|j                  |¬«       t        dd	«      D �cg c]  }|› ‘Œ }	}|d
z   }
t        ||
«      D �cg c]  }|› ‘Œ }}t        j                  j	                  t        |	«      t        |«      z   |«      j                  t        j                  «      j                  «       }t        t        |«      «      D �cg c]  }|ddœ‘Œ	 }}|j                  ||	|z   |¬«       t        dd«      D �cg c]  }|› ‘Œ c}t        dd«      D �cg c]  }|› ‘Œ c}z   t        |dz   |dz   «      D �cg c]  }|› ‘Œ c}z   Šdg}t        j                  j	                  |«      j                  t        j                  «      j                  «       }|j                  |‰|
|¬«      }|d   D ��cg c]  }|D ]  }|‘Œ Œ }}}t        ˆfd„|D «       «      sJ ‚t        |d   «      D ]1  \  }}t        |«      D ]  \  }}||	v s||v sŒ|d   |   |   d   rŒJ ‚ Œ3 |	d   }|j                  ||d|¬«      }|d   d   d   d   sJ ‚|d   }t!        j"                  t$        «      5 }|j                  ||d|¬«       d d d «       dt'        j(                  «      v sJ ‚y c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}}w # 1 sw Y   ŒVxY w)NÚtest_query_id_filtering_e2erô  rÆ   Úindexri  r°   é   r  é2   ré  T)rt  Úupsertedr  é#   é-   é   rM   rW  rI   c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr   r   )rZ  rF  Úvalid_query_idss     €r   r\  z.test_query_id_filtering_e2e.<locals>.<genexpr>Q  s   øè ø€ Ò@¨ˆr�_Ô$Ñ@ùr^  rw  r   rO   zError finding id)rV   rW   rn   rõ  rö  r÷  rø  r¤   rm   rX   rþ   r?   r(  rZ   r@   Ú	enumeraterÀ   râ   ræ   r‘   rD  )r0   r^   ra  r`  rL   rú  rI   rM   Úids_to_deleteÚids_to_upsert_existingÚnew_num_vectorsÚids_to_upsert_newÚupsert_embeddingsÚupsert_metadatasr`   rc  r  rd  re  rf  Úresult_indexÚid_listÚ
item_indexÚitem_idÚupserted_idÚ
deleted_idrO  r|  s                              @r   rs  rs    sî  ø€ Ø
‡L�L„NØ×)Ñ)Ð*GÓH€Jà
€CØ€KÜ—‘—‘ ¨SÓ1×8Ñ8¼¿¹ÓD×KÑKÓM€JÜ  Ó-Ö
.�aˆaˆS‰6Ð
.€CÐ
.Ü',¨[Ó'9Ö: !�'˜1’Ð:€IÐ:à‡N�NØØØð ô ô &+¨2¨r£]Ö3 ˜�s‘VÐ3€MÐ3Ø×Ñ˜-ÐÔ(ô /4°B¸«mÖ<¨  ™fÐ<ÐÐ<Ø! BÑ&€OÜ).¨{¸OÓ)LÖM A˜A˜3™ÐMÐÐMô 	�	‰	�‰”sÐ1Ó2´SÐ9JÓ5KÑKÈSÓQß	‰”—
‘
Ó	ß	‰‹ð ô 16´cÐ:KÓ6LÓ0MöØ+,�! Ó&ðÐð ð ×ÑØ$Ø"Ð%6Ñ6Ø"ð ô ô ˜q "›Ö&�AˆAˆ3‰Ò&Ü   R›=Ö
)�aˆaˆS‰6Ò
)ñ	*ô " +°¡/°;ÀÑ3CÓDö
Øˆqˆc‰Fò
ñ	
ð ð ˆ}€HÜ—i‘i—n‘n SÓ)×0Ñ0´·±Ó<×CÑCÓE€OØ×ÑØ(ØØ!Øð	 ó €Gð -4°E©N×O ÀwÒO¸tšÐO˜ÐOÐÑOÜÓ@Ð/?Ô@Ô@Ð@Ð@ä!*¨7°5©>Ó!:ò RÑˆ�gÜ#,¨WÓ#5ò 	RÑˆJ˜ØÐ0Ñ0°GÐ?PÒ4Pà˜{Ñ+¨LÑ9¸*ÑEÀjÓQÐQÐQñ	RðRð )¨Ñ+€Kà×ÑØ(ØØØð	 ó €Gð �;Ñ Ñ" 1Ñ% jÒ1Ð1Ð1à˜qÑ!€Jä	�‰”yÓ	!ð 
 UØ×ÑØ,ØØØð	 	ô 	
÷
ð ¤ U§[¡[Ó!1Ñ1Ð1Ñ1ùò[ /ùÚ:ùò 4ùò =ùâMùòùò 	'ùÚ
)ùò
ùó P÷*
ð 
úsH   Á?
M'ÂM,Ã
M1Ã3
M6Ä
M;ÆN Ç
NÇ!
N
È
NÉ<NÌ/NÎN#c                  ó¢  — ddl m}   | g d¢g d¢¬«        | g g ¬«       t        j                  t        d¬«      5   | dd	d
g¬«       ddd«       t        j                  t        d¬«      5   | ddgd¬«       ddd«       t        j                  t        d¬«      5   | g d¢d	d
g¬«       ddd«       t        j                  t        d¬«      5   | g d¢g d¢¬«       ddd«       t        j                  t        d¬«      5   | g d¢g d¢¬«       ddd«       t        j                  t        d¬«      5   | g d¢g d¢¬«       ddd«       t        j                  t        d¬«      5   | g d¢g d¢¬«       ddd«        | 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«       t        j                  t        d¬«      5   | ddgd	d
g¬«       ddd«        | dgdg¬«        | ddgddg¬«       t        j                  t        d¬«      5   | g d ¢g d¢¬«       ddd«       t        j                  t        d¬«      5   | g d!¢g d"¢¬«       ddd«       t        j                  t        d¬«      5   | g d#¢g d$¢¬«       ddd«       y# 1 sw Y   �ŒsxY w# 1 sw Y   �ŒPxY w# 1 sw Y   �Œ+xY w# 1 sw Y   �ŒxY w# 1 sw Y   �ŒáxY w# 1 sw Y   �Œ¼xY w# 1 sw Y   �Œ—xY w# 1 sw Y   �ŒHxY w# 1 sw Y   �Œ#xY w# 1 sw Y   ŒãxY w# 1 sw Y   Œ½xY w# 1 sw Y   yxY w)%z.Test SparseVector validation in __post_init__.r   ©ÚSparseVector©r   rj   r  ©rù   ç      à?çÍÌÌÌÌÌì?©ÚindicesÚvaluesz*Expected SparseVector indices to be a listrà   Ú
not_a_listrù   r  Nz)Expected SparseVector values to be a listrO   ú,indices and values must have the same length©r   rO   rj   z%SparseVector indices must be integers)r   Únot_intrj   r  ú)SparseVector indices must be non-negative©r   r  rj   ú#SparseVector values must be numbers)rù   Ú
not_numberr  )ç        ç      ð?r—  ri   )rO   ç      @rk   )rÆ   rj  i'  é*   ç…ëQ¸	@TFú2indices must be sorted in strictly ascending order)r   rj   rO   )r   rO   rO   rj   )rù   r  r  çš™™™™™Ù?)r  rk   rO   )r�  r  rù   )Úchromadb.base_typesrŒ  rÀ   râ   r  r‹  s    r   Útest_validate_sparse_vectorr¤  o  sü  € å0ñ šª?Õ;ñ ˜ BÕ'ô 
�‰”zÐ)UÔ	Vñ >Ù˜\°3¸°*Õ=÷>ô 
�‰”zÐ)TÔ	Uñ :Ù˜a ˜V¨LÕ9÷:ô 
�‰ÜÐHô
ñ ;ñ 	šY°°S¨zÕ:÷;ô 
�‰”zÐ)PÔ	Qñ HÙÒ.²ÕG÷Hô 
�‰”zÐ)TÔ	Uñ AÙšZ²Õ@÷Aô 
�‰”zÐ)NÔ	Oñ IÙšYÒ/GÕH÷Iô 
�‰”zÐ)PÔ	Qñ FÙš_²_ÕE÷Fñ šª9Õ5ñ šª;Õ7ñ Ò+²OÕDô 
�‰”zÐ)NÔ	Oñ 9Ù˜a ˜V¨S°$¨KÕ8÷9ô 
�‰”zÐ)PÔ	Qñ ;Ù˜a ˜Y°°S¨zÕ:÷;ñ ˜"˜ t fÕ-ñ ˜!˜Q˜¨¨u¨Õ6ô 
�‰ÜÐNô
ñ @ñ 	šYªÕ?÷@ô 
�‰ÜÐNô
ñ Hñ 	š\Ò2FÕG÷Hô 
�‰ÜÐNô
ñ @ñ 	šYªÕ?÷@ð @÷C>ñ >ú÷:ñ :ú÷;ñ ;ú÷Hñ Hú÷Añ Aú÷Iñ Iú÷Fñ Fú÷9ñ 9ú÷;ñ ;ú÷@ð @ú÷Hð Hú÷@ð @ús�   ºJ8Á*KÂKÃKÃ>K,Ä0K9Å"LÆ>LÇ0L È<L-É.L9Ê MÊ8KËKËKËK)Ë,K6Ë9LÌLÌLÌ L*Ì-L6Ì9MÍM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«       ddddgidœ}t	        j
                  t        d¬«      5   | |«       ddd«       t	        j
                  t        d¬«      5  d |g d¢g d¢¬«      dœ}	ddd«       t	        j
                  t        d¬«      5  d  |ddgdd!g¬«      dœ}
ddd«       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«        |t        t        d+«      «      t        d+«      D �cg c]  }t        |«      d,z  ‘Œ c}¬«      }d-|d.œ} | |«       y# 1 sw Y   �ŒUxY w# 1 sw Y   �Œ-xY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒÜxY w# 1 sw Y   Œ‰xY wc c}w )/z<Test that sparse vectors are properly validated in metadata.r   )Úvalidate_metadatar‹  r�  rŽ  r‘  ©rO   rk   rÉ  )r  r¢  rè  z
document 1r�  )r¸  Úsparse_embeddingÚscorez
document 2çš™™™™™é?zempty sparse)r¸  Ú
sparse_vecr•  rà   ÚinvalidrO   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)rj   rk   rÉ  )r  r¢  r�  rŸ  )r¸  Úsparse_1Úsparse_2Úregular_fieldÚsome_configr–  ©r�  r—  r#  )r…   Úsparse_vectorrj  gü©ñÒMbP?zlarge sparse)r¸  Úlarge_sparse_vec)
Úchromadb.api.typesr¦  r£  rŒ  rÀ   râ   r  Úlistrm   rm  )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_nestedrú  Úlarge_sparseÚmetadata_larges                   r   Ú)test_sparse_vector_in_metadata_validationrÄ  Á  sZ  € å4Ý0ñ #ª9º_ÔM€OÙ"ª9º_ÔM€Oð Ø+Øñ€Jð Ø+Øñ€Jñ
 �jÔ!Ù�jÔ!ð Ù"¨2°bÔ9ñ€Nñ �nÔ%ô 
�‰ÜÐHô
ñ 
ð Ù ,°a¸°VÀSÀEÔ Jñ
Ð÷
ð "Ø%¨¨S zÐ2ñÐô 
�‰ÜØbô
ñ .ñ 	Ð,Ô-÷	.ô 
�‰”zÐ)TÔ	Uñ 
à$Ù ,Ú"ª?ô!ñ
Ð÷
ô 
�‰”zÐ)NÔ	Oñ 
à'Ù ,Ø˜A˜¨¨^Ð'<ô!ñ
Ð÷
ð *Ù ¨!¨Q¨¸¸c¸
ÔCÙ ªº?ÔKØñ	Ðñ Ð'Ô(ð  Ú%.º/ÑJñ€Oô 
�‰ÜØbô
ñ +ñ 	˜/Ô*÷	+ñ  Ü”U˜4“[Ó!Ü*/°«+Ö6 Q”�a“˜5Ó Ò6ô€Lð -À,ÑO€NÙ�nÕ%÷
ñ 
ú÷.ñ .ú÷
ñ 
ú÷
ð 
ú÷,+ð +üò 7sB   Á5GÂ2	G&ÃG3ÄH Å;	HÆ.H
ÇG#Ç&G0Ç3G=È H	ÈH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«       dt
        t        dg d¢dg d¢id	œ}	t        j                  t        d¬«      5   | |	«       ddd«       dt
        t        dg d¢dg d¢id	œ}
t        j                  t        d¬«      5   | |
«       ddd«       dt
        t        dddgdg d¢id	œ}t        j                  t        d¬«      5   | |«       ddd«       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 ‚y# 1 sw Y   �Œ·xY w# 1 sw Y   �Œ�xY w# 1 sw Y   �ŒKxY w# 1 sw Y   �ŒxY w),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   rj   )r#  r�  r—  r¡  rà   NÚ
duplicates)r   rj   rj   Únegative)r  r   rj   zindices must be non-negativeÚmismatchrj   r•  Úregularrb   rD  )r¸  r…   r…   ÚemptyrO   r�  r—  rk   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à  !  sy  € çHÝ0ð  äÔ.Ø’yØ’oð
ñÐñ $Ð$8Ó9€Jä�j Ñ*¨LÔ9Ð9Ð9Ø�hÑ×'Ñ'ª9Ò4Ð4Ð4Ø�hÑ×&Ñ&ª/Ò9Ð9Ð9ñ �jÔ!ñ #ª9º_ÔM€OàØ!ñ Ðñ %Ð%=Ó>€Kà�xÑ  OÑ3Ð3Ð3Ù�kÔ"ð äÔ.Ø’yØ’oð
ñÐô 
�‰ÜÐNô
ñ .ñ 	Ð,Ô-÷.ð äÔ.Ø’yØ’oð
ñÐô 
�‰ÜÐNô
ñ 0ñ 	Ð.Ô/÷0ð äÔ.Ø’zØ’oð
ñÐô 
�‰”zÐ)GÔ	Hñ .ÙÐ,Ô-÷.ð
 äÔ.Ø˜˜1�vØ’oð
ñÐô 
�‰ÜÐHô
ñ .ñ 	Ð,Ô-÷.ð Ø˜'Ð"ñÐñ %Ð%:Ó;€KÜ�k (Ñ+¬TÔ2Ð2Ð2Ø�xÑ  Ñ'¨7Ò2Ð2Ð2ð ÜÔ5°yÀ"ÀhÐPRÐSñ€Nñ % ^Ó4€KÜ�k (Ñ+¨\Ô:Ð:Ð:Ø�xÑ ×(Ñ(¨BÒ.Ð.Ð.Ø�xÑ ×'Ñ'¨2Ò-Ð-Ð-ô
 Ô.Ø˜˜1�vØ�s˜C�jð
ô Ô.Ø˜˜1�vØ�s˜C�jð
ð
 ñÐñ %Ð%6Ó7€KÜ�k )Ñ,¨lÔ;Ð;Ð;Ü�k )Ñ,¨lÔ;Ð;Ð;Ø�yÑ! RÒ'Ð'Ñ'÷c.ñ .ú÷0ñ 0ú÷.ñ .ú÷.ñ .ús0   Ã	JÄ	JÅ	J)Æ	J6ÊJÊJ&Ê)J3Ê6K 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«       t        j                  t
        d¬«      5   | dddgi«       ddd«       t        j                  t
        d¬«      5   | dddgi«       ddd«       t        j                  t
        d¬«      5   | dddgi«       ddd«       t        j                  t
        d¬«      5   | ddggi«       ddd«        |dddgi«        |dg d¢i«        |ddi«       t        j                  t
        d¬«      5   |dg i«       ddd«       y# 1 sw Y   �ŒxY w# 1 sw Y   Œ÷xY w# 1 sw Y   ŒÓxY w# 1 sw Y   Œ¯xY w# 1 sw Y   Œ‹xY w# 1 sw Y   yxY w)z6Test that list metadata values are properly validated.r   ©r¦  Úvalidate_update_metadataÚtagsÚactionÚcomedyÚscoresri   Úratingsrú   rÕ   Úflags)TFTr:   r;   r  rE   )rä  r«   rƒ   z	non-emptyrà   Nz	same typerO   ÚvalsrÉ  TÚyeszstr, int, float, or boolr€  )rµ  r¦  rã  rÀ   râ   r  râ  s     r   Útest_list_metadata_validationrì     sÉ  € çNñ �v ¨(Ð3Ð4Ô5Ù�x¢Ð+Ô,Ù�y 3¨ *Ð-Ô.Ù�wÒ 3Ð4Ô5ñ   S˜z°A¸vÑFÔGô 
�‰”z¨Ô	5ñ (Ù˜6 2˜,Ô'÷(ô 
�‰”z¨Ô	5ñ .Ù˜6 C¨ 8Ð,Ô-÷.ô 
�‰”z¨Ô	5ñ .Ù˜6 A s 8Ð,Ô-÷.ô 
�‰”z¨Ô	5ñ 3Ù˜6 D¨% =Ð1Ô2÷3ô 
�‰”zÐ)CÔ	Dñ 2Ù˜6 X J <Ð0Ô1÷2ñ ˜f x°Ð&:Ð;Ô<Ù˜hª	Ð2Ô3ñ ˜f d˜^Ô,ô 
�‰”z¨Ô	5ñ /Ù  &¨" Ô.÷/ð /÷3(ñ (ú÷.ð .ú÷.ð .ú÷3ð 3ú÷2ð 2ú÷/ð /úsH   Á"FÂFÃ FÃ0F+Ä F7Å2GÆFÆFÆF(Æ+F4Æ7G ÇG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«       t        j                  t        «      5   | ddddiii«       ddd«        | ddddiidddiigi«       y# 1 sw Y   ŒNxY w# 1 sw Y   Œ*xY w)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ñ �F˜[¨(Ð3Ð4Ô5Ù�H˜{¨BÐ/Ð0Ô1Ù�I ¨SÐ1Ð2Ô3Ù�G˜k¨4Ð0Ð1Ô2ñ �F˜_¨gÐ6Ð7Ô8Ù�H˜°Ð2Ð3Ô4ô 
�‰”zÓ	"ñ <Ù˜ ¨s°C¨jÐ 9Ð:Ô;÷<ô 
�‰”zÓ	"ñ BÙ˜ ¨x¸Ð.>Ð ?Ð@ÔA÷Bñ Ø	�6˜K¨Ð2Ð3°f¸uÀd¸mÐ5LÐMÐNõ÷<ð <ú÷Bð Bús   Á(CÂCÃCÃCc                 ób   — | j                  «       }|j                  dk(  xr |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Ñ0ØDñEðr   c           	      óD  — t        | «      rt        j                  d«       | j                  «        | j	                  d«      }|j                  g d¢g d¢g d¢g d¢gddgd	d
œdgdd
œddgdd
œg¬«       |j                  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 ‚|j                  dddii¬«      }t        |d   D �cg c]  }|d   ‘Œ	 c}«      }|d	dgk(  sJ ‚|j                  dddii¬«      }t        |d   «      dk(  sJ ‚|d   d   d   dk(  sJ ‚|j                  dddii¬«      }t        |d   «      dk(  sJ ‚|d   d   d   dk(  sJ ‚|j                  dddii¬«      }t        |d   «      dk(  sJ ‚yc c}w )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  rF   r  rM   rO   r   rä  rñ  r©  rt  r¹  ÚromanceN)	r÷  rÀ   rÁ   rV   rW   rX   rÌ   r?   Úsorted)r0   r^   ro  ÚmrI   s        r   rú  rú  ò  s  € ä Ô'Ü�‰ÐNÔOØ
‡L�L„NØ×)Ñ)Ð*CÓD€JØ‡N�NÚ!Úšyª)Ð4à Ð)°4Ñ8Ø�Y¨Ñ-Ø 
Ð+°TÑ:ð
ð ô ð �N‰N ˜wˆNÓ'€EÜˆu�[Ñ!Ó" aÒ'Ð'Ð'Ü�%˜Ñ$ QÑ'¨Ñ/Ó0°X¸xÐ4HÒHÐHÐHØ�Ñ˜aÑ  Ñ(¨DÒ0Ð0Ð0ð �N‰N &¨;¸Ð*AÐ!BˆNÓC€EÜ
 U¨;Ñ%7Ö8 �!�F“)Ò8Ó
9€CØ�4˜�,ÒÐÐð �N‰N &¨;¸Ð*@Ð!AˆNÓB€EÜˆu�[Ñ!Ó" aÒ'Ð'Ð'Ø�Ñ˜aÑ  Ñ(¨DÒ0Ð0Ð0ð �N‰N &¨?¸HÐ*EÐ!FˆNÓG€EÜˆu�[Ñ!Ó" aÒ'Ð'Ð'Ø�Ñ˜aÑ  Ñ(¨DÒ0Ð0Ð0ð �N‰N &¨;¸	Ð*BÐ!CˆNÓD€EÜˆu�[Ñ!Ó" aÒ'Ð'Ñ'ùò 9s   Ã%Fc                 ó  — t        | «      rt        j                  d«       | j                  «        | j	                  d«      }|j                  ddgg d¢g d¢gdg d¢idd	d
gig¬«       |j                  dddii¬«      }t        |d   «      dk(  sJ ‚|d   d   dk(  sJ ‚|j                  ddd
ii¬«      }t        |d   «      dk(  sJ ‚|d   d   dk(  sJ ‚|j                  dddii¬«      }t        |d   «      dk(  sJ ‚|d   d   dk(  sJ ‚y)z(End-to-end: $contains on integer arrays.rù  Útest_int_array_e2erF   r  r  r  rç  )r°   ré  ru  é(   rv  r  r©  ré  rt  rI   rO   r   r¹  r°   N)r÷  rÀ   rÁ   rV   rW   rX   rÌ   r?   rn  s      r   Ú$test_array_metadata_int_contains_e2er  	  sA  € ä Ô'Ü�‰ÐNÔOØ
‡L�L„NØ×)Ñ)Ð*>Ó?€JØ‡N�NØ�EˆNÚšyÐ)à’|Ð$Ø˜˜B�xÐ ð
ð ô ð �N‰N (¨[¸"Ð,=Ð!>ˆNÓ?€EÜˆu�U‰|Ó Ò!Ð!Ð!Ø�‰<˜‰?˜eÒ#Ð#Ð#à�N‰N (¨[¸"Ð,=Ð!>ˆNÓ?€EÜˆu�U‰|Ó Ò!Ð!Ð!Ø�‰<˜‰?˜eÒ#Ð#Ð#à�N‰N (¨_¸bÐ,AÐ!BˆNÓC€EÜˆu�U‰|Ó Ò!Ð!Ð!Ø�‰<˜‰?˜eÒ#Ð#Ñ#r   c                 ó.  — t        | «      rt        j                  d«       | j                  «        | j	                  d«      }|j                  dgg d¢gdddgig¬«       |j                  dd	dii¬
«      }t        |d   «      dk(  sJ ‚|j                  dgddgig¬«       |j                  dd	dii¬
«      }t        |d   «      dk(  sJ ‚|j                  dd	dii¬
«      }t        |d   «      dk(  sJ ‚|j                  dg¬«      }|d   d   d   dgk(  sJ ‚y)z8End-to-end: updating array metadata replaces old values.rù  Útest_array_update_e2erF   r  rä  Úold_aÚold_br  r©  rt  rI   rO   Únew_xr~  r   r  rM   N)	r÷  rÀ   rÁ   rV   rW   rX   rÌ   r?   ra  rn  s      r   Útest_array_metadata_update_e2er	  8	  sO  € ä Ô'Ü�‰ÐNÔOØ
‡L�L„NØ×)Ñ)Ð*AÓB€JØ‡N�NØˆGÚ�;Ø˜W gÐ.Ð/Ð0ð ô ð �N‰N &¨;¸Ð*@Ð!AˆNÓB€EÜˆu�U‰|Ó Ò!Ð!Ð!ð ×ÑØˆGØ˜W˜IÐ&Ð'ð ô ð �N‰N &¨;¸Ð*@Ð!AˆNÓB€EÜˆu�U‰|Ó Ò!Ð!Ð!ð �N‰N &¨;¸Ð*@Ð!AˆNÓB€EÜˆu�U‰|Ó Ò!Ð!Ð!ð �N‰N ˜wˆNÓ'€EØ�Ñ˜aÑ  Ñ(¨W¨IÒ5Ð5Ñ5r   c                 óR  — t        | «      rt        j                  d«       | j                  «        | j	                  d«      }|j                  dgg d¢gddddgd	œg¬
«       |j                  dg¬«      }|d   d   }|d   dk(  sJ ‚|d   dk(  sJ ‚t        |d   «      ddgk(  sJ ‚|j                  dddii¬«      }t        |d   «      dk(  sJ ‚|j                  dddii¬«      }t        |d   «      dk(  sJ ‚|j                  ddddiidddiigi¬«      }t        |d   «      dk(  sJ ‚y)z8End-to-end: records with both scalar and array metadata.rù  Útest_mixed_e2erF   r  ÚAlicerŸ  ÚadminÚuser)rƒ   r©  rä  r  r  rM   r   rƒ   r©  rä  r¢  rt  rI   rO   r©  r§  rœ  r  N)	r÷  rÀ   rÁ   rV   rW   rX   rÌ   rþ  r?   )r0   r^   ro  Úmds       r   Ú)test_array_metadata_mixed_with_scalar_e2er  [	  sz  € ä Ô'Ü�‰ÐNÔOØ
‡L�L„NØ×)Ñ)Ð*:Ó;€JØ‡N�NØˆGÚ�;Ø#¨b¸7ÀFÐ:KÑLÐMð ô ð �N‰N ˜wˆNÓ'€EØ	ˆ{Ñ	˜AÑ	€BØˆf‰:˜Ò Ð Ð Øˆg‰;˜"ÒÐÐÜ�"�V‘*Ó '¨6Ð!2Ò2Ð2Ð2ð �N‰N '¨E°2¨;Ð!7ˆNÓ8€EÜˆu�U‰|Ó Ò!Ð!Ð!ð �N‰N &¨;¸Ð*@Ð!AˆNÓB€EÜˆu�U‰|Ó Ò!Ð!Ð!ð �N‰NàØ˜6 2˜,Ð'Ø˜+ wÐ/Ð0ðð
ð ó €Eô ˆu�U‰|Ó Ò!Ð!Ñ!r   c                 óø  — t        | «      rt        j                  d«       | j                  «        | j	                  d«      }|j                  dgg d¢gddig¬«       |j                  dgddd	gig¬
«       |j                  dddii¬«      }t        |d   «      dk(  sJ d«       ‚|j                  dddii¬«      }t        |d   «      dk(  sJ ‚|j                  dg¬«      }t        |d   d   d   «      dd	gk(  sJ ‚y)zREnd-to-end: changing a metadata field from scalar to array removes the old scalar.rù  Útest_scalar_to_arrayrF   r  rä  Ú
old_scalarr  Únew_aÚnew_br~  r¢  rt  rI   r   z+Stale scalar value should have been removedr©  rO   r  rM   N)
r÷  rÀ   rÁ   rV   rW   rX   ra  rÌ   r?   rþ  rn  s      r   Ú-test_metadata_type_change_scalar_to_array_e2er  �	  s*  € ä Ô'Ü�‰ÐNÔOØ
‡L�L„NØ×)Ñ)Ð*@ÓA€Jð ‡N�NØˆGÚ�;Ø˜LÐ)Ð*ð ô ð
 ×ÑØˆGØ˜W gÐ.Ð/Ð0ð ô ð �N‰N &¨5°,Ð*?Ð!@ˆNÓA€EÜˆu�U‰|Ó Ò!ÐPÐ#PÓPÐ!ð �N‰N &¨;¸Ð*@Ð!AˆNÓB€EÜˆu�U‰|Ó Ò!Ð!Ð!ð �N‰N ˜wˆNÓ'€EÜ�%˜Ñ$ QÑ'¨Ñ/Ó0°W¸gÐ4FÒFÐFÑFr   c                 óâ  — t        | «      rt        j                  d«       | j                  «        | j	                  d«      }|j                  dgg d¢gdddgig¬«       |j                  dgdd	ig¬
«       |j                  dddii¬«      }t        |d   «      dk(  sJ d«       ‚|j                  ddd	ii¬«      }t        |d   «      dk(  sJ ‚|j                  dg¬«      }|d   d   d   d	k(  sJ ‚y)zVEnd-to-end: changing a metadata field from array to scalar removes the old array rows.rù  Útest_array_to_scalarrF   r  rä  r  r  r  Ú
new_scalarr~  r©  rt  rI   r   z)Stale array rows should have been removedr¢  rO   r  rM   N©	r÷  rÀ   rÁ   rV   rW   rX   ra  rÌ   r?   rn  s      r   Ú-test_metadata_type_change_array_to_scalar_e2er  ¡	  s   € ä Ô'Ü�‰ÐNÔOØ
‡L�L„NØ×)Ñ)Ð*@ÓA€Jð ‡N�NØˆGÚ�;Ø˜W gÐ.Ð/Ð0ð ô ð
 ×ÑØˆGØ˜LÐ)Ð*ð ô ð �N‰N &¨;¸Ð*@Ð!AˆNÓB€EÜˆu�U‰|Ó Ò!ÐNÐ#NÓNÐ!ð �N‰N &¨5°,Ð*?Ð!@ˆNÓA€EÜˆu�U‰|Ó Ò!Ð!Ð!ð �N‰N ˜wˆNÓ'€EØ�Ñ˜aÑ  Ñ(¨LÒ8Ð8Ñ8r   c                 ó   — t        | «      rt        j                  d«       | j                  «        | j	                  d«      }|j                  dgg d¢gddig¬«       |j                  dgg d¢gddd	gig¬«       |j                  dd
dii¬«      }t        |d   «      dk(  sJ d«       ‚|j                  dddii¬«      }t        |d   «      dk(  sJ ‚|j                  dg¬«      }t        |d   d   d   «      dd	gk(  sJ ‚y)zFEnd-to-end: upsert (not update) correctly cleans up when type changes.rù  Útest_upsert_type_changerF   r  rä  Ú
scalar_valr  Úarr_aÚarr_br¢  rt  rI   r   z*Stale scalar from upsert should be removedr©  rO   r  rM   N)	r÷  rÀ   rÁ   rV   rW   r(  rÌ   r?   rþ  rn  s      r   Ú(test_metadata_type_change_via_upsert_e2er!  Á	  s/  € ä Ô'Ü�‰ÐNÔOØ
‡L�L„NØ×)Ñ)Ð*CÓD€Jð ×ÑØˆGÚ�;Ø˜LÐ)Ð*ð ô ð
 ×ÑØˆGÚ�;Ø˜W gÐ.Ð/Ð0ð ô ð �N‰N &¨5°,Ð*?Ð!@ˆNÓA€EÜˆu�U‰|Ó Ò!ÐOÐ#OÓOÐ!ð �N‰N &¨;¸Ð*@Ð!AˆNÓB€EÜˆu�U‰|Ó Ò!Ð!Ð!à�N‰N ˜wˆNÓ'€EÜ�%˜Ñ$ QÑ'¨Ñ/Ó0°W¸gÐ4FÒFÐFÑFr   c                 ój  — t        | «      rt        j                  d«       | j                  «        | j	                  d«      }|j                  dgg d¢gddig¬«       |j                  dgddgig¬	«       |j                  dgdd
ig¬	«       |j                  dddii¬«      }t        |d   «      dk(  sJ d«       ‚|j                  dddii¬«      }t        |d   «      dk(  sJ d«       ‚|j                  ddd
ii¬«      }t        |d   «      dk(  sJ ‚|j                  dg¬«      }|d   d   d   d
k(  sJ ‚y)z;End-to-end: scalar -> array -> scalar leaves no stale data.rù  Útest_rapid_fliprF   r  rä  Úoriginalr  Úmid_ar~  Úfinal_scalarr¢  rt  rI   r   zOriginal scalar should be goner©  z!Intermediate array should be gonerO   r  rM   Nr  rn  s      r   Ú!test_metadata_rapid_type_flip_e2er'  à	  sw  € ä Ô'Ü�‰ÐNÔOØ
‡L�L„NØ×)Ñ)Ð*;Ó<€Jà‡N�NØˆGÚ�;Ø˜JÐ'Ð(ð ô ð
 ×ÑØˆGØ˜W˜IÐ&Ð'ð ô ð ×ÑØˆGØ˜NÐ+Ð,ð ô ð �N‰N &¨5°*Ð*=Ð!>ˆNÓ?€EÜˆu�U‰|Ó Ò!ÐCÐ#CÓCÐ!ð �N‰N &¨;¸Ð*@Ð!AˆNÓB€EÜˆu�U‰|Ó Ò!ÐFÐ#FÓFÐ!ð �N‰N &¨5°.Ð*AÐ!BˆNÓC€EÜˆu�U‰|Ó Ò!Ð!Ð!à�N‰N ˜wˆNÓ'€EØ�Ñ˜aÑ  Ñ(¨NÒ:Ð:Ñ:r   c                 óR  — t        | «      rt        j                  d«       | j                  «        | j	                  d«      }|j                  dgg d¢gdddgdœg¬	«       |j                  dgd
dgddœg¬«       |j                  dddii¬«      }t        |d   «      dk(  sJ d«       ‚|j                  ddd
ii¬«      }t        |d   «      dk(  sJ ‚|j                  dddii¬«      }t        |d   «      dk(  sJ d«       ‚|j                  dddii¬«      }t        |d   «      dk(  sJ ‚y)zNEnd-to-end: one update changes 'color' scalar->array AND 'tags' array->scalar.rù  Útest_mixed_type_changerF   r  Úredr  r  )Úcolorrä  r  ÚblueÚgreenr  r~  r+  r¢  rt  rI   r   zOld color scalar should be goner©  rO   rä  zOld tags array should be goneNr  rn  s      r   Ú1test_metadata_mixed_simultaneous_type_changes_e2er.  
  s]  € ä Ô'Ü�‰ÐNÔOØ
‡L�L„NØ×)Ñ)Ð*BÓC€Jà‡N�NØˆGÚ�;Ø"¨W°gÐ,>Ñ?Ð@ð ô ð
 ×ÑØˆGØ$ gÐ.¸ÑEÐFð ô ð �N‰N '¨E°5¨>Ð!:ˆNÓ;€EÜˆu�U‰|Ó Ò!ÐDÐ#DÓDÐ!ð �N‰N '¨K¸Ð+@Ð!AˆNÓB€EÜˆu�U‰|Ó Ò!Ð!Ð!ð �N‰N &¨;¸Ð*@Ð!AˆNÓB€EÜˆu�U‰|Ó Ò!ÐBÐ#BÓBÐ!ð �N‰N &¨5°,Ð*?Ð!@ˆNÓA€EÜˆu�U‰|Ó Ò!Ð!Ñ!r   c                 ób  — t        | «      rt        j                  d«       | j                  «        | j	                  d«      }|j                  dgg d¢gdddœg¬«       |j                  dgd	d
dgig¬«       |j                  dgd	dig¬«       |j                  dg¬«      }t        |d   «      dk(  sJ ‚d	|d   d   vsJ d|d   d   › �«       ‚|d   d   d   dk(  sJ ‚|j                  d	ddii¬«      }t        |d   «      dk(  sJ ‚|j                  d	dd
ii¬«      }t        |d   «      dk(  sJ ‚y)zBEnd-to-end: add scalar, update to array, then delete key entirely.rù  Útest_delete_after_type_changerF   r  r  rë  )rä  Úkeepr  rä  r  r   r~  Nr  rI   rO   rM   r   z tags key should be deleted, got r1  r¢  rt  r©  r  rn  s      r   Ú*test_metadata_delete_after_type_change_e2er2  '
  s‡  € ä Ô'Ü�‰ÐNÔOØ
‡L�L„NØ×)Ñ)Ð*IÓJ€Jà‡N�NØˆGÚ�;Ø(°%Ñ8Ð9ð ô ð
 ×ÑØˆGØ˜W gÐ.Ð/Ð0ð ô ð ×ÑØˆGØ˜D�>Ð"ð ô ð �N‰N ˜wˆNÓ'€EÜˆu�U‰|Ó Ò!Ð!Ð!à�e˜KÑ(¨Ñ+Ñ+ðBà	)¨%°Ñ*<¸QÑ*?Ð)@ÐAóBØ+à�Ñ˜aÑ  Ñ(¨EÒ1Ð1Ð1ð �N‰N &¨5°,Ð*?Ð!@ˆNÓA€EÜˆu�U‰|Ó Ò!Ð!Ð!à�N‰N &¨;¸Ð*@Ð!AˆNÓB€EÜˆu�U‰|Ó Ò!Ð!Ñ!r   c                  óö  — 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 ‚y)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’  rj   r“  r�  r—  rÇ  r0  rO   rk   rÉ  rž  r‘  r¸  Útest3)zdoc onezdoc twoz	doc three)rI   rL   rM   rJ   rM   rÈ  )
rµ  r4  r5  r£  rŒ  r
   r   r³   r’  r“  )r4  r5  rŒ  Ú
record_sets       r   Ú,test_sparse_vector_dict_format_in_record_setr<  L
  su  € ÷õ 1ñ -Ú$Øð  äÔ6Ø  1˜vØ˜s C˜jðñð  Ù&°°1¨v¸sÀC¸jÔIñð �WÐð
ò 6ô%€Jô, �j Ñ-¨aÑ0°Ñ:¸LÔIÐIÐIÜ�j Ñ-¨aÑ0°Ñ:¸LÔIÐIÐIØ˜: kÑ2°1Ñ5Ñ5Ð5Ð5ñ ˜zÔ*ð �kÑ" 1Ñ% hÑ/×7Ñ7¸A¸q¸6ÒAÐAÐAØ�kÑ" 1Ñ% hÑ/×6Ñ6¸3À¸*ÒDÐDÐDØ�kÑ" 1Ñ% hÑ/×7Ñ7¸A¸q¸6ÒAÐAÐAØ�kÑ" 1Ñ% hÑ/×6Ñ6¸3À¸*Ò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œ«      }|j                  «       }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 rŒ 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œ«      }|j                  «       }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œ«      }|j                  «       }|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œ«      }|j                  «       }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œ«      }|j                  «       }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 ‚|j	                  dB«      d:ggk(  sJ ‚dC|v sJ ‚t        |«      dDk(  sJ ‚|j                  «       }t        |d   «      dk(  sJ ‚|d   d   d   d9k(  sJ ‚t        dE«       y")FzTTest the SearchResult.rows() method for converting column-major to row-major format.r   )ÚSearchResultr"  r6  r�  r—  r#  rÐ  ç      @g      @rb   r:   r;   r;  )r�  rª  çffffffæ?)Údocumentr©  r
  )rI   rJ   rL   rM   rç  ÚselectrO   rk   rF  rF   rA  r¾  r3  r
  r©  r�  Úa1Úa2)Úb1Úb2Úb3Údoc_a1Údoc_a2)Údoc_b1Údoc_b2Údoc_b3NÚxrj   r�  r¢  )rF  rA  r
  r©  rE  rJ  )rF  rA  r3  r©  rF  rK  rª  rG  rL  r@  )Nr7  N)r�  Nr@  )rA  r
  r©  )rF  r
  r©  r  r7  )rF  rA  r  rE   ztest docTrù   r  r&  r@   )rI   rJ   rM   rL   rç  rB  rI   rJ   rM   é   z%All SearchResult.rows() tests passed!)rµ  r>  Úrowsr?   rÌ   rZ  )r>  r  rO  Úrows       r   Útest_search_result_rowsrQ  y
  s±  € å/ñ â)Ð*Ú2Ð3Ø  #˜J¨¨c¨
°S¸#°JÐ?Ð@Ø! 3˜<¨%°¨¸¸s°|ÐDÐEÚ&Ð'Ú8Ð9ñ	
ó	€Fð �;‰;‹=€DÜˆt‹9˜Š>Ðˆ>Üˆt�A‰w‹<˜1ÒÐÐð �‰7�1‰:�dÑ˜uÒ$Ð$Ð$Ø�‰7�1‰:�jÑ! VÒ+Ð+Ð+Ø�‰7�1‰:�kÑ" s¨C jÒ0Ð0Ð0Ø�‰7�1‰:�jÑ! e¨S \Ò1Ð1Ð1Ø�‰7�1‰:�gÑ #Ò%Ð%Ð%ð �A‰wò ˆØ�s‰{Ðˆ{Ø˜SÑ Ð Ð Ø˜cÑ!Ð!Ð!Ø˜SÑ Ð Ð Ø˜#Š~Ðˆ~ðñ à˜4�LÒ"4Ð5Ø# XÐ.Ò0NÐOàØ�˜˜ ˜uÐ%ðð   ˜8 c¨1 XÐ.°Ð5Ø˜S�z¢?Ð3Ø" GÐ,¨{¸GÐ.DÐEñ
	
ó€Fð �;‰;‹=€DÜˆt‹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Ð9ñ	
ó	€Fð �;‰;‹=€DÜˆt‹9˜Š>Ðˆ>Üˆt�A‰w‹<˜1ÒÐÐð �‰7�1‰: °C¸°8ÀcÑJÒJÐJÐJð �‰7�1‰: °6Ñ:Ò:Ð:Ð:ð �‰7�1‰: °C¸°8ÀcÑJÒJÐJÐJñ à˜E�NÐ#ØØØØØ�dñ	
ó	€Fð �;‰;‹=€DÜˆt‹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Ø˜&Ñ Ð Ð Üˆv‹;˜!ÒÐÐð �;‰;‹=€DÜˆt�A‰w‹<˜1ÒÐÐØ�‰7�1‰:�dÑ˜vÒ%Ð%Ð%ä	Ð
1Õ2r   c                  óŠ  — ddl } ddlm}m}m}  | |ddgd¬«       |dd	gd
d¬«      g«      }|j                  «       }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¬«      }|j                  «       }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«      }
|
j                  «       }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¬ «      }|j                  «        ddd«        | j                  t        d!¬«      5   | |ddgd¬«       |dd	gd¬«      gdd"g¬ «      }|j                  «        ddd«        | j                  t        d#¬«      5   |g «      }|j                  «        ddd«        | j                  t        d$¬«      5   | |d«      gd%¬&«      }|j                  «        ddd«        | j                  t        d$¬«      5   | |d«      gd¬&«      }|j                  «        ddd«        | |ddgd¬«       |dd	gd
d¬«      gd'dgdd¬(«      }|j                  «       }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¬+«      }|j                  «       }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¬/«      }|j                  «        ddd«       t        d0«       y# 1 sw Y   �Œ]xY w# 1 sw Y   �ŒxY w# 1 sw Y   �ŒëxY w# 1 sw Y   �Œ¶xY w# 1 sw Y   �Œ�xY w# 1 sw Y   ŒVxY w)1z9Test the Rrf (Reciprocal Rank Fusion) to_dict conversion.r   N)ÚRrfÚKnnÚValrù   r  T)rZ   Úreturn_rankr  r¢  r¨  )rZ   rb   rV  ú$mulú$valr  ú$sumú$divr�  é<   ú$knnú
#embeddingé   ©rZ   rb   r  rV  ©ÚleftÚrightr—  rÆ   )ÚranksÚweightsÚkr?  rO   rk   z/Number of weights .* must match number of ranksrà   )rc  rd  z All weights must be non-negativeg      ð¿zRRF requires at least one rankzk must be positiverì  )re  r#  )rc  rd  Ú	normalizere  g      è?g      Ð?)rc  rf  r�  zSum of weights must be positiverœ  )rc  rd  rf  zAll RRF tests passed!)
rÀ   Ú&chromadb.execution.expression.operatorrS  rT  rU  Úto_dictr?   râ   r  rZ  )rÀ   rS  rT  rU  Ú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}  &  sã  € ó ßDÑDñ á�s˜C�j¨dÔ3Ù�s˜C�jÐ&8ÀdÔKð	
ó€Cð �[‰[‹]€Fð 	Ø�RˆLààØ%+¨S Mà &Ø%+¨R Là(.Ø69¸3°ZØ3?Ø57Ø;?ñ	1*ð%&ð
)"ð&ñ!ðð& Ø%+¨S Mà &Ø%+¨R Là(.Ø69¸3°ZØ3EØ57Ø;?ñ	1*ð%&ð
)"ð&ñ!ðð'%ð'ð*
ð,€Hð\ �XÒÐÐñ á�s˜C�j¨dÔ3Ù�s˜C�jÐ&8ÀdÔKð
ð �c�
Ø
ô€Lð #×*Ñ*Ó,€Oð 	Ø�RˆLààØ%+¨S Mà &Ø%+¨S Mà(.Ø69¸3°ZØ3?Ø57Ø;?ñ	1*ð%&ð
)"ð&ñ!ðð& Ø%+¨S Mà &Ø%+¨S Mà(.Ø69¸3°ZØ3EØ57Ø;?ñ	1*ð%&ð
)"ð&ñ!ðð'%ð'ð*
ð,Ðð\ Ð/Ò/Ð/Ð/ñ á�s˜C�j¨dÔ3Ù�s˜C�jÐ&8ÀdÔKÙ�‹Hð	
ó€Ið ×$Ñ$Ó&€Lð �\Ñ!Ð!Ð!Ø�\ &Ñ)¨!Ñ,Ñ,Ð,Ð,Ø˜Ñ  Ñ# FÑ+€EÜˆu‹:˜Š?Ðˆ?ð 
ˆ�‰ÜÐKô
ñ 
ñ á˜3 ˜*°$Ô7Ù˜3 ˜*°$Ô7ðð �Eô
ˆð 	�‰Ô÷
ð 
ˆ�‰”zÐ)KÔ	Lñ Ùá˜3 ˜*°$Ô7Ù˜3 ˜*°$Ô7ðð ˜$�Kô
ˆð 	×ÑÔ÷ð 
ˆ�‰”zÐ)IÔ	Jñ Ù˜“Gˆ	Ø×ÑÔ÷ð
 
ˆ�‰”zÐ)=Ô	>ñ Ù™˜S›˜
 bÔ)ˆ	Ø×ÑÔ÷ð
 
ˆ�‰”zÐ)=Ô	>ñ Ù™#˜c›(˜ qÔ)ˆ
Ø×ÑÔ÷ñ á�s˜C�j¨dÔ3Ù�s˜C�jÐ&8ÀdÔKð
ð �c�
ØØ
ô€Nð '×.Ñ.Ó0Ðð 	Ø�RˆLààØ%+¨T Nà &Ø%+¨S Mà(.Ø69¸3°ZØ3?Ø57Ø;?ñ	1*ð%&ð
)"ð&ñ!ðð& Ø%+¨T Nà &Ø%+¨S Mà(.Ø69¸3°ZØ3EØ57Ø;?ñ	1*ð%&ð
)"ð&ñ!ðð'%ð'ð*
ð,Ðð\ Ð 3Ò3Ð3Ð3ñ !á�s˜C�j¨dÔ3Ù�s˜C�j¨dÔ3ð
ð ôÐð -×4Ñ4Ó6€Oð 	Ø�RˆLààØ%+¨S Mà &Ø%+¨R Là(.Ø69¸3°ZØ3?Ø57Ø;?ñ	1*ð%&ð
)"ð&ñ!ðð& Ø%+¨S Mà &Ø%+¨R Là(.Ø69¸3°ZØ3?Ø57Ø;?ñ	1*ð%&ð
)"ð&ñ!ðð'%ð'ð*
ð,Ðð\ Ð/Ò/Ð/Ð/ð 
ˆ�‰”zÐ)JÔ	Kñ 	#Ùá˜3 ˜*°$Ô7Ù˜3 ˜*°$Ô7ðð ˜#�JØô
Ðð 	× Ñ Ô"÷	#ô 
Ð
!Õ"÷W
ñ 
ú÷ñ ú÷ñ ú÷
ñ ú÷
ñ ú÷|	#ð 	#úsH   Å+2O8Æ=3PÈPÉ	"PÊ"P,Î04P9Ï8PÐPÐPÐP)Ð,P6Ð9Qc            	      ó¼  — ddl } ddlm}m}m}m}m}  | |d«       ||j                  d¬«      ¬«      }|j                  «       dgdd	gddœidœk(  sJ ‚ | |d
«       |d«      g ||j                   |d«      gd¬«      ¬«      }|j                  «       d
dgdd	dgddœidœk(  sJ ‚ | |d«      g ||j                  gd¬«      ¬«      }|j                  |j                  «       «      j                  «       |j                  «       k(  sJ ‚ |«       }|j                  «       i k(  sJ ‚|j                  i «      j                  «       i k(  sJ ‚ | j                  t        d¬«      5  |j                  ddd	gddœii«       ddd«        | j                  t        d¬«      5  |j                  ddgi«       ddd«        | j                  t        d¬«      5  |j                  g dd	gddœidœ«       ddd«        | j                  t        d¬«      5  |j                  dd	gddœi«       ddd«       y# 1 sw Y   Œ²xY w# 1 sw Y   Œ‰xY w# 1 sw Y   ŒZxY w# 1 sw Y   yxY w)z?Test GroupBy, MinK, and MaxK serialization and deserialization.r   N)ÚGroupByÚMinKÚMaxKÚKeyÚ	Aggregater  rk   ©r[   re  ©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À   rg  r  r€  r�  r‚  rƒ  ÚSCORErh  Ú	from_dictrâ   r  )	rÀ   r  r€  r�  r‚  rƒ  Úgroup_byr$  Úempty_group_bys	            r   Útest_group_by_serializationr�  i  s†  € ã÷õ ñ ™C 
›O±tÀÇÁÈaÔ7PÔQ€HØ×ÑÓØ�Ø¨(¨¸!Ñ <Ð=ñ"ò ð ð ñ Ù�&‹k™3˜z›?Ð+Ù˜SŸY™Y©¨J«Ð8¸AÔ>ô€Hð ×ÑÓØ˜Ð$Ø¨(°JÐ)?ÀaÑ HÐIñ"ò ð ð ñ ™S ›_Ð-¹ÀCÇIÁIÀ;ÐRSÔ9TÔU€HØ×Ñ˜X×-Ñ-Ó/Ó0×8Ñ8Ó:¸h×>NÑ>NÓ>PÒPÐPÐPñ “Y€NØ×!Ñ!Ó# rÒ)Ð)Ð)Ø×Ñ˜RÓ ×(Ñ(Ó*¨bÒ0Ð0Ð0ð 
ˆ�‰”zÐ)@Ô	Añ SØ×Ñ˜;¨¸X¸JÈQÑ3OÐ(PÐQÔR÷Sð 
ˆ�‰”zÐ)EÔ	Fñ 2Ø×Ñ˜6 J <Ð0Ô1÷2ð 
ˆ�‰”zÐ)?Ô	@ñ 
Ø×ÑØ x¸8¸*È1Ñ1MÐ&NÑOô	
÷
ð
 
ˆ�‰”zÐ)EÔ	Fñ HØ×Ñ˜Z°8°*À1Ñ)EÐFÔG÷Hð H÷Sð Sú÷2ð 2ú÷
ð 
ú÷
Hð Hús0   Å#H.ÆH:ÇIÈIÈ.H7È:IÉIÉIc                   óF   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)Ú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 ‚y)z-Test Search accepts dict for where parameter.r   ©ÚSearch©ÚWhereÚstatusÚactivert  Nr§  r©  r™  r�  )Ú"chromadb.execution.expression.planr”  rg  r–  Ú_wherer³   )rq   r”  r–  Úsearchs       r   Útest_search_with_dict_wherez1TestSearchDictSupport.test_search_with_dict_where¢  sr   € å=Ý@ñ ˜x¨Ð2Ô3ˆØ�}‰}Ð(Ð(Ð(Ü˜&Ÿ-™-¨Ô/Ð/Ð/ñ ˜v¨°8Ð(<¸wÈÐPSÈÐ>UÐ'VÐWÔ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 ‚y	)z,Test Search accepts dict for rank parameter.r   r“  ©ÚRankr\  rZ   rù   r  ©ÚrankNrX  r�  )r™  r”  rg  rŸ  Ú_rankr³   )rq   r”  rŸ  r›  s       r   Útest_search_with_dict_rankz0TestSearchDictSupport.test_search_with_dict_rank°  sf   € å=Ý?ñ ˜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 ‚y)z5Test Search accepts dict and int for limit parameter.r   r“  r°   r  ©r  Úoffset©r  N)r™  r”  Ú_limitr  r¦  ©rq   r”  r›  s      r   Útest_search_with_dict_limitz1TestSearchDictSupport.test_search_with_dict_limit¾  s‚   € å=ñ ¨°aÑ8Ô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 ‚y)
z=Test Search accepts dict, list, and set for select parameter.r   r“  r[   ú	#documentrˆ  ©rB  Nú	#metadatar]  )r™  r”  Ú_selectr©  s      r   Útest_search_with_dict_selectz2TestSearchDictSupport.test_search_with_dict_selectÌ  sm   € å=ñ  ¨°hÐ(?Ð@Ô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 ‚y)z2Test Search with mixed expression and dict inputs.r   r“  ©r‚  r—  r˜  r\  rZ   rù   r  r°   r¬  ©r  r¡  r  rB  N)	r™  r”  rg  r‚  rš  r¢  r¨  r  r¯  )rq   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}  |«       j                  ddi«      j                  ddi«      }|j                  €J ‚|j
                  €J ‚y)z)Test Search builder methods accept dicts.r   r“  r—  r˜  rX  r�  N)r™  r”  r  r¡  rš  r¢  r©  s      r   Ú&test_search_builder_methods_with_dictsz<TestSearchDictSupport.test_search_builder_methods_with_dictsì  sI   € å=á“—‘ ¨8Ð 4Ó5×:Ñ:¸FÀC¸=ÓIˆØ�}‰}Ð(Ð(Ð(Ø�|‰|Ð'Ð'Ñ'r   c                 óÈ  — ddl }ddlm}  |j                  t        d¬«      5   |d¬«       ddd«        |j                  t        d¬«      5   |d	¬
«       ddd«        |j                  t        d¬«      5   |d¬«       ddd«        |j                  t        d¬«      5   |d¬«       ddd«       y# 1 sw Y   ŒˆxY w# 1 sw Y   ŒjxY w# 1 sw Y   ŒLxY w# 1 sw Y   yxY w)z(Test Search rejects invalid input types.r   Nr“  zwhere must berà   r¬  rt  zrank must ber�  r   zlimit must beÚ10r§  zselect must beé{   r­  )rÀ   r™  r”  râ   r  )rq   rÀ   r”  s      r   Útest_search_invalid_inputsz0TestSearchDictSupport.test_search_invalid_inputsô  sÈ   € ãÝ=àˆV�]‰]œ9¨OÔ<ñ 	$Ù˜Õ#÷	$ð ˆV�]‰]œ9¨NÔ;ñ 	Ù˜Õ÷	ð ˆV�]‰]œ9¨OÔ<ñ 	Ù˜Õ÷	ð ˆV�]‰]œ9Ð,<Ô=ñ 	Ù˜#Õ÷	ð 	÷	$ð 	$ú÷	ð 	ú÷	ð 	ú÷	ð 	ús/   £
B4Á
C Á7
CÂ!
CÂ4B=Ã C	ÃCÃC!c                 ó*  — 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 ‚ |j                  t        d¬«      5   |d¬«       ddd«        |j                  t        d¬«      5   |ddgi¬«       ddd«       y# 1 sw Y   Œ7xY w# 1 sw Y   yxY w)zATest Search accepts group_by as dict, object, and builder method.r   Nr“  )r  r€  r‚  r  r‡  rˆ  rk   r„  r…  ©r�  zgroup_by must berà   r¬  rŠ  r[   )rÀ   r™  r”  rg  r  r€  r‚  r³   Ú	_group_byr‹  r�  r†  râ   r  r  )rq   rÀ   r”  r  r€  r‚  r›  r�  s           r   Útest_search_with_group_byz/TestSearchDictSupport.test_search_with_group_by  s  € ãÝ=ßMÑMñ à#˜Ø&°(°À!Ñ(DÐEñô
ˆô ˜&×*Ñ*¨GÔ4Ð4Ð4ñ ¡ J£¹4ÀSÇYÁYÐRSÔ;TÔUˆÙ˜xÔ(×2Ñ2°hÑ>Ð>Ð>Ù‹x× Ñ  Ó*×4Ñ4×>Ñ>ÐJÐJÐJð ˆV�]‰]œ9Ð,>Ô?ñ 	'Ù˜IÕ&÷	'àˆV�]‰]œ:Ð-IÔJñ 	4Ù˜V j \Ð2Õ3÷	4ð 	4÷	'ð 	'ú÷	4ð 	4ús   Â=
C=Ã'D	Ã=DÄ	Dc           	      ó|  — ddl m} ddlm}m}m}m}  |«       j                   |ddg¬«      «      j                  d«      }|j                  «       d   i k(  sJ ‚ |«       j                   | |d	«       ||j                  d
¬«      ¬«      «      }|j                  «       d   }|d   d	gk(  sJ ‚|d   ddgd
dœik(  sJ ‚y)z*Test Search serializes group_by correctly.r   r“  )r  r€  r‚  rT  rù   r  ©rZ   r°   r�  r  rk   r„  r…  r[   r†  r‡  rˆ  N)r™  r”  rg  r  r€  r‚  rT  r¡  r  rh  r�  r‹  )rq   r”  r  r€  r‚  rT  r›  r  s           r   Ú"test_search_group_by_serializationz8TestSearchDictSupport.test_search_group_by_serialization  s¾   € å=ßRÓRñ “—‘™s¨#¨s¨Ô4Ó5×;Ñ;¸BÓ?ˆØ�~‰~Ó 
Ñ+¨rÒ1Ð1Ð1ñ “×"Ñ"Ù™˜Z›±D¸c¿i¹iÈ1Ô4MÔNó
ˆð —‘Ó! *Ñ-ˆØ�f‰~ * Ò-Ð-Ð-Ø�kÑ" x¸8¸*È1Ñ1MÐ&NÒNÐNÑNr   N)rŽ   r�   r�   Ú__doc__rœ  r£  rª  r°  r´  r¶  rº  r¾  rÁ  r   r   r   r‘  r‘  Ÿ  s3   „ Ù/ò)ò(ò)ò*ò *ò (òò"4ó4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y)ÚTestWhereFromDictz"Test Where.from_dict() conversion.c                 óœ   — ddl m}m} |j                  ddi«      }t	        ||«      sJ ‚|j                  dddii«      }t	        ||«      sJ ‚y)z Test simple equality conversion.r   )r–  ÚEqr—  r˜  r¢  N)rg  r–  rÆ  rŒ  r³   )rq   r–  rÆ  r  s       r   Útest_simple_equalityz&TestWhereFromDict.test_simple_equality4  sT   € çDð —‘ ¨8Ð 4Ó5ˆÜ˜% Ô$Ð$Ð$ð —‘ ¨E°8Ð+<Ð =Ó>ˆÜ˜% Ô$Ð$Ñ$r   c                 ó‚  — ddl m}m}m}m}m}m} |j                  dddii«      }t        ||«      sJ ‚|j                  dddii«      }t        ||«      sJ ‚|j                  dd	dii«      }t        ||«      sJ ‚|j                  dd
dii«      }t        ||«      sJ ‚|j                  dddii«      }t        ||«      sJ ‚y)z%Test comparison operator conversions.r   )r–  ÚNeÚGtÚGteÚLtÚLter—  rŸ  Úinactiver©  r™  r�  rœ  r‘  r�  r–  N)	rg  r–  rÉ  rÊ  rË  rÌ  rÍ  rŒ  r³   )rq   r–  rÉ  rÊ  rË  rÌ  rÍ  r  s           r   Útest_comparison_operatorsz+TestWhereFromDict.test_comparison_operators@  sÖ   € çV×Vð —‘ ¨E°:Ð+>Ð ?Ó@ˆÜ˜% Ô$Ð$Ð$ð —‘ ¨5°#¨,Ð 7Ó8ˆÜ˜% Ô$Ð$Ð$ð —‘ ¨6°3¨-Ð 8Ó9ˆÜ˜% Ô%Ð%Ð%ð —‘ ¨5°#¨,Ð 7Ó8ˆÜ˜% Ô$Ð$Ð$ð —‘ ¨6°3¨-Ð 8Ó9ˆÜ˜% Ô%Ð%Ñ%r   c                 ó¬   — ddl m}m}m} |j	                  ddddgii«      }t        ||«      sJ ‚|j	                  dddd	gii«      }t        ||«      sJ ‚y
)z%Test membership operator conversions.r   )r–  ÚInÚNinr—  ú$inr˜  Úpendingz$ninr  ÚarchivedN)rg  r–  rÑ  rÒ  rŒ  r³   )rq   r–  rÑ  rÒ  r  s        r   Útest_membership_operatorsz+TestWhereFromDict.test_membership_operatorsX  sf   € çIÑIð —‘ ¨E°H¸iÐ3HÐ+IÐ JÓKˆÜ˜% Ô$Ð$Ð$ð —‘ ¨F°YÀ
Ð4KÐ+LÐ MÓNˆÜ˜% Ô%Ð%Ñ%r   c                 ó8  — ddl m}m}m}m}m} |j                  dddii«      }t        ||«      sJ ‚|j                  dddii«      }t        ||«      sJ ‚|j                  ddd	ii«      }t        ||«      sJ ‚|j                  dd
dii«      }t        ||«      sJ ‚y)z!Test string operator conversions.r   )r–  ÚContainsÚNotContainsÚRegexÚNotRegexr¸  r©  rG   r¹  Úspamz$regexz^test.*z
$not_regexz\d+N)rg  r–  rØ  rÙ  rÚ  rÛ  rŒ  r³   )rq   r–  rØ  rÙ  rÚ  rÛ  r  s          r   Útest_string_operatorsz'TestWhereFromDict.test_string_operatorsd  s´   € ÷	
õ 	
ð —‘ ¨+°wÐ)?Ð @ÓAˆÜ˜% Ô*Ð*Ð*ð —‘ ¨/¸6Ð)BÐ CÓDˆÜ˜% Ô-Ð-Ð-ð —‘ ¨(°IÐ)>Ð ?Ó@ˆÜ˜% Ô'Ð'Ð'ð —‘ ¨,¸Ð)?Ð @ÓAˆÜ˜% Ô*Ð*Ñ*r   c                 óè  — ddl m}m}m} |j	                  dddii«      }t        ||«      sJ ‚|j                  «       dddiik(  sJ ‚|j	                  dddii«      }t        ||«      sJ ‚|j                  «       dddiik(  sJ ‚|j	                  ddd	ii«      }t        ||«      sJ ‚|j                  «       ddd	iik(  sJ ‚|j	                  d
ddii«      }t        ||«      sJ ‚|j                  «       d
ddiik(  sJ ‚|j	                  dddii«      }t        ||«      sJ ‚|j                  «       dddiik(  sJ ‚|j	                  dddii«      }t        ||«      sJ ‚|j                  «       dddiik(  sJ ‚y)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)rg  r–  rØ  rÙ  rŒ  r³   rh  )rq   r–  rØ  rÙ  r  s        r   Útest_array_contains_operatorsz/TestWhereFromDict.test_array_contains_operators~  s¶  € çWÑWð —‘ ¨+°xÐ)@Ð AÓBˆÜ˜% Ô*Ð*Ð*Ø�}‰}‹ 6¨K¸Ð+BÐ"CÒCÐCÐCð —‘ ¨K¸Ð+<Ð =Ó>ˆÜ˜% Ô*Ð*Ð*Ø�}‰}‹ 8¨k¸2Ð->Ð"?Ò?Ð?Ð?ð —‘ ¨[¸#Ð,>Ð ?Ó@ˆÜ˜% Ô*Ð*Ð*Ø�}‰}‹ 9¨{¸CÐ.@Ð"AÒAÐAÐAð —‘ ¨;¸Ð*=Ð >Ó?ˆÜ˜% Ô*Ð*Ð*Ø�}‰}‹ 7¨[¸$Ð,?Ð"@Ò@Ð@Ð@ð —‘ ¨/¸7Ð)CÐ DÓEˆÜ˜% Ô-Ð-Ð-Ø�}‰}‹ 6¨O¸WÐ+EÐ"FÒFÐFÐFà—‘ ¨O¸QÐ+?Ð @ÓAˆÜ˜% Ô-Ð-Ð-Ø�}‰}‹ 8¨o¸qÐ-AÐ"BÒBÐBÑBr   c                 ó(  — ddl }ddlm}  |j                  t        d¬«      5  |j                  dddd	gii«       ddd«        |j                  t        d
¬«      5  |j                  ddddiii«       ddd«       y# 1 sw Y   ŒBxY w# 1 sw Y   yxY w)z:Test $contains/$not_contains reject invalid operand types.r   Nr•  z\$contains requiresrà   rä  r©  rO   rj   z\$not_contains requiresr¹  r€  T)rÀ   rg  r–  râ   r  rŒ  ©rq   rÀ   r–  s      r   Ú$test_array_contains_invalid_operandsz6TestWhereFromDict.test_array_contains_invalid_operandsŸ  s•   € ãÝ@àˆV�]‰]œ9Ð,BÔCñ 	=Ø�O‰O˜V k°A°q°6Ð%:Ð;Ô<÷	=ð ˆV�]‰]œ9Ð,FÔGñ 	KØ�O‰O˜V o¸À$Ð7GÐ%HÐIÔJ÷	Kð 	K÷	=ð 	=ú÷	Kð 	Kús   £A<ÁBÁ<BÂBc                 ó~  — ddl m}m}  |d«      j                  d«       |d«      j                  d«       |d«      j                  d«       |d	«      j                  d
«       |d«      j	                  d«      g}|D ]@  }|j                  «       }|j                  |«      }|j                  «       |k(  rŒ8J d|› �«       ‚ y)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)rg  r–  r‚  ÚcontainsÚnot_containsrh  rŒ  )rq   r–  r‚  Úcasesr$  ÚdÚrestoreds          r   Útest_array_contains_round_tripz0TestWhereFromDict.test_array_contains_round_tripª  s»   € çEñ �‹K× Ñ  Ó*Ù�‹M×"Ñ" 2Ó&Ù�	‹N×#Ñ# CÓ(Ù�‹L×!Ñ! $Ó'Ù�‹K×$Ñ$ WÓ-ð
ˆð ò 	IˆHØ× Ñ Ó"ˆAØ—‘ qÓ)ˆHØ×#Ñ#Ó%¨Ó*ÐHÐ.DÀQÀCÐ,HÓHÐ*ñ	Ir   c                 óæ   — ddl m}m}m}  |d«      j	                  d«       |d«      dkD  z  }t        ||«      sJ ‚|j                  «       }|j                  |«      }|j                  «       |k(  sJ ‚y)z:Test $contains combined with other operators via $and/$or.r   ©r–  ÚAndr‚  rä  rå  rñ  rò  N)rg  r–  rì  r‚  rä  r³   rh  rŒ  )rq   r–  rì  r‚  r  rç  rè  s          r   Ú test_array_contains_in_compositez2TestWhereFromDict.test_array_contains_in_compositeº  sj   € çJÑJá�V“×%Ñ% hÓ/±C¸³KÀ$Ñ4FÑGˆÜ˜% Ô%Ð%Ð%Ø�M‰M‹OˆØ—?‘? 1Ó%ˆØ×ÑÓ! QÒ&Ð&Ñ&r   c                 óÎ  — ddl }ddlm} |j                  j	                  d«      }|j                  «       dddiik(  sJ ‚|j                  j                  d«      }|j                  «       dddiik(  sJ ‚dD ]z  } |j                  t        d	¬
«      5  |j                  j	                  |«       ddd«        |j                  t        d¬
«      5  |j                  j                  |«       ddd«       Œ|  |d«      j	                  d«      j                  «       dddiik(  sJ ‚ |d«      j                  d«      j                  «       dddiik(  sJ ‚y# 1 sw Y   Œ¤xY w# 1 sw Y   ŒïxY w)z9Key.DOCUMENT.contains/not_contains must receive a string.r   Nr²  rG   r¬  r©  r¹  )rŸ  r   TFz)\$contains on #document requires a stringrà   z-\$not_contains on #document requires a stringrç  rŸ  ré  T)	rÀ   rg  r‚  ÚDOCUMENTrä  rh  rå  râ   r  )rq   rÀ   r‚  ÚexprÚ	bad_values        r   Ú&test_document_contains_requires_stringz8TestWhereFromDict.test_document_contains_requires_stringÄ  sl  € ãÝ>ð �|‰|×$Ñ$ WÓ-ˆØ�|‰|‹~ +°¸WÐ/EÐ!FÒFÐFÐFà�|‰|×(Ñ(¨Ó1ˆØ�|‰|‹~ +°ÀÐ/IÐ!JÒJÐJÐJð 1ò 		5ˆIØ�—‘ÜÐ!Môñ 1ð —‘×%Ñ% iÔ0÷1ð
 �—‘ÜÐ!Qôñ 5ð —‘×)Ñ)¨)Ô4÷5ð 5ð		5ñ �8‹}×%Ñ% bÓ)×1Ñ1Ó3¸À;ÐPRÐBSÐ7TÒTÐTÐTÙ�7‹|×(Ñ(¨Ó.×6Ñ6Ó8Ø�o tÐ,ð=
ò 
ð 	
ñ 
÷1ð 1ú÷
5ð 5ús   ÂEÃEÅE	ÅE$	c                 ó¸   — ddl m}m}m} |j	                  dddidddiigi«      }t        ||«      sJ ‚|j	                  d	ddidd
igi«      }t        ||«      sJ ‚y)z"Test logical operator conversions.r   )r–  rì  ÚOrr§  r—  r˜  r©  r™  r�  r¨  rÔ  N)rg  r–  rì  rô  rŒ  r³   )rq   r–  rì  rô  r  s        r   rÌ  z(TestWhereFromDict.test_logical_operatorsâ  sy   € çIÑIð —‘Ø�x Ð*¨W°u¸c°lÐ,CÐDÐEó
ˆô ˜% Ô%Ð%Ð%ð —‘ ¨(°HÐ)=ÀÈ)Ð?TÐ(UÐ VÓWˆÜ˜% Ô$Ð$Ñ$r   c                 ór   — ddl m}m} |j                  ddddiddigidd	d
iigi«      }t	        ||«      sJ ‚y)zTest nested logical operations.r   )r–  rì  r§  r¨  r—  r˜  rÔ  r©  rœ  r�  N)rg  r–  rì  rŒ  r³   )rq   r–  rì  r  s       r   Útest_nested_logical_operatorsz/TestWhereFromDict.test_nested_logical_operatorsð  sU   € çEà—‘àØ˜h¨Ð1°H¸iÐ3HÐIÐJØ˜v s˜mÐ,ððó
ˆô ˜% Ô%Ð%Ñ%r   c                 ó^   — ddl m}m} |j                  ddddgii«      }t	        ||«      sJ ‚y)zTest special key handling.r   )r–  rÑ  z#idrÓ  rF   r  N)rg  r–  rÑ  rŒ  r³   )rq   r–  rÑ  r  s       r   Útest_special_keysz#TestWhereFromDict.test_special_keysþ  s3   € çDð —‘ ¨°¸°Ð(?Ð @ÓAˆÜ˜% Ô$Ð$Ñ$r   c                 ó�  — ddl }ddlm}  |j                  t        d¬«      5  |j                  d«       ddd«        |j                  t        d¬«      5  |j                  i «       ddd«        |j                  t        d¬«      5  |j                  d	g i«       ddd«       y# 1 sw Y   ŒpxY w# 1 sw Y   ŒJxY w# 1 sw Y   yxY w)
zTest invalid Where dict inputs.r   Nr•  úExpected dictrà   ú
not a dictúcannot be emptyzrequires at least one conditionr§  )rÀ   rg  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˜V R˜LÔ)÷	*ð 	*÷	*ð 	*ú÷	 ð 	 ú÷	*ð 	*ús#   £B$ÁB0ÂB<Â$B-Â0B9Â<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  sJ   „ Ù,ò
%ò&ò0
&ò+ò4CòB	KòIò 'ò
ò<%ò&ò%ó*r   rÄ  c                   ó:   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚTestRankFromDictz!Test Rank.from_dict() conversion.c                 óx   — ddl m}m} |j                  ddi«      }t	        ||«      sJ ‚|j
                  dk(  sJ ‚y)zTest Val conversion.r   )rŸ  rU  rX  r�  N)rg  rŸ  rU  rŒ  r³   rD  )rq   rŸ  rU  r¡  s       r   Útest_val_conversionz$TestRankFromDict.test_val_conversion  s9   € çDà�~‰~˜v s˜mÓ,ˆÜ˜$ Ô$Ð$Ð$Ø�z‰z˜SÒ Ð Ñ r   c                 ó  — ddl }ddlm}m} |j	                  ddddgii«      }t        ||«      sJ ‚t        |j                  |j                  «      r1 |j                  |j                   |j                  ddg«      «      sJ ‚|j                  ddgk(  sJ ‚|j                  dk(  sJ ‚|j                  d	k(  sJ ‚|j	                  dddgd
dddœi«      }|j                  d
k(  sJ ‚|j                  dk(  sJ ‚|j                  sJ ‚y)zTest KNN conversion.r   N)rŸ  rT  r\  rZ   rù   r  r]  r^  r¨  é   Tr_  )Únumpyrg  rŸ  rT  rŒ  r³   rZ   ÚndarrayÚallclosero   rb   r  rV  )rq   rn   rŸ  rT  r¡  s        r   Útest_knn_conversionz$TestRankFromDict.test_knn_conversion   s  € ãßDð �~‰~˜v¨°#°s°Ð'<Ð=Ó>ˆÜ˜$ Ô$Ð$Ð$ä�d—j‘j "§*¡*Ô-à�2—;‘;˜tŸz™z¨8¨2¯8©8°S¸#°JÓ+?Ô@Ð@Ð@à—:‘: # s Ò+Ð+Ð+Ø�x‰x˜<Ò'Ð'Ð'Ø�z‰z˜RÒÐÐð �~‰~àØ! 3˜ZØ-Ø Ø#'ñ	ðó	
ˆð �x‰xÐ-Ò-Ð-Ð-Ø�z‰z˜SÒ Ð Ð Ø×ÒÐÑr   c                 ó\  — ddl m}m}m}m}m} |j                  dddiddigi«      }t        ||«      sJ ‚|j                  dddiddid	œi«      }t        ||«      sJ ‚|j                  d
ddiddigi«      }t        ||«      sJ ‚|j                  dddiddid	œi«      }t        ||«      sJ ‚y)z%Test arithmetic operator conversions.r   )rŸ  ÚSumÚSubÚMulÚDivrY  rX  r�  r  z$subr�  r`  rW  r—  rZ  N)rg  rŸ  r	  r
  r  r  rŒ  r³   )rq   rŸ  r	  r
  r  r  r¡  s          r   Útest_arithmetic_operatorsz*TestRankFromDict.test_arithmetic_operators@  sÒ   € çSÕSð �~‰~˜v¨°¨¸À°}Ð'EÐFÓGˆÜ˜$ Ô$Ð$Ð$ð �~‰~˜v°¸°ÈÐQTÈÑ'VÐWÓXˆÜ˜$ Ô$Ð$Ð$ð �~‰~˜v¨°¨¸À°}Ð'EÐFÓGˆÜ˜$ Ô$Ð$Ð$ð �~‰~˜v°¸°ÈÐQTÈÑ'VÐWÓXˆÜ˜$ Ô$Ð$Ñ$r   c                 óî   — ddl m}m}m}m} |j                  dddii«      }t        ||«      sJ ‚|j                  dddii«      }t        ||«      sJ ‚|j                  ddd	ii«      }t        ||«      sJ ‚y
)zTest math function conversions.r   )rŸ  ÚAbsÚExpÚLogz$absrX  g      à¿z$expr�  z$logr—  N)rg  rŸ  r  r  r  rŒ  r³   )rq   rŸ  r  r  r  r¡  s         r   Útest_math_functionsz$TestRankFromDict.test_math_functionsT  sƒ   € çNÓNð �~‰~˜v¨° ~Ð6Ó7ˆÜ˜$ Ô$Ð$Ð$ð �~‰~˜v¨° }Ð5Ó6ˆÜ˜$ Ô$Ð$Ð$ð �~‰~˜v¨° }Ð5Ó6ˆÜ˜$ Ô$Ð$Ñ$r   c                 ó´   — ddl m}m}m} |j	                  dddiddigi«      }t        ||«      sJ ‚|j	                  dddiddigi«      }t        ||«      sJ ‚y)	zTest min/max conversions.r   )rŸ  ÚMaxÚMinz$maxrX  r�  rª  z$minN)rg  rŸ  r  r  rŒ  r³   )rq   rŸ  r  r  r¡  s        r   Útest_aggregation_functionsz+TestRankFromDict.test_aggregation_functionsd  sl   € çIÑIð �~‰~˜v¨°¨¸À°}Ð'EÐFÓGˆÜ˜$ Ô$Ð$Ð$ð �~‰~˜v¨°¨¸À°}Ð'EÐFÓGˆÜ˜$ Ô$Ð$Ñ$r   c                 ó‚   — ddl m}m} |j                  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 ‚y)z%Test complex nested rank expressions.r   )rŸ  r	  rY  rW  r\  rZ   rù   r  rX  rª  r�  N)rg  rŸ  r	  rŒ  r³   )rq   rŸ  r	  r¡  s       r   Útest_complex_rank_expressionz-TestRankFromDict.test_complex_rank_expressionp  sf   € çDà�~‰~àØ˜v¨°#°s°Ð'<Ð=ÀÈ¸}ÐMÐNØ˜v s˜m¨f°c¨]Ð;Ð<ððó
ˆô ˜$ Ô$Ð$Ñ$r   c                 ó  — ddl }ddlm}  |j                  t        d¬«      5  |j                  d«       ddd«        |j                  t        d¬«      5  |j                  i «       ddd«        |j                  t        d¬«      5  |j                  d	d
dgidœ«       ddd«        |j                  t        d¬«      5  |j                  ddi«       ddd«       y# 1 sw Y   Œ¨xY w# 1 sw Y   Œ‚xY w# 1 sw Y   ŒVxY w# 1 sw Y   yxY w)zTest invalid Rank dict inputs.r   Nrž  rú  rà   rû  rü  zexactly one operatorr�  rZ   rù   )rX  r\  zrequires a numberrX  znot a number)rÀ   rg  rŸ  râ   r  rŒ  r  )rq   rÀ   rŸ  s      r   Útest_invalid_rank_dictsz(TestRankFromDict.test_invalid_rank_dicts~  sï   € ãÝ?àˆV�]‰]œ9¨OÔ<ñ 	)Ø�N‰N˜<Ô(÷	)ð ˆV�]‰]œ:Ð->Ô?ñ 	Ø�N‰N˜2Ô÷	ð ˆV�]‰]œ:Ð-CÔDñ 	DØ�N‰N C°'¸C¸5Ð1AÑBÔC÷	Dð ˆV�]‰]œ9Ð,?Ô@ñ 	5Ø�N‰N˜F NÐ3Ô4÷	5ð 	5÷	)ð 	)ú÷	ð 	ú÷	Dð 	Dú÷	5ð 	5ús/   £CÁC(ÂC4Â?D ÃC%Ã(C1Ã4C=Ä D	N)rŽ   r�   r�   rÂ  r  r  r  r  r  r  r  r   r   r   rÿ  rÿ    s)   „ Ù+ò!ò ò@%ò(%ò 
%ò%ó5r   rÿ  c                   ó4   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTestLimitFromDictz"Test Limit.from_dict() conversion.c                 óz   — ddl m} |j                  ddi«      }|j                  dk(  sJ ‚|j                  dk(  sJ ‚y)zTest limit without offset.r   ©ÚLimitr  ré  N©rg  r  rŒ  r  r¦  ©rq   r  r  s      r   Útest_limit_onlyz!TestLimitFromDict.test_limit_only“  s;   € å@à—‘ ¨" Ó.ˆØ�{‰{˜bÒ Ð Ð Ø�|‰|˜qÒ Ð Ñ r   c                 ót   — ddl m} |j                  ddi«      }|j                  dk(  sJ ‚|j                  �J ‚y)zTest offset without limit.r   r  r¦  r°   N)rg  r  rŒ  r¦  r  r!  s      r   Útest_offset_onlyz"TestLimitFromDict.test_offset_only›  s9   € å@à—‘ ¨2 Ó/ˆØ�|‰|˜rÒ!Ð!Ð!Ø�{‰{Ð"Ð"Ñ"r   c                 ó|   — ddl m} |j                  dddœ«      }|j                  dk(  sJ ‚|j                  dk(  sJ ‚y)zTest both limit and offset.r   r  ré  r°   r¥  Nr   r!  s      r   Útest_limit_and_offsetz'TestLimitFromDict.test_limit_and_offset£  s<   € å@à—‘¨"¸Ñ ;Ó<ˆØ�{‰{˜bÒ Ð Ð Ø�|‰|˜rÒ!Ð!Ñ!r   c                 ó˜  — ddl }ddlm}  |j                  t        d¬«      5  |j                  ddi«       ddd«        |j                  t        d¬«      5  |j                  ddi«       ddd«        |j                  t        d¬«      5  |j                  d	di«       ddd«       y# 1 sw Y   ŒrxY w# 1 sw Y   ŒJxY w# 1 sw Y   yxY w)
zTest Limit validation.r   Nr  zmust be positiverà   r  r  zmust be non-negativer¦  ©rÀ   rg  r  râ   r  rŒ  ©rq   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ñ 	,Ø�O‰O˜X r˜NÔ+÷	,ð 	,÷	+ð 	+ú÷	*ð 	*ú÷	,ð 	,ús#   £B(ÁB4ÂC Â(B1Â4B=Ã C	c                 ó”  — ddl }ddlm}  |j                  t        d¬«      5  |j                  d«       ddd«        |j                  t        d¬«      5  |j                  dd	i«       ddd«        |j                  t        d¬«      5  |j                  d
di«       ddd«       y# 1 sw Y   ŒrxY w# 1 sw Y   ŒJxY w# 1 sw Y   yxY w)zTest type validation.r   Nr  rú  rà   rû  zmust be an integerr  Ú20r¦  g      %@)rÀ   rg  r  râ   r  rŒ  r)  s      r   Útest_invalid_typesz$TestLimitFromDict.test_invalid_types¼  s¯   € ãÝ@àˆV�]‰]œ9¨OÔ<ñ 	*Ø�O‰O˜LÔ)÷	*ð ˆV�]‰]œ9Ð,@ÔAñ 	-Ø�O‰O˜W d˜OÔ,÷	-ð ˆV�]‰]œ9Ð,@ÔAñ 	.Ø�O‰O˜X tÐ,Ô-÷	.ð 	.÷	*ð 	*ú÷	-ð 	-ú÷	.ð 	.ús#   £B&ÁB2Â	B>Â&B/Â2B;Â>Cc                 óš   — ddl }ddlm}  |j                  t        d¬«      5  |j                  dddœ«       ddd«       y# 1 sw Y   yxY w)	ú"Test rejection of unexpected keys.r   Nr  úUnexpected keysrà   r°   rb   )r  r¬  r(  r)  s      r   Útest_unexpected_keysz&TestLimitFromDict.test_unexpected_keysÊ  s?   € ãÝ@àˆV�]‰]œ:Ð->Ô?ñ 	=Ø�O‰O b°UÑ;Ô<÷	=÷ 	=ñ 	=úó   £AÁA
N)
rŽ   r�   r�   rÂ  r"  r$  r&  r*  r-  r1  r   r   r   r  r  �  s#   „ Ù,ò!ò#ò"ò,ò".ó=r   r  c                   ó4   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTestSelectFromDictz#Test Select.from_dict() conversion.c                 ó  — ddl m}m} |j                  dg d¢i«      }|j                  |j
                  v sJ ‚|j                  |j
                  v sJ ‚|j                  |j
                  v sJ ‚|j                  |j
                  v sJ ‚y)zTest special key conversion.r   ©ÚSelectr‚  r[   )r¬  r]  r®  rˆ  N)	rg  r7  r‚  rŒ  rï  r[   Ú	EMBEDDINGÚMETADATAr‹  ©rq   r7  r‚  rB  s       r   rø  z$TestSelectFromDict.test_special_keysÖ  sx   € çFà×!Ñ!ØÒGÐHó
ˆð �|‰|˜vŸ{™{Ñ*Ð*Ð*Ø�}‰} §¡Ñ+Ð+Ð+Ø�|‰|˜vŸ{™{Ñ*Ð*Ð*Ø�y‰y˜FŸK™KÑ'Ð'Ñ'r   c                 óÂ   — ddl m}m} |j                  dg d¢i«      } |d«      |j                  v sJ ‚ |d«      |j                  v sJ ‚ |d«      |j                  v sJ ‚y)	z!Test regular metadata field keys.r   r6  r[   )ÚtitleÚauthorÚdater<  r=  r>  N)rg  r7  r‚  rŒ  r[   r:  s       r   Útest_metadata_keysz%TestSelectFromDict.test_metadata_keysâ  s]   € çFà×!Ñ! 6Ò+FÐ"GÓHˆÙ�7‹|˜vŸ{™{Ñ*Ð*Ð*Ù�8‹} §¡Ñ+Ð+Ð+Ù�6‹{˜fŸk™kÑ)Ð)Ñ)r   c                 óÒ   — ddl m}m} |j                  dg d¢i«      }|j                  |j
                  v sJ ‚ |d«      |j
                  v sJ ‚|j                  |j
                  v sJ ‚y)z&Test mix of special and metadata keys.r   r6  r[   )r¬  r<  rˆ  r<  N)rg  r7  r‚  rŒ  rï  r[   r‹  r:  s       r   Útest_mixed_keysz"TestSelectFromDict.test_mixed_keysë  s]   € çFà×!Ñ! 6Ò+KÐ"LÓMˆØ�|‰|˜vŸ{™{Ñ*Ð*Ð*Ù�7‹|˜vŸ{™{Ñ*Ð*Ð*Ø�y‰y˜FŸK™KÑ'Ð'Ñ'r   c                 ój   — ddl m} |j                  dg i«      }t        |j                  «      dk(  sJ ‚y)zTest empty keys list.r   ©r7  r[   N)rg  r7  rŒ  r?   r[   )rq   r7  rB  s      r   Útest_empty_keysz"TestSelectFromDict.test_empty_keysô  s0   € åAà×!Ñ! 6¨2 ,Ó/ˆÜ�6—;‘;Ó 1Ò$Ð$Ñ$r   c                 ó–  — ddl }ddlm}  |j                  t        d¬«      5  |j                  d«       ddd«        |j                  t        d¬«      5  |j                  dd	i«       ddd«        |j                  t        d
¬«      5  |j                  ddgi«       ddd«       y# 1 sw Y   ŒsxY w# 1 sw Y   ŒKxY w# 1 sw Y   yxY w)zTest Select validation.r   NrC  rú  rà   rû  zmust be a list/tuple/setr[   z
not a listzmust be a stringr¹  )rÀ   rg  r7  râ   r  rŒ  ©rq   rÀ   r7  s      r   r*  z"TestSelectFromDict.test_validationû  s·   € ãÝAàˆV�]‰]œ9¨OÔ<ñ 	+Ø×Ñ˜\Ô*÷	+ð ˆV�]‰]œ9Ð,FÔGñ 	5Ø×Ñ˜f lÐ3Ô4÷	5ð ˆV�]‰]œ9Ð,>Ô?ñ 	.Ø×Ñ˜f s e˜_Ô-÷	.ð 	.÷	+ð 	+ú÷	5ð 	5ú÷	.ð 	.ús#   £B'ÁB3Â	B?Â'B0Â3B<Â?Cc                 óš   — ddl }ddlm}  |j                  t        d¬«      5  |j                  g ddœ«       ddd«       y# 1 sw Y   yxY w)r/  r   NrC  r0  rà   rb   )r[   r¬  )rÀ   rg  r7  râ   r  rŒ  rF  s      r   r1  z'TestSelectFromDict.test_unexpected_keys	  sA   € ãÝAàˆV�]‰]œ:Ð->Ô?ñ 	=Ø×Ñ b°UÑ;Ô<÷	=÷ 	=ñ 	=úr2  N)
rŽ   r�   r�   rÂ  rø  r?  rA  rD  r*  r1  r   r   r   r4  r4  Ó  s#   „ Ù-ò
(ò*ò(ò%ò.ó=r   r4  c                   ó4   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTestRoundTripConversionz9Test that to_dict() and from_dict() round-trip correctly.c                 ó¼   — ddl m}m}m}  | |d«      dk(   |d«      dkD  g«      }|j	                  «       }|j                  |«      }|j	                  «       |k(  sJ ‚y)z!Test Where round-trip conversion.r   rë  r—  r˜  r©  r�  N)rg  r–  rì  r‚  rh  rŒ  )rq   r–  rì  r‚  r$  Ú	dict_formrè  s          r   Útest_where_round_tripz-TestRoundTripConversion.test_where_round_trip  s\   € çJÑJá™˜H›¨Ñ1±3°w³<À#Ñ3EÐFÓGˆØ×$Ñ$Ó&ˆ	Ø—?‘? 9Ó-ˆØ×ÑÓ! YÒ.Ð.Ñ.r   c                 óÜ   ‡‡	— ddl Š	ddlm}m}m}  |ddg¬«      dz   |d«      dz  z   }|j                  «       }|j                  |«      }|j                  «       }ˆˆ	fd	„Š ‰||«      sJ ‚y)
z Test Rank round-trip conversion.r   N)rŸ  rT  rU  rù   r  rÀ  rª  r�  c                 óÂ  •— 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y|D ]!  }|dk7  sŒ	||   |j                  |«      k7  sŒ! y yt        | j                  «       «      t        |j                  «       «      k7  ry| D ]  } ‰| |   ||   «      rŒ y yt        | t        «      rFt        |t        «      r6t        | «      t        |«      k7  ryt        ˆfd„t        | |«      D «       «      S | |k(  S )Nr\  rZ   ©ÚdtypeFTc              3   ó6   •K  — | ]  \  }} ‰||«      –— Œ y ­wr   r   )rZ  r:   r;   Úcompare_dictss      €r   r\  zVTestRoundTripConversion.test_rank_round_trip.<locals>.compare_dicts.<locals>.<genexpr>E  s   øè ø€ ÒG±4°1°a™=¨¨A×.ÑGùs   ƒ)r³   r’   ro   rø  r  rÌ   r\   r[   r¶  r?   r@   rA   )	Úd1Úd2Úknn1Úknn2Úq1Úq2rb   rR  rn   s	          €€r   rR  zCTestRoundTripConversion.test_rank_round_trip.<locals>.compare_dicts*  sI  ø€ Ü˜"œdÔ#¬
°2´tÔ(<Ø˜R‘< F¨b¡Là!# F¡¨R°©Z˜$�DØ $‘¨7°d©?à%˜RŸX™X d¨7¡m¸2¿:¹:ÔF˜Ø%˜RŸX™X d¨7¡m¸2¿:¹:ÔF˜Ø*˜rŸ{™{¨2¨rÔ2Ø#(à#'ò -˜CØ" g›~°$°s±)¸t¿x¹xÈ»}Ó2LÙ',ð-ð  $ô �r—w‘w“y“>¤S¨¯©«£^Ò3Ø Øò %�CÙ(¨¨C©°"°S±'Õ:Ù$ð%ð Ü˜B¤Ô%¬*°R¼Ô*>Ü�r“7œc "›gÒ%Ø ÜÓG¼3¸rÀ2»;ÔGÓGÐGà˜R‘x�r   )r  rg  rŸ  rT  rU  rh  rŒ  )
rq   rŸ  rT  rU  r$  rK  rè  Úrestored_dictrR  rn   s
           @@r   Útest_rank_round_tripz,TestRoundTripConversion.test_rank_round_trip  sm   ù€ ãßIÑIá˜c 3˜ZÔ(¨3Ñ.±°S³¸C±Ñ?ˆØ×$Ñ$Ó&ˆ	Ø—>‘> )Ó,ˆØ ×(Ñ(Ó*ˆõ	 ñ> ˜]¨IÔ6Ð6Ñ6r   c                 ó�   — ddl m}  |dd¬«      }|j                  «       }|j                  |«      }|j                  «       |k(  sJ ‚y)z!Test Limit round-trip conversion.r   r  ré  r°   r¥  N)rg  r  rh  rŒ  )rq   r  r$  rK  rè  s        r   Útest_limit_round_tripz-TestRoundTripConversion.test_limit_round_tripK  sD   € å@á˜r¨"Ô-ˆØ×$Ñ$Ó&ˆ	Ø—?‘? 9Ó-ˆØ×ÑÓ! YÒ.Ð.Ñ.r   c                 óü   — ddl m}m}  ||j                   |d«      |j                  h¬«      }|j                  «       }|j                  |«      }t        |j                  «       d   «      t        |d   «      k(  sJ ‚y)z"Test Select round-trip conversion.r   r6  r<  ©r[   r[   N)rg  r7  r‚  rï  r‹  rh  rŒ  r\   )rq   r7  r‚  r$  rK  rè  s         r   Útest_select_round_tripz.TestRoundTripConversion.test_select_round_tripT  sk   € çFá §¡©c°'«l¸C¿I¹IÐFÔGˆØ×$Ñ$Ó&ˆ	Ø×#Ñ# IÓ.ˆä�8×#Ñ#Ó% fÑ-Ó.´#°iÀÑ6GÓ2HÒHÐHÑHr   c                 óP  ‡
‡— ddl Šddlm} ddlm}m}m}m}  | |d«      dk(   |ddg¬	«       |d
¬«       ||j                  h¬«      ¬«      }|j                  «       } ||d   r|d   nd|d   r|d   nd|d   |d   ¬«      }|j                  «       }	ˆ
ˆfd„Š
 ‰
|	|«      sJ ‚y)z+Test Search round-trip through dict inputs.r   Nr“  )r‚  rT  r  r7  r—  r˜  rù   r  rÀ  r°   r§  r^  r³  Úfilterr¡  r  rB  c                 ó2  •— t        | t        «      �r�t        |t        «      �rpd| 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y|D ]!  }|dk7  sŒ	||   |j                  |«      k7  sŒ! y | D ]!  }|dk7  sŒ	| |   |j                  |«      k7  sŒ! y yt        | j                  «       «      t        |j                  «       «      k7  ry| D ]G  }t        | |   t        «      r%t        ||   t        «      r ‰	| |   ||   «      rŒ9 y| |   ||   k7  sŒG y y| |k(  S )Nr¡  r\  rZ   rO  FT)r³   r’   ro   rø  r  rÌ   r\   r[   )rS  rT  Úrank1Úrank2rU  rV  rW  rX  rb   Úcompare_search_dictsrn   s            €€r   re  zLTestRoundTripConversion.test_search_round_trip.<locals>.compare_search_dicts{  sš  ø€ Ü˜"œdÕ#¬
°2´tÕ(<à˜R‘< F¨b¡LØ#% f¡:¨r°&©z˜5�EÜ! %¬Ô.´:¸eÄTÔ3JØ! U™?¨v¸©Ø).¨v©¸¸f¹ $˜DØ&¨$™°7¸d±?Ø%- R§X¡X¨d°7©mÀ2Ç:Á:Ô%N Ø%- R§X¡X¨d°7©mÀ2Ç:Á:Ô%N Ø'2 r§{¡{°2°rÔ':Ø+0à+/ò !5 CØ'*¨g£~¸$¸s¹)ÀtÇxÁxÐPSÃ}Ó:TÙ/4ð!5ð ,.ò !5 CØ'*¨f£}¸¸C¹ÀBÇFÁFÈ3ÃKÓ9OÙ/4ð!5ð (,ô �r—w‘w“y“>¤S¨¯©«£^Ò3Ø Øò %�CÜ! " S¡'¬4Ô0´ZÀÀ3ÁÌÔ5NÙ3°B°s±G¸RÀ¹WÕEÙ#(Ø˜C™ B s¡GÓ+Ù$ð%ð à˜R‘x�r   )
r  r™  r”  rg  r‚  rT  r  r7  rï  rh  )rq   r”  r‚  rT  r  r7  Úoriginal_searchÚsearch_dictÚ
new_searchÚnew_dictre  rn   s             @@r   Útest_search_round_tripz.TestRoundTripConversion.test_search_round_trip^  s¼   ù€ ãÝ=ßRÓRá Ù�h“- 8Ñ+Ù˜C ˜:Ô&Ù˜b”/Ù §¡˜~Ô.ô	
ˆð &×-Ñ-Ó/ˆñ Ø+6°xÒ+@�+˜hÒ'ÀdØ(3°FÒ(;�˜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¬«      ¬	«      ¬
«      }|j                  «       }|d   d   dgk(  sJ ‚|d   d   ddgddœik(  sJ ‚ ||j                  |d   «      ¬«      }|j                  «       d   |d   k(  sJ ‚y)z%Test Search round-trip with group_by.r   r“  )r‚  r  r€  r—  r˜  r  rk   r„  r…  )r  r�  r�  r[   r†  r‡  rˆ  r¼  N)	r™  r”  rg  r‚  r  r€  r‹  rh  rŒ  )rq   r”  r‚  r  r€  r$  rg  rè  s           r   Ú$test_search_round_trip_with_group_byz<TestRoundTripConversion.test_search_round_trip_with_group_by¡  s×   € å=ßMÑMáÙ�h“- 8Ñ+ÙÙ˜*“oÐ&Ù S§Y¡Y K°1Ô5ôô
ˆð ×&Ñ&Ó(ˆØ˜:Ñ& vÑ.°:°,Ò>Ð>Ð>Ø˜:Ñ& {Ñ3Ø ˜z°Ñ2ð8
ò 
ð 	
ð 
ñ
  7×#4Ñ#4°[ÀÑ5LÓ#MÔNˆØ×ÑÓ! *Ñ-°¸ZÑ1HÒHÐHÑHr   N)
rŽ   r�   r�   rÂ  rL  rZ  r\  r_  rj  rl  r   r   r   rI  rI    s(   „ ÙCò/ò+7òZ/òIòA;óFIr   rI  )g�íµ ÷Æ°>)r6   N)®r*   r-   Úsysr   rN  r   r   Útypingr   rË   r  rn   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   r5   Úboolr=   rm  rB   ÚmarkÚparametrizerc   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(  r.  r1  r5  r9  r>  r@  rB  rK  rP  rT  rV  r[  r]  r_  rb  rl  rp  rr  rv  rx  rz  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!  r'  r)  r,  r.  r0  r7  r;  ÚflakyÚplatformÚ
startswithrD  rT  rg  rq  rs  r¤  rÄ  rà  rì  ró  r÷  rú  r  r	  r  r  r  r!  r'  r.  r2  r<  rQ  r}  r�  r‘  rÄ  rÿ  r  r4  rI  r   r   r   ú<module>r|     s¯  ðã 	Û Û 
Û Û ß (Ý ã Û Û ã Û Ý (÷õ õ %÷ñ õ
 Hð ‡�ñó ðð ‡�ñ7ó ð7ð( ‡�ñ7ó ð7ñ&"¨$ó "ñF¨ð F¸$ó Fð ‡�×Ñ˜Ð):Ð(;Ó<ñ#ó =ð#ð0 ‡�×Ñ˜Ð):Ð(;Ó<ñ%#ó =ð%#ðP ‡�×Ñ˜Ð):Ð(;Ó<ñ+$ó =ð+$ð\ ‡�×Ñ˜Ð):Ð(;Ó<ñ+ó =ð+ò*>òò
,ò.ò<ò #Ò$4Ð5Ø#Ð%<Ð=ñ€ò#ò(ò#ò$ #Ò$4Ð5Ø#Ð%<Ð=ñ€ò#ò(òò/ò+#ò\ò"ò#ò2#ò"0òFò'ò#òò+ò(ò$ò=ò./òb#ò,
9ò2ò ,ò!ò!ò%ò$ò/ò;ò #Ò$4Ð5Ø�5ˆ>à¨¸uÑEØ	�aÐðñÐ ò
CòFò:ò:ò9ò9ò  #Ò$4Ð5Ø�5ˆ>Ø˜X s˜OÐ,¨wº	Ð.BÐCñÐ ò/òMò9òWò #Ò$4Ð5Ø�5ˆ>à¨¸uÑEØ¨¸uÑEðñÐ ò(ò(ò(ò(ò(ò(ò$4òR (Ò)>Ð?Ø�5ˆ>ñÐ ð Ò-Ò/DÐEðÐ ò
 )Ò*:Ð;ØñÐ ò'ò'ò)
òZ #Ò$4Ð5Ø0Ð2GÐHØ�5ˆ>à¨¸uÑEØ¨¸uÑEðñ	Ð ò(ò,ò,#ò" 	ÚÚÚð	ò (à¨¸uÈEÑRØ¨¸uÈEÑRØ¨¸wÈeÑTØ¨¸vÈUÑSð	òñÐ ò.5(òp$(òT Ò.Ð/Ø�5ˆ>à¨¸uÑEØ	�aÐðð +Ð,EÐFñ€ò$'òN-òJ@ò$ ò&$)òN"ò#ò<4ò"/ò/ò!ò,ò<ò:(ò("ò4 Ò.Ò0@ÐAÚ à¨¸uÑEØ	�aÐØ	˜Ð!ðò
ñ€ò  #Ò$4Ð5Ø�5ˆ>à¨ÀeÑLØ	�aÐðð
 	+Ø)ðñ€ò+.ò\-ò%'òV'ò'ð ‡�×Ò˜! s§|¢|×'>Ò'>¸wÓ'GÐÓHñó Iðð ‡�×Ò˜! s§|¢|×'>Ò'>¸wÓ'GÐÓHñ?ó Ið?ò;ò6&9òRT2ònO@òd]&ò@|(ò~(/òVò8ò'(òT$ò8 6òF#"òLGò@9ò@Gò>";òJ"òD""òJ*EóZj3óZ@#óF
2H÷lOOñ OO÷da*ñ a*÷Hx5ñ x5÷v@=ñ @=÷F<=ñ <=÷~eIò eIr   