Ë
    lQêjºd  ã                   óú  — 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mZ d dlmZ d dlmZmZmZ d dlmZ d dlmZ d dlmZmZmZ d d	lmZ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+m,Z,m-Z- d dl.m/Z/ d dl0m1Z2 d dl3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9Z9d dl:Z: e:jv                  e<«      Z= G d„ de«      Z>de?dee'ee(e'f   eee	e'   f   f   de/de,de,de4fd„Z@de?dee'e	e'   f   dee(ef   de/de,de,de4fd„ZAy)é    )	ÚOptionalÚSequenceÚAnyÚTupleÚcastÚ	GeneratorÚUnionÚDictÚList)ÚMetadataReader)ÚConsumer)ÚSystem)ÚRequestVersionContextÚSegmentÚInclusionExclusionOperator)ÚSqliteDB)Úoverride)ÚCursorÚParameterValueÚget_sql)ÚOpenTelemetryClientÚOpenTelemetryGranularityÚtrace_method)	ÚWhereÚWhereDocumentÚMetadataEmbeddingRecordÚ	LogRecordÚSeqIdÚ	OperationÚUpdateMetadataÚLiteralValueÚWhereOperator)ÚUUID)ÚTableÚTables)ÚQueryBuilderN)Ú	Criterion)Úgroupby)Úreducec                   óØ  — e Zd ZU eed<   eed<   eed<   eed<   ee   ed<   dZ	ee   ed<   de
d	efd
„Z edej                  «      ed>d„«       «       Z edej                  «      ed>d„«       «       Z edej                  «      edefd„«       «       Z edej                  «      ededefd„«       «       Z edej                  «      e	 	 	 	 	 	 d?dedee   dee   deee      dee   dee   dedee   fd„«       «       Zdede dede!eddf   fd„Z" ed ej                  «      d!ee#e$d"f      dedefd#„«       Z% ed$ej                  «      ded%e&d&eddfd'„«       Z' ed(ej                  «      ded)ed*e(ddfd+„«       Z) ed,ej                  «      ded)ed*e(ddfd-„«       Z* ed.ej                  «      ded%e&ddfd/„«       Z+ ed0ej                  «      ded%e&ddfd1„«       Z, ed2ej                  «      d3ee&   ddfd4„«       Z- ed5ej                  «      de ded6e.d7e.de/f
d8„«       Z0 ed9ej                  «      de ded6e.d:e.d7e.de/fd;„«       Z1 ed<ej                  «      ed>d=„«       «       Z2y)@ÚSqliteMetadataSegmentÚ	_consumerÚ_dbÚ_idÚ_opentelemetry_clientÚ_collection_idNÚ_subscriptionÚsystemÚsegmentc                 óÈ   — |j                  t        «      | _        |j                  t        «      | _        |d   | _        |j                  t        «      | _        |d   | _	        y )NÚidÚ
collection)
Úinstancer   r-   r   r,   r.   Úrequirer   r/   r0   )Úselfr2   r3   s      új/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/chromadb/segment/impl/metadata/sqlite.pyÚ__init__zSqliteMetadataSegment.__init__3   sL   € Ø—?‘?¤8Ó,ˆŒØŸ™¬Ó2ˆŒØ˜4‘=ˆŒØ%+§^¡^Ô4GÓ%HˆÔ"Ø% lÑ3ˆÕó    zSqliteMetadataSegment.startÚreturnc                 ó¬   — | j                   rH| j                  «       }| j                  j                  | j                   | j                  |¬«      | _        y y )N)Úcollection_idÚ
consume_fnÚstart)r0   Ú	max_seqidr,   Ú	subscribeÚ_write_metadatar1   )r9   Úseq_ids     r:   rA   zSqliteMetadataSegment.start:   sO   € ð ×ÒØ—^‘^Ó%ˆFØ!%§¡×!9Ñ!9Ø"×1Ñ1Ø×/Ñ/Øð ":ó "ˆDÕð r<   zSqliteMetadataSegment.stopc                 óh   — | j                   r&| j                  j                  | j                   «       y y ©N)r1   r,   Úunsubscribe)r9   s    r:   ÚstopzSqliteMetadataSegment.stopE   s*   € ð ×ÒØ�N‰N×&Ñ& t×'9Ñ'9Õ:ð r<   zSqliteMetadataSegment.max_seqidc                 óX  — t        d«      }| j                  j                  «       j                  |«      j	                  |j
                  «      j                  |j                  t        | j                  j                  | j                  «      «      k(  «      }t        |«      \  }}| j                  j                  «       5 }|j                  ||«      j                  «       }|€#| j                  j!                  «       cd d d «       S t#        t$        |d   «      cd d d «       S # 1 sw Y   y xY w)NÚ
max_seq_idr   )r$   r-   ÚquerybuilderÚfrom_ÚselectrE   ÚwhereÚ
segment_idr   Ú
uuid_to_dbr.   r   ÚtxÚexecuteÚfetchoner,   Ú	min_seqidr   Úint)r9   ÚtÚqÚsqlÚparamsÚcurÚresults          r:   rB   zSqliteMetadataSegment.max_seqidK   sà   € ô �,Óˆà�H‰H×!Ñ!Ó#ß‰U�1‹Xß‰V�A—H‘HÓß‰U�1—<‘<¤>°$·(±(×2EÑ2EÀdÇhÁhÓ2OÓ#PÑPÓQð	 	
ô ˜a“j‰ˆˆVØ�X‰X�[‰[‹]ð 	,˜cØ—[‘[  fÓ-×6Ñ6Ó8ˆFàˆ~Ø—~‘~×/Ñ/Ó1÷		,ñ 	,ô œC ¨¡Ó+÷	,÷ 	,ò 	,ús   Â><D ÄD Ä D)zSqliteMetadataSegment.countÚrequest_version_contextc                 ó4  — t        d«      }| j                  j                  «       j                  |«      j	                  |j
                  t        | j                  j                  | j                  «      «      k(  «      j                  t        j                  |j                  «      «      }t        |«      \  }}| j                  j                  «       5 }|j                  ||«      j!                  «       d   }t#        t$        |«      cd d d «       S # 1 sw Y   y xY w)NÚ
