§
    ˜Štj}K  ã                   óÎ  — d dl mZ d dlZd dlmZmZ d dlmZmZm	Z	 d dl
mZ d dlmZmZmZmZ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 d dl m!Z! d dl"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)Z)d dl.Z.d dl/m0Z0  e.j1        e2¦  «        Z3ej4        d ej5        dej6        dej7        diZ8d„ e8 9                    ¦   «         D ¦   «         Z:dZ; G d„ deee¦  «        Z<dS )é    )Úcached_propertyN)ÚConfigurationParameterÚ$EmbeddingsQueueConfigurationInternal)ÚSqlDBÚParameterValueÚget_sql)ÚBatchSizeExceededError)ÚProducerÚConsumerÚConsumerCallbackFnÚdecode_vectorÚencode_vector)ÚOperationRecordÚ	LogRecordÚScalarEncodingÚSeqIdÚ	Operation)ÚSystem)ÚOpenTelemetryClientÚOpenTelemetryGranularityÚtrace_method)Úoverride)Údefaultdict)ÚSequenceÚOptionalÚDictÚSetÚTupleÚcast)ÚUUID)ÚTableÚ	functions)Úcreate_topic_nameé   é   é   c                 ó   — i | ]\  }}||“Œ	S © r(   )Ú.0ÚkÚvs      úa/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/chromadb/db/mixins/embeddings_queue.pyú
<dictcomp>r-   /   s   € ÐBÐBÐB¡  A˜˜1ÐBÐBÐBó    Fc                   óÎ  ‡ — e Zd ZU dZ G d„ d¦  «        Zeeee         f         ed<   e	e
         ed<   eed<   eed<   dZd	efˆ fd
„Z edej        ¦  «        ed:ˆ fd„¦   «         ¦   «         Z edej        ¦  «        ededdfd„¦   «         ¦   «         Z edej        ¦  «        ededdfd„¦   «         ¦   «         Z edej        ¦  «        edededefd„¦   «         ¦   «         Z edej        ¦  «        ededee         dee         fd„¦   «         ¦   «         Z edej        ¦  «        e	 	 	 d;dedede	e         de	e         de	e         defd„¦   «         ¦   «         Z ed ej        ¦  «        ed!eddfd"„¦   «         ¦   «         Zedefd#„¦   «         Zedefd$„¦   «         Ze  ed%ej        ¦  «        ede
fd&„¦   «         ¦   «         ¦   «         Z! ed'ej        ¦  «        dede"e	e#         e	e         e	e         f         fd(„¦   «         Z$ ed)ej        ¦  «        d*eddfd+„¦   «         Z% ed,ej        ¦  «        de	e         de	e         de"e
e
f         fd-„¦   «         Z& ed.ej        ¦  «        de
fd/„¦   «         Z' ed0ej        ¦  «        d1edee(         ddfd2„¦   «         Z) ed3ej        ¦  «        d4edee(         ddfd5„¦   «         Z*e+de,fd6„¦   «         Z-d7e,ddfd8„Z.de
fd9„Z/ˆ xZ0S )<ÚSqlEmbeddingsQueueaæ  A SQL database that stores embeddings, allowing a traditional RDBMS to be used as
    the primary ingest queue and satisfying the top level Producer/Consumer interfaces.

    Note that this class is only suitable for use cases where the producer and consumer
    are in the same process.

    This is because notification of new embeddings happens solely in-process: this
    implementation does not actively listen to the the database for new records added by
    other processes.
    c            
       ó^   — e Zd ZU eed<   eed<   eed<   eed<   eed<   dededededef
