Ë
    lQêj±^  ã                   óœ  — d dl Z d dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlZd dlmZ d dlmZmZ d dlmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% d dl&m'Z' d dl(Z)d dl*mZ+ d dl,m-Z-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z; d dl<m=Z=m>Z>m?Z?m@Z@  e"d«      ZAde eAe!eA   f   de!eA   fd„ZBdedefd„ZCdee-jˆ                     dee-jˆ                     ddfd„ZEd e0deddfd!„ZFd e0d"ed#e e'd$   e'd%   e'd&   f   ddfd'„ZGd e0deddfd(„ZHd e0deddfd)„ZId e0deddfd*„ZJd e0deddfd+„ZKd e0ddfd,„ZLe9jš                  fd-e-jœ                  d.e-jœ                  d/ee+jž                  e+jž                  gePf   dee!e!eQ      e!e!eP      f   fd0„ZRd1eQddfd2„ZSd e0fd3„ZT	 	 	 	 	 	 dHd e0ded4eQd5ePd6ee-jª                     d7ee!eQ      d8ee-jœ                     d9eVddfd:„ZWd;e-j°                  d4eQddfd<„ZYd=edeQfd>„ZZd?ed@e!e0   dAeVddfdB„Z[d?ed@e!e0   de%eeQf   fdC„Z\d?ed@e!e0   dAeVddfdD„Z]edEe.dFe^fdG„«       Z_y)Ié    N)ÚUUID)Úcontextmanager)Ú
SegmentAPI)ÚSysDB)Úcreate_topic_name)ÚSystem)Úget_sql)ÚSqliteDB)Úsleep)ÚSegmentType)ÚNormalizedRecordSetÚ	RecordSet)	ÚCallableÚOptionalÚTupleÚUnionÚListÚTypeVarÚcastÚAnyÚDict)ÚLiteral)ÚtypesÚ	ClientAPI)Ú
Collection)Únote)ÚInvalidArgument)ÚTableÚ	functions)Údistance_functions)ÚSearch)ÚKnnÚSelectÚLimitÚKeyÚTÚvalueÚreturnc                 óF   — | €t        d«      ‚t        | t        «      r| S | gS )z*Wrap a value in a list if it is not a listzvalue cannot be None)r   Ú
isinstancer   )r'   s    úf/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/chromadb/test/property/invariants.pyÚwrapr,   $   s)   € à€}ÜÐ4Ó5Ð5Ü	�Eœ4Ô	 Øˆàˆwˆó    Ú
record_setc                 ó’  — | d   €d}nùt        | d   t        «      rÛ| d   €J ‚t        | d   «      dkD  r¥t        d„ | d   D «       «      rt	        t
        j                  | d   «      }n›t        d„ | d   D «       «      rt	        t
        j                  | d   «      }nht        d„ | d   D «       «      rt	        t
        j                  | d   g«      }n4t        d«      ‚t	        t
        j                  | d   «      }nt        d«      ‚t        t        | d	   «      | d
   �t        | d
   «      nd| d   �t        | d   «      |¬«      S d|¬«      S )z9Ensure that an embedding set has lists for all its valuesÚ
embeddingsNr   c              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­w©N)r*   Úlist©Ú.0Ú	embeddings     r+   ú	<genexpr>zwrap_all.<locals>.<genexpr>7   s   è ø€ ò Ø09”
˜9¤d×+ñùs   ‚c              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wr2   )r*   ÚnpÚndarrayr4   s     r+   r7   zwrap_all.<locals>.<genexpr>;   s#   è ø€ ò àô ˜9¤b§j¡j×1ñùs   ‚$&c              3   ó„   K  — | ]8  }t        |t        t        t        j                  t        j
                  f«      –— Œ: y ­wr2   )r*   ÚintÚfloatr9   ÚintegerÚfloating©r5   Úes     r+   r7   zwrap_all.<locals>.<genexpr>A   s0   è ø€ ò àô ˜q¤3¬¬r¯z©z¼2¿;¹;Ð"G×Hñùs   ‚>A z-an embedding must be a list of floats or intszVembeddings must be a list of lists, a list of numpy arrays, a list of numbers, or NoneÚidsÚ	documentsÚ	metadatas)rB   rC   rD   r0   )