embeddingsr   )r$   r-   rL   rM   rO   rP   r   rQ   r.   rN   ÚfnÚCountr5   r   rR   rS   rT   r   rV   )r9   r]   Úembeddings_trX   rY   rZ   r[   r\   s           r:   ÚcountzSqliteMetadataSegment.count^   sÑ   € ô ˜\Ó*ˆà�H‰H×!Ñ!Ó#ß‰U�<Ó ß‰UØ×'Ñ'¬>¸$¿(¹(×:MÑ:MÈdÏhÉhÓ:WÓ+XÑXó÷ ‰V”B—H‘H˜\Ÿ_™_Ó-Ó.ð 	
ô ˜a“j‰ˆˆVØ�X‰X�[‰[‹]ð 	%˜cØ—[‘[  fÓ-×6Ñ6Ó8¸Ñ;ˆFÜœ˜VÓ$÷	%÷ 	%ò 	%ús   Ã3DÄDz"SqliteMetadataSegment.get_metadatarO   Úwhere_documentÚidsÚlimitÚoffsetÚinclude_metadatac           	      óˆ  — t        ddd«      \  }}	}
|xs d}|xs d}|dk  rt        d«      ‚|j                  |j                  |j                  g}|rH|j                  |	j                  |	j                  |	j                  |	j                  |	j                  g«        | j                  j                  «       j                  |«      j                  |	«      j                  |j                  |	j                  k(  «      j                   |Ž j#                  |j                  «      }|€|��´| j                  j                  «       j                  |«      j!                  |j                  «      j                  |	«      j                  |j                  |	j                  k(  «      j#                  |j                  «      j%                  |j&                  t)        | j                  j+                  | j,                  «      «      k(  «      j/                  «       }|r#|j%                  | j1                  |||	|«      «      }|r$|j%                  | j3                  |||	|
|«      «      }|�3|j%                  |j                  j5                  t)        |«      «      «      }|j7                  |«      }|j9                  |«      }|j%                  |j                  j5                  |«      «      }�n | j                  j                  «       j                  |«      j!                  |j                  «      j%                  |j&                  t)        | j                  j+                  | j,                  «      «      k(  «      j#                  |j                  «      j7                  |«      j9                  |«      }|�3|j%                  |j                  j5                  t)        |«      «      «      }|j%                  |j                  j5                  |«      «      }| j                  j;                  «       5 }t=        | j?                  |||«      «      cddd«       S # 1 sw Y   yxY w)zQuery for embedding metadata.r_   Úembedding_metadataÚembedding_fulltext_searchl   ÿÿÿÿ r   zLimit cannot be negativeN) r%   Ú
ValueErrorr5   Úembedding_idrE   ÚextendÚkeyÚstring_valueÚ	int_valueÚfloat_valueÚ
bool_valuer-   rL   rM   Ú	left_joinÚonrN   ÚorderbyrO   rP   r   rQ   r.   ÚdistinctÚ_where_map_criterionÚ_where_doc_criterionÚisinrf   rg   rR   ÚlistÚ_records)r9   r]   rO   rd   re   rf   rg   rh   rb   Ú
metadata_tÚ
fulltext_tÚselect_clauserX   Ú
metadata_qÚembeddings_qr[   s                   r:   Úget_metadataz"SqliteMetadataSegment.get_metadatao   s�  € ô 06ØÐ.Ð0Kó0
Ñ,ˆ�j *ð Ò"˜ˆØ’˜1ˆà�1Š9ÜÐ7Ó8Ð8ð �O‰OØ×%Ñ%Ø×Ñð
ˆñ
 Ø× Ñ à—N‘NØ×+Ñ+Ø×(Ñ(Ø×*Ñ*Ø×)Ñ)ðôðØ—‘×%Ñ%Ó'ß‘�|Ó$ß‘˜:Ó&ß‘�L—O‘O z§}¡}Ñ4Ó5ç‰V�]ð$÷ ‰W�\—_‘_Ó%ð 	
ð Ð Ñ :à—‘×%Ñ%Ó'ß‘�|Ó$ß‘˜Ÿ™Ó(ß‘˜:Ó&ß‘�L—O‘O z§}¡}Ñ4Ó5ß‘˜Ÿ™Ó)ß‘Ø ×+Ñ+Ü% d§h¡h×&9Ñ&9¸$¿(¹(Ó&CÓDñEó÷ ‘“ð ñ Ø'×-Ñ-Ø×-Ñ-Ø" E¨:°|óó�
ñ
 Ø'×-Ñ-Ø×-Ñ-Ø" N°JÀ
ÈLóó�
ð
 ˆØ'×-Ñ-Ø ×-Ñ-×2Ñ2´>À#Ó3FÓGó�
ð $×)Ñ)¨%Ó0ˆJØ#×*Ñ*¨6Ó2ˆJà—‘˜Ÿ™×,Ñ,¨ZÓ8Ó9ŠAð —‘×%Ñ%Ó'ß‘�|Ó$ß‘˜Ÿ™Ó(ß‘Ø ×+Ñ+Ü% d§h¡h×&9Ñ&9¸$¿(¹(Ó&CÓDñEó÷ ‘˜Ÿ™Ó)ß‘�u“ß‘˜“ð ð ˆØ+×1Ñ1Ø ×-Ñ-×2Ñ2´>À#Ó3FÓGó �ð —‘˜Ÿ™×,Ñ,¨\Ó:Ó;ˆAà�X‰X�[‰[‹]ð 	A˜cä˜Ÿ™ c¨1Ð.>Ó?Ó@÷	A÷ 	Aò 	Aús   ÐP8Ð8Qr[   rX   c              #   óà   K  — t        |«      \  }}|j                  ||«       t        |j                  d«      }t	        |d„ «      }|D ]"  \  }}	| j                  t        |	«      |«      –— Œ$ y­w)zqGiven a cursor and a QueryBuilder, yield a generator of records. Assumes
        cursor returns rows in ID order.Nc                 ó   — t        | d   «      S )Nr   )rV   )Úrs    r:   ú<lambda>z0SqliteMetadataSegment._records.<locals>.<lambda>í   s   € ¼¸Q¸q¹T»€ r<   )r   rS   ÚiterrT   r(   Ú_recordr{   )
r9   r[   rX   rh   rY   rZ   Úcur_iteratorÚgroup_iteratorÚ_Úgroups
             r:   r|   zSqliteMetadataSegment._recordsã   si   è ø€ ô ˜a“j‰ˆˆVØ�‰�C˜Ô ä˜CŸL™L¨$Ó/ˆÜ  Ñ/BÓCˆà&ò 	>‰HˆAˆuØ—,‘,œt E›{Ð,<Ó=Ó=ñ	>ùs   ‚A,A.zSqliteMetadataSegment._recordÚrows.c                 óØ   — |d   dd \  }}}|st        |d¬«      S i }|D ]8  }|dd \  }}	}
}}|	�|	||<   Œ|
�|
||<   Œ|�|||<   Œ&|€Œ)|dk(  rd||<   Œ4d||<   Œ: t        ||xs d¬«      S )zUGiven a list of DB rows with the same ID, construct a
        MetadataEmbeddingRecordr   Né   )r5   Úmetadataé   TF)r   )r9   r�   rh   r‹   rm   rE   r�   Úrowro   rp   rq   rr   rs   s                r:   rˆ   zSqliteMetadataSegment._recordò   sº   € ð #' q¡'¨"¨1 +Ñˆˆ<˜ÙÜ*¨lÀTÔJÐJàˆØò 	*ˆCØDGÈÈÀGÑAˆC�˜y¨+°zØÐ'Ø ,�˜’ØÐ&Ø )�˜’ØÐ(Ø +�˜’ØÑ'Ø ’?Ø$(�H˜S’Mà$)�H˜S’Mð	*ô 'ØØÒ% ô