d„ZdS )úSqlEmbeddingsQueue.SubscriptionÚidÚ
topic_nameÚstartÚendÚcallbackc                 óL   — || _         || _        || _        || _        || _        d S ©N)r3   r4   r5   r6   r7   )Úselfr3   r4   r5   r6   r7   s         r,   Ú__init__z(SqlEmbeddingsQueue.Subscription.__init__I   s+   € ð ˆDŒGØ(ˆDŒOØˆDŒJØˆDŒHØ$ˆDŒMˆMˆMr.   N)	Ú__name__Ú
__module__Ú__qualname__r    Ú__annotations__ÚstrÚintr   r;   r(   r.   r,   ÚSubscriptionr2   B   sŠ   € € € € € € Øˆˆ‰Øˆˆ‰Øˆ
ˆ
‰
Øˆˆ‰Ø$Ð$Ð$Ñ$ð	%àð	%ð ð	%ð ð		%ð
 ð	%ð )ð	%ð 	%ð 	%ð 	%ð 	%ð 	%r.   rB   Ú_subscriptionsÚ_max_batch_sizeÚ_tenantÚ_topic_namespaceé   Úsystemc                 óD  •— t          t          ¦  «        | _        d | _        |                     t
          ¦  «        | _        |j                             d¦  «        | _        |j                             d¦  «        | _	        t          ¦   «                              |¦  «         d S )NÚ	tenant_idÚtopic_namespace)r   ÚsetrC   rD   Úrequirer   Ú_opentelemetry_clientÚsettingsrE   rF   Úsuperr;   )r:   rH   Ú	__class__s     €r,   r;   zSqlEmbeddingsQueue.__init__^   s~   ø€ Ý)­#Ñ.Ô.ˆÔØ#ˆÔØ%+§^¢^Õ4GÑ%HÔ%HˆÔ"Ø”×.Ò.¨{Ñ;Ô;ˆŒØ &¤× 7Ò 7Ð8IÑ JÔ JˆÔÝ‰Œ×Ò˜Ñ Ô Ð Ð Ð r.   zSqlEmbeddingsQueue.reset_stateÚreturnNc                 ó¢   •— t          ¦   «                              ¦   «          t          t          ¦  «        | _        	 | `d S # t          $ r Y d S w xY wr9   )rP   Úreset_stater   rL   rC   ÚconfigÚAttributeError)r:   rQ   s    €r,   rT   zSqlEmbeddingsQueue.reset_statef   s[   ø€ õ 	‰Œ×ÒÑÔÐÝ)­#Ñ.Ô.ˆÔð	Ø���øÝð 	ð 	ð 	àˆDˆDð	øøøs   ¼A  Á 
AÁAzSqlEmbeddingsQueue.delete_topicÚcollection_idc                 óî  — t          | j        | j        |¦  «        }t          d¦  «        }|                      ¦   «                              |¦  «                             |j        t          |¦  «        k    ¦  «         	                    ¦   «         }|  
                    ¦   «         5 }t          ||                      ¦   «         ¦  «        \  }}|                     ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚembeddings_queue)r#   rE   rF   r!   ÚquerybuilderÚfrom_ÚwhereÚtopicr   ÚdeleteÚtxr   Úparameter_formatÚexecute)r:   rW   r4   ÚtÚqÚcurÚsqlÚparamss           r,   Ú
delete_logzSqlEmbeddingsQueue.delete_logs   s  € õ 'ØŒL˜$Ô/°ñ
ô 
ˆ
õ Ð$Ñ%Ô%ˆà×ÒÑÔßŠU�1‰XŒXßŠU�1”7�n¨ZÑ8Ô8Ò8Ñ9Ô9ßŠV‰XŒXð	 	
ð �WŠW‰YŒYð 	%˜#Ý! ! T×%:Ò%:Ñ%<Ô%<Ñ=Ô=‰KˆC�Ø�KŠK˜˜VÑ$Ô$Ð$ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð 	%ð 	%s   Â!<C*Ã*C.Ã1C.zSqlEmbeddingsQueue.purge_logc                 ó"  — t          d¦  «        }|                      ¦   «                              |¦  «                             t	          j        t          d¦  «        j        d¦  «        ¦  «                             |j        t          |  
                    |¦  «        ¦  «        k    ¦  «                             t          d¦  «        ¦  «                             |j        t          d¦  «        j        k    ¦  «        }t          | j        | j        |¦  «        }|                      ¦   «         5 }t'          ||                      ¦   «         ¦  «        \  }}|                     ||¦  «         |                     ¦   «         }|rt/          d„ |D ¦   «         ¦  «        }	n	 d d d ¦  «         d S t          d¦  «        }