r*   r3   ÚlenÚallr   r   Ú
Embeddingsr   r   r,   )r.   Úembedding_lists     r+   Úwrap_allrI   .   s…  € ð �,ÑÐ'Ø‰Ü	�J˜|Ñ,¬dÔ	3Ø˜,Ñ'Ð3Ð3Ð3Üˆz˜,Ñ'Ó(¨1Ò,Üñ Ø=GÈÑ=Uôô ô "&¤e×&6Ñ&6¸
À<Ñ8PÓ!Q‘Üñ à!+¨LÑ!9ôô ô "&¤e×&6Ñ&6¸
À<Ñ8PÓ!Q‘äñ à'¨Ñ5ôô ô &*¬%×*:Ñ*:¸ZÈÑ=UÐ<VÓ%W‘Nä)ØGóð ô "¤%×"2Ñ"2°J¸|Ñ4LÓM‰NäØdó
ð 	
ô Ü�˜EÑ"Ó#à�kÑ"Ð.ô �z +Ñ.Ô/àà�kÑ"Ð.ô �z +Ñ.Ó/ð "ô	ð 	ð Ø!ô	ð 	r-   ÚexpectedÚgotc           	      ód  — | €|�| �|€J ‚| �¤|�¡t        | «      t        |«      k(  sJ ‚| j                  «       D ]t  \  }}||v sJ ‚t        | |   t        «      rIt        ||   t        «      r6t	        t        t        | |   «      t        t        ||   «      z
  «      dk  rŒfJ ‚| |   ||   k(  rŒtJ ‚ y y y )Nç�íµ ÷Æ°>)rE   Úitemsr*   r=   Úabsr   )rJ   rK   ÚkeyÚvals       r+   Úcheck_metadatarR   ]   sÒ   € ð Ð  ØÐ  ðð ð Ð  Ü�8‹}¤ C£Ò(Ð(Ð(Ø Ÿ™Ó(ò 	1‰HˆC�Ø˜#‘:Ð�:Ü˜( 3™-¬Ô/´J¸sÀ3¹xÌÔ4OÜœ4¤ x°¡}Ó5¼¼UÀCÈÁHÓ8MÑMÓNÐQUÓUÐUÐUà ‘}¨¨C©Ó0Ð0Ð0ñ	1ð !0Ðr-   Ú
collectionc           	      ó¶   — | j                  «       }t        |«      }|t        |d   «      k7  rt        d|dt        |d   «      «       |t        |d   «      k(  sJ ‚y)z?The given collection count is equal to the number of embeddingsrB   zcount mismatch:z=!N)ÚcountrI   rE   Úprint)rS   r.   rU   Únormalized_record_sets       r+   rU   rU   m   sa   € à×ÑÓ€EÜ$ ZÓ0ÐØ”Ð)¨%Ñ0Ó1Ò1ÜÐ ¨¬cÐ2GÈÑ2NÓ.OÔPØ”CÐ-¨eÑ4Ó5Ò5Ð5Ñ5r-   rW   Ú
field_namerC   rD   r0   c                 óZ  ‡‡— | j                  |d   |g¬«      Št        |d   «      D ��ci c]  \  }}||“Œ
 c}}Š‰|   }t        |d   «      dk(  r>|dk(  r1t        t        j
                  t           |«      j                  dk(  sJ ‚y|g k(  sJ ‚y|€J ‚t        t        |«      ˆˆfd„¬«      }|D ��cg c]  \  }}|‘Œ	 }	}}||   }
|
€dgt        |d   «      z  }
|dk(  r?t        j                  t        j                  |	«      t        j                  |
«      «      sJ ‚yt        |	«      t        |
«      k(  sJ ‚t        |	|
«      D ]Y  \  }}
t        |
t        «      r=t        t        t         j"                  |«      t        t         j"                  |
«      «       ŒS||
k(  rŒYJ ‚ yc c}}w c c}}w )zq
    The actual embedding field is equal to the expected field
    field_name: one of [documents, metadatas]
    rB   ©rB   Úincluder   r0   Nc                 ó    •— ‰‰d   | d         S )NrB   r   © )Úindex_and_field_valueÚembedding_id_to_indexÚresults    €€r+   ú<lambda>z _field_matches.<locals>.<lambda>“   s   ø€ Ð*?Ø�5‰MÐ/°Ñ2Ñ3ñ+
