§
    ˜ŠtjÖ$  ã                   ór  — d dl Z d dlmZmZmZmZ d dlmZmZ d dl	m
Z
mZ d dlmc mZ d dlmZ d dlmZ d dlmZmZmZ d dlZd dlmZ d dlZd d	lmZmZmZmZ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) d dl*m+Z+ d dl,m-Z-  e j.        e/¦  «        Z0 G d„ dej1        ¦  «        Z1 G d„ deee¦  «        Z2dS )é    N)Ú
ConnectionÚLockPoolÚPerThreadPoolÚPool)ÚMigratableDBÚ	Migration)ÚSystemÚSettings)ÚSqlEmbeddingsQueue)ÚSqlSysDB)ÚOpenTelemetryClientÚOpenTelemetryGranularityÚtrace_method)Úoverride)ÚSequenceÚcastÚOptionalÚTypeÚAny)ÚLiteral)ÚTracebackType©ÚUUID)Úlocal)Úfiles)ÚTraversablec            
       ó¾   — e Zd ZU eed<   eed<   dedefd„Zede	j
        fd„¦   «         Zedeee                  d	ee         d
ee         ded         fd„¦   «         ZdS )Ú	TxWrapperÚ_connÚ_poolÚ	conn_poolÚstackc                 óT   — || _         |                     ¦   «         | _        || _        d S ©N)Ú	_tx_stackÚconnectr   r    )Úselfr!   r"   s      úU/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/chromadb/db/impl/sqlite.pyÚ__init__zTxWrapper.__init__    s'   € ØˆŒØ×&Ò&Ñ(Ô(ˆŒ
ØˆŒ
ˆ
ˆ
ó    Úreturnc                 ó  — t          | j        j        ¦  «        dk    r4| j                             d¦  «         | j                             d¦  «         | j        j                             | ¦  «         | j                             ¦   «         S )Nr   úPRAGMA case_sensitive_like = ONzBEGIN;)Úlenr%   r"   r   ÚexecuteÚappendÚcursor©r'   s    r(   Ú	__enter__zTxWrapper.__enter__%   st   € åˆtŒ~Ô#Ñ$Ô$¨Ò)Ð)ØŒJ×ÒÐ@ÑAÔAÐAØŒJ×Ò˜xÑ(Ô(Ð(ØŒÔ×#Ò# DÑ)Ô)Ð)ØŒz× Ò Ñ"Ô"Ð"r*   Úexc_typeÚ	exc_valueÚ	tracebackFc                 óz  — | j         j                             ¦   «          t          | j         j        ¦  «        dk    r5|€| j                             ¦   «          n| j                             ¦   «          | j                             ¦   «                              ¦   «          | j	         
                    | j        ¦  «         dS )Nr   F)r%   r"   Úpopr.   r   ÚcommitÚrollbackr1   Úcloser    Úreturn_to_pool)r'   r4   r5   r6   s       r(   Ú__exit__zTxWrapper.__exit__-   s¡   € ð 	ŒÔ× Ò Ñ"Ô"Ð"ÝˆtŒ~Ô#Ñ$Ô$¨Ò)Ð)ØÐØ”
