
    LKi$                     r   S SK r S SKJrJrJrJr  S SKJrJr  S SK	J
r
Jr  S SKJs  Jr  S SKJr  S SKJr  S SKJrJrJr  S SKrS SKJr  S SKrS S	KJrJrJrJrJ r   S S
K!J"r"  S SK#J$r$  S SK%r%S SK&J'r'  S SK(J)r)  S SK*J+r+  S SK,J-r-  \ R\                  " \/5      r0 " S S\Rb                  5      r1 " S S\\\5      r2g)    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            
           \ rS rSr% \\S'   \\S'   S\S\4S jr\	S\
R                  4S j5       r\	S	\\\      S
\\   S\\   S\S   4S j5       rSrg)	TxWrapper   _conn_pool	conn_poolstackc                 F    X l         UR                  5       U l        Xl        g N)	_tx_stackconnectr    r!   )selfr"   r#   s      Y/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/chromadb/db/impl/sqlite.py__init__TxWrapper.__init__    s    &&(

    returnc                 2   [        U R                  R                  5      S:X  a6  U R                  R	                  S5        U R                  R	                  S5        U R                  R                  R                  U 5        U R                  R                  5       $ )Nr   PRAGMA case_sensitive_like = ONzBEGIN;)lenr&   r#   r    executeappendcursorr(   s    r)   	__enter__TxWrapper.__enter__%   si    t~~##$)JJ@AJJx(##D)zz  ""r,   exc_type	exc_value	tracebackFc                    U R                   R                  R                  5         [        U R                   R                  5      S:X  a8  Uc  U R                  R                  5         OU R                  R                  5         U R                  R                  5       R                  5         U R                  R                  U R                  5        g)Nr   F)r&   r#   popr0   r    commitrollbackr3   closer!   return_to_pool)r(   r7   r8   r9   s       r)   __exit__TxWrapper.__exit__-   s     	  "t~~##$)

!!#

##%

!!#

!!$**-r,   )r    r!   r&   N)__name__
__module____qualname____firstlineno__r   __annotations__r   r   r*   r   baseCursorr5   r   r   BaseExceptionr   r   r@   __static_attributes__ r,   r)   r   r      s    K$ u 
 #4;; # # 4./ M* M*	
 
 r,   r   c                     ^  \ rS rSr% \\S'   \\S'   \\   \S'   \	\S'   \