ð 	
r<   z$SqliteMetadataSegment._insert_recordÚrecordÚupsertc                 ó¬  — t        d«      }| j                  j                  «       j                  |«      j	                  |j
                  |j                  |j                  «      j                  |j
                  t        | j                  j                  | j                  «      «      k(  «      j                  |j                  t        |d   d   «      k(  «      j                  t        | j                  j                  | j                  «      «      t        |d   d   «      t        |d   «      «      }t        |«      \  }}|dz   }	 |j                  ||«      j                  «       d   }|d   d	   r| j+                  |||d   d	   «       yy# t         j"                  $ r7 |r| j%                  ||«      cY S t&        j)                  d|d   d   › �«       Y yw xY w)
z2Add or update a single EmbeddingRecord into the DBr_   r“   r5   Ú
log_offsetzRETURNING idr   z!Insert of existing embedding ID: Nr�   )r$   r-   rL   ÚintoÚcolumnsrP   rm   rE   rO   r   rQ   r.   Úinsertr   rS   rT   Úsqlite3ÚIntegrityErrorÚ_update_recordÚloggerÚwarningÚ_update_metadata)	r9   r[   r“   r”   rW   rX   rY   rZ   r5   s	            r:   Ú_insert_recordz$SqliteMetadataSegment._insert_record  s–  € ô �,Óˆà�H‰H×!Ñ!Ó#ß‰T�!‹Wß‰W�Q—\‘\ 1§>¡>°1·8±8Ó<ß‰U�1—<‘<¤>°$·(±(×2EÑ2EÀdÇhÁhÓ2OÓ#PÑPÓQß‰U�1—>‘>¤^°F¸8Ñ4DÀTÑ4JÓ%KÑKÓLß
‰&Ü˜4Ÿ8™8×.Ñ.¨t¯x©xÓ8Ó9Ü˜6 (Ñ+¨DÑ1Ó2Ü˜6 ,Ñ/Ó0ó
ð 	
ô ˜a“j‰ˆˆVØ�NÑ"ˆð	Ø—‘˜S &Ó)×2Ñ2Ó4°QÑ7ˆBð �(Ñ˜JÒ'Ø×!Ñ! # r¨6°(Ñ+;¸JÑ+GÕHð (øô ×%Ñ%ò 
	áØ×*Ñ*¨3°Ó7Ò7ä—‘Ø7¸¸xÑ8HÈÑ8NÐ7OÐPôñ
 ð
	ús   Å#F	 Æ	'GÆ2GÇGz&SqliteMetadataSegment._update_metadatar5   r�   c                 óô  — t        d«      }|j                  «       D ��cg c]
  \  }}|�Œ	|‘Œ }}}|r­| j                  j                  «       j	                  |«      j                  |j                  t        |«      k(  «      j                  |j                  j                  t        |«      «      «      j                  «       }t        |«      \  }	}