×!Ò!Ñ#Ô#Ð#Ð#à”
×#Ò#Ñ%Ô%Ð%ØŒ
×ÒÑÔ×!Ò!Ñ#Ô#Ð#ØŒ
×!Ò! $¤*Ñ-Ô-Ð-Øˆur*   N)Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__r   r   r)   r   ÚbaseÚCursorr3   r   r   ÚBaseExceptionr   r   r=   © r*   r(   r   r      sÔ   € € € € € € ØÐÐÑØ€K€K�Kð $ð ¨uð ð ð ð ð
 ð#˜4œ;ð #ð #ð #ñ „Xð#ð ðà˜4 Ô.Ô/ðð ˜MÔ*ðð ˜MÔ*ð	ð
 
�Œðð ð ñ „Xðð ð r*   r   c                   ó  ‡ — e Zd ZU eed<   eed<   ee         ed<   eed<   e	ed<   e
ed<   defˆ fd„Z ed	ej        ¦  «        ed(ˆ fd„¦   «         ¦   «         Z edej        ¦  «        ed(ˆ fd„¦   «         ¦   «         Zeed
eej                 fd„¦   «         ¦   «         Zeed
efd„¦   «         ¦   «         Zeed
efd„¦   «         ¦   «         Zed
ee         fd„¦   «         Zed
efd„¦   «         Z edej        ¦  «        ed(ˆ f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e          fd„¦   «         ¦   «         Z!ede"j#        de d
dfd„¦   «         Z$eed e%e&         d
e%e'         fd!„¦   «         ¦   «         Z(eed"e%e'         d
e%e&         fd#„¦   «         ¦   «         Z)eed
ee*         fd$„¦   «         ¦   «         Z+d)d&e,d
dfd'„Z-ˆ xZ.S )*ÚSqliteDBÚ
_conn_poolÚ	_settingsÚ_migration_importsÚ_db_filer%   Ú_is_persistentÚsystemc                 óè  •— |j         | _        t          d¦  «        t          d¦  «        t          d¦  «        g| _        | j                             d¦  «        | _        |                     t          ¦  «        | _        | j        s#d| _        t          | j        d¬¦  «        | _
        n—| j                             d¦  «        d	z   | _        t          j                             | j        ¦  «        s8t          j        t          j                             | j        ¦  «        d¬
¦  «         t!          | j        ¦  «        | _
        t#          ¦   «         | _        t'          ¦   «                              |¦  «         d S )Nz$chromadb.migrations.embeddings_queuezchromadb.migrations.sysdbzchromadb.migrations.metadbÚis_persistentzfile::memory:?cache=sharedT)Úis_uriÚpersist_directoryz/chroma.sqlite3)Úexist_ok)ÚsettingsrI   r   rJ   ÚrequirerL   r   Ú_opentelemetry_clientrK   r   rH   ÚosÚpathÚexistsÚmakedirsÚdirnamer   r   r%   Úsuperr)   )r'   rM   Ú	__class__s     €r(   r)   zSqliteDB.__init__G   s2  ø€ ØœˆŒåÐ8Ñ9Ô9ÝÐ-Ñ.Ô.ÝÐ.Ñ/Ô/ð#
ˆÔð
 #œn×4Ò4°_ÑEÔEˆÔØ%+§^¢^Õ4GÑ%HÔ%HˆÔ"ØÔ"ð 	;ð
 9ˆDŒMÝ& t¤}¸TÐBÑBÔBˆDŒOˆOð ”×&Ò&Ð':Ñ;Ô;Ð>OÑOð ŒMõ ”7—>’> $¤-Ñ0Ô0ð KÝ”�BœGŸOšO¨D¬MÑ:Ô:ÀTÐJÑJÔJÐJÝ+¨D¬MÑ:Ô:ˆDŒOÝ™œˆŒÝ‰Œ×Ò˜Ñ Ô Ð Ð Ð r*   zSqliteDB.startr+   Nc                 óÖ  •— t          ¦   «                              ¦   «          |                      ¦   «         5 }|                     d¦  «         |                     d¦  «         d d d ¦  «         n# 1 swxY w Y   |                      ¦   «          | j                             d¦  «        dk    r=| j                             d¦  «        j	        du rt                               d¦  «         d S d S d S )NzPRAGMA foreign_keys = ONr-   Ú
migrationsÚapplyÚautomatically_purgeFu£   âš ï¸� It looks like you upgraded from a version below 0.5.6 and could benefit from vacuuming your database. Run chromadb utils vacuum --help for more information.)r[   ÚstartÚtxr/   Úinitialize_migrationsrI   rT   ÚconfigÚget_parameterÚvalueÚloggerÚwarning)r'   Úcurr\   s     €r(   ra   zSqliteDB.starta   s   ø€ õ 	‰Œ�Š‰ŒˆØ�WŠW‰YŒYð 	;˜#Ø�KŠKÐ2Ñ3Ô3Ð3Ø�KŠKÐ9Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 	×"Ò"Ñ$Ô$Ð$ð ŒN×"Ò" <Ñ0Ô0°GÒ;Ð;Ø”×)Ò)Ð*?Ñ@Ô@ÔFÈ%ÐOÐOå�NŠNð vñô ð ð ð ð <Ð;ØOÐOs   ¶+A-Á-A1Á4A1zSqliteDB.stopc                 óz   •— t          ¦   «                              ¦   «          | j                             ¦   «          d S r$   )r[   ÚstoprH   r;   )r'   r\   s    €r(   rk   zSqliteDB.stops   s0   ø€ õ 	‰Œ�Š‰ŒˆØŒ×ÒÑÔÐÐÐr*   c                  ó   — t           j        S r$   )ÚpypikaÚQueryrE   r*   r(   ÚquerybuilderzSqliteDB.querybuildery   s   € õ Œ|Ðr*   c                  ó   — dS )Nú?rE   rE   r*   r(   Úparameter_formatzSqliteDB.parameter_format~   s	   € ð ˆsr*   c                  ó   — dS )NÚsqliterE   rE   r*   r(   Úmigration_scopezSqliteDB.migration_scopeƒ   s	   € ð ˆxr*   c                 ó   — | j         S r$   )rJ   r2   s    r(   Úmigration_dirszSqliteDB.migration_dirsˆ   s   € àÔ&Ð&r*   c                 óz   — t          | j        d¦  «        sg | j        _        t          | j        | j        ¬¦  «        S )Nr"   )r"   )Úhasattrr%   r"   r   rH   r2   s    r(   rb   zSqliteDB.txŒ   s7   € å�t”~ wÑ/Ô/ð 	&Ø#%ˆDŒNÔ Ý˜œ°´Ð?Ñ?Ô?Ð?r*   zSqliteDB.reset_statec                 óâ  •— | j                              d¦  «        st          d¦  «        ‚|                      ¦   «         5 }|                     d¦  «         |                     ¦   «         D ] }|                     d|d         › �¦  «         Œ!	 d d d ¦  «         n# 1 swxY w Y   | j                             ¦   «          |                      ¦   «          t          ¦   «          
                    ¦   «          d S )NÚallow_resetz�Resetting the database is not allowed. Set `allow_reset` to true in the config in tests or other non-production environments where reset should be permitted.zo
                    SELECT name FROM sqlite_master
                    WHERE type='table'
                    zDROP TABLE IF EXISTS r   )rI   rT   Ú