\S'   \\S'   S\4U 4S	 jjr\" S
\R                   5      \S)U 4S jj5       5       r\" S\R                   5      \S)U 4S jj5       5       r\\S\\R.                     4S j5       5       r\\S\	4S j5       5       r\\S\	4S j5       5       r\S\\   4S j5       r\S\4S j5       r\" S\R                   5      \S)U 4S jj5       5       r\" S\R                   5      \S)S j5       5       r\" S\R                   5      \S\4S j5       5       r \" S\R                   5      \S\S\\!   4S j5       5       r"\S\#RH                  S\!SS4S  j5       r%\\S!\&\'   S\&\(   4S" j5       5       r)\\S#\&\(   S\&\'   4S$ j5       5       r*\\S\\+   4S% j5       5       r,S*S&\-SS4S' jjr.S(r/U =r0$ )+SqliteDB?   
_conn_pool	_settings_migration_imports_db_filer&   _is_persistentsystemc                   > UR                   U l        [        S5      [        S5      [        S5      /U l        U R                  R	                  S5      U l        UR	                  [        5      U l        U R
                  (       d!  SU l        [        U R                  SS9U l
        OU R                  R	                  S5      S	-   U l        [        R                  R                  U R                  5      (       d<  [        R                  " [        R                  R                  U R                  5      SS
9  [!        U R                  5      U l
        [#        5       U l        [&        TU ]Q  U5        g )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)settingsrP   r   rQ   requirerS   r   _opentelemetry_clientrR   r   rO   ospathexistsmakedirsdirnamer   r   r&   superr*   )r(   rT   	__class__s     r)   r*   SqliteDB.__init__G   s   89-../#

 #nn44_E%+^^4G%H"""
 9DM&t}}TBDO &&':;>OO M 77>>$--00BGGOODMM:TJ+DMM:DO r,   zSqliteDB.startr-   Nc                   > [         TU ]  5         U R                  5        nUR                  S5        UR                  S5        S S S 5        U R	                  5         U R
                  R                  S5      S:X  a?  U R                  R                  S5      R                  SL a  [        R                  S5        g g g ! , (       d  f       N}= f)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.)rb   starttxr1   initialize_migrationsrP   r[   configget_parametervalueloggerwarning)r(   currc   s     r)   ri   SqliteDB.starta   s     	WWY#KK23KK9:  	""$ NN""<0G;))*?@FF%ONN v P < Ys   #B::
CzSqliteDB.stopc                 V   > [         TU ]  5         U R                  R                  5         g r%   )rb   stoprO   r>   )r(   rc   s    r)   rt   SqliteDB.stops   s     	r,   c                  "    [         R                  $ r%   )pypikaQueryrK   r,   r)   querybuilderSqliteDB.querybuildery   s     ||r,   c                      g)N?rK   rK   r,   r)   parameter_formatSqliteDB.parameter_format~   s     r,   c                      g)NsqliterK   rK   r,   r)   migration_scopeSqliteDB.migration_scope   s     r,   c                     U R                   $ r%   )rQ   r4   s    r)   migration_dirsSqliteDB.migration_dirs   s    &&&r,   c                     [        U R                  S5      (       d  / U R                  l        [        U R                  U R                  S9$ )Nr#   )r#   )hasattrr&   r#   r   rO   r4   s    r)   rj   SqliteDB.tx   s4    t~~w//#%DNN ??r,   zSqliteDB.reset_statec                   > U R                   R                  S5      (       d  [        S5      eU R                  5        nUR	                  S5        UR                  5        H  nUR	                  SUS    35        M     S S S 5        U R                  R                  5         U R                  5         [        TU ])  5         g ! , (       d  f       NG= f)Nallow_resetzResetting 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   )rP   r[   
ValueErrorrj   r1   fetchallrO   r>   ri   rb   reset_state)r(   rq   rowrc   s      r)   r   SqliteDB.reset_state   s     ~~%%m44 p  WWY#KK ||~3CF8<= &  	

 Ys   A B>>
CzSqliteDB.setup_migrationsc                 z    U R                  5        nUR                  S5        S S S 5        g ! , (       d  f       g = f)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)
                    )
                    )rj   r1   r(   rq   s     r)   setup_migrationsSqliteDB.setup_migrations   s*     WWY#KK	 YYs   ,
:zSqliteDB.migrations_initializedc                     U R                  5        nUR                  S5        UR                  5       S   S:X  a
   S S S 5        g S S S 5        g! , (       d  f       g = f)Nz[SELECT count(*) FROM sqlite_master
                WHERE type='table' AND name='migrations'r   FT)rj   r1   fetchoner   s     r)   migrations_initializedSqliteDB.migrations_initialized   sN     WWY#KK<
 ||~a A% Y  YYs   *AA
AzSqliteDB.db_migrationsdirc                    U R                  5        nUR                  SUR                  45        / nUR                  5        H  n[	        [
        US   5      n[	        [        US   5      n[	        [
        US   5      n[	        [
        US   5      n[	        [
        US   5      n	UR                  [        UUUUU	U R                  5       S95        M     UsS S S 5        $ ! , (       d  f       g = f)Nz
                SELECT dir, version, filename, sql, hash
                FROM migrations
                WHERE dir = ?
                ORDER BY version ASC
                r               )r   versionfilenamesqlhashscope)
rj   r1   namer   r   strintr2   r   r   )
r(   r   rq   rf   r   	found_dirfound_versionfound_filename	found_sql
found_hashs
             r)   db_migrationsSqliteDB.db_migrations   s     WWY#KK  J||~ c!f-	 $S#a& 1!%c3q6!2 c!f-	!#s1v.
!!% -!/%'"224	 &  9 YYs   CC
C+rq   	migrationc           	      x    UR                  US   5        UR                  SUS   US   US   US   US   45        g )Nr   zw
            INSERT INTO migrations (dir, version, filename, sql, hash)
            VALUES (?, ?, ?, ?, ?)
            r   r   r   r   )executescriptr1   )r(   rq   r   s      r)   apply_migrationSqliteDB.apply_migration   sU    )E*+
 % )$*%% &!	
r,   rn   c                 "    U b  [        U 5      $ S $ r%   r   )rn   s    r)   uuid_from_dbSqliteDB.uuid_from_db   s     $/tE{9T9r,   uuidc                 "    U b  [        U 5      $ S $ r%   )r   )r   s    r)   
uuid_to_dbSqliteDB.uuid_to_db   s     !,s4y6$6r,   c                  "    [         R                  $ r%   )sqlite3IntegrityErrorrK   r,   r)   unique_constraint_error SqliteDB.unique_constraint_error  s     %%%r,   timeoutc                     U R                   R                  5       nUR                  S[        U5      S-   35        UR                  S5        UR                  S5        g)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)rO   r'   r1   r   )r(   r   conns      r)   vacuumSqliteDB.vacuum  sO    &&(-c'lT.A-BCDX	
r,   )rO   rR   rS   rQ   r\   rP   r&   )r-   N)   )1rB   rC   rD   rE   r   rF   r
   r   r   r   r   boolr	   r*   r   r   ALLr   ri   rt   staticmethodr   rw   rx   ry   r}   r   r   r   rj   r   r   r   r   r   rG   rH   r   r   r   r   r   r   rI   r   r   r   rJ   __classcell__)rc   s   @r)   rM   rM   ?   s    --M!v !4 "$<$@$@A  B  /#;#?#?@   A  $v||,    c    S    ' 5 ' ' @I @ @
 (*B*F*FG  H& -/G/K/KL  M 35M5Q5QR
 
  S
 *,D,H,HI )1D   J> 
4;; 
9 
 
 
  :HSM :htn :  : 7$ 7HSM 7  7 &T-%8 &  &

c 

$ 

 

r,   rM   )3loggingchromadb.db.impl.sqlite_poolr   r   r   r   chromadb.db.migrationsr   r   chromadb.configr	   r
   chromadb.db.basedbrG   #chromadb.db.mixins.embeddings_queuer   chromadb.db.mixins.sysdbr    chromadb.telemetry.opentelemetryr   r   r   r   	overridesr   rw   typingr   r   r   r   r   typing_extensionsr   typesr   r]   r   r   	threadingr   importlib_resourcesr   importlib_resources.abcr   	getLoggerrB   ro   r   rM   rK   r,   r)   <module>r      s     R R : ,   B - 
    6 6 %  	   % /			8	$   FR
|/ R
r,   