|j                  |	|
«       | j                  |||«       yc c}}w )z0Update the metadata for a single EmbeddingRecordrj   N)r$   Úitemsr-   rL   rM   rO   r5   r   ro   rz   Údeleter   rS   Ú_insert_metadata)r9   r[   r5   r�   rW   ÚkÚvÚ	to_deleterX   rY   rZ   s              r:   rŸ   z&SqliteMetadataSegment._update_metadata3  sÂ   € ô
 Ð&Ó'ˆØ#+§>¡>Ó#3×A™4˜1˜a°q±y’QÐAˆ	ÑAÙà—‘×%Ñ%Ó'ß‘�q“ß‘�q—t‘tœ~¨bÓ1Ñ1Ó2ß‘�q—u‘u—z‘z¤.°Ó";Ó<Ó=ß‘“ð ô " !›*‰KˆC�Ø�K‰K˜˜VÔ$à×Ñ˜c 2 xÕ0ùó Bs
   Ÿ
C4ªC4z&SqliteMetadataSegment._insert_metadatac                 ó>  ‡ ‡‡‡‡
— t        d«      Š
‰ j                  j                  «       j                  ‰
«      j	                  ‰
j
                  ‰
j                  ‰
j                  ‰
j                  ‰
j                  ‰
j                  «      }‰j                  «       D �]  \  }}t        |t        «      r2|j                  t        ‰«      t        |«      t        |«      ddd«      }ŒIt        |t         «      r2|j                  t        ‰«      t        |«      dddt        |«      «      }Œ‹t        |t"        «      r2|j                  t        ‰«      t        |«      dt        |«      dd«      }ŒÍt        |t$        «      sŒÞ|j                  t        ‰«      t        |«      ddt        |«      d«      }�Œ t'        |«      \  }}|j)                  dd«      }|r‰j+                  ||«       d‰v rt        d«      Š
dˆˆˆˆ ˆ
fd„}		  |	«        yy# t,        j.                  $ r† ‰ j                  j                  «       j1                  ‰
«      j3                  ‰
j4                  t        ‰«      k(  «      j7                  «       }t'        |«      \  }}‰j+                  ||«        |	«        Y yw xY w)	z@Insert or update each metadata row for a single embedding recordrj   NÚINSERTúINSERT OR REPLACEúchroma:documentrk   c                  ó*  •— ‰j                   j                  «       j                  ‰«      j                  ‰j                  ‰j
                  «      j                  t        ‰«      t        ‰d   «      «      } t        | «      \  }}‰j                  ||«       y )Nr«   )
r-   rL   r—   r˜   Úrowidrp   r™   r   r   rS   )rX   rY   rZ   r[   r5   r�   r9   rW   s      €€€€€r:   Úinsert_into_fulltext_searchzKSqliteMetadataSegment._insert_metadata.<locals>.insert_into_fulltext_searchˆ  sr   ø€ à—H‘H×)Ñ)Ó+ß‘T˜!“Wß‘W˜QŸW™W a§n¡nÓ5ß‘VÜ& rÓ*Ü& xÐ0AÑ'BÓCóð	 ô & a›j‘��VØ—‘˜C Õ(r<   ©r=   N)r$   r-   rL   r—   r˜   r5   ro   rp   rq   rr   rs   r¢   Ú
isinstanceÚstrr™   r   ÚboolrV   Úfloatr   ÚreplacerS   rš   r›   rM   rO   r­   r£   )r9   r[   r5   r�   rX   ro   ÚvaluerY   rZ   r®   rW   s   ````      @r:   r¤   z&SqliteMetadataSegment._insert_metadataG  s>  ü€ ô
 Ð&Ó'ˆà�H‰H×!Ñ!Ó#ß‰T�!‹Wß‰WØ—‘Ø—‘Ø—‘Ø—‘Ø—‘Ø—‘óð 	
ð #Ÿ.™.Ó*ó %	‰JˆC�Ü˜%¤Ô%Ø—H‘HÜ" 2Ó&Ü" 3Ó'Ü" 5Ó)ØØØó‘ô ˜E¤4Ô(Ø—H‘HÜ" 2Ó&Ü" 3Ó'ØØØÜ" 5Ó)ó‘ô ˜E¤3Ô'Ø—H‘HÜ" 2Ó&Ü" 3Ó'ØÜ" 5Ó)ØØó‘ô ˜E¤5Õ)Ø—H‘HÜ" 2Ó&Ü" 3Ó'ØØÜ" 5Ó)Øó’ð=%	ôN ˜a“j‰ˆˆVØ�k‰k˜(Ð$7Ó8ˆÙØ�K‰K˜˜VÔ$à Ñ(ÜÐ1Ó2ˆA÷)ñ )ð.Ù+Õ-ð# )øô$ ×)Ñ)ò 	.à—H‘H×)Ñ)Ó+ß‘U˜1“Xß‘U˜1Ÿ7™7¤n°RÓ&8Ñ8Ó9ß‘V“Xð	 ô & a›j‘��VØ—‘˜C Ô(Ù+Ö-ð	.ús   Ç:H ÈBJÊJz$SqliteMetadataSegment._delete_recordc                 ó˜  — t        d«      }t        d«      }| j                  j                  «       j                  |«      j	                  |j
                  t        | j                  j                  | j                  «      «      k(  «      j	                  |j                  t        |d   d   «      k(  «      j                  «       }| j                  j                  «       j                  |«      j                  «       j	                  |j                  j                  | j                  j                  «       j                  |«      j                  |j                  «      j	                  |j
                  t        | j                  j                  | j                  «      «      k(  «      j	                  |j                  t        |d   d   «      k(  «      «      «      } |j                  t!        |«      Ž  t!        |«      \  }}|dz   }|j                  ||«      j#                  «       }	|	€t$        j'                  d|d   d   › �«       y|	d   }