€ r-   ©rP   )ÚgetÚ	enumeraterE   r   ÚnptÚNDArrayr   ÚsizeÚsortedr9   ÚallcloseÚarrayÚzipr*   ÚdictrR   r   ÚMetadata)rS   rW   rX   ÚiÚidÚactual_fieldÚsorted_fieldÚ_Úfield_valueÚfield_valuesÚexpected_fieldr_   r`   s              @@r+   Ú_field_matchesrv   v   sº  ù€ ð �^‰^Ð 5°eÑ <ÀzÀlˆ^ÓS€Fô 1:Ð:OÐPUÑ:VÓ0W×X¡u q¨"˜R ™UÓXÐØ˜*Ñ%€Lä
Ð  Ñ'Ó(¨AÒ-Ø˜Ò%ÜœŸ™¤CÑ(¨,Ó7×<Ñ<ÀÒAÐAÐAð 	ð   2Ò%Ð%Ð%Øð Ð#Ð#Ð#ÜÜ�,Óô
ô€Lð 7C×C¡N A {’KÐC€LÑCà*¨:Ñ6€NØÐð ˜¤#Ð&;¸EÑ&BÓ"CÑCˆØ�\Ò!Ü�{‰{œ2Ÿ8™8 LÓ1´2·8±8¸NÓ3KÔLÐLÑLä�<Ó ¤C¨Ó$7Ò7Ð7Ð7ä+.¨|¸^Ó+Lò 	5Ñ'ˆK˜Ü˜.¬$Ô/ÜÜœŸ™¨Ó5ÜœŸ™¨Ó8õð
 # nÓ4Ð4Ð4ñ	5ùó? Yùó& Ds   «F!Â3F'c                 óÒ   ‡— t        |«      }| j                  |d   g ¬«      d   }t        |d   «      D ��ci c]  \  }}||“Œ
 c}}Št        |ˆfd„¬«      }||d   k(  sJ ‚yc c}}w )z5The actual embedding ids is equal to the expected idsrB   rZ   c                 ó   •— ‰|    S r2   r]   )ro   r_   s    €r+   ra   zids_match.<locals>.<lambda>´   s   ø€ Ð3HÈÑ3L€ r-   rb   N)rI   rc   rd   rh   )rS   r.   rW   Ú
actual_idsrn   ro   r_   s         @r+   Ú	ids_matchrz   ­   sy   ø€ ä$ ZÓ0ÐØ—‘Ð$9¸%Ñ$@È"�ÓMÈeÑT€Jô 1:Ð:OÐPUÑ:VÓ0W×X¡u q¨"˜R ™UÓXÐÜ˜
Ó(LÔM€JØÐ.¨uÑ5Ò5Ð5Ñ5ùó Ys   ·A#c                 ó4   — t        |«      }t        | |d«       y)z?The actual embedding metadata is equal to the expected metadatarD   N©rI   rv   ©rS   r.   rW   s      r+   Úmetadatas_matchr~   ¸   ó   € ä$ ZÓ0ÐÜ�:Ð4°kÕBr-   c                 ó4   — t        |«      }t        | |d«       y)úAThe actual embedding documents is equal to the expected documentsrC   Nr|   r}   s      r+   Údocuments_matchr‚   ¾   r   r-   c                 ó4   — t        |«      }t        | |d«       y)r�   r0   Nr|   r}   s      r+   Úembeddings_matchr„   Ä   s   € ä$ ZÓ0ÐÜ�:Ð4°lÕCr-   c                 ón   — | j                  «       d   }t        |«      t        t        |«      «      k(  sJ ‚y )NrB   )rc   rE   Úset)rS   rB   s     r+   Úno_duplicatesr‡   Ê   s-   € Ø
�.‰.Ó
˜5Ñ
!€CÜˆs‹8”sœ3˜s›8“}Ò$Ð$Ñ$r-   ÚqueryÚtargetsÚdistance_fnc                 ó6  ‡‡— t        j                  | t         j                  ¬«      }t        j                  |t         j                  ¬«      Št        j                  ˆˆfd„d|«      }t        j                  |«      j                  «       |j                  «       fS )zGReturn the ordered indices and distances from each query to each target)Údtypec                 ó4   •— t        j                  ‰d‰| «      S )Né   )r9   Úapply_along_axis)rˆ   rŠ   Ú
np_targetss    €€r+   ra   z"_exact_distances.<locals>.<lambda>Ü   s   ø€ ”b×)Ñ)¨+°q¸*ÀeÓL€ r-   rŽ   )r9   rj   Úfloat32r�   ÚargsortÚtolist)rˆ   r‰   rŠ   Únp_queryÚ	distancesr�   s     `  @r+   Ú_exact_distancesr–   Ï   sp   ù€ ô �x‰x˜¤R§Z¡ZÔ0€HÜ—‘˜'¬¯©Ô4€Jô ×#Ñ#ÜLØ	Øó€Iô �:‰:�iÓ ×'Ñ'Ó)¨9×+;Ñ+;Ó+=Ð=Ð=r-   Úthreadpool_sizec                 óD  — t        j                  «       }|j                  «       }d}d}t        |D �cg c]  }d|j                  v sŒ|j                  ‘Œ c}«      dz
  | kD  rw||k  rrt        j                  «        |j                  «       }|dz  }t        d«       t        |D �cg c]  }d|j                  v sŒ|j                  ‘Œ c}«      dz
  | kD  r||k  rŒrt        |D �cg c]  }d|j                  v sŒ|j                  ‘Œ c}«      dz
  | k  sJ ‚yc c}w c c}w c c}w )zs
    Checks that the open file descriptors are not exceeding the threadpool size
    works only for SegmentAPI
    é   r   Úsqlite3rŽ   N)ÚpsutilÚProcessÚ
open_filesrE   ÚpathÚgcÚcollectr   )r—   Úcurrent_processr�   Úmax_retriesÚretry_countÚps         r+   Ú fd_not_exceeding_threadpool_sizer¥   ä   s  € ô
 —n‘nÓ&€OØ ×+Ñ+Ó-€JØ€KØ€Kô 	˜ZÖ?˜¨9¸¿¹Ò+>ˆQ�V‹VÒ?Ó@À1ÑDÀÒVØ˜+Ò%ä