|                      ¦   «                              |
¦  «                             |
j        t          |	¦  «        k     ¦  «                             |
j        t          |¦  «        k    ¦  «                             ¦   «         }t'          ||                      ¦   «         ¦  «        \  }}|                     ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚsegmentsÚ
max_seq_idéÿÿÿÿc              3   ó&   K  — | ]}|d          V — ŒdS )r   Nr(   )r)   Úrows     r,   ú	<genexpr>z/SqlEmbeddingsQueue.purge_log.<locals>.<genexpr>¡   s&   è è € Ð ;Ð ;¨C  Q¤Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;r.   rY   )r!   rZ   r[   Úselectr"   ÚCoalesceÚseq_idr\   Ú
collectionr   Ú
uuid_to_dbÚ	left_joinÚonr3   Ú
segment_idr#   rE   rF   r_   r   r`   ra   ÚfetchallÚminr]   r^   )r:   rW   Ú
segments_tÚsegment_ids_qr4   rd   re   rf   ÚresultsÚ
min_seq_idrb   rc   s               r,   Ú	purge_logzSqlEmbeddingsQueue.purge_log„   s�  € õ
 ˜:Ñ&Ô&ˆ
à×ÒÑÔßŠU�:ÑÔ÷
 ŠV•IÔ&¥u¨\Ñ':Ô':Ô'AÀ2ÑFÔFÑGÔGßŠUØÔ%­¸¿ºÈÑ8VÔ8VÑ)WÔ)WÒWñô ÷ ŠY•u˜\Ñ*Ô*Ñ+Ô+ßŠR�
”¥ |Ñ!4Ô!4Ô!?Ò?Ñ@Ô@ð 	õ 'ØŒL˜$Ô/°ñ
ô 
ˆ
ð �WŠW‰YŒYð 	%˜#Ý! -°×1FÒ1FÑ1HÔ1HÑIÔI‰KˆC�Ø�KŠK˜˜VÑ$Ô$Ð$Ø—l’l‘n”nˆGØð Ý Ð ;Ð ;°7Ð ;Ñ ;Ô ;Ñ;Ô;�
�
àð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%õ Ð(Ñ)Ô)ˆAà×!Ò!Ñ#Ô#ß’�q‘”ß’�q”x¥.°Ñ"<Ô"<Ò<Ñ=Ô=ß’�q”w¥.°Ñ"<Ô"<Ò<Ñ=Ô=ß’‘”ð õ " ! T×%:Ò%:Ñ%<Ô%<Ñ=Ô=‰KˆC�Ø�KŠK˜˜VÑ$Ô$Ð$ð'	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð 	%ð 	%s   Ä(A-JÆ"CJÊJÊJz#SqlEmbeddingsQueue.submit_embeddingÚ	embeddingc                 óh   — | j         st          d¦  «        ‚|                      ||g¦  «        d         S )NúComponent not runningr   )Ú_runningÚRuntimeErrorÚsubmit_embeddings)r:   rW   r~   s      r,   Úsubmit_embeddingz#SqlEmbeddingsQueue.submit_embedding±   s:   € ð
 Œ}ð 	8ÝÐ6Ñ7Ô7Ð7à×%Ò% m°i°[ÑAÔAÀ!ÔDÐDr.   z$SqlEmbeddingsQueue.submit_embeddingsÚ
embeddingsc                 ó   — | j         st          d¦  «        ‚t          |¦  «        dk    rg S t          |¦  «        | j        k    r"t	          d| j        d›d| j        d›d�¦  «        ‚| j        }t          | j        | j        |¦  «        }t          d¦  «        }|  
                    ¦   «                              |¦  «                             |j        |j        |j        |j        |j        |j        ¦  «        }i }|D ]²}|                      |¦  «        \  }	}
}|                     t+          t,          |d                  ¦  «        t+          |¦  «        t+          |d	         ¦  «        t+          |	¦  «        t+          |
¦  «        t+          |¦  «        ¦  «        }t          |¦  «        ||d	         <   Œ³|                      ¦   «         5 }t1          ||                      ¦   «         ¦  «        \  }}|› d
�}|                     ||¦  «                             ¦   «         }t9          t:          d ¦  «        gt          |¦  «        z  }g }|D ]n\  }}||||         <   |||                  }t=          |t?          ||d         |d         |d         |d         ¬¦  «        ¬¦  «        }|                      |¦  «         Œo|  !                    ||¦  «         | j         "                    d¦  «        j#        r|  $                    |¦  «         |cd d d ¦  «         S # 1 swxY w Y   d S )Nr€   r   z)
                Cannot submit more than ú,zf embeddings at once.
                Please submit your embeddings in batches of size
                z or less.
                rY   Ú	operationr3   z RETURNING seq_id, idr~   ÚencodingÚmetadata)r3   r~   r‰   rŠ   rˆ   ©Ú
log_offsetÚrecordÚautomatically_purge)%r�   r‚   ÚlenÚmax_batch_sizer	   rU   r#   rE   rF   r!   rZ   ÚintoÚcolumnsrˆ   r]   r3   Úvectorr‰   rŠ   Ú!_prepare_vector_encoding_metadataÚinsertr   Ú_operation_codesr_   r   r`   ra   rw   r   r   r   r   ÚappendÚ_notify_allÚget_parameterÚvaluer}   )r:   rW   r…   Ú_r4   rb   r•   Ú	id_to_idxr~   Úembedding_bytesr‰   rŠ   rd   re   rf   r{   Úseq_idsÚembedding_recordsrq   r3   Úsubmit_embedding_recordÚembedding_records                         r,   rƒ   z$SqlEmbeddingsQueue.submit_embeddings»   s†  € ð
 Œ}ð 	8ÝÐ6Ñ7Ô7Ð7åˆz‰?Œ?˜aÒÐØˆIåˆz‰?Œ?˜TÔ0Ò0Ð0Ý(ðØ)-Ô)<ðð ð ð Ô$ðð ð ð ñô ð ð ŒKˆå&ØŒL˜$Ô/°ñ