ValueErrorrb   r/   ÚfetchallrH   r;   ra   r[   Úreset_state)r'   ri   Úrowr\   s      €r(   r~   zSqliteDB.reset_state’   s1  ø€ ð Œ~×%Ò% mÑ4Ô4ð 	Ýð pñô ð ð �WŠW‰YŒYð 		>˜#à�KŠKðñô ð ð —|’|‘~”~ð >ð >�Ø—’Ð<°C¸´FÐ<Ð<Ñ=Ô=Ð=Ð=ð>ð		>ð 		>ð 		>ñ 		>ô 		>ð 		>ð 		>ð 		>ð 		>ð 		>ð 		>øøøð 		>ð 		>ð 		>ð 		>ð 	Œ×ÒÑÔÐØ�
Š
‰ŒˆÝ‰Œ×ÒÑÔÐÐÐs   ¿ABÂBÂBzSqliteDB.setup_migrationsc                 óŠ   — |                       ¦   «         5 }|                     d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Na~  
                    CREATE TABLE IF NOT EXISTS migrations (
                        dir TEXT NOT NULL,
                        version INTEGER NOT NULL,
                        filename TEXT NOT NULL,
                        sql TEXT NOT NULL,
                        hash TEXT NOT NULL,
                        PRIMARY KEY (dir, version)
                    )
                    )rb   r/   ©r'   ri   s     r(   Úsetup_migrationszSqliteDB.setup_migrations§   sŽ   € ð �WŠW‰YŒYð 	˜#Ø�KŠKð	ñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   •8¸<¿<zSqliteDB.migrations_initializedc                 óä   — |                       ¦   «         5 }|                     d¦  «         |                     ¦   «         d         dk    r	 d d d ¦  «         dS 	 d d d ¦  «         dS # 1 swxY w Y   d S )Nz[SELECT count(*) FROM sqlite_master
                WHERE type='table' AND name='migrations'r   FT)rb   r/   Úfetchoner�   s     r(   Úmigrations_initializedzSqliteDB.migrations_initialized¸   sØ   € ð �WŠW‰YŒYð 		˜#Ø�KŠKð<ñô ð ð
 �|Š|‰~Œ~˜aÔ  AÒ%Ð%Øð		ð 		ð 		ñ 		ô 		ð 		ð 		ð 		ð ð		ð 		ð 		ñ 		ô 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		øøøð 		ð 		ð 		ð 		ð 		ð 		s   •5A%ÁA%Á%A)Á,A)zSqliteDB.db_migrationsÚdirc                 óN  — |                       ¦   «         5 }|                     d|j        f¦  «         g }|                     ¦   «         D ]Ã}t	          t
          |d         ¦  «        }t	          t          |d         ¦  «        }t	          t
          |d         ¦  «        }t	          t
          |d         ¦  «        }t	          t
          |d         ¦  «        }	|                     t          |||||	|  	                    ¦   «         ¬¦  «        ¦  «         ŒÄ|cd d d ¦  «         S # 1 swxY w Y   d S )Nz­
                SELECT dir, version, filename, sql, hash
                FROM migrations
                WHERE dir = ?
                ORDER BY version ASC
                r   é   é   é   é   )r†   ÚversionÚfilenameÚsqlÚhashÚscope)