�
‰
ŒØ$×/Ñ/Ó1ˆ
Ø�qÑˆÜˆaŒô 	˜ZÖ?˜¨9¸¿¹Ò+>ˆQ�V‹VÒ?Ó@À1ÑDÀÒVØ˜+Ó%ô 	˜ZÖ?˜¨9¸¿¹Ò+>ˆQ�V‹VÒ?Ó@À1ÑDÈÒWðÙWùò @ùÒ?ùò @s#   ²DÁDÂ#DÂ7DÃ!DÃ5Dc                 óÔ  — d }| j                   xs i }d|v r|d   }| j                  j                  €|S d| j                  j                  v r‚| j                  j                  j                  d«      �]d| j                  j                  j                  d«      v r6| j                  j                  j                  d«      j                  d«      }|S d| j                  j                  v r‚| j                  j                  j                  d«      �]d| j                  j                  j                  d«      v r6|€4| j                  j                  j                  d«      j                  d«      }|S )Nz
hnsw:spaceÚspannÚspaceÚhnsw)ÚmetadataÚ_modelÚconfiguration_jsonrc   )rS   r¨   rª   s      r+   Ú	get_spacer­   û   sC  € ð €EØ×"Ñ"Ò( b€HØ�xÑØ˜Ñ&ˆØ×Ñ×+Ñ+Ð3Øˆà�:×$Ñ$×7Ñ7Ñ7Ø×Ñ×0Ñ0×4Ñ4°WÓ=ÐIØ�z×(Ñ(×;Ñ;×?Ñ?ÀÓHÑHà×!Ñ!×4Ñ4×8Ñ8¸ÓA×EÑEÀgÓNˆð €Lð 	�*×#Ñ#×6Ñ6Ñ6Ø×Ñ×0Ñ0×4Ñ4°VÓ<ÐHØ�z×(Ñ(×;Ñ;×?Ñ?ÀÓGÑGàˆ=Ø×%Ñ%×8Ñ8×<Ñ<¸VÓD×HÑHÈÓQˆEØ€Lr-   Ú	n_resultsÚ
min_recallÚembedding_functionÚquery_indicesÚquery_embeddingsÚ
use_searchc           
      óp  — t        |«      }t        |d   «      dk(  ry|d   }	|	duxr t        |	«      dkD  }
|
s+|€J ‚|d   €J ‚t        |d   t        «      sJ ‚ ||d   «      }	t	        | «      }|€t
        j                  }nA|dk(  rt
        j                  }n+|dk(  rt
        j                  }n|dk(  rt
        j                  }d	}|	€J ‚t        d
„ |	D «       «      sJ ‚t        |	d   «      }|t        j                  dt        t        j                  |«      «      «      z  }|€|€|	n|D �cg c]  }|	|   ‘Œ	 c}}|d   }|�|�|D �cg c]  }||   ‘Œ	 }}t        ||	¬«      \  }}|r¸g }|D ]o  }t        |t        j                   «      r|j#                  «       }n|}t%        t'        |¬«      t)        |¬«      ¬«      j+                  «       }|j-                  |«       Œq | j/                  |¬«      }t1        t2        j4                  |d   |d   |d   |d   |d   dœ«      }n| j7                  |
r|nd|
s|nd|g d¢¬«      }t9        ||«       |d   €J ‚|d   €J ‚|d   €J ‚|d   €J ‚|d   €J ‚t;        |d   «      D ��ci c]  \  }}||“Œ
 }}}d}t;        t=        ||«      «      D �]  \  }\  }}t        j>                  |d   «      |d|    }|t        tA        |«      tA        |d   |   «      z
  «      z  }t;        |d   |   «      D ]¡  \  }}||v} ||   }!t        jB                  ||!   |d   |   |   |¬«      }"| r	|"r|dz  }nŒ>|"sJ ‚t        jB                  |	|!   |d   |   |   «      sJ ‚|d   �|d   |!   |d   |   |   k(  sJ ‚|d   €Œ‡tE        |d   |!   |d   |   |   «       Œ£ �Œ t        |d   «      }#|#|z
  |#z  }$	 tG        d|$› d|› d|#› d|› �«       |$|k\  sJ ‚|d   D ]-  }%t        jB                  t        jJ                  |%«      |%«      rŒ-J ‚ yc c}w c c}w c c}}w # tH        $ r Y ŒXw xY w)zBValidate that the API performs nearest_neighbor searches correctlyrB   r   Nr0   rC   ÚcosineÚipÚl2rM   c              3   ó\   K  — | ]$  }t        |t        t        j                  f«      –— Œ& y ­wr2   )r*   r3   r9   r:   r@   s     r+   r7   zann_accuracy.<locals>.<genexpr>>  s    è ø€ ÒE°QŒz˜!œd¤B§J¡JÐ/×0ÑEùs   ‚*,é
   )rŠ   )rˆ   )Úlimit)Úrankrº   )ÚsearchesÚscoresrD   )rB   r•   r0   rC   rD   )r0   rC   rD   r•   )r²   Úquery_textsr®   r[   r•   )ÚatolrŽ   z