ô 
ˆ
õ Ð$Ñ%Ô%ˆà×ÒÑÔßŠT�!‰WŒWßŠW�Q”[ !¤'¨1¬4°´¸1¼:ÀqÄzÑRÔRð 	ð
 %'ˆ	Ø#ð 	8ð 	8ˆIð
 ×6Ò6°yÑAÔAñ	ØØØà—]’]ÝÕ/°	¸+Ô0FÔGÑHÔHÝ˜zÑ*Ô*Ý˜y¨œÑ/Ô/Ý˜Ñ/Ô/Ý˜xÑ(Ô(Ý˜xÑ(Ô(ñô ˆFõ *-¨Y©¬ˆI�i ”oÑ&Ð&Ø�WŠW‰YŒYð  	˜#Ý! &¨$×*?Ò*?Ñ*AÔ*AÑBÔB‰KˆC�ð Ð/Ð/Ð/ˆCØ—k’k # vÑ.Ô.×7Ò7Ñ9Ô9ˆGå�E 4Ñ(Ô(Ð)­CØñ-ô -ñ ˆGð !#ÐØ%ð ;ð ;‘
�˜Ø)/�˜	 "œÑ&Ø*4°Y¸r´]Ô*CÐ'õ $-Ø%Ý*ØØ"9¸+Ô"FØ!8¸Ô!DØ!8¸Ô!DØ"9¸+Ô"Fðñ ô ð	$ñ 	$ô 	$Ð ð "×(Ò(Ð)9Ñ:Ô:Ð:Ð:Ø×Ò˜ZÐ):Ñ;Ô;Ð;àŒ{×(Ò(Ð)>Ñ?Ô?ÔEð .Ø—’˜}Ñ-Ô-Ð-àðA 	ð  	ð  	ð  	ñ  	ô  	ð  	ð  	ð  	ð  	ð  	ð  	øøøð  	ð  	ð  	ð  	ð  	ð  	s   Æ?D7LÌLÌ
LzSqlEmbeddingsQueue.subscribeÚ
consume_fnr5   r6   r3   c                 ó`  — | j         st          d¦  «        ‚t          | j        | j        |¦  «        }|pt          j        ¦   «         }|                      ||¦  «        \  }}|                      |||||¦  «        }|  	                    |¦  «         | j
        |                              |¦  «         |S )Nr€   )r�   r‚   r#   rE   rF   ÚuuidÚuuid4Ú_validate_rangerB   Ú	_backfillrC   Úadd)	r:   rW   r¢   r5   r6   r3   r4   Úsubscription_idÚsubscriptions	            r,   Ú	subscribezSqlEmbeddingsQueue.subscribe  s¹   € ð Œ}ð 	8ÝÐ6Ñ7Ô7Ð7å&ØŒL˜$Ô/°ñ
ô 
ˆ
ð Ð,¥¤
¡¤ˆØ×)Ò)¨%°Ñ5Ô5‰
ˆˆsà×(Ò(Ø˜Z¨°°Zñ
ô 
ˆð
 	�Š�|Ñ$Ô$Ð$ØÔ˜JÔ'×+Ò+¨LÑ9Ô9Ð9àÐr.   zSqlEmbeddingsQueue.unsubscriber©   c                 óÌ   — | j                              ¦   «         D ]I\  }}|D ]A}|j        |k    r4|                     |¦  «         t	          |¦  «        dk    r| j         |=   d S ŒBŒJd S )Nr   )rC   Úitemsr3   Úremover�   )r:   r©   r4   Úsubscriptionsrª   s        r,   ÚunsubscribezSqlEmbeddingsQueue.unsubscribe.  s’   € ð *.Ô)<×)BÒ)BÑ)DÔ)Dð 	ð 	Ñ%ˆJ˜Ø -ð ð �Ø”? oÒ5Ð5Ø!×(Ò(¨Ñ6Ô6Ð6Ý˜=Ñ)Ô)¨QÒ.Ð.Ø Ô/°
Ð;Ø�F�F�Fð	 6ðð	ð 	r.   c                 ó   — dS )Nrk   r(   ©r:   s    r,   Ú	min_seqidzSqlEmbeddingsQueue.min_seqid9  s   € àˆrr.   c                 ó   — dS )Nl   ÿÿÿÿ r(   r²   s    r,   Ú	max_seqidzSqlEmbeddingsQueue.max_seqid=  s   € àˆyr.   z!SqlEmbeddingsQueue.max_batch_sizec                 óˆ  — | j         €µ|                      ¦   «         5 }|                     d¦  «         |                     ¦   «         }|D ]G}d|d         v r;t	          |d                              d¦  «        d         ¦  «        | j        z  | _         ŒH| j         €d| j        z  | _         d d d ¦  «         n# 1 swxY w Y   | j         S )NzPRAGMA compile_options;ÚMAX_VARIABLE_NUMBERr   ú=r$   iç  )rD   r_   ra   rw   rA   ÚsplitÚVARIABLES_PER_RECORD)r:   rd   Úcompile_optionsÚoptions       r,   r�   z!SqlEmbeddingsQueue.max_batch_sizeA  s  € ð ÔÐ'Ø—’‘”ð L˜cØ—’Ð5Ñ6Ô6Ð6Ø"%§,¢,¡.¤.�à-ð ð �FØ,°°q´	Ð9Ð9å/2°6¸!´9·?²?À3Ñ3GÔ3GÈÔ3JÑ/KÔ/KØ Ô5ñ0˜Ô,øð Ô'Ð/ð ,/°$Ô2KÑ+K�DÔ(ðLð Lð Lñ Lô Lð Lð Lð Lð Lð Lð Løøøð Lð Lð Lð Lð  Ô#Ð#s   œB
B2Â2B6Â9B6z4SqlEmbeddingsQueue._prepare_vector_encoding_metadatac                 óÞ   — |d         �9t          t          |d         ¦  «        }|j        }t          |d         |¦  «        }nd }d }|d         rt	          j        |d         ¦  «        nd }|||fS )Nr~   r‰   rŠ   )r   r   rš   r   ÚjsonÚdumps)r:   r~   Úencoding_typer‰   r�   rŠ   s         r,   r”   z4SqlEmbeddingsQueue._prepare_vector_encoding_metadataX  s|   € ð �[Ô!Ð-Ý ¥°¸:Ô1FÑGÔGˆMØ$Ô*ˆHÝ+¨I°kÔ,BÀMÑRÔRˆOˆOà"ˆOØˆHØ8AÀ*Ô8MÐW•4”:˜i¨
Ô3Ñ4Ô4Ð4ÐSWˆØ ¨(Ð2Ð2r.   zSqlEmbeddingsQueue._backfillrª   c                 ó„  — t          d¦  «        }|                      ¦   «                              |¦  «                             |j        t          |j        ¦  «        k    ¦  «                             |j        t          |j        ¦  «        k    ¦  «                             |j        t          |j	        ¦  «        k    ¦  «         
                    |j        |j        |j        |j        |j        |j        ¦  «                             |j        ¦  «        }|                      ¦   «         5 }t%          ||                      ¦   «         ¦  «        \  }}|                     ||¦  «         |                     ¦   «         }|D ]±}|d         r,t-          |d         ¦  «        }	t/          |d         |	¦  «        }
nd}	d}
|                      |t3          |d         t5          t6          |d                  |d         |
|	|d         rt9          j        |d         ¦  «        nd¬	¦  «        ¬
¦  «        g¦  «         Œ²	 ddd¦  «         dS # 1 swxY w Y   dS )zUBackfill the given subscription with any currently matching records in the
        DBrY   r&   é   Nr   r$   r%   é   )rˆ   r3   r~   r‰   rŠ   r‹   )r!   rZ   r[   r\   r]   r   r4   rq   r5   r6   ro   rˆ   r3   r“   r‰   rŠ   Úorderbyr_   r   r`   ra   rw   r   r   Ú_notify_oner   r   Ú_operation_codes_invr¾   Úloads)r:   rª   rb   rc   rd   re   rf   Úrowsrm   r‰   r“   s              r,   r§   zSqlEmbeddingsQueue._backfilli  sI  € õ Ð$Ñ%Ô%ˆà×ÒÑÔßŠU�1‰XŒXßŠU�1”7�n¨\Ô-DÑEÔEÒEÑFÔFßŠU�1”8�n¨\Ô-?Ñ@Ô@Ò@ÑAÔAßŠU�1”8�~¨lÔ.>Ñ?Ô?Ò?Ñ@Ô@ßŠV�A”H˜aœk¨1¬4°´¸1¼:ÀqÄzÑRÔRßŠW�Q”XÑÔð 	
ð �WŠW‰YŒYð 	˜#Ý! ! T×%:Ò%:Ñ%<Ô%<Ñ=Ô=‰KˆC�Ø�KŠK˜˜VÑ$Ô$Ð$Ø—<’<‘>”>ˆDØð ð �Ø�q”6ð "Ý-¨c°!¬fÑ5Ô5�HÝ*¨3¨q¬6°8Ñ<Ô<�F�Fà#�HØ!�FØ× Ò Ø å!Ø'*¨1¤vÝ#2Ý*>¸sÀ1¼vÔ*FØ#& q¤6Ø*0Ø)1Ø?BÀ1¼vÐ)O­¬°C¸´FÑ);Ô);Ð);È4ð$ñ $ô $ð	ñ 	ô 	ðñô ð ð ðð		ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Ä#DH5È5H9È<H9z"SqlEmbeddingsQueue._validate_rangec                 ó
  — |p|                       ¦   «         }|p|                      ¦   «         }t          |t          ¦  «        rt          |t          ¦  «        st	          d¦  «        ‚||k    rt          d|› d|› �¦  «        ‚||fS )z[Validate and normalize the start and end SeqIDs for a subscription using this
        impl.z2SeqIDs must be integers for sql-based EmbeddingsDBzInvalid SeqID range: z to )Ú_next_seq_idrµ   Ú