rb   r/   Únamer}   r   ÚstrÚintr0   r   ru   )
r'   r†   ri   r^   r   Ú	found_dirÚfound_versionÚfound_filenameÚ	found_sqlÚ
found_hashs
             r(   Údb_migrationszSqliteDB.db_migrationsÆ   sf  € ð �WŠW‰YŒYð 	˜#Ø�KŠKðð ”�ñô ð ð ˆJØ—|’|‘~”~ð ð �Ý ¥ c¨!¤fÑ-Ô-�	Ý $¥S¨#¨a¬&Ñ 1Ô 1�Ý!%¥c¨3¨q¬6Ñ!2Ô!2�Ý ¥ c¨!¤fÑ-Ô-�	Ý!¥# s¨1¤vÑ.Ô.�
Ø×!Ò!ÝØ%Ø -Ø!/Ø%Ø'Ø"×2Ò2Ñ4Ô4ðñ ô ñ	ô 	ð 	ð 	ð ð9	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   •C8DÄDÄ!Dri   Ú	migrationc           	      ó®   — |                      |d         ¦  «         |                     d|d         |d         |d         |d         |d         f¦  «         d S )NrŽ   zw
            INSERT INTO migrations (dir, version, filename, sql, hash)
            VALUES (?, ?, ?, ?, ?)
            r†   rŒ   r�   r�   )Úexecutescriptr/   )r'   ri   rš   s      r(   Úapply_migrationzSqliteDB.apply_migrationç   so   € à×Ò˜) EÔ*Ñ+Ô+Ð+Ø�Šðð
 ˜%Ô Ø˜)Ô$Ø˜*Ô%Ø˜%Ô Ø˜&Ô!ðñ	
ô 	
ð 	
ð 	
ð 	
r*   rf   c                 ó(   — | �t          | ¦  «        nd S r$   r   )rf   s    r(   Úuuid_from_dbzSqliteDB.uuid_from_dbø   s   € ð $Ð/�t�E‰{Œ{ˆ{°TÐ9r*   Úuuidc                 ó(   — | �t          | ¦  «        nd S r$   )r’   )r    s    r(   Ú
uuid_to_dbzSqliteDB.uuid_to_dbý   s   € ð !Ð,�s�4‰yŒyˆy°$Ð6r*   c                  ó   — t           j        S r$   )Úsqlite3ÚIntegrityErrorrE   r*   r(   Úunique_constraint_errorz SqliteDB.unique_constraint_error  s   € õ Ô%Ð%r*   é   Útimeoutc                 óÜ   — | j                              ¦   «         }|                     dt          |¦  «        dz  › �¦  «         |                     d¦  «         |                     d¦  «         dS )zdRuns VACUUM on the database. `timeout` is the maximum time to wait for an exclusive lock in seconds.zPRAGMA busy_timeout = iè  ÚVACUUMz}
            INSERT INTO maintenance_log (operation, timestamp)
            VALUES ('vacuum', CURRENT_TIMESTAMP)
            N)rH   r&   r/   r“   )r'   r¨   Úconns      r(   ÚvacuumzSqliteDB.vacuum  sr   € àŒ×&Ò&Ñ(Ô(ˆØ�ŠÐC­c°'©l¬l¸TÑ.AÐCÐCÑDÔDÐDØ�Š�XÑÔÐØ�Šðñ	