# recall: z
, missing z out of z, accuracy threshold )&rI   rE   r*   r3   r­   r    r·   rµ   r¶   rF   ÚmathÚpowr<   Úlog10r–   r9   r:   r“   r!   r"   r$   Ú
select_allÚappendÚsearchr   r   ÚQueryResultrˆ   Ú _query_results_are_correct_shaperd   rk   rj   r†   ri   rR   r   r   Úsort)&rS   r.   r®   r¯   r°   r±   r²   r³   rW   r0   Úhave_embeddingsr¨   Údistance_functionÚaccuracy_thresholdÚdimrn   Úquery_documentsÚindicesr•   Úsearch_requestsÚquery_embeddingÚquery_embedding_listrÅ   Úsearch_resultsÚquery_resultsro   Úid_to_indexÚmissingÚ	indices_iÚdistances_iÚexpected_idsÚjÚunexpected_idÚindexÚcorrect_distancerg   ÚrecallÚdistance_results&                                         r+   Úann_accuracyrß     s|  € ô % ZÓ0Ðä
Ð  Ñ'Ó(¨AÒ-Øà-BÀ<Ñ-P€JØ ¨Ð,ÒD´°Z³À1Ñ1D€OÙØ!Ð-Ð-Ð-Ø$ [Ñ1Ð=Ð=Ð=ÜÐ/°Ñ<¼dÔCÐCÐCá'Ð(=¸kÑ(JÓKˆ
ä�jÓ!€EØ€}Ü.×1Ñ1ÑØ	�(Ò	Ü.×5Ñ5ÑØ	�$ŠÜ.×1Ñ1ÑØ	�$ŠÜ.×1Ñ1ÐàÐØÐ!Ð!Ð!ô
 ÑE¸*ÔEÔEÐEÐEÜ
ˆj˜‰mÓ
€CØ+¬d¯h©h°r¼3¼t¿z¹zÈ#»Ó;OÓ.PÑPÐð Ðð Ð$ñ à)6Ö7 A�*˜Q“-Ò7ð 	ð
 ,¨KÑ8€OØÐ  _Ð%@Ø7DÖE°!˜?¨1Ó-ÐEˆÐEä)Ø˜*Ð2CôÑ€GˆYñ àˆØ/ò 
	+ˆOä˜/¬2¯:©:Ô6Ø'6×'=Ñ'=Ó'?Ñ$à'6Ð$ÜÜÐ3Ô4Ü )Ô,ô÷ ‰j‹lð ð ×"Ñ" 6Õ*ð
	+ð $×*Ñ*Ø$ð +ó 
ˆô
 Ü×Ñà% eÑ,Ø+Øñð -¨\Ñ:Ø+¨KÑ8Ø+¨KÑ8ñó
‰ð #×(Ñ(Ù1@Ñ-ÀdÙ/>™ÀDØÚIð	 )ó 
ˆô % ]°IÔ>ð ˜ÑÐ+Ð+Ð+Ø˜Ñ%Ð1Ð1Ð1Ø˜Ñ&Ð2Ð2Ð2Ø˜Ñ%Ð1Ð1Ð1Ø˜Ñ%Ð1Ð1Ð1ô '0Ð0EÀeÑ0LÓ&M×N™U˜Q �2�q‘5ÐN€KÑNØ€GÜ'0´°W¸iÓ1HÓ'Ió $Ñ#ˆÑ#ˆI�{Ü—x‘xÐ 5°eÑ <Ó=¸iÈ
ÈÐ>SÑTˆØ”3”s˜<Ó(¬3¨}¸UÑ/CÀAÑ/FÓ+GÑGÓHÑHˆô ˜}¨UÑ3°AÑ6Ó7ò 	‰EˆAˆrà lÐ2ˆMØ ‘OˆEä!Ÿ{™{Ø˜EÑ"Ø˜kÑ*¨1Ñ-¨aÑ0Ø'ô Ðñ
 ñ $Ø˜q‘L‘Gàá'Ð'Ð'ä—;‘;˜z¨%Ñ0°-ÀÑ2MÈaÑ2PÐQRÑ2SÔTÐTÐTØ$ [Ñ1Ð=à)¨+Ñ6°uÑ=Ø$ [Ñ1°!Ñ4°QÑ7ò8ðð8ð % [Ñ1Ñ=ÜØ)¨+Ñ6°uÑ=Ø! +Ñ.¨qÑ1°!Ñ4õò7	ð$ôL Ð$ UÑ+Ó,€DØ�W‰n Ñ$€FðÜØ˜˜ 
¨7¨)°8¸D¸6ÐAVÐWiÐVjÐkô	
ð �ZÒÐÐð )¨Ñ5ò FˆÜ�{‰{œ2Ÿ7™7 ?Ó3°_ÕEÐEÐEñFùòe 8ùò Fùór Oøô^ ò Ùðús$   Ä*PÅPÉ>P#ÏP) Ð)	P5Ð4P5rÓ   c                 óT   ‡— dD ]"  }| |   €J ‚t        ˆfd„| |   D «       «      rŒ"J ‚ y )N)r•   r0   rC   rD   c              3   ó:   •K  — | ]  }t        |«      ‰k(  –— Œ y ­wr2   )rE   )r5   r`   r®   s     €r+   r7   z3_query_results_are_correct_shape.<locals>.<genexpr>Â  s   øè ø€ ò 
Ø)/ŒC�‹K˜9Õ$ñ
ùs   ƒ)rF   )rÓ   r®   Úresult_types    ` r+   rÇ   rÇ   ½  sJ   ø€ ð Mò 
ˆØ˜[Ñ)Ð5Ð5Ð5Üó 
Ø3@ÀÑ3Mô
õ 
ð 	
ð 
ñ
r-   Úsqlitec                 óš  — t        d«      }| j                  «       j                  |«      }| j                  «       5 }t	        |j                  t        j                  |j                  «      «      | j                  «       «      \  }}|j                  ||«      }t        t        |j                  «       d   «      cd d d «       S # 1 sw Y   y xY w)NÚembeddings_queuer   )r   ÚquerybuilderÚfrom_Útxr	   Úselectr   ÚCountÚseq_idÚparameter_formatÚexecuter   r<   Úfetchone)rã   ÚtÚqÚcurÚsqlÚparamsr`   s          r+   Ú_total_embedding_queue_log_sizerô   Ç  s    € ÜÐ Ó!€AØ×ÑÓ×#Ñ# AÓ&€Aà	�‰‹ð /˜ÜØ�H‰H”Y—_‘_ Q§X¡XÓ.Ó/°×1HÑ1HÓ1Jó
‰ˆˆVð —‘˜S &Ó)ˆÜ”C˜Ÿ™Ó*¨1Ñ-Ó.÷/÷ /ò /ús   »A<CÃC
ÚsystemÚcollectionsÚhas_collection_mutatedc                 ó‚  — | j                  t        «      }| j                  j                  s| j                  j                  dk(  ry |rht        |«      dk\  sJ ‚t        d„ |D «       «      }t        d„ |D «       «      }| j                  j                  dk(  r|n||z   }t        |«      dz
  |k  sJ ‚y t        |«      dk(  sJ ‚y )Nú!chromadb.api.rust.RustBindingsAPIrŽ   c              3   óp   K  — | ].  }|j                   �|j                   j                  dd«      nd–— Œ0 y ­w)Núhnsw:sync_thresholdéè  ©rª   rc   ©r5   rS   s     r+   r7   z%log_size_below_max.<locals>.<genexpr>ä  sD   è ø€ ò !