t        d	«      }| j                  j                  «       j                  |«      j	                  |j                  t        |
«      k(  «      j                  «       }t!        |«      \  }}|j                  ||«       y)
z+Delete a single EmbeddingRecord from the DBr_   rk   r“   r5   ú RETURNING idNz$Delete of nonexisting embedding ID: r   rj   )r$   r-   rL   rM   rO   rP   r   rQ   r.   rm   r£   r­   rz   rN   r5   rS   r   rT   r�   rž   )r9   r[   r“   rW   Úfts_trX   Úq_ftsrY   rZ   r\   r5   r}   s               r:   Ú_delete_recordz$SqliteMetadataSegment._delete_record¢  s%  € ô �,ÓˆÜÐ1Ó2ˆà�H‰H×!Ñ!Ó#ß‰U�1‹Xß‰U�1—<‘<¤>°$·(±(×2EÑ2EÀdÇhÁhÓ2OÓ#PÑPÓQß‰U�1—>‘>¤^°F¸8Ñ4DÀTÑ4JÓ%KÑKÓLß‰V‹Xð 	
ð �H‰H×!Ñ!Ó#ß‰U�5‹\ß‰V‹Xß‰UØ—‘× Ñ Ø—H‘H×)Ñ)Ó+ß‘U˜1“Xß‘V˜AŸD™D“\ß‘UØŸ™¬°t·x±x×7JÑ7JÈ4Ï8É8Ó7TÓ(UÑUó÷ ‘U˜1Ÿ>™>¬^¸FÀ8Ñ<LÈTÑ<RÓ-SÑSÓTóó
ð	 	ð  	ˆ�‰”W˜U“^Ñ$Ü˜a“j‰ˆˆVØ�OÑ#ˆØ—‘˜S &Ó)×2Ñ2Ó4ˆØˆ>Ü�N‰NØ6°v¸hÑ7GÈÑ7MÐ6NÐOõð ˜‘ˆBô Ð3Ó4ˆJð —‘×%Ñ%Ó'ß‘�zÓ"ß‘�z—}‘}¬°rÓ(:Ñ:Ó;ß‘“ð	 ô " !›*‰KˆC�Ø�K‰K˜˜VÕ$r<   z$SqliteMetadataSegment._update_recordc                 ó”  — t        d«      }| j                  j                  «       j                  |«      j	                  |j
                  t        |d   «      «      j                  |j                  t        | j                  j                  | j                  «      «      k(  «      j                  |j                  t        |d   d   «      k(  «      }t        |«      \  }}|dz   }|j                  ||«      j                  «       }|€t        j!                  d|d   d   › �«       y|d   }|d   d	   r| j#                  |||d   d	   «       yy)
z)Update a single EmbeddingRecord in the DBr_   r–   r“   r5   r·   Nz$Update of nonexisting embedding ID: r   r�   )r$   r-   rL   ÚupdateÚsetrE   r   rO   rP   rQ   r.   rm   r   rS   rT   r�   rž   rŸ   )	r9   r[   r“   rW   rX   rY   rZ   r\   r5   s	            r:   rœ   z$SqliteMetadataSegment._update_recordÖ  s$  € ô �,Óˆà�H‰H×!Ñ!Ó#ß‰V�A‹Yß‰S�—‘œ>¨&°Ñ*>Ó?Ó@ß‰U�1—<‘<¤>°$·(±(×2EÑ2EÀdÇhÁhÓ2OÓ#PÑPÓQß‰U�1—>‘>¤^°F¸8Ñ4DÀTÑ4JÓ%KÑKÓLð 	
ô ˜a“j‰ˆˆVØ�OÑ#ˆØ—‘˜S &Ó)×2Ñ2Ó4ˆØˆ>Ü�N‰NØ6°v¸hÑ7GÈÑ7MÐ6NÐOõð ˜‘ˆBØ�hÑ 
Ò+Ø×%Ñ% c¨2¨v°hÑ/?À
Ñ/KÕLð ,r<   z%SqliteMetadataSegment._write_metadataÚrecordsc                 óL  — | j                   j                  «       5 }|D ]´  }|d   d   t        j                  k(  r| j	                  ||d«       Œ0|d   d   t        j
                  k(  r| j	                  ||d«       Œ]|d   d   t        j                  k(  r| j                  ||«       Œ‰|d   d   t        j                  k(  sŒ£| j                  ||«       Œ¶ | j                   j                  «       j                  t        d«      «      j                  dd«      j                  t        | j                   j!                  | j"                  «      «      t        d   «      «      }t%        |«      \  }}|j'                  d	d
«      }|j)                  ||«       ddd«       y# 1 sw Y   yxY w)zžWrite embedding metadata to the database. Care should be taken to ensure
        records are append-only (that is, that seq-ids should increase monotonically)r“   Ú	operationFTrK   rP   rE   r–   r©   rª   N)r-   rR   r   ÚADDr    ÚUPSERTÚDELETErº   ÚUPDATErœ   rL   r—   r$   r˜   r™   r   rQ   r.   r   r´   rS   )r9   r¾   r[   r“   rX   rY   rZ   s          r:   rD   z%SqliteMetadataSegment._write_metadataí  sk  € ð �X‰X�[‰[‹]ð 	%˜cØ!ò 5�Ø˜(Ñ# KÑ0´I·M±MÒAØ×'Ñ'¨¨V°UÕ;Ø˜HÑ% kÑ2´i×6FÑ6FÒFØ×'Ñ'¨¨V°TÕ:Ø˜HÑ% kÑ2´i×6FÑ6FÒFØ×'Ñ'¨¨VÕ4Ø˜HÑ% kÑ2´i×6FÑ6FÓFØ×'Ñ'¨¨VÕ4ð5ð —‘×%Ñ%Ó'ß‘”e˜LÓ)Ó*ß‘˜ xÓ0ß‘Ü" 4§8¡8×#6Ñ#6°t·x±xÓ#@ÓAÜ" 6¨,Ñ#7Ó8óð	 ô " !›*‰KˆC�Ø—+‘+˜hÐ(;Ó<ˆCØ�K‰K˜˜VÔ$÷-	%÷ 	%ñ 	%ús   ›B%FÃCFÆF#z*SqliteMetadataSegment._where_map_criterionr}   rb   c           
      óT  — g }|j                  «       D ]ý  \  }}|dk(  rSt        t        t           |«      D �cg c]  }| j	                  ||||«      ‘Œ }	}|j                  t        d„ |	«      «       Œ^|dk(  rSt        t        t           |«      D �cg c]  }| j	                  ||||«      ‘Œ }	}|j                  t        d„ |	«      «       Œ¶t        t        t        t        t        t        f   f   |«      }