isinstancerA   Ú	TypeErrorÚ
ValueError)r:   r5   r6   s      r,   r¦   z"SqlEmbeddingsQueue._validate_range’  s”   € ð Ð,˜×*Ò*Ñ,Ô,ˆØÐ%�T—^’^Ñ%Ô%ˆÝ˜%¥Ñ%Ô%ð 	R­Z¸½SÑ-AÔ-Að 	RÝÐPÑQÔQÐQØ�CŠ<ˆ<ÝÐE°UÐEÐEÀÐEÐEÑFÔFÐFØ�cˆzÐr.   zSqlEmbeddingsQueue._next_seq_idc                 óÀ  — t          d¦  «        }|                      ¦   «                              |¦  «                             t	          j        |j        ¦  «        ¦  «        }|                      ¦   «         5 }|                     | 	                    ¦   «         ¦  «         t          |                     ¦   «         d         ¦  «        dz   cddd¦  «         S # 1 swxY w Y   dS )z%Get the next SeqID for this database.rY   r   r$   N)r!   rZ   r[   ro   r"   ÚMaxrq   r_   ra   r   rA   Úfetchone©r:   rb   rc   rd   s       r,   rÊ   zSqlEmbeddingsQueue._next_seq_id   sñ   € õ Ð$Ñ%Ô%ˆØ×ÒÑÔ×%Ò% aÑ(Ô(×/Ò/µ	´¸a¼hÑ0GÔ0GÑHÔHˆØ�WŠW‰YŒYð 	.˜#Ø�KŠK˜Ÿ	š	™œÑ$Ô$Ð$Ý�s—|’|‘~”~ aÔ(Ñ)Ô)¨AÑ-ð	.ð 	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð 	.ð 	.s   Á5ACÃCÃCzSqlEmbeddingsQueue._notify_allr]   c                 ód   — | j         r&| j        |         D ]}|                      ||¦  «         ŒdS dS )z:Send a notification to each subscriber of the given topic.N)r�   rC   rÅ   )r:   r]   r…   Úsubs       r,   r˜   zSqlEmbeddingsQueue._notify_all©  sR   € ð Œ=ð 	2ØÔ*¨5Ô1ð 2ð 2�Ø× Ò   jÑ1Ô1Ð1Ð1ð	2ð 	2ð2ð 2r.   zSqlEmbeddingsQueue._notify_onerÓ   c                 óâ  — d}g }|D ]>}|d         |j         k    rŒ|d         |j        k    rd} n|                     |¦  «         Œ?	 t          |¦  «        dk    r|                     |¦  «         |r|                      |j        ¦  «         dS dS # t          $ rU}t           	                    d|j        j
        › �d|j        › d�z   t          |¦  «        ¦  «         t          r|‚Y d}~dS d}~ww xY w)	z+Send a notification to a single subscriber.FrŒ   Tr   z6Exception occurred invoking consumer for subscription z	to topic z %sN)r5   r6   r—   r�   r7   r°   r3   ÚBaseExceptionÚloggerÚerrorÚhexr4   r@   Ú_called_from_test)r:   rÓ   r…   Úshould_unsubscribeÚfiltered_embeddingsr~   Úes          r,   rÅ   zSqlEmbeddingsQueue._notify_one°  sQ  € ð #ÐØ ÐØ#ð 	2ð 	2ˆIØ˜Ô&¨#¬)Ò3Ð3ØØ˜Ô&¨¬Ò0Ð0Ø%)Ð"Ø�Ø×&Ò& yÑ1Ô1Ð1Ð1ð	ÝÐ&Ñ'Ô'¨!Ò+Ð+Ø—’Ð0Ñ1Ô1Ð1Ø!ð )Ø× Ò  ¤Ñ(Ô(Ð(Ð(Ð(ð)ð )øåð 	ð 	ð 	Ý�LŠLØUÈÌÌÐUÐUØ1˜cœnÐ1Ð1Ð1ñ2å�A‘”ñô ð õ
 !ð Ø�ðð ð ð ð ð øøøøð	øøøs   ÁAB Â