ð ð ×"Ñ"Ð.ð ×Ñ×#Ñ#Ð$9¸4Ô@àóñ!
ùó   ‚46c              3   óp   K  — | ].  }|j                   �|j                   j                  dd«      nd–— Œ0 y ­w)Núhnsw:batch_sizeéd   rý   rþ   s     r+   r7   z%log_size_below_max.<locals>.<genexpr>ê  sD   è ø€ ò 
ð ð ×"Ñ"Ð.ð ×Ñ×#Ñ#Ð$5°sÔ;àóñ
ùrÿ   r   )Úinstancer
   ÚsettingsÚis_persistentÚchroma_api_implrô   Úsum)rõ   rö   r÷   rã   Úsync_threshold_sumÚbatch_size_sumrº   s          r+   Úlog_size_below_maxr
  Ó  sØ   € ð �_‰_œXÓ&€Fð �O‰O×)Ò)Ø�O‰O×+Ñ+Ð/RÒRàáä.¨vÓ6¸!Ò;Ð;Ð;ô !ñ !
ð *ô	!
ó 
Ðô ñ 
ð *ô	
ó 
ˆð �‰×.Ñ.Ð2UÒUñ à# nÑ4ð 	ô /¨vÓ6¸Ñ:¸eÒCÐCÑCä.¨vÓ6¸!Ò;Ð;Ñ;r-   c           	      óØ  — | j                  t        «      }t        d«      }|j                  «       j	                  |«      }| j
                  j                  d«      }| j
                  j                  d«      }|D �ci c]  }t        |||j                  «      |“Œ }}|j                  «       5 }	t        |j                  |j                  t        j                  |j                  «      «      j!                  d«      |j#                  «       «      \  }
}|	j%                  |
|«      }i }|j'                  «       D ]  }|d   |||d      j                  <   Œ |cd d d «       S c c}w # 1 sw Y   y xY w)Nrå   Ú	tenant_idÚtopic_namespaceÚtopicrŽ   r   )r  r
   r   ræ   rç   r  Úrequirer   ro   rè   r	   ré   r  r   rê   rë   Úgroupbyrì   rí   Úfetchall)rõ   rö   rã   rï   rð   Ú_tenantÚ_topic_namespacerS   Útopic_mappingsrñ   rò   ró   r`   ÚoutÚress                  r+   Ú._total_embedding_queue_log_size_per_collectionr  þ  sO  € ð �_‰_œXÓ&€FÜÐ Ó!€AØ×ÑÓ×#Ñ# AÓ&€AØ�o‰o×%Ñ% kÓ2€GØ—‘×.Ñ.Ð/@ÓAÐð &öàô 	˜'Ð#3°Z·]±]ÓCÀZÑOð€Nð ð 
�‰‹ð 	˜ÜØ�H‰H�Q—W‘WœiŸo™o¨a¯h©hÓ7Ó8×@Ñ@ÀÓIØ×#Ñ#Ó%ó
‰ˆˆVð —‘˜S &Ó)ˆØˆØ—?‘?Ó$ò 	4ˆCØ-0°©VˆC�˜s 1™vÑ&×)Ñ)Ò*ð	4à÷	ñ 	ùò	÷	ð 	ús   Á:EÂ+B&E Å E)c                 ól  ‡‡— | j                   j                  dk(  ry | j                  t        «      }|rçt	        |«      dk\  sJ ‚|D �ci c]7  }|j
                  |j                  �|j                  j                  dd«      nd“Œ9 }}|D �ci c]0  }|j
                  |j                  «       ||j
                     z  dz   “Œ2 c}Št        | |«      Št        ‰j                  «       «      t        ‰j                  «       «      k(  sJ ‚t        ˆˆfd„|D «       «      sJ ‚y t	        |«      dk(  sJ ‚y c c}w c c}w )Nrù   rŽ   r  r  c              3   ó\   •K  — | ]#  }‰|j                      ‰|j                      k(  –— Œ% y ­wr2   )ro   )r5   rS   Úactual_sizesÚexpected_sizess     €€r+   r7   z:log_size_for_collections_match_expected.<locals>.<genexpr>3  s0   øè ø€ ò 
àð ˜Ÿ™Ñ'¨>¸*¿-¹-Ñ+HÕHñ
ùs   ƒ),r   )r  r  r  r
   rô   ro   rª   rc   rU   r  r†   ÚkeysrF   )rõ   rö   r÷   rã   rS   r	  r  r  s         @@r+   Ú'log_size_for_collections_match_expectedr    sM  ù€ ð ‡�×&Ñ&Ð*MÒMàà�_‰_œXÓ&€Fáä.¨vÓ6¸!Ò;Ð;Ð;ð *ö	
ð ð �M‰MØ×"Ñ"Ð.ð &×.Ñ.×2Ñ2Ð3DÀcÔJàñð
ˆð 
ð *ö
àð �M‰M˜:×+Ñ+Ó-°¸z¿}¹}Ñ0MÑMÐPQÑQÑQò
ˆô
 FØ�Kó
ˆô �<×$Ñ$Ó&Ó'¬3¨~×/BÑ/BÓ/DÓ+EÒEÐEÐEÜô 
à)ô
ô 
ð 	
ñ 
ô /¨vÓ6¸!Ò;Ð;Ñ;ùò+
ùò
s   Á<D,Â
5D1ÚclientÚcollection_namec           
   #   ó„  K  — | j                  «       D �cg c]  }|j                  ‘Œ }}||v sJ ‚| j                  |«      }g }t        | j                  t
        «      �rJ| j                  j                  }|j                  |j                  ¬«      }i }d}|D ]Ï  }	d||	d   <   |	d   t        j                  j                  k(  sŒ,|j                  �d|j                  v r|j                  d   nd}
|j                  «       |
kD  sŒkd}t        j                  j!                  t        j                  j#                  | j%                  «       j&                  t)        |	d   «      «      «      rŒÏJ ‚ |r|t        j                  j                     sJ ‚|t        j*                  j                     sJ ‚d –— | j                  «       D �cg c]  }|j                  ‘Œ }}||vsJ ‚t-        |«      dkD  rÎ| j                  j                  }|j                  |j                  ¬«      }t-        |«      dk(  sJ ‚|D ]†  }	|	d   t        j                  j                  k(  sŒ$t        j                  j!                  t        j                  j#                  | j%                  «       j&                  t)        |	d   «      «      «      sŒ†J ‚ y y c c}w c c}w ­w)	N)rS   FTÚtyperû   rü   ro   r   )Úlist_collectionsÚnameÚget_collectionr*   Ú_serverr   Ú_sysdbÚget_segmentsro   r   ÚHNSW_LOCAL_PERSISTEDr'   rª   rU   Úosrž   ÚexistsÚjoinÚget_settingsÚpersist_directoryÚstrÚSQLITErE   )r  r  ÚcÚcollection_namesrS   ÚsegmentsÚsysdbÚsegment_typesÚshould_have_hnswÚsegmentÚsync_thresholdÚsegments_afters               r+   Úcollection_deletedr9  <  s�  è ø€ ð )/×(?Ñ(?Ó(AÖB 1˜Ÿ›ÐBÐÐBØÐ.Ñ.Ð.Ð.Ø×&Ñ& Ó7€JØ€HÜ�&—.‘.¤*Õ-Ø—~‘~×,Ñ,ˆØ×%Ñ%°·±Ð%Ó?ˆØˆØ ÐØò 	ˆGØ-1ˆM˜' &™/Ñ*Ø�v‰¤+×"BÑ"B×"HÑ"HÓHð "×*Ñ*Ð6Ø-°×1DÑ1DÑDð ×'Ñ'Ð(=Ò>ð ð	 ð ×$Ñ$Ó&¨Ó7à'+Ð$ÜŸ7™7Ÿ>™>ÜŸ™Ÿ™Ø"×/Ñ/Ó1×CÑCÄSÈÐQUÉÓEWóõð ð ð	ñ$ Ø ¤×!AÑ!A×!GÑ!GÒHÐHÐHØœ[×/Ñ/×5Ñ5Ò6Ð6Ð6ã	ð )/×(?Ñ(?Ó(AÖB 1˜Ÿ›ÐBÐÐBØÐ"2Ñ2Ð2Ð2Ü
ˆ8ƒ}�qÒØ—~‘~×,Ñ,ˆØ×+Ñ+°z·}±}Ð+ÓEˆÜ�>Ó" aÒ'Ð'Ð'Øò 	ˆGØ�v‰¤+×"BÑ"B×"HÑ"HÓHÜŸ7™7Ÿ>™>Ü—G‘G—L‘LØ×+Ñ+Ó-×?Ñ?ÄÀWÈTÁ]ÓASóõð ð ñ	ð	 ùòI CùòD Cùs>   ‚K •J6¨BK Ã>K ÄA#K Å%AK Æ>J;ÇA=K ÉA!K Ê1K )rŽ   gffffffî?NNNF)`rŸ   rÀ   Úos.pathr)  Úuuidr   Ú
contextlibr   Úchromadb.api.segmentr   Úchromadb.db.systemr   Úchromadb.ingest.impl.utilsr   Úchromadb.configr   Úchromadb.db.baser	   Úchromadb.db.impl.sqliter
   Útimer   r›   Úchromadb.segmentr   Ú!chromadb.test.property.strategiesr   r   Útypingr   r   r   r   r   r   r   r   r   Útyping_extensionsr   Únumpyr9   Únumpy.typingre   Úchromadb.apir   r   Úchromadb.api.models.Collectionr   Ú