|j                  t        ||
|||«      «       Œÿ t        d„ |«      S c c}w c c}w )Nú$andc                 ó   — | |z  S rG   © ©ÚxÚys     r:   r†   z<SqliteMetadataSegment._where_map_criterion.<locals>.<lambda>  ó
   € °!°a±%€ r<   ú$orc                 ó   — | |z  S rG   rÈ   rÉ   s     r:   r†   z<SqliteMetadataSegment._where_map_criterion.<locals>.<lambda>  rÌ   r<   c                 ó   — | |z  S rG   rÈ   rÉ   s     r:   r†   z<SqliteMetadataSegment._where_map_criterion.<locals>.<lambda>   s
   €  1 q¡5€ r<   )r¢   r   r   r   rx   Úappendr)   r	   r!   r
   r"   Ú_where_clause)r9   rX   rO   r}   rb   Úclauser¥   r¦   ÚwÚcriteriaÚexprs              r:   rx   z*SqliteMetadataSegment._where_map_criterion	  s(  € ð #%ˆØ—K‘K“Mò 	S‰DˆAˆqØ�FŠ{ô "¤(¬5¡/°1Ó5öàð ×-Ñ-¨a°°JÀÕMð�ð ð —‘œfÑ%7¸ÓBÕCØ�e’ô "¤(¬5¡/°1Ó5öàð ×-Ñ-¨a°°JÀÕMð�ð ð —‘œfÑ%7¸ÓBÕCäœE¤,´´]ÄLÐ5PÑ0QÐ"QÑRÐTUÓV�Ø—‘œm¨A¨t°Q¸
ÀLÓQÕRð	Sô  Ñ(¨&Ó1Ð1ùòùòs   ·D ÂD%z*SqliteMetadataSegment._where_doc_criterionr~   c                 ó<  — |j                  «       D �]t  \  }}|dk(  rFt        t        t           |«      D �cg c]  }| j	                  |||||«      ‘Œ }	}t        d„ |	«      c S |dk(  rFt        t        t           |«      D �cg c]  }| j	                  |||||«      ‘Œ }	}t        d„ |	«      c S |dv rÈt        t        |«      }d|› d�}
| j                  j                  «       j                  |«      j                  |j                  «      j                  |j                  j                  t        |
«      «      «      }|dk(  r|j                   j#                  |«      c S |j                   j%                  |«      c S t'        d|› �«      ‚ t'        d	«      ‚c c}w c c}w )
NrÆ   c                 ó   — | |z  S rG   rÈ   rÉ   s     r:   r†   z<SqliteMetadataSegment._where_doc_criterion.<locals>.<lambda>5  ó
   € ¨1¨q©5€ r<   rÍ   c                 ó   — | |z  S rG   rÈ   rÉ   s     r:   r†   z<SqliteMetadataSegment._where_doc_criterion.<locals>.<lambda>=  rØ   r<   )ú	$containsz$not_containsú%rÚ   zUnknown where_doc operator zEmpty where_doc)r¢   r   r   r   ry   r)   r±   r-   rL   rM   rN   r­   rO   rp   Úliker   r5   rz   Únotinrl   )r9   rX   rO   r}   r~   rb   r¥   r¦   rÓ   rÔ   Úsearch_termÚsqs               r:   ry   z*SqliteMetadataSegment._where_doc_criterion"  s±  € ð —K‘K“Mó !	D‰DˆAˆqØ�FŠ{ô
 "¤(¬=Ñ"9¸1Ó=ö	ð ð ×-Ñ-Ø˜1˜j¨*°lõð�ð ô Ñ0°(Ó;Ò;Ø�e’ô
 "¤(¬=Ñ"9¸1Ó=ö	ð ð ×-Ñ-Ø˜1˜j¨*°lõð�ð ô Ñ0°(Ó;Ò;ØÐ4Ñ4Üœ˜a“L�Ø ! !  A˜h�ð —H‘H×)Ñ)Ó+ß‘U˜:Ó&ß‘V˜J×,Ñ,Ó-ß‘U˜:×2Ñ2×7Ñ7¼À{Ó8SÓTÓUð	 ð ˜KÒ'ð !—O‘O×(Ñ(¨Ó,òð &Ÿ™×.Ñ.¨rÓ2òô !Ð#>¸q¸cÐ!BÓCÐCðC!	DôD Ð*Ó+Ð+ùòAùòs   ¶FÂFzSqliteMetadataSegment.deletec                 óž  — t        d«      }t        d«      }t        d«      }| j                  j                  «       j                  |«      j	                  «       j                  |j                  j                  | j                  j                  «       j                  |«      j                  |j                  «      j                  |j                  t        | j                  j                  | j                  «      «      k(  «      «      «      }| j                  j                  «       j                  |«      j	                  «       j                  |j                  j                  | j                  j                  «       j                  |«      j                  |j                  «      j                  |j                  t        | j                  j                  | j                  «      «      k(  «      «      «      }| j                  j                  «       j                  |«      j	                  «       j                  |j                  j                  | j                  j                  «       j                  |«      j                  |j                  «      j                  |j                  t        | j                  j                  | j                  «      «      k(  «      «      «      }| j                  j                  «       5 } |j                  t!        |«      Ž   |j                  t!        |«      Ž   |j                  t!        |«      Ž  d d d «       y # 1 sw Y   y xY w)Nr_   rj   rk   )r$   r-   rL   rM   r£   rO   r5   rz   rN   rP   r   rQ   r.   r­   rR   rS   r   )r9   rW   Út1Út2Úq0rX   r¹   r[   s           r:   r£   zSqliteMetadataSegment.deleteQ  s=  € ô �,ÓˆÜÐ'Ó(ˆÜÐ.Ó/ˆà�H‰H×!Ñ!Ó#ß‰U�2‹Yß‰V‹Xß‰UØ—‘—
‘
Ø—H‘H×)Ñ)Ó+ß‘U˜1“Xß‘V˜AŸD™D“\ß‘UØŸ™¬°t·x±x×7JÑ7JÈ4Ï8É8Ó7TÓ(UÑUóó	ó	ð	 	ð  �H‰H×!Ñ!Ó#ß‰U�1‹Xß‰V‹Xß‰UØ—‘—	‘	Ø—H‘H×)Ñ)Ó+ß‘U˜1“Xß‘V˜AŸD™D“\ß‘UØŸ™¬°t·x±x×7JÑ7JÈ4Ï8É8Ó7TÓ(UÑUóó	ó	ð	 	
ð  �H‰H×!Ñ!Ó#ß‰U�2‹Yß‰V‹Xß‰UØ—‘—‘Ø—H‘H×)Ñ)Ó+ß‘U˜1“Xß‘V˜AŸD™D“\ß‘UØŸ™¬°t·x±x×7JÑ7JÈ4Ï8É8Ó7TÓ(UÑUóó	ó	ð	 	ð �X‰X�[‰[‹]ð 	%˜cØˆC�K‰Kœ ›Ñ(ØˆC�K‰Kœ ›Ñ%ØˆC�K‰Kœ ›Ñ$÷	%÷ 	%ñ 	%ús   Ë1A	MÍMr¯   )NNNNNT)3Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__r   r#   r   r   r1   r   r   r;   r   r   ÚALLr   rA   rI   r   rB   r   rV   rc   r   r   r   r±   r²   r   r‚   r   r&   r   r|   r   r   rˆ   r   r    r    rŸ   r¤   rº   rœ   rD   r$   r'   rx   ry   r£   rÈ   r<   r:   r+   r+   +   s¡  … ØÓØ	ƒMØ	ƒIØ.Ó.Ø˜T‘NÓ"Ø$(€M�8˜D‘>Ó(ð4˜vð 4°ó 4ñ Ð/Ð1I×1MÑ1MÓNØòó ó Oðñ Ð.Ð0H×0LÑ0LÓMØò;ó ó Nð;ñ Ð3Ð5M×5QÑ5QÓRØð,˜5ò ,ó ó Sð,ñ" Ð/Ð1I×1MÑ1MÓNØð%Ð-Bð %Àsò %ó ó Oð%ñ Ð6Ð8P×8TÑ8TÓUØð "&Ø26Ø'+Ø#Ø $Ø!%ñpAà!6ðpAð ˜‰ðpAð ! Ñ/ð	pAð
 �h˜s‘mÑ$ðpAð ˜‰}ðpAð ˜‘ðpAð ðpAð 
