Ë
    lQêjÖ$  ã                   ó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jb                  «      Z1 G d„ deee«      Z2y)é    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y)Ú	TxWrapperÚ_connÚ_poolÚ	conn_poolÚstackc                 óJ   — || _         |j                  «       | _        || _        y ©N)Ú	_tx_stackÚconnectr   r    )Úselfr!   r"   s      ú\/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/chromadb/db/impl/sqlite.pyÚ__init__zTxWrapper.__init__    s    € ØˆŒØ×&Ñ&Ó(ˆŒ
Øˆ�
ó    Úreturnc                 ó0  — t        | j                  j                  «      dk(  r6| j                  j	                  d«       | j                  j	                  d«       | j                  j                  j                  | «       | j                  j                  «       S )Nr   úPRAGMA case_sensitive_like = ONzBEGIN;)Úlenr%   r"   r   ÚexecuteÚappendÚcursor©r'   s    r(   Ú	__enter__zTxWrapper.__enter__%   si   € äˆt�~‰~×#Ñ#Ó$¨Ò)Ø�J‰J×ÑÐ@ÔAØ�J‰J×Ñ˜xÔ(Ø�‰×Ñ×#Ñ# DÔ)Ø�z‰z× Ñ Ó"Ð"r*   Úexc_typeÚ	exc_valueÚ	tracebackFc                 ó˜  — | j                   j                  j                  «        t        | j                   j                  «      dk(  r7|€| j                  j                  «        n| j                  j                  «        | j                  j                  «       j                  «        | j                  j                  | j                  «       y)Nr   F)r%   r"   Úpopr.   r   ÚcommitÚrollbackr1   Úcloser    Úreturn_to_pool)r'   r4   r5   r6   s       r(   Ú__exit__zTxWrapper.__exit__-   s‰   € ð 	�‰×Ñ× Ñ Ô"Üˆt�~‰~×#Ñ#Ó$¨Ò)ØÐØ—
‘
×!Ñ!Õ#à—
‘
×#Ñ#Ô%Ø�
‰
×ÑÓ×!Ñ!Ô#Ø�
‰
×!Ñ! $§*¡*Ô-Ør*   N)Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__r   r   r)   r   ÚbaseÚCursorr3   r   r   ÚBaseExceptionr   r   r=   © r*   r(   r   r      s‘   … ØÓØƒKð $ð ¨uó ð
 ð#˜4Ÿ;™;ò #ó ð#ð ðà˜4 Ñ.Ñ/ðð ˜MÑ*ðð ˜MÑ*ð	ð
 
�‰òó ñr*   r   c                   óp  ‡ — 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"jF                  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                  j	                  d«      | _        |j	                  t        «      | _        | j
                  s$d| _        t        | j                  d¬«      | _
        n¤| j                  j	                  d«      d	z   | _        t        j                  j                  | j                  «      s>t        j                  t        j                  j                  | j                  «      d¬
«       t!        | j                  «      | _
        t#        «       | _        t&        ‰| �Q  |«       y )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   sÿ   ø€ ØŸ™ˆŒäÐ8Ó9ÜÐ-Ó.ÜÐ.Ó/ð#
ˆÔð
 #Ÿn™n×4Ñ4°_ÓEˆÔØ%+§^¡^Ô4GÓ%HˆÔ"Ø×"Ò"ð
 9ˆDŒMÜ& t§}¡}¸TÔBˆD�Oð —‘×&Ñ&Ð':Ó;Ð>OÑOð ŒMô —7‘7—>‘> $§-¡-Ô0Ü—‘œBŸG™GŸO™O¨D¯M©MÓ:ÀTÕJÜ+¨D¯M©MÓ:ˆDŒOÜ›ˆŒÜ‰Ñ˜Õ r*   zSqliteDB.startr+   Nc                 óˆ  •— t         ‰| �  «        | j                  «       5 }|j                  d«       |j                  d«       d d d «       | j	                  «        | j
                  j                  d«      dk(  r>| j                  j                  d«      j                  du rt        j                  d«       y y y # 1 sw Y   ŒvxY w)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ð 	;˜#Ø�K‰KÐ2Ô3Ø�K‰KÐ9Ô:÷	;ð 	×"Ñ"Ô$ð �N‰N×"Ñ" <Ó0°GÒ;Ø—‘×)Ñ)Ð*?Ó@×FÑFÈ%ÑOä�N‰Nð võð Pð <÷	;ð 	;ús    #B8Â8CzSqliteDB.stopc                 óV   •— t         ‰| �  «        | j                  j                  «        y r$   )r[   ÚstoprH   r;   )r'   r\   s    €r(   rk   zSqliteDB.stops   s   ø€ ô 	‰‰ŒØ�‰×ÑÕr*   c                  ó"   — t         j                  S r$   )ÚpypikaÚQueryrE   r*   r(   ÚquerybuilderzSqliteDB.querybuildery   s   € ô �|‰|Ðr*   c                   ó   — y)Nú?rE   rE   r*   r(   Úparameter_formatzSqliteDB.parameter_format~   s   € ð r*   c                   ó   — y)NÚsqliterE   rE   r*   r(   Úmigration_scopezSqliteDB.migration_scopeƒ   s   € ð r*   c                 ó   — | j                   S r$   )rJ   r2   s    r(   Úmigration_dirszSqliteDB.migration_dirsˆ   s   € à×&Ñ&Ð&r*   c                 ó’   — t        | j                  d«      sg | j                  _        t        | j                  | j                  ¬«      S )Nr"   )r"   )Úhasattrr%   r"   r   rH   r2   s    r(   rb   zSqliteDB.txŒ   s1   € ä�t—~‘~ wÔ/Ø#%ˆD�N‰NÔ Ü˜Ÿ™°·±Ô?Ð?r*   zSqliteDB.reset_statec                 óˆ  •— | j                   j                  d«      st        d«      ‚| j                  «       5 }|j	                  d«       |j                  «       D ]  }|j	                  d|d   › �«       Œ 	 d d d «       | j                  j                  «        | j                  «        t        ‰| �)  «        y # 1 sw Y   ŒBxY w)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’   s²   ø€ ð �~‰~×%Ñ% mÔ4Üð póð ð �W‰W‹Yð 		>˜#à�K‰Kðôð —|‘|“~ò >�Ø—‘Ð3°C¸±F°8Ð<Õ=ñ>÷		>ð 	�‰×ÑÔØ�
‰
ŒÜ‰ÑÕ÷		>ð 		>ús   ¸>B8Â8CzSqliteDB.setup_migrationsc                 óp   — | j                  «       5 }|j                  d«       d d d «       y # 1 sw Y   y xY w)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§   s5   € ð �W‰W‹Yð 	˜#Ø�K‰Kð	ô÷	÷ 	ñ 	ús   ‘,¬5zSqliteDB.migrations_initializedc                 ó²   — | j                  «       5 }|j                  d«       |j                  «       d   dk(  r
	 d d d «       y	 d d d «       y# 1 sw Y   y xY w)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ð 		˜#Ø�K‰Kð<ôð
 �|‰|‹~˜aÑ  AÒ%Ø÷		ð 		ð ÷		÷ 		ñ 		ús   ‘)AÁAÁAzSqliteDB.db_migrationsÚdirc                 óÔ  — | j                  «       5 }|j                  d|j                  f«       g }|j                  «       D ]�  }t	        t
        |d   «      }t	        t        |d   «      }t	        t
        |d   «      }t	        t
        |d   «      }t	        t
        |d   «      }	|j                  t        |||||	| j                  «       ¬«      «       Œ‘ |cd d d «       S # 1 sw Y   y xY w)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Æ   sâ   € ð �W‰W‹Yð 	˜#Ø�K‰Kðð —‘�ôð ˆJØ—|‘|“~ò �Ü ¤ c¨!¡fÓ-�	Ü $¤S¨#¨a©&Ó 1�Ü!%¤c¨3¨q©6Ó!2�Ü ¤ c¨!¡fÓ-�	Ü!¤# s¨1¡vÓ.�
Ø×!Ñ!ÜØ%Ø -Ø!/Ø%Ø'Ø"×2Ñ2Ó4ôõ	ðð  ÷9	÷ 	ò 	ús   ‘CCÃC'ri   Ú	migrationc           	      óx   — |j                  |d   «       |j                  d|d   |d   |d   |d   |d   f«       y )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ç   sU   € à×Ñ˜) EÑ*Ô+Ø�‰ðð
 ˜%Ñ Ø˜)Ñ$Ø˜*Ñ%Ø˜%Ñ Ø˜&Ñ!ðõ	
r*   rf   c                 ó    — | �t        | «      S d S r$   r   )rf   s    r(   Úuuid_from_dbzSqliteDB.uuid_from_dbø   s   € ð $Ð/Œt�E‹{Ð9°TÐ9r*   Úuuidc                 ó    — | �t        | «      S d S r$   )r’   )r    s    r(   Ú
uuid_to_dbzSqliteDB.uuid_to_dbý   s   € ð !Ð,Œs�4‹yÐ6°$Ð6r*   c                  ó"   — t         j                  S r$   )Úsqlite3ÚIntegrityErrorrE   r*   r(   Úunique_constraint_errorz SqliteDB.unique_constraint_error  s   € ô ×%Ñ%Ð%r*   Útimeoutc                 ó¼   — | j                   j                  «       }|j                  dt        |«      dz  › �«       |j                  d«       |j                  d«       y)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  sO   € à�‰×&Ñ&Ó(ˆØ�‰Ð-¬c°'«l¸TÑ.AÐ-BÐCÔDØ�‰�XÔØ�‰ðõ	
r*   )r+   N)é   )/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ØÓØÓð!˜võ !ñ4 Ð"Ð$<×$@Ñ$@ÓAØôó ó Bðñ  �/Ð#;×#?Ñ#?Ó@Øô ó ó Að ð Øð˜$˜vŸ|™|Ñ,ò ó ó ðð Øð˜cò ó ó ðð Øð˜Sò ó ó ðð ð' ¨Ñ 5ò 'ó ð'ð ð@�Iò @ó ð@ñ
 Ð(Ð*B×*FÑ*FÓGØôó ó Hðñ& Ð-Ð/G×/KÑ/KÓLØòó ó Mðñ Ð3Ð5M×5QÑ5QÓRØð
¨ò 
ó ó Sð
ñ Ð*Ð,D×,HÑ,HÓIØð ð °¸)Ñ1Dò ó ó Jðð> ð
 4§;¡;ð 
¸9ð 
Èò 
ó ð
ð  Øð:˜H S™Mð :¨h°t©nò :ó ó ð:ð Øð7˜ $™ð 7¨H°S©Mò 7ó ó ð7ð Øð& T¨-Ñ%8ò &ó ó ð&ñ

˜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ß :ß ,ß Ð Ý BÝ -÷ñ ó
 Ý Û ß 6Õ 6Ý %Ý Û 	Ý Ý Ý %Ý /à	ˆ×	Ñ	˜8Ó	$€ô �—‘ô  ôFR
ˆ|Ð/°õ R
r*   