hypothesisr   Úhypothesis.errorsr   Úpypikar   r   Úchromadb.utilsr    Ú"chromadb.execution.expression.planr!   Ú&chromadb.execution.expression.operatorr"   r#   r$   r%   r&   r,   rI   rm   rR   rU   rv   rz   r~   r‚   r„   r‡   r·   rG   Ú	ArrayLiker=   r<   r–   r¥   r­   ÚEmbeddingFunctionÚboolrß   rÆ   rÇ   rô   r
  r  r  r.  r9  r]   r-   r+   ú<module>rU     sÊ  ðÛ 	Û Û Ý Ý %å +Ý $Ý 8å "Ý $Ý ,Ý Û å (ß Lß S× SÕ SÝ %Û Ý ß )Ý 5Ý Ý -ß #å -Ý 5ß JÓ JáˆCƒL€ð��a˜˜a™�jÑ!ð  d¨1¡gó ð,˜ð ,Ð':ó ,ð^1Ø�u—~‘~Ñ&ð1Ø-5°e·n±nÑ-Eð1à	ó1ð 6�jð 6¨ið 6¸Dó 6ð45Øð45à.ð45ð Ø�Ñ˜g kÑ2°G¸LÑ4IÐIñð45ð 
ó45ðn6˜*ð 6°)ð 6Àó 6ðC 
ð C¸	ð CÀdó CðC 
ð C¸	ð CÀdó CðD ð D¸ð DÀtó Dð%˜jð %¨Tó %ð 	×Ññ>Ø×Ñð>à×Ñð>ð Ø	�‰˜Ÿ™Ð&¨Ð-ñð>ð ˆ4��S‘	‰?˜D  e¡Ñ-Ð-Ñ.ó>ð*°cð ¸dó ð.˜*ó ð: ØØ<@Ø)-Ø37ØñeFØðeFàðeFð ðeFð ð	eFð
 ! ×!8Ñ!8Ñ9ðeFð ˜D ™IÑ&ðeFð ˜u×/Ñ/Ñ0ðeFð ðeFð 
óeFðP
Ø×$Ñ$ð
Ø14ð
à	ó
ð	/¨Hð 	/¸ó 	/ð(<Øð(<Ø!% jÑ!1ð(<ØKOð(<à	ó(<ðVØðà�jÑ!ðð 
ˆ$�ˆ)�_óð2"<Øð"<Ø!% jÑ!1ð"<ØKOð"<à	ó"<ðJ ð0˜yð 0¸3ò 0ó ñ0r-   