Ð)Ñ	*òpAó ó VðpAðd>Øð>Ø*ð>Ø>Bð>à	Ð*¨D°$Ð6Ñ	7ó>ñ Ð1Ð3K×3OÑ3OÓPð
Ø˜U 3¨ 8™_Ñ-ð
ØAEð
à	 ò
ó Qð
ñ: Ð8Ð:R×:VÑ:VÓWð I &ð  I°)ð  IÀTð  IÈdò  Ió Xð IñD Ø0Ð2J×2NÑ2Nóð1 Fð 1°ð 1¸~ð 1ÐRVò 1óð1ñ" Ø0Ð2J×2NÑ2NóðV. Fð V.°ð V.¸~ð V.ÐRVò V.óðV.ñp Ð8Ð:R×:VÑ:VÓWð1% &ð 1%°)ð 1%Àò 1%ó Xð1%ñf Ð8Ð:R×:VÑ:VÓWðM &ð M°)ð MÀò Mó XðMñ, Ð9Ð;S×;WÑ;WÓXð% x°	Ñ':ð %¸tò %ó Yð%ñ6 Ø4Ð6N×6RÑ6Róð2Øð2Ø&+ð2Ø9>ð2ØNSð2à	ò2óð2ñ, Ø4Ð6N×6RÑ6Róð*,àð*,ð ð*,ð ð	*,ð
 ð*,ð ð*,ð 