ô 	
ð 	
ð 	
ð 	
r*   )r+   N)r§   )/r>   r?   r@   r   rA   r
   r   r   r’   r   Úboolr	   r)   r   r   ÚALLr   ra   rk   Ústaticmethodr   rm   rn   ro   rr   ru   rw   r   rb   r~   r‚   r…   r   r™   rB   rC   r�   r   r   r   rŸ   r¢   rD   r¦   r“   r¬   Ú__classcell__)r\   s   @r(   rG   rG   ?   s;  ø€ € € € € € ØÐÐÑØÐÐÑØ  Ô-Ð-Ð-Ñ-Ø€M€M�MØÐÐÑØÐÐÑð!˜vð !ð !ð !ð !ð !ð !ð4 €\Ð"Ð$<Ô$@ÑAÔAØðð ð ð ð ñ „Xñ BÔAðð  €\�/Ð#;Ô#?Ñ@Ô@Øð ð  ð  ð  ð  ñ „Xñ AÔ@ð ð Øð˜$˜vœ|Ô,ð ð ð ñ „Xñ „\ðð Øð˜cð ð ð ñ „Xñ „\ðð Øð˜Sð ð ð ñ „Xñ „\ðð ð' ¨Ô 5ð 'ð 'ð 'ñ „Xð'ð ð@�Ið @ð @ð @ñ „Xð@ð
 €\Ð(Ð*BÔ*FÑGÔGØðð ð ð ð ñ „Xñ HÔGðð& €\Ð-Ð/GÔ/KÑLÔLØðð ð ñ „Xñ MÔLðð €\Ð3Ð5MÔ5QÑRÔRØð
¨ð 
ð 
ð 
ñ „Xñ SÔRð
ð €\Ð*Ð,DÔ,HÑIÔIØð ð °¸)Ô1Dð ð ð ñ „Xñ JÔIðð> ð
 4¤;ð 
¸9ð 
Èð 
ð 
ð 
ñ „Xð
ð  Øð:˜H SœMð :¨h°t¬nð :ð :ð :ñ „Xñ „\ð:ð Øð7˜ $œð 7¨H°S¬Mð 7ð 7ð 7ñ „Xñ „\ð7ð Øð& T¨-Ô%8ð &ð &ð &ñ „Xñ „\ð&ð

ð 

˜cð 

¨$ð 

ð 

ð 

ð 

ð 

ð 

ð 

ð 

r*   rG   )3ÚloggingÚchromadb.db.impl.sqlite_poolr   r   r   r   Úchromadb.db.migrationsr   r   Úchromadb.configr	   r
   Úchromadb.db.baseÚdbrB   Ú#chromadb.db.mixins.embeddings_queuer   Úchromadb.db.mixins.sysdbr   Ú chromadb.telemetry.opentelemetryr   r   r   r¤   Ú	overridesr   rm   Útypingr   r   r   r   r   Útyping_extensionsr   Útypesr   rV   r    r   Ú	threadingr   Úimportlib_resourcesr   Úimportlib_resources.abcr   Ú	getLoggerr>   rg   r   rG   rE   r*   r(   ú<module>rÂ      s  ðØ €€€Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð Ð Ð Ð Ø BÐ BÐ BÐ BÐ BÐ BØ -Ð -Ð -Ð -Ð -Ð -ðð ð ð ð ð ð ð ð ð ð
 €€€Ø Ð Ð Ð Ð Ð Ø €€€Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø /Ð /Ð /Ð /Ð /Ð /à	ˆÔ	˜8Ñ	$Ô	$€ð ð  ð  ð  ð  �”ñ  ô  ð  ðFR
ð R
ð R
ð R
ð R
ˆ|Ð/°ñ R
ô R
ð R
ð R
ð R
r*   