C.ÂA
C)Ã)C.c                 ód  — t          d¦  «        }|                      ¦   «                              |¦  «                             |j        ¦  «                             d¦  «        }|                      ¦   «         5 }|                     |                     ¦   «         ¦  «         | 	                    ¦   «         }d d d ¦  «         n# 1 swxY w Y   |€M|  
                    ¦   «         dk    }t          t          d|¦  «        g¦  «        }|                      |¦  «         |S t          j        |d         ¦  «        S )NÚembeddings_queue_configr$   r   rŽ   )r!   rZ   r[   ro   Úconfig_json_strÚlimitr_   ra   r   rÐ   Ú_get_wal_sizer   r   Ú
set_configÚfrom_json_str)r:   rb   rc   rd   ÚresultÚis_fresh_systemrU   s          r,   rU   zSqlEmbeddingsQueue.configÎ  s@  € åÐ+Ñ,Ô,ˆØ×ÒÑÔ×%Ò% aÑ(Ô(×/Ò/°Ô0AÑBÔB×HÒHÈÑKÔKˆà�WŠW‰YŒYð 	$˜#Ø�KŠK˜Ÿ	š	™œÑ$Ô$Ð$Ø—\’\‘^”^ˆFð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð ˆ>Ø"×0Ò0Ñ2Ô2°aÒ7ˆOÝ9Ý'Ð(=¸ÑOÔOÐPñô ˆFð �OŠO˜FÑ#Ô#Ð#ØˆMå3ÔAÀ&ÈÄ)ÑLÔLÐLs   Á6<B>Â>CÃCrU   c                 óÚ   — |                       ¦   «         5 }|                     dd|                     ¦   «         f¦  «         d d d ¦  «         n# 1 swxY w Y   	 | `d S # t          $ r Y d S w xY w)Nz€
                INSERT OR REPLACE INTO embeddings_queue_config (id, config_json_str)
                VALUES (?, ?)
            r$   )r_   ra   Úto_json_strrU   rV   )r:   rU   rd   s      r,   râ   zSqlEmbeddingsQueue.set_configá  sÆ   € Ø�WŠW‰YŒYð 
	˜#Ø�KŠKðð
 Ø×&Ò&Ñ(Ô(ðñ	ô 	ð 	ð
	ð 
	ð 
	ñ 
	ô 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	øøøð 
	ð 
	ð 
	ð 
	ð	Ø���øÝð 	ð 	ð 	àˆDˆDð	øøøs#   •+AÁAÁAÁA Á
A*Á)A*c                 ó°  — t          d¦  «        }|                      ¦   «                              |¦  «                             t	          j        d¦  «        ¦  «        }|                      ¦   «         5 }|                     |                     ¦   «         ¦  «         t          | 
                    ¦   «         d         ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )NrY   Ú*r   )r!   rZ   r[   ro   r"   ÚCountr_   ra   r   rA   rÐ   rÑ   s       r,   rá   z SqlEmbeddingsQueue._get_wal_sizeõ  sè   € ÝÐ$Ñ%Ô%ˆØ×ÒÑÔ×%Ò% aÑ(Ô(×/Ò/µ	´ÀÑ0DÔ0DÑEÔEˆà�WŠW‰YŒYð 	*˜#Ø�KŠK˜Ÿ	š	™œÑ$Ô$Ð$Ý�s—|’|‘~”~ aÔ(Ñ)Ô)ð	*ð 	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð 	*ð 	*s   Á0ACÃCÃC)rR   N)NNN)1r<   r=   r>   Ú__doc__rB   r   r@   r   r?   r   rA   rº   r   r;   r   r   ÚALLr   rT   r    rg   r}   r   r   r„   r   rƒ   r   r«   r°   r³   rµ   Úpropertyr�   r   Úbytesr”   r§   r¦   rÊ   r   r˜   rÅ   r   r   rU   râ   rá   Ú__classcell__)rQ   s   @r,   r0   r0   6   s  ø€ € € € € € ð	ð 	ð%ð %ð %ð %ð %ñ %ô %ð %ð* ˜˜c ,Ô/Ð/Ô0Ð0Ð0Ñ0Ø˜c”]Ð"Ð"Ñ"Ø€L€L�LØÐÐÑàÐð!˜vð !ð !ð !ð !ð !ð !ð €\Ð2Ð4LÔ4PÑQÔQØð	ð 	ð 	ð 	ð 	ñ „Xñ RÔQð	ð €\Ð3Ð5MÔ5QÑRÔRØð%¨ð %°ð %ð %ð %ñ „Xñ SÔRð%ð €\Ð0Ð2JÔ2NÑOÔOØð)% tð )%°ð )%ð )%ð )%ñ „Xñ PÔOð)%ðV €\Ð7Ð9QÔ9UÑVÔVØðEØ!ðEØ.=ðEà	ðEð Eð Eñ „Xñ WÔVðEð €\Ð8Ð:RÔ:VÑWÔWØðQØ!ðQØ/7¸Ô/HðQà	�%ŒðQð Qð Qñ „Xñ XÔWðQðf €\Ð0Ð2JÔ2NÑOÔOØð
 "&Ø#Ø!ðð àðð 'ðð ˜Œð	ð
 �eŒ_ðð �TŒNðð 