ò*,óð*,ñX Ð0Ð2J×2NÑ2NÓOØò4%ó ó Pñ4%r<   r+   ro   rÕ   r€   r}   rb   r=   c                 óê   — t        |t        t        t        t        f«      rt        | t        t        d«      |i|||«      S t        t        |j                  «       «      «      \  }}t        | |||||«      S )zLGiven a field name, an expression, and a table, construct a Pypika Criterionú$eq)r°   r±   rV   r³   r²   rÑ   r   r"   Únextr‡   r¢   Ú_value_criterion)ro   rÕ   r€   r}   rb   Úoperatorrµ   s          r:   rÑ   rÑ   Š  so   € ô �$œœc¤5¬$Ð/Ô0ÜØÜ”- Ó'¨Ð.ØØØó
ð 	
ô œ4 §
¡
£Ó-Ó.�O€HˆeÜ˜C ¨°*¸jÈ,ÓWÐWr<   rµ   Úopc                 ój  — dt         dt        fd„}|j                  |j                  t	        | «      k(  «      }t	        |«      } ||«      st        |t        «      r› ||d   «      r�|j                  |j                  }
}	|dv r|	|k(  |
|k(  z  }nÏ|dk(  r|	|kD  |
|kD  z  }n¾|dk(  r|	|k\  |
|k\  z  }n­|dk(  r|	|k  |
|k  z  }nœ|d	k(  r|	|k  |
|k  z  }n‹|	j                  |«      |
j                  |«      z  }ngt        |t        «      s#t        |t        «      r t        |d   t        «      r|j                  }n|j                  }|dv r||k(  }n|j                  |«      }|d
v r*|j                  j                  |j                  |«      «      S |j                  j                  |j                  |«      «      S )z(Creates the filter for a single operatorÚobjr=   c                 óT   — t        | t        «       xr t        | t        t        f«      S rG   )r°   r²   rV   r³   )rð   s    r:   Ú
is_numericz$_value_criterion.<locals>.is_numeric°  s"   € Ü˜s¤DÓ)Ð)ÒL¬z¸#ÄÄU¸|Ó/LÐLr<   r   )rê   ú$nez$gtz$gtez$ltz$lte)ró   z$nin)Úobjectr²   rO   ro   r   r°   r{   rq   rr   rz   rs   rp   r5   rÝ   )ro   rµ   rî   r€   r}   rb   rò   Úsub_qÚp_valÚint_colÚ	float_colrÕ   Úcols                r:   rì   rì   ¦  s®  € ðMœð M¤4ó Mð ×Ñ˜ZŸ^™^¬~¸cÓ/BÑBÓC€EÜ˜5Ó!€Eá�%ÔœZ¨¬tÔ4¹ÀEÈ!ÁHÔ9MØ'×1Ñ1°:×3IÑ3I�ˆØ�ÑØ˜uÑ$¨°eÑ);Ñ<‰DØ�5Š[Ø˜e‘O¨	°EÑ(9Ñ:‰DØ�6Š\Ø˜uÑ$¨°eÑ);Ñ<‰DØ�5Š[Ø˜e‘O¨	°EÑ(9Ñ:‰DØ�6Š\Ø˜uÑ$¨°eÑ);Ñ<‰Dà—<‘< Ó&¨¯©¸Ó)>Ñ>‰Dä�eœTÔ"Ü�uœdÔ#¬
°5¸±8¼TÔ(Bà×'Ñ'‰Cà×)Ñ)ˆCØ�ÑØ˜%‘<‰Dà—8‘8˜E“?ˆDà	ˆ_ÑØ�‰×$Ñ$ U§[¡[°Ó%6Ó7Ð7à�‰×#Ñ# E§K¡K°Ó$5Ó6Ð6r<   )BÚtypingr   r   r   r   r   r   r	   r
   r   Úchromadb.segmentr   Úchromadb.ingestr   Úchromadb.configr   Úchromadb.typesr   r   r   Úchromadb.db.impl.sqliter   Ú	overridesr   Úchromadb.db.baser   r   r   Ú chromadb.telemetry.opentelemetryr   r   r   r   r   r   r   r   r   r    r!   r"   Úuuidr#   Úpypikar$   r%   Úpypika.queriesr&   Úpypika.functionsÚ	functionsr`   Úpypika.termsr'   Ú	itertoolsr(   Ú	functoolsr)   rš   ÚloggingÚ	getLoggerrä   r�   r+   r±   rÑ   rì   rÈ   r<   r:   ú<module>r     sV  ðß U× UÕ UÝ +Ý $Ý "ß UÑ UÝ ,Ý ÷ñ ÷
ñ ÷

÷ 
õ 
õ ß  Ý 'Ý Ý "Ý Ý Û ã à	ˆ×	Ñ	˜8Ó	$€ô\	%˜Nô \	%ð~XØ	ðXà
ØØˆ]˜LÐ(Ñ)ØÐ'¨¨lÑ);Ð;Ñ<ð	>ñðXð ðXð ðXð ðXð óXð8-7Ø	ð-7à�˜t LÑ1Ð1Ñ2ð-7ð 	ˆmÐ7Ð7Ñ8ð-7ð ð	-7ð
 ð-7ð ð-7ð ô-7r<   