ðð ð ñ „Xñ PÔOðð8 €\Ð2Ð4LÔ4PÑQÔQØð¨4ð °Dð ð ð ñ „Xñ RÔQðð ð˜5ð ð ð ñ „Xðð ð˜5ð ð ð ñ „Xðð Ø€\Ð5Ð7OÔ7SÑTÔTØð$ ð $ð $ð $ñ „Xñ UÔTñ „Xð$ð( €\Ø>Ø Ô$ñô ð3Ø(ð3à	ˆx˜Œ ¨¤¨x¸¬}Ð<Ô	=ð3ð 3ð 3ñ	ô ð3ð €\Ð0Ð2JÔ2NÑOÔOð& lð &°tð &ð &ð &ñ PÔOð&ðP €\Ð6Ð8PÔ8TÑUÔUðØ˜e”_ðØ+3°E¬?ðà	ˆs�CˆxŒðð ð ñ VÔUðð €\Ð3Ð5MÔ5QÑRÔRð.˜cð .ð .ð .ñ SÔRð.ð €\Ð2Ð4LÔ4PÑQÔQð2 ð 2°(¸9Ô2Eð 2È$ð 2ð 2ð 2ñ RÔQð2ð €\Ð2Ð4LÔ4PÑQÔQð˜|ð ¸À)Ô9Lð ÐQUð ð ð ñ RÔQðð: ðMÐ<ð Mð Mð Mñ „_ðMð$Ð!Eð È$ð ð ð ð ð(*˜sð *ð *ð *ð *ð *ð *ð *ð *r.   r0   )=Ú	functoolsr   r¾   Úchromadb.api.configurationr   r   Úchromadb.db.baser   r   r   Úchromadb.errorsr	   Úchromadb.ingestr
   r   r   r   r   Úchromadb.typesr   r   r   r   r   Úchromadb.configr   Ú chromadb.telemetry.opentelemetryr   r   r   Ú	overridesr   Úcollectionsr   Útypingr   r   r   r   r   r   r¤   r    Úpypikar!   r"   ÚloggingÚchromadb.ingest.impl.utilsr#   Ú	getLoggerr<   rÖ   ÚADDÚUPDATEÚUPSERTÚDELETEr–   r­   rÆ   rÙ   r0   r(   r.   r,   ú<module>r     s›  ðØ %Ð %Ð %Ð %Ð %Ð %Ø €€€ðð ð ð ð ð ð ð ð <Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð #Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ð ð ð
 Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø €€€Ø €€€Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8ð 
ˆÔ	˜8Ñ	$Ô	$€ð „M�1ØÔ�aØÔ�aØÔ�að	Ð ð CÐBÐ)9×)?Ò)?Ñ)AÔ)AÐBÑBÔBÐ ð Ð ðE*ð E*ð E*ð E*ð E*˜ ¨(ñ E*ô E*ð E*ð E*ð